<?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>101612</bug_id>
          
          <creation_ts>2012-11-08 08:49:13 -0800</creation_ts>
          <short_desc>Web Inspector: split SplitView into SplitView and SidebarView</short_desc>
          <delta_ts>2012-11-09 01:23:06 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761842</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-08 08:49:13 -0800</bug_when>
    <thetext>Currently, SplitView is rather a sidebar view. I&apos;m extracting the reusable split component from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761850</commentid>
    <comment_count>1</comment_count>
      <attachid>173055</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-08 08:58:32 -0800</bug_when>
    <thetext>Created attachment 173055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761978</commentid>
    <comment_count>2</comment_count>
      <attachid>173074</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-08 11:01:19 -0800</bug_when>
    <thetext>Created attachment 173074
[Patch] with canvas profiler migrated to the split</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762112</commentid>
    <comment_count>3</comment_count>
      <attachid>173074</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-08 13:24:32 -0800</bug_when>
    <thetext>Comment on attachment 173074
[Patch] with canvas profiler migrated to the split

Attachment 173074 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14777132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762641</commentid>
    <comment_count>4</comment_count>
      <attachid>173074</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-09 00:07:47 -0800</bug_when>
    <thetext>Comment on attachment 173074
[Patch] with canvas profiler migrated to the split

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

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:75
&gt; +    this.splitView.setMinimalMainWidthPercent(maximalDebugSidebarWidthPercent);

&quot;100 - &quot; is missing

&gt; Source/WebCore/inspector/front-end/SidebarView.js:38
&gt; +    WebInspector.SplitView.call(this, true, sidebarWidthSettingName, defaultSidebarWidth || 200);

I don&apos;t think this is correct way to set defaultSidebarWidth in case of right sidebar.
Also your code will save splitOffset in setting which is not correct, we should save &quot;constant width&quot; element width.

&gt; Source/WebCore/inspector/front-end/SidebarView.js:50
&gt; +    this.setChangeFirstOnResize(sidebarPosition !== WebInspector.SidebarView.SidebarPosition.Left);

I would move setChangeFirstOnResize call to _innerSetSidebarPosition

&gt; Source/WebCore/inspector/front-end/SidebarView.js:127
&gt; +        this.setSplitOffset(width);

This is not correct for right sidebar as far as I can see.

&gt; Source/WebCore/inspector/front-end/SidebarView.js:135
&gt; +        return this.splitOffset();

Ditto

&gt; Source/WebCore/inspector/front-end/SplitView.js:46
&gt; +    this._firstElement.className = &quot;split-view-contents split-view-contents-&quot; + (isVertical ? &quot;vertical&quot; : &quot;horizontal&quot;);

var orientationString = isVertical ? &quot;vertical&quot; : &quot;horizontal&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762684</commentid>
    <comment_count>5</comment_count>
      <attachid>173232</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-09 01:08:16 -0800</bug_when>
    <thetext>Created attachment 173232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762697</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-09 01:23:06 -0800</bug_when>
    <thetext>Committed r134031: &lt;http://trac.webkit.org/changeset/134031&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173055</attachid>
            <date>2012-11-08 08:58:32 -0800</date>
            <delta_ts>2012-11-08 11:01:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101612-20121108205640.patch</filename>
            <type>text/plain</type>
            <size>55944</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjUwOWFkMjVmZWI3N2Ew
MDljNjAyZGZiNWFkMjM5ZTdhZjI1MTc3Zi4uNDdlNGJjYmMwMmNkMzU0YTIxYTNjN2I5ZjYyNjUy
ZDcyNzBmOGM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTExLTA4ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNwbGl0IFNwbGl0VmlldyBpbnRvIFNwbGl0VmlldyBhbmQgU2lkZWJhclZpZXcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTYxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgU3Bs
aXRWaWV3IGlzIHJhdGhlciBhIHNpZGViYXIgdmlldy4gSSdtIGV4dHJhY3RpbmcgdGhlIHJldXNh
YmxlIHNwbGl0IGNvbXBvbmVudCBmcm9tIGl0LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5
cGUud2FzU2hvd24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q291bnRlclVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3Rv
dHlwZS5zZXRUb3BQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS52aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZS5zZXQgX3Bpbk5hdmln
YXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIu
cHJvdG90eXBlLnNldCBzaG93TmF2aWdhdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVOYXZpZ2F0b3JPdmVy
bGF5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5w
cm90b3R5cGUuX2lubmVySGlkZU5hdmlnYXRvck92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmNyZWF0
ZVNpZGViYXJWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuY3Jl
YXRlU2lkZWJhclZpZXdXaXRoVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGVi
YXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLl9oYXNMZWZ0U2lkZWJh
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdldCBtYWlu
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdl
dCBzaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJv
dG90eXBlLl9pbm5lclNldFNpZGViYXJQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLnNldE1pbmltYWxTaWRlYmFyV2lkdGgpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LnByb3RvdHlwZS5zZXRNaW5pbWFsTWFpbldpZHRoUGVy
Y2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNldFNp
ZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBl
LnNpZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90
eXBlLm9uUmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5
cGUuYXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcu
cHJvdG90eXBlLmhpZGVNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJh
clZpZXcucHJvdG90eXBlLnNob3dNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLmhpZGVTaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNob3dTaWRlYmFyRWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3Jl
U2Nyb2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuZmlyc3RFbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNlY29uZEVsZW1lbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuc2V0Q2hhbmdlRmlyc3RPblJlc2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5yZXNpemVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5zaG93T25seUZp
cnN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNob3dPbmx5
U2Vjb25kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLl9zaG93
T25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5fcmVtb3Zl
QWxsTGF5b3V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnBy
b3RvdHlwZS5zaG93Qm90aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3Rv
dHlwZS5zZXRSZXNpemFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90
b3R5cGUuc2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuc3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuX2lubmVyU2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
bGl0Vmlldy5wcm90b3R5cGUuX3N0YXJ0UmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzOgor
CiAyMDEyLTExLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEphdmFTY3JpcHQgd2ViIHdvcmtlcnMgZGVidWdnaW5nIGNy
YXNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmNmYwZTFkZjFjZTJiMGU5ZDFmMDUxZGZhM2ZjZWNj
MWI4NzYxMWQ1Li4zZTkwYWE5OTg2YWM1MDFjNjBhZGM4NjY5MGM5ZGZjYjBiYWY0YmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC02NDY2LDYgKzY0NjYsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvU2lkZWJhck92ZXJsYXkuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
U2lkZWJhclBhbmUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJh
clZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclRyZWVF
bGVtZW50LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRTdG9y
YWdlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVu
dS5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDc2YzI0NmI4ODE5N2E0ZWEzNmQ1NDIzNjM1MGIxY2RiMmM2ZWM3YWIuLjgwYWQ4MmVhNzdi
YjI1NjE0MmIzMGQ4ODVkYjYwMDM0ZDQ0Y2ZiYTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NjY0Miw2ICs3NjY0MiwxMCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XGZyb250LWVuZFxTaWRlYmFyVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU25pcHBldEphdmFT
Y3JpcHRTb3VyY2VGcmFtZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTc2Njg2LDYgKzc2
NjkwLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNpZGViYXJWaWV3LmpzIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxTcGxpdFZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggOWJmMzk1Y2ZhZTQwOTNlZjI4
OTBjYTZjOGU4MTc3MGUxMDc0NjA2Ny4uYzY4Mjg1OWJlZDI5YWZhMjMzMjJlN2I3MjA5NDk1ZTRl
ZGU0YjE2MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJv
bnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5weQpAQCAtMTQyLDYgKzE0Miw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiU291cmNl
VG9rZW5pemVyLmpzIiwKICAgICAgICAgICAgICJTcGVjdHJ1bS5qcyIsCiAgICAgICAgICAgICAi
U3BsaXRWaWV3LmpzIiwKKyAgICAgICAgICAgICJTaWRlYmFyVmlldy5qcyIsCiAgICAgICAgICAg
ICAiU3RhdHVzQmFyQnV0dG9uLmpzIiwKICAgICAgICAgICAgICJUYWJiZWRQYW5lLmpzIiwKICAg
ICAgICAgICAgICJUZXh0RWRpdG9yLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IDI2MjRkNGQxNWE1MWM0YWVlMjI2NjI5
NTZlYWVlMDk4OGMxNmY4MjAuLmM2ZWQxN2RiMjgyNzQ4NWJmNjYzYWU2MmVlZWY0MWY4NWYyNGRh
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQ
YW5lbC5qcwpAQCAtMzgsNyArMzgsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJwYW5lbEVuYWJsZXJWaWV3LmNz
cyIpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygiYXVkaXRzUGFuZWwuY3NzIik7CiAK
LSAgICB0aGlzLmNyZWF0ZVNwbGl0Vmlld1dpdGhTaWRlYmFyVHJlZSgpOworICAgIHRoaXMuY3Jl
YXRlU2lkZWJhclZpZXdXaXRoVHJlZSgpOwogICAgIHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoIiIsIHt9LCB0cnVlKTsK
ICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQp
OwogICAgIHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xh
c3MoImhpZGRlbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5qcwppbmRleCBiOTJh
MDY2ZGE2YWEwMDY0ZDkwNTkzMTIyODgwYzI4YmQ3NTk1MGIwLi5mMGU5M2IzNjI0YzkwODFkZmFi
ZWEyMmJkZTZiNTFjZTdlNzllZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
cwpAQCAtMjksMTEgKzI5LDExIEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmlld30KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU2lk
ZWJhclZpZXd9CiAgKi8KIFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcg
PSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQpOworICAgIFdlYkluc3Bl
Y3Rvci5TaWRlYmFyVmlldy5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRl
YmFyUG9zaXRpb24uTGVmdCk7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJjc3NOYW1l
ZEZsb3dzLmNzcyIpOwogCiAgICAgdGhpcy5fbmFtZWRGbG93cyA9IHt9OwpAQCAtMzQzLDcgKzM0
Myw3IEBAIFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLndhc1Nob3duLmNhbGwodGhpcyk7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5cGUud2FzU2hvd24uY2FsbCh0aGlzKTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KHRoaXMuX3NldERv
Y3VtZW50LmJpbmQodGhpcykpOwogCkBAIC0zNzMsNyArMzczLDcgQEAgV2ViSW5zcGVjdG9yLkNT
U05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Rh
YmJlZFBhbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZS5FdmVu
dFR5cGVzLlRhYkNsb3NlZCwgdGhpcy5fdGFiQ2xvc2VkLCB0aGlzKTsKICAgICB9LAogCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZQorICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LnByb3RvdHlwZQogfQogCiAvKioKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRl
eCBhMGU2ZTFhMTg0NGVlNDI3YmRiNzFlZDUzYjBjYzJhNDgzNTlhNzc4Li4zMDI5MjdiNzMyODIy
NzQ2MWRmYzhiZGM5MWNiMGI1OGUzODFmNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00OSw5ICs0OSw5IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgY29uc3QgaW5pdGlh
bFNpZGViYXJXaWR0aCA9IDMyNTsKICAgICBjb25zdCBtaW5pbWFsQ29udGVudFdpZHRoUGVyY2Vu
dCA9IDM0OwotICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3KHRoaXMuZWxlbWVudCwgV2ViSW5zcGVj
dG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uUmlnaHQsIGluaXRpYWxTaWRlYmFyV2lkdGgp
OwotICAgIHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxTaWRlYmFyV2lkdGggPSBQcmVmZXJlbmNlcy5t
aW5FbGVtZW50c1NpZGViYXJXaWR0aDsKLSAgICB0aGlzLnNwbGl0Vmlldy5taW5pbWFsTWFpbldp
ZHRoUGVyY2VudCA9IG1pbmltYWxDb250ZW50V2lkdGhQZXJjZW50OworICAgIHRoaXMuY3JlYXRl
U2lkZWJhclZpZXcodGhpcy5lbGVtZW50LCBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuU2lkZWJh
clBvc2l0aW9uLlJpZ2h0LCBpbml0aWFsU2lkZWJhcldpZHRoKTsKKyAgICB0aGlzLnNwbGl0Vmll
dy5zZXRNaW5pbWFsU2lkZWJhcldpZHRoKFByZWZlcmVuY2VzLm1pbkVsZW1lbnRzU2lkZWJhcldp
ZHRoKTsKKyAgICB0aGlzLnNwbGl0Vmlldy5zZXRNaW5pbWFsTWFpbldpZHRoUGVyY2VudChtaW5p
bWFsQ29udGVudFdpZHRoUGVyY2VudCk7CiAKICAgICB0aGlzLmNvbnRlbnRFbGVtZW50ID0gdGhp
cy5zcGxpdFZpZXcubWFpbkVsZW1lbnQ7CiAgICAgdGhpcy5jb250ZW50RWxlbWVudC5pZCA9ICJl
bGVtZW50cy1jb250ZW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmluZGV4IDE0NDY1ZjVlMDkwNzk2MzJjZjc4Y2MyZTBk
MjE0OWNiMDIzYjc5NTcuLjZiOTE0OTE2OWMzM2IzMTkzYzVhZDQwYTJiNzc5NTg5MjU4YzFiYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtVmlldy5qcwpAQCAtMzAsMTIgKzMwLDEyIEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmlld30KKyAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuU2lkZWJhclZpZXd9CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQogICovCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcgPSBmdW5jdGlvbihmaWxlU3lzdGVtKQogewotICAgIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcu
Y2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAi
RmlsZVN5c3RlbVZpZXdTaWRlYmFyV2lkdGgiKTsKKyAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclZp
ZXcuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxl
ZnQsICJGaWxlU3lzdGVtVmlld1NpZGViYXJXaWR0aCIpOwogICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJmaWxlLXN5c3RlbS12aWV3Iik7CiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInN0b3JhZ2UtdmlldyIpOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGlyZWN0b3J5VHJl
ZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlbGV0ZUVudHJ5KCk7CiAgICAgfSwKIAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUKKyAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5cGUKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKaW5k
ZXggMzBhMTUyY2NlMzliN2VlMDE5MTZiMjQ4YzRmNjkxYTlhNTM5M2ZiZS4uZDQ0Y2M2NWQwODZm
YWViZmRmYmQ4N2ZjZWI5MGNhNzAyNWM4MDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwpAQCAtNDMsMTMgKzQz
LDEzIEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzID0gZnVuY3Rpb24odGltZWxpbmVQ
YW5lbCwgbW9kZWwsIHNpZGViYXJXaWR0aCkKICAgICBtb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1vZGVsLkV2ZW50cy5SZWNvcmRzQ2xlYXJlZCwgdGhpcy5fb25S
ZWNvcmRzQ2xlYXJlZCwgdGhpcyk7CiAKICAgICB0aGlzLl9jb250YWluZXJBbmNob3IgPSB0aW1l
bGluZVBhbmVsLmVsZW1lbnQubGFzdENoaWxkOwotICAgIHRoaXMuX21lbW9yeVNwbGl0VmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3KFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJh
clBvc2l0aW9uLkxlZnQsIHVuZGVmaW5lZCwgc2lkZWJhcldpZHRoKTsKLSAgICB0aGlzLl9tZW1v
cnlTcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2lkZWJhciIpOwotICAg
IHRoaXMuX21lbW9yeVNwbGl0Vmlldy5lbGVtZW50LmlkID0gIm1lbW9yeS1ncmFwaHMtY29udGFp
bmVyIjsKKyAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuU2lk
ZWJhclZpZXcoV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCB1
bmRlZmluZWQsIHNpZGViYXJXaWR0aCk7CisgICAgdGhpcy5fbWVtb3J5U2lkZWJhclZpZXcuc2lk
ZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2lkZWJhciIpOworICAgIHRoaXMuX21lbW9yeVNp
ZGViYXJWaWV3LmVsZW1lbnQuaWQgPSAibWVtb3J5LWdyYXBocy1jb250YWluZXIiOwogCi0gICAg
dGhpcy5fbWVtb3J5U3BsaXRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNwbGl0
Vmlldy5FdmVudFR5cGVzLlJlc2l6ZWQsIHRoaXMuX3NpZGViYXJSZXNpemVkLmJpbmQodGhpcykp
OworICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNpZGViYXJWaWV3LkV2ZW50VHlwZXMuUmVzaXplZCwgdGhpcy5fc2lkZWJhclJlc2l6ZWQu
YmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9jYW52YXNDb250YWluZXIgPSB0aGlzLl9tZW1vcnlT
cGxpdFZpZXcubWFpbkVsZW1lbnQ7CisgICAgdGhpcy5fY2FudmFzQ29udGFpbmVyID0gdGhpcy5f
bWVtb3J5U2lkZWJhclZpZXcubWFpbkVsZW1lbnQ7CiAgICAgdGhpcy5fY2FudmFzQ29udGFpbmVy
LmlkID0gIm1lbW9yeS1ncmFwaHMtY2FudmFzLWNvbnRhaW5lciI7CiAgICAgdGhpcy5fY3VycmVu
dFZhbHVlc0JhciA9IHRoaXMuX2NhbnZhc0NvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7CiAg
ICAgdGhpcy5fY3VycmVudFZhbHVlc0Jhci5pZCA9ICJjb3VudGVyLXZhbHVlcy1iYXIiOwpAQCAt
NjYsNyArNjYsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyA9IGZ1bmN0aW9uKHRp
bWVsaW5lUGFuZWwsIG1vZGVsLCBzaWRlYmFyV2lkdGgpCiAgICAgdGhpcy5fY2FudmFzQ29udGFp
bmVyLmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lR3JpZC5kaXZpZGVyc0VsZW1lbnQpOwogCiAg
ICAgLy8gUG9wdWxhdGUgc2lkZWJhcgotICAgIHRoaXMuX21lbW9yeVNwbGl0Vmlldy5zaWRlYmFy
RWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNpZGViYXItdHJlZSBzaWRlYmFyLXRyZWUtc2Vj
dGlvbiIpLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDT1VOVEVSUyIpOwor
ICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LnNpZGViYXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJk
aXYiLCAic2lkZWJhci10cmVlIHNpZGViYXItdHJlZS1zZWN0aW9uIikudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNPVU5URVJTIik7CiAgICAgZnVuY3Rpb24gZ2V0RG9jdW1l
bnRDb3VudChlbnRyeSkKICAgICB7CiAgICAgICAgIHJldHVybiBlbnRyeS5kb2N1bWVudENvdW50
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIFdlYkluc3BlY3Rvci5Db3VudGVyVUkgPSBmdW5jdGlvbiht
ZW1vcnlDb3VudGVyc1BhbmUsIHRpdGxlLCBjdXJyZW50VmFsdWVMYWJlbCwKIHsKICAgICB0aGlz
Ll9tZW1vcnlDb3VudGVyc1BhbmUgPSBtZW1vcnlDb3VudGVyc1BhbmU7CiAgICAgdGhpcy52YWx1
ZUdldHRlciA9IHZhbHVlR2V0dGVyOwotICAgIHZhciBjb250YWluZXIgPSBtZW1vcnlDb3VudGVy
c1BhbmUuX21lbW9yeVNwbGl0Vmlldy5zaWRlYmFyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2Iiwg
Im1lbW9yeS1jb3VudGVyLXNpZGViYXItaW5mbyIpOworICAgIHZhciBjb250YWluZXIgPSBtZW1v
cnlDb3VudGVyc1BhbmUuX21lbW9yeVNpZGViYXJWaWV3LnNpZGViYXJFbGVtZW50LmNyZWF0ZUNo
aWxkKCJkaXYiLCAibWVtb3J5LWNvdW50ZXItc2lkZWJhci1pbmZvIik7CiAgICAgdmFyIHN3YXRj
aENvbG9yID0gInJnYigiICsgcmdiLmpvaW4oIiwiKSArICIpIjsKICAgICB0aGlzLl9zd2F0Y2gg
PSBuZXcgV2ViSW5zcGVjdG9yLlN3YXRjaENoZWNrYm94KFdlYkluc3BlY3Rvci5VSVN0cmluZyh0
aXRsZSksIHN3YXRjaENvbG9yKTsKICAgICB0aGlzLl9zd2F0Y2guYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU3dhdGNoQ2hlY2tib3guRXZlbnRzLkNoYW5nZWQsIHRoaXMuX3RvZ2dsZUNv
dW50ZXJHcmFwaC5iaW5kKHRoaXMpKTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBXZWJJbnNwZWN0b3Iu
TWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAKICAgICBzZXRUb3BQb3NpdGlvbjogZnVu
Y3Rpb24odG9wKQogICAgIHsKLSAgICAgICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LmVsZW1lbnQu
c3R5bGUudG9wID0gdG9wICsgInB4IjsKKyAgICAgICAgdGhpcy5fbWVtb3J5U2lkZWJhclZpZXcu
ZWxlbWVudC5zdHlsZS50b3AgPSB0b3AgKyAicHgiOwogICAgICAgICB0aGlzLl91cGRhdGVTaXpl
KCk7CiAgICAgfSwKIApAQCAtMjMyLDcgKzIzMiw3IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0
aXN0aWNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVNpZGViYXJSZXNp
emUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2lnbm9yZVNpZGViYXJSZXNp
emUgPSB0cnVlOwotICAgICAgICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuc2V0U2lkZWJhcldpZHRo
KHdpZHRoKTsKKyAgICAgICAgdGhpcy5fbWVtb3J5U2lkZWJhclZpZXcuc2V0U2lkZWJhcldpZHRo
KHdpZHRoKTsKICAgICAgICAgdGhpcy5faWdub3JlU2lkZWJhclJlc2l6ZSA9IGZhbHNlOwogICAg
IH0sCiAKQEAgLTQwNCwxMyArNDA0LDEzIEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
LnByb3RvdHlwZSA9IHsKIAogICAgIHZpc2libGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuaXNTaG93aW5nKCk7CisgICAgICAgIHJldHVy
biB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5pc1Nob3dpbmcoKTsKICAgICB9LAogCiAgICAgc2hv
dzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGFuY2hvciA9IC8qKiBAdHlwZSB7RWxl
bWVudHxudWxsfSAqLyAodGhpcy5fY29udGFpbmVyQW5jaG9yLm5leHRTaWJsaW5nKTsKLSAgICAg
ICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LnNob3codGhpcy5fdGltZWxpbmVQYW5lbC5lbGVtZW50
LCBhbmNob3IpOworICAgICAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5zaG93KHRoaXMuX3Rp
bWVsaW5lUGFuZWwuZWxlbWVudCwgYW5jaG9yKTsKICAgICAgICAgdGhpcy5fdXBkYXRlU2l6ZSgp
OwogICAgICAgICB0aGlzLl9yZWZyZXNoRGl2aWRlcnMoKTsKICAgICAgICAgc2V0VGltZW91dCh0
aGlzLl9kcmF3LmJpbmQodGhpcyksIDApOwpAQCAtNDI2LDcgKzQyNiw3IEBAIFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX21lbW9yeVNwbGl0Vmlldy5kZXRhY2goKTsKKyAgICAgICAg
dGhpcy5fbWVtb3J5U2lkZWJhclZpZXcuZGV0YWNoKCk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNo
RGl2aWRlcnM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzCmluZGV4
IDgwNmMwMDE4MmMwNWE5NjAxMzNjOWExZjQ0NzFhYjIxZDFiNDQ2MGYuLjAxMjgwYzU5NGYzZmFm
MWQ5N2E1MTU2NmI4ZTJjZDRiNDI3NWNlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxl
ci5qcwpAQCAtMjgsMTkgKzI4LDE5IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TcGxpdFZpZXd9IHBhcmVudFNwbGl0VmlldworICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuU2lkZWJhclZpZXd9IHBhcmVudFNpZGViYXJWaWV3CiAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5WaWV3fSBuYXZpZ2F0b3JWaWV3CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5W
aWV3fSBlZGl0b3JWaWV3CiAgKi8KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJv
bGxlciA9IGZ1bmN0aW9uKHBhcmVudFNwbGl0VmlldywgbmF2aWdhdG9yVmlldywgZWRpdG9yVmll
dykKK1dlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlciA9IGZ1bmN0aW9uKHBh
cmVudFNpZGViYXJWaWV3LCBuYXZpZ2F0b3JWaWV3LCBlZGl0b3JWaWV3KQogewotICAgIHRoaXMu
X3BhcmVudFNwbGl0VmlldyA9IHBhcmVudFNwbGl0VmlldzsKKyAgICB0aGlzLl9wYXJlbnRTaWRl
YmFyVmlldyA9IHBhcmVudFNpZGViYXJWaWV3OwogICAgIHRoaXMuX25hdmlnYXRvclZpZXcgPSBu
YXZpZ2F0b3JWaWV3OwogICAgIHRoaXMuX2VkaXRvclZpZXcgPSBlZGl0b3JWaWV3OwogCiAgICAg
dGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9uYXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0
RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzY3JpcHRzLW5hdmlnYXRvci1yZXNpemVyLXdpZGdldCIp
OwotICAgIHRoaXMuX3BhcmVudFNwbGl0Vmlldy5pbnN0YWxsUmVzaXplcih0aGlzLl9uYXZpZ2F0
b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7CisgICAgdGhpcy5fcGFyZW50U2lkZWJhclZp
ZXcuaW5zdGFsbFJlc2l6ZXIodGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1l
bnQpOwogICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9u
YXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7CiAKICAgICB0aGlzLl9uYXZpZ2F0
b3JTaG93SGlkZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGlkZSBuYXZpZ2F0b3IiKSwgInNjcmlwdHMtbmF2aWdhdG9yLXNo
b3ctaGlkZS1idXR0b24iLCAzKTsKQEAgLTc5LDEyICs3OSwxMiBAQCBXZWJJbnNwZWN0b3IuTmF2
aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uc3RhdGUgPSAiaGlkZGVuIjsKICAgICAgICAgdGhp
cy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNob3cgbmF2aWdhdG9yIik7Ci0gICAgICAgIHRoaXMuX3BhcmVudFNwbGl0Vmlldy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmVsZW1lbnQpOworICAg
ICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25h
dmlnYXRvclNob3dIaWRlQnV0dG9uLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2VkaXRvclZp
ZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuYXZpZ2F0b3ItaGlkZGVuIik7CiAgICAgICAgIHRo
aXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhp
ZGRlbiIpOwogCi0gICAgICAgIHRoaXMuX3BhcmVudFNwbGl0Vmlldy5oaWRlU2lkZWJhckVsZW1l
bnQoKTsKKyAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhclZpZXcuaGlkZVNpZGViYXJFbGVtZW50
KCk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZGV0YWNoKCk7CiAgICAgICAgIHRoaXMu
X2VkaXRvclZpZXcuZm9jdXMoKTsKIApAQCAtMTAyLDggKzEwMiw4IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Vk
aXRvclZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRv
bi5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9pbm5lckhpZGVOYXZpZ2F0b3JPdmVybGF5KCk7
Ci0gICAgICAgIHRoaXMuX3BhcmVudFNwbGl0Vmlldy5zaG93U2lkZWJhckVsZW1lbnQoKTsKLSAg
ICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5zaG93KHRoaXMuX3BhcmVudFNwbGl0Vmlldy5zaWRl
YmFyRWxlbWVudCk7CisgICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXJWaWV3LnNob3dTaWRlYmFy
RWxlbWVudCgpOworICAgICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3LnNob3codGhpcy5fcGFyZW50
U2lkZWJhclZpZXcuc2lkZWJhckVsZW1lbnQpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3
LmZvY3VzKCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JIaWRkZW4u
c2V0KGZhbHNlKTsKICAgICB9LApAQCAtMTI1LDkgKzEyNSw5IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbmF2
aWdhdG9yVmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0
dG9uLmVsZW1lbnQpOwogICAgICAgICB0aGlzLl9ib3VuZENvbnRhaW5pbmdFbGVtZW50Rm9jdXNl
ZCA9IHRoaXMuX2NvbnRhaW5pbmdFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0
aGlzLl9wYXJlbnRTcGxpdFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9ib3VuZENvbnRhaW5pbmdFbGVtZW50Rm9jdXNlZCwgZmFsc2UpOworICAgICAgICB0
aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX2JvdW5kQ29udGFpbmluZ0VsZW1lbnRGb2N1c2VkLCBmYWxzZSk7CiAKLSAgICAg
ICAgdGhpcy5fc2lkZWJhck92ZXJsYXkuc2hvdyh0aGlzLl9wYXJlbnRTcGxpdFZpZXcuZWxlbWVu
dCk7CisgICAgICAgIHRoaXMuX3NpZGViYXJPdmVybGF5LnNob3codGhpcy5fcGFyZW50U2lkZWJh
clZpZXcuZWxlbWVudCk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZm9jdXMoKTsKICAg
ICB9LAogCkBAIC0xNDksNyArMTQ5LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlk
ZUJ1dHRvbi5zdGF0ZSA9ICJoaWRkZW4iOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlk
ZUJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBuYXZpZ2F0b3IiKTsK
LSAgICAgICAgdGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
bmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3BhcmVudFNp
ZGViYXJWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0
b24uZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5faW5uZXJIaWRlTmF2aWdhdG9yT3ZlcmxheSgp
OwogICAgICAgICB0aGlzLl9lZGl0b3JWaWV3LmZvY3VzKCk7CkBAIC0xNTcsNyArMTU3LDcgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9pbm5lckhpZGVOYXZpZ2F0b3JPdmVybGF5OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9ib3VuZENvbnRhaW5pbmdFbGVtZW50Rm9jdXNlZCwgZmFsc2UpOworICAg
ICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX2JvdW5kQ29udGFpbmluZ0VsZW1lbnRGb2N1c2VkLCBmYWxzZSk7
CiAgICAgICAgIHRoaXMuX3NpZGViYXJPdmVybGF5LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIHRoaXMuX2JvdW5kS2V5RG93biwgZmFsc2UpOwogICAgICAgICB0aGlzLl9z
aWRlYmFyT3ZlcmxheS5oaWRlKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNzM3ZWZjYWMyYzg2ZmQ5MmEw
MjNlZDIzNGI4NzUxNGZhMjkyMzNiMy4uODA0ZmZjZTU3MTY2MTUxNmFkMjJkYmFkNzZlMzE4ZTMx
MGQ0Mjg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKQEAgLTEyODUsNyArMTI4NSw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgIm5l
dHdvcmsiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoIm5ldHdvcmtQYW5lbC5jc3Mi
KTsKIAotICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3KCk7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFy
VmlldygpOwogICAgIHRoaXMuc3BsaXRWaWV3LmhpZGVNYWluRWxlbWVudCgpOwogCiAgICAgdGhp
cy5fbmV0d29ya0xvZ1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwppbmRleCBmMDVkYjIw
NDQ5OTI2NzM3NWJmZGI4MGVkMzMwOGQ3Yzc1ZDFmNThiLi5kNTM3YzRlOGI3YWRlMmIzYTQzYzBi
N2NmODAxZDRmMDJkZGU4Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanMKQEAgLTE1Myw3ICsxNTMsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90
eXBlID0gewogICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gcG9zaXRpb24KICAgICAgKiBAcGFyYW0g
e251bWJlcj19IGRlZmF1bHRXaWR0aAogICAgICAqLwotICAgIGNyZWF0ZVNwbGl0VmlldzogZnVu
Y3Rpb24ocGFyZW50RWxlbWVudCwgcG9zaXRpb24sIGRlZmF1bHRXaWR0aCkKKyAgICBjcmVhdGVT
aWRlYmFyVmlldzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgcG9zaXRpb24sIGRlZmF1bHRXaWR0
aCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnNwbGl0VmlldykKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE2MSw5ICsxNjEsOSBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50ID0g
dGhpcy5lbGVtZW50OwogCi0gICAgICAgIHRoaXMuc3BsaXRWaWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5TcGxpdFZpZXcocG9zaXRpb24gfHwgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9z
aXRpb24uTGVmdCwgdGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUoKSwgZGVmYXVsdFdpZHRo
KTsKKyAgICAgICAgdGhpcy5zcGxpdFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3
KHBvc2l0aW9uIHx8IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9zaXRpb24uTGVm
dCwgdGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUoKSwgZGVmYXVsdFdpZHRoKTsKICAgICAg
ICAgdGhpcy5zcGxpdFZpZXcuc2hvdyhwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5zcGxp
dFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LkV2ZW50VHlwZXMu
UmVzaXplZCwgdGhpcy5zaWRlYmFyUmVzaXplZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5z
cGxpdFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuRXZlbnRU
eXBlcy5SZXNpemVkLCB0aGlzLnNpZGViYXJSZXNpemVkLmJpbmQodGhpcykpOwogCiAgICAgICAg
IHRoaXMuc2lkZWJhckVsZW1lbnQgPSB0aGlzLnNwbGl0Vmlldy5zaWRlYmFyRWxlbWVudDsKICAg
ICB9LApAQCAtMTczLDEyICsxNzMsMTIgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgKiBAcGFyYW0ge3N0cmluZz19IHBvc2l0aW9uCiAgICAgICogQHBhcmFtIHtudW1i
ZXI9fSBkZWZhdWx0V2lkdGgKICAgICAgKi8KLSAgICBjcmVhdGVTcGxpdFZpZXdXaXRoU2lkZWJh
clRyZWU6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIHBvc2l0aW9uLCBkZWZhdWx0V2lkdGgpCisg
ICAgY3JlYXRlU2lkZWJhclZpZXdXaXRoVHJlZTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgcG9z
aXRpb24sIGRlZmF1bHRXaWR0aCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnNwbGl0VmlldykK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmNyZWF0ZVNwbGl0VmlldyhwYXJl
bnRFbGVtZW50LCBwb3NpdGlvbik7CisgICAgICAgIHRoaXMuY3JlYXRlU2lkZWJhclZpZXcocGFy
ZW50RWxlbWVudCwgcG9zaXRpb24pOwogCiAgICAgICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgdGhpcy5zaWRlYmFyVHJl
ZUVsZW1lbnQuY2xhc3NOYW1lID0gInNpZGViYXItdHJlZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggM2U5MDg4NTgy
NTIxNGNjNGE2ZTIxODhiYzJiMGIxY2VmZjgzMWE3ZS4uMjI2YWM5YWU4MTE2ZjcxNzE3ZWMxZDEy
N2VjZTBkM2QwNTQwMzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMTkzLDcgKzE5Myw3IEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENT
UygiaGVhcFByb2ZpbGVyLmNzcyIpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygicHJv
ZmlsZXNQYW5lbC5jc3MiKTsKIAotICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3V2l0aFNpZGViYXJU
cmVlKCk7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmlld1dpdGhUcmVlKCk7CiAKICAgICB0aGlz
LnByb2ZpbGVzSXRlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlc1NpZGVi
YXJUcmVlRWxlbWVudCh0aGlzKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRo
aXMucHJvZmlsZXNJdGVtVHJlZUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggMmRhM2U5ZTFkNmZlYTg5
YmYzZjk1NDgzNThjZWY0MGU2NjJkMjgyZi4uMTVlMzc0ODU5NzJkY2YyMWZkMTJmYzk4YzNkZTk1
MDBkNjY3MTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00Nyw3ICs0Nyw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogCiAgICAgV2ViSW5zcGVjdG9yLnNldHRp
bmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3Jl
YXRlU2V0dGluZygicmVzb3VyY2VzTGFzdFNlbGVjdGVkSXRlbSIsIHt9KTsKIAotICAgIHRoaXMu
Y3JlYXRlU3BsaXRWaWV3V2l0aFNpZGViYXJUcmVlKCk7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFy
Vmlld1dpdGhUcmVlKCk7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJv
dXRsaW5lLWRpc2Nsb3N1cmUiKTsKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xh
c3MoImZpbHRlci1hbGwiKTsKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
ImNoaWxkcmVuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzCmluZGV4IDlhMDNhZDIzNDZiYjY4YzVjMzIyZDkzZDViNzQzZTVlYWZm
OTM0OGEuLmY3ODllOTNlMTVmOTVhNWZjNTk5MDk5ZDNkMGMzMzY0NGUxNzIyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC02OSwxMCArNjksMTAgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKHdv
cmtzcGFjZUZvclRlc3QpCiAKICAgICBjb25zdCBpbml0aWFsRGVidWdTaWRlYmFyV2lkdGggPSAy
MjU7CiAgICAgY29uc3QgbWF4aW1hbERlYnVnU2lkZWJhcldpZHRoUGVyY2VudCA9IDUwOwotICAg
IHRoaXMuY3JlYXRlU3BsaXRWaWV3KHRoaXMuZWxlbWVudCwgV2ViSW5zcGVjdG9yLlNwbGl0Vmll
dy5TaWRlYmFyUG9zaXRpb24uUmlnaHQsIGluaXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCk7CisgICAg
dGhpcy5jcmVhdGVTaWRlYmFyVmlldyh0aGlzLmVsZW1lbnQsIFdlYkluc3BlY3Rvci5TaWRlYmFy
Vmlldy5TaWRlYmFyUG9zaXRpb24uUmlnaHQsIGluaXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCk7CiAg
ICAgdGhpcy5zcGxpdFZpZXcuZWxlbWVudC5pZCA9ICJzY3JpcHRzLXNwbGl0LXZpZXciOwotICAg
IHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxTaWRlYmFyV2lkdGggPSBQcmVmZXJlbmNlcy5taW5TY3Jp
cHRzU2lkZWJhcldpZHRoOwotICAgIHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxNYWluV2lkdGhQZXJj
ZW50ID0gMTAwIC0gbWF4aW1hbERlYnVnU2lkZWJhcldpZHRoUGVyY2VudDsKKyAgICB0aGlzLnNw
bGl0Vmlldy5zZXRNaW5pbWFsU2lkZWJhcldpZHRoKFByZWZlcmVuY2VzLm1pblNjcmlwdHNTaWRl
YmFyV2lkdGgpOworICAgIHRoaXMuc3BsaXRWaWV3LnNldE1pbmltYWxNYWluV2lkdGhQZXJjZW50
KG1heGltYWxEZWJ1Z1NpZGViYXJXaWR0aFBlcmNlbnQpOwogCiAgICAgdGhpcy5zaWRlYmFyRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmRlYnVnVG9vbGJhcik7CiAKQEAgLTgzLDExICs4MywxMSBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24od29ya3NwYWNlRm9yVGVzdCkK
ICAgICAvLyBDcmVhdGUgc2NyaXB0cyBuYXZpZ2F0b3IKICAgICBjb25zdCBpbml0aWFsTmF2aWdh
dG9yV2lkdGggPSAyMjU7CiAgICAgY29uc3QgbWluaW1hbFZpZXdzQ29udGFpbmVyV2lkdGhQZXJj
ZW50ID0gNTA7Ci0gICAgdGhpcy5lZGl0b3JWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TcGxpdFZp
ZXcoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgInNjcmlwdHNQ
YW5lbE5hdmlnYXRvclNpZGViYXJXaWR0aCIsIGluaXRpYWxOYXZpZ2F0b3JXaWR0aCk7CisgICAg
dGhpcy5lZGl0b3JWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyhXZWJJbnNwZWN0
b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsICJzY3JpcHRzUGFuZWxOYXZpZ2F0
b3JTaWRlYmFyV2lkdGgiLCBpbml0aWFsTmF2aWdhdG9yV2lkdGgpOwogICAgIHRoaXMuZWRpdG9y
Vmlldy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAotICAgIHRoaXMuZWRpdG9yVmlldy5taW5pbWFs
U2lkZWJhcldpZHRoID0gUHJlZmVyZW5jZXMubWluU2NyaXB0c1NpZGViYXJXaWR0aDsKLSAgICB0
aGlzLmVkaXRvclZpZXcubWluaW1hbE1haW5XaWR0aFBlcmNlbnQgPSBtaW5pbWFsVmlld3NDb250
YWluZXJXaWR0aFBlcmNlbnQ7CisgICAgdGhpcy5lZGl0b3JWaWV3LnNldE1pbmltYWxTaWRlYmFy
V2lkdGgoUHJlZmVyZW5jZXMubWluU2NyaXB0c1NpZGViYXJXaWR0aCk7CisgICAgdGhpcy5lZGl0
b3JWaWV3LnNldE1pbmltYWxNYWluV2lkdGhQZXJjZW50KG1pbmltYWxWaWV3c0NvbnRhaW5lcldp
ZHRoUGVyY2VudCk7CiAgICAgdGhpcy5lZGl0b3JWaWV3LnNob3codGhpcy5zcGxpdFZpZXcubWFp
bkVsZW1lbnQpOwogCiAgICAgdGhpcy5fbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3Jp
cHRzTmF2aWdhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NpZGViYXJWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TaWRlYmFyVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWE4NTIwMzhhOGEwZDM0OTlmMWM0Mzg2MTY5
ODY0MDI1NTdiMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TaWRlYmFyVmlldy5qcwpAQCAtMCwwICsxLDE5NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LgorICogT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TcGxp
dFZpZXd9CisgKiBAcGFyYW0ge3N0cmluZz19IHNpZGViYXJQb3NpdGlvbgorICogQHBhcmFtIHtz
dHJpbmc9fSBzaWRlYmFyV2lkdGhTZXR0aW5nTmFtZQorICogQHBhcmFtIHtudW1iZXI9fSBkZWZh
dWx0U2lkZWJhcldpZHRoCisgKi8KK1dlYkluc3BlY3Rvci5TaWRlYmFyVmlldyA9IGZ1bmN0aW9u
KHNpZGViYXJQb3NpdGlvbiwgc2lkZWJhcldpZHRoU2V0dGluZ05hbWUsIGRlZmF1bHRTaWRlYmFy
V2lkdGgpCit7CisgICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5jYWxsKHRoaXMsIHRydWUsIHNp
ZGViYXJXaWR0aFNldHRpbmdOYW1lLCBkZWZhdWx0U2lkZWJhcldpZHRoIHx8IDIwMCk7CisKKyAg
ICB0aGlzLl9sZWZ0RWxlbWVudCA9IHRoaXMuZmlyc3RFbGVtZW50KCk7CisgICAgdGhpcy5fcmln
aHRFbGVtZW50ID0gdGhpcy5zZWNvbmRFbGVtZW50KCk7CisKKyAgICB0aGlzLl9taW5pbWFsU2lk
ZWJhcldpZHRoID0gUHJlZmVyZW5jZXMubWluU2lkZWJhcldpZHRoOworICAgIHRoaXMuX21pbmlt
YWxNYWluV2lkdGhQZXJjZW50ID0gNTA7CisKKyAgICB0aGlzLl9tYWluRWxlbWVudEhpZGRlbiA9
IGZhbHNlOworICAgIHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuID0gZmFsc2U7CisKKyAgICB0
aGlzLl9pbm5lclNldFNpZGViYXJQb3NpdGlvbihzaWRlYmFyUG9zaXRpb24gfHwgV2ViSW5zcGVj
dG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0KTsKKyAgICB0aGlzLnNldENoYW5n
ZUZpcnN0T25SZXNpemUoc2lkZWJhclBvc2l0aW9uICE9PSBXZWJJbnNwZWN0b3IuU2lkZWJhclZp
ZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQpOworfQorCitXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcu
RXZlbnRUeXBlcyA9IHsKKyAgICBSZXNpemVkOiAiUmVzaXplZCIKK30KKworLyoqCisgKiBAZW51
bSB7c3RyaW5nfQorICovCitXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9u
ID0geworICAgIExlZnQ6ICJMZWZ0IiwKKyAgICBSaWdodDogIlJpZ2h0IgorfQorCitXZWJJbnNw
ZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgX2hhc0xlZnRTaWRlYmFyOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fc2lkZWJhclBvc2l0aW9uID09PSBXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQ7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgZ2V0IG1haW5FbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oYXNMZWZ0U2lkZWJhcigpID8gdGhpcy5fcmlnaHRF
bGVtZW50IDogdGhpcy5fbGVmdEVsZW1lbnQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgZ2V0IHNpZGViYXJFbGVtZW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9oYXNMZWZ0U2lkZWJhcigpID8gdGhpcy5fbGVmdEVsZW1l
bnQgOiB0aGlzLl9yaWdodEVsZW1lbnQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBzaWRlYmFyUG9zaXRpb24KKyAgICAgKi8KKyAgICBfaW5uZXJTZXRTaWRlYmFy
UG9zaXRpb246IGZ1bmN0aW9uKHNpZGViYXJQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMu
X3NpZGViYXJQb3NpdGlvbiA9IHNpZGViYXJQb3NpdGlvbjsKKworICAgICAgICBpZiAodGhpcy5f
aGFzTGVmdFNpZGViYXIoKSkgeworICAgICAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQuYWRkU3R5
bGVDbGFzcygic3BsaXQtdmlldy1zaWRlYmFyLWxlZnQiKTsKKyAgICAgICAgICAgIHRoaXMuX3Jp
Z2h0RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzcGxpdC12aWV3LXNpZGViYXItcmlnaHQiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJzcGxpdC12aWV3LXNpZGViYXItcmlnaHQiKTsKKyAgICAgICAgICAgIHRoaXMuX2xl
ZnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lkZWJhci1sZWZ0Iik7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRo
CisgICAgICovCisgICAgc2V0TWluaW1hbFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCisg
ICAgeworICAgICAgICB0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRoID0gd2lkdGg7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFBlcmNlbnQKKyAgICAgKi8K
KyAgICBzZXRNaW5pbWFsTWFpbldpZHRoUGVyY2VudDogZnVuY3Rpb24od2lkdGhQZXJjZW50KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fbWluaW1hbE1haW5XaWR0aFBlcmNlbnQgPSB3aWR0aFBlcmNl
bnQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAg
ICAqLworICAgIHNldFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCisgICAgeworICAgICAg
ICB0aGlzLnNldFNwbGl0T2Zmc2V0KHdpZHRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIHNpZGViYXJXaWR0aDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc3BsaXRPZmZzZXQoKTsKKyAgICB9LAorCisgICAg
b25SZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5TcGxpdFZp
ZXcucHJvdG90eXBlLm9uUmVzaXplLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5FdmVudFR5cGVzLlJlc2l6
ZWQsIHRoaXMuc3BsaXRPZmZzZXQoKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBvZmZzZXQKKyAgICAgKi8KKyAgICBhcHBseUNvbnN0cmFpbnRzOiBmdW5jdGlv
bihvZmZzZXQpCisgICAgeworICAgICAgICBpZiAodGhpcy5faGFzTGVmdFNpZGViYXIoKSkgewor
ICAgICAgICAgICAgdmFyIG1pbk9mZnNldCA9IHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGg7Cisg
ICAgICAgICAgICB2YXIgbWF4T2Zmc2V0ID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoICogKDEw
MCAtIHRoaXMuX21pbmltYWxNYWluV2lkdGhQZXJjZW50KSAvIDEwMDsKKyAgICAgICAgICAgIHJl
dHVybiBOdW1iZXIuY29uc3RyYWluKG9mZnNldCwgbWluT2Zmc2V0LCBtYXhPZmZzZXQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIG1pbk9mZnNldCA9IHRoaXMuZWxlbWVudC5v
ZmZzZXRXaWR0aCAqIHRoaXMuX21pbmltYWxNYWluV2lkdGhQZXJjZW50IC8gMTAwOworICAgICAg
ICAgICAgdmFyIG1heE9mZnNldCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCAtIHRoaXMuX21p
bmltYWxTaWRlYmFyV2lkdGg7CisgICAgICAgICAgICByZXR1cm4gTnVtYmVyLmNvbnN0cmFpbihv
ZmZzZXQsIG1pbk9mZnNldCwgbWF4T2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBo
aWRlTWFpbkVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9oYXNM
ZWZ0U2lkZWJhcigpKQorICAgICAgICAgICAgdGhpcy5zaG93T25seUZpcnN0KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2hvd09ubHlTZWNvbmQoKTsKKyAgICB9LAorCisgICAg
c2hvd01haW5FbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnNob3dCb3Ro
KCk7CisgICAgfSwKKworICAgIGhpZGVTaWRlYmFyRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkpCisgICAgICAgICAgICB0aGlzLnNo
b3dPbmx5U2Vjb25kKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2hvd09ubHlG
aXJzdCgpOworICAgIH0sCisKKyAgICBzaG93U2lkZWJhckVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuc2hvd0JvdGgoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAgICAqLworICAgIGVsZW1lbnRzVG9SZXN0b3Jl
U2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gWyB0
aGlzLm1haW5FbGVtZW50LCB0aGlzLnNpZGViYXJFbGVtZW50IF07CisgICAgfSwKKworICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3BsaXRWaWV3LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TcGxpdFZpZXcuanMKaW5kZXggMTExYzNlMmI4
NjBkOWY0Y2IxMTNiM2UwYjI4YmVhNTgxNzg2MGZmMi4uYzA3Y2YyZmUxMzNiYTBkNzk2MzI4NmVk
NjljMTM4MmNkMTc0YTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TcGxpdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TcGxpdFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI5LDMzMSArMjksMjM3IEBACiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQotICogQHBhcmFtIHtzdHJpbmc9fSBz
aWRlYmFyUG9zaXRpb24KLSAqIEBwYXJhbSB7c3RyaW5nPX0gc2lkZWJhcldpZHRoU2V0dGluZ05h
bWUKLSAqIEBwYXJhbSB7bnVtYmVyPX0gZGVmYXVsdFNpZGViYXJXaWR0aAorICogQHBhcmFtIHti
b29sZWFufSBpc1ZlcnRpY2FsCisgKiBAcGFyYW0ge3N0cmluZz19IHNwbGl0T2Zmc2V0U2V0dGlu
Z05hbWUKKyAqIEBwYXJhbSB7bnVtYmVyPX0gZGVmYXVsdFNwbGl0T2Zmc2V0CiAgKi8KLVdlYklu
c3BlY3Rvci5TcGxpdFZpZXcgPSBmdW5jdGlvbihzaWRlYmFyUG9zaXRpb24sIHNpZGViYXJXaWR0
aFNldHRpbmdOYW1lLCBkZWZhdWx0U2lkZWJhcldpZHRoKQorV2ViSW5zcGVjdG9yLlNwbGl0Vmll
dyA9IGZ1bmN0aW9uKGlzVmVydGljYWwsIHNwbGl0T2Zmc2V0U2V0dGluZ05hbWUsIGRlZmF1bHRT
cGxpdE9mZnNldCkKIHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRo
aXMuX2lzVmVydGljYWwgPSBpc1ZlcnRpY2FsOworCiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVk
Q1NTKCJzcGxpdFZpZXcuY3NzIik7CiAKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInNw
bGl0LXZpZXciOwogCi0gICAgdGhpcy5fbGVmdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLl9sZWZ0RWxlbWVudC5jbGFzc05hbWUgPSAic3BsaXQtdmll
dy1jb250ZW50cyI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRFbGVt
ZW50KTsKKyAgICB0aGlzLl9maXJzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICB0aGlzLl9maXJzdEVsZW1lbnQuY2xhc3NOYW1lID0gInNwbGl0LXZpZXctY29u
dGVudHMgc3BsaXQtdmlldy1jb250ZW50cy0iICsgKGlzVmVydGljYWwgPyAidmVydGljYWwiIDog
Imhvcml6b250YWwiKTsKKyAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUubGVmdCA9IDA7Cisg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ZpcnN0RWxlbWVudCk7CiAKLSAgICB0
aGlzLl9yaWdodEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9yaWdodEVsZW1lbnQuY2xhc3NOYW1lID0gInNwbGl0LXZpZXctY29udGVudHMiOwotICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodEVsZW1lbnQpOworICAgIHRoaXMu
X3NlY29uZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlz
Ll9zZWNvbmRFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIHNwbGl0LXZp
ZXctY29udGVudHMtIiArIChpc1ZlcnRpY2FsID8gInZlcnRpY2FsIiA6ICJob3Jpem9udGFsIik7
CisgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY29uZEVsZW1lbnQpOwogCi0gICAgdGhpcy5zaWRlYmFy
UmVzaXplckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlz
LnNpZGViYXJSZXNpemVyRWxlbWVudC5jbGFzc05hbWUgPSAic3BsaXQtdmlldy1yZXNpemVyIjsK
LSAgICB0aGlzLmluc3RhbGxSZXNpemVyKHRoaXMuc2lkZWJhclJlc2l6ZXJFbGVtZW50KTsKKyAg
ICB0aGlzLl9yZXNpemVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgIHRoaXMuX3Jlc2l6ZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LXJlc2l6ZXIi
OworICAgIHRoaXMuaW5zdGFsbFJlc2l6ZXIodGhpcy5fcmVzaXplckVsZW1lbnQpOwogICAgIHRo
aXMuX3Jlc2l6YWJsZSA9IHRydWU7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
c2lkZWJhclJlc2l6ZXJFbGVtZW50KTsKLQotICAgIGRlZmF1bHRTaWRlYmFyV2lkdGggPSBkZWZh
dWx0U2lkZWJhcldpZHRoIHx8IDIwMDsKLSAgICB0aGlzLl9zYXZlZFNpZGViYXJXaWR0aCA9IGRl
ZmF1bHRTaWRlYmFyV2lkdGg7Ci0KLSAgICB0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSA9
IHNpZGViYXJXaWR0aFNldHRpbmdOYW1lOwotICAgIGlmICh0aGlzLl9zaWRlYmFyV2lkdGhTZXR0
aW5nTmFtZSkKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzW3RoaXMuX3NpZGViYXJXaWR0
aFNldHRpbmdOYW1lXSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKHRoaXMu
X3NpZGViYXJXaWR0aFNldHRpbmdOYW1lLCB1bmRlZmluZWQpOwotCi0gICAgdGhpcy5fbWluaW1h
bFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pblNpZGViYXJXaWR0aDsKLSAgICB0aGlzLl9t
aW5pbWFsTWFpbldpZHRoID0gMDsKLSAgICB0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRoUGVyY2Vu
dCA9IDA7Ci0gICAgdGhpcy5fbWluaW1hbE1haW5XaWR0aFBlcmNlbnQgPSA1MDsKKyAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVzaXplckVsZW1lbnQpOwogCi0gICAgdGhpcy5f
bWFpbkVsZW1lbnRIaWRkZW4gPSBmYWxzZTsKLSAgICB0aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRl
biA9IGZhbHNlOworICAgIGRlZmF1bHRTcGxpdE9mZnNldCA9IGRlZmF1bHRTcGxpdE9mZnNldCB8
fCAyMDA7CisgICAgdGhpcy5fc2F2ZWRTcGxpdE9mZnNldCA9IGRlZmF1bHRTcGxpdE9mZnNldDsK
IAotICAgIHRoaXMuX2lubmVyU2V0U2lkZWJhclBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbiB8fCBX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0KTsKLX0KLQotV2ViSW5z
cGVjdG9yLlNwbGl0Vmlldy5FdmVudFR5cGVzID0gewotICAgIFJlc2l6ZWQ6ICJSZXNpemVkIgot
fQorICAgIHRoaXMuX3NwbGl0T2Zmc2V0U2V0dGluZ05hbWUgPSBzcGxpdE9mZnNldFNldHRpbmdO
YW1lOworICAgIGlmICh0aGlzLl9zcGxpdE9mZnNldFNldHRpbmdOYW1lKQorICAgICAgICBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3NbdGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFtZV0gPSBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZyh0aGlzLl9zcGxpdE9mZnNldFNldHRpbmdOYW1l
LCB1bmRlZmluZWQpOwogCi0vKioKLSAqIEBlbnVtIHtzdHJpbmd9Ci0gKi8KLVdlYkluc3BlY3Rv
ci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uID0gewotICAgIExlZnQ6ICJMZWZ0IiwKLSAgICBS
aWdodDogIlJpZ2h0IgorICAgIHRoaXMuX2NoYW5nZUZpcnN0T25SZXNpemUgPSB0cnVlOwogfQog
CiBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGdldCBoYXNMZWZ0U2lkZWJhcigpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fc2lkZWJhclBvc2l0aW9uID09PSBXZWJJbnNwZWN0b3Iu
U3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0OwotICAgIH0sCi0KLSAgICAvKioKICAgICAg
KiBAcmV0dXJuIHtFbGVtZW50fQogICAgICAqLwotICAgIGdldCBtYWluRWxlbWVudCgpCisgICAg
Zmlyc3RFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5oYXNM
ZWZ0U2lkZWJhciA/IHRoaXMuX3JpZ2h0RWxlbWVudCA6IHRoaXMuX2xlZnRFbGVtZW50OworICAg
ICAgICByZXR1cm4gdGhpcy5fZmlyc3RFbGVtZW50OwogICAgIH0sCiAKICAgICAvKioKICAgICAg
KiBAcmV0dXJuIHtFbGVtZW50fQogICAgICAqLwotICAgIGdldCBzaWRlYmFyRWxlbWVudCgpCisg
ICAgc2Vjb25kRWxlbWVudDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
aGFzTGVmdFNpZGViYXIgPyB0aGlzLl9sZWZ0RWxlbWVudCA6IHRoaXMuX3JpZ2h0RWxlbWVudDsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZEVsZW1lbnQ7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICogQHBhcmFtIHtib29sZWFufSBjaGFuZ2VG
aXJzdAogICAgICAqLwotICAgIGdldCByZXNpemFibGUoKQorICAgIHNldENoYW5nZUZpcnN0T25S
ZXNpemU6IGZ1bmN0aW9uKGNoYW5nZUZpcnN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc2l6YWJsZSAmJiAhdGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4gJiYgIXRoaXMuX3NpZGViYXJF
bGVtZW50SGlkZGVuOworICAgICAgICB0aGlzLl9jaGFuZ2VGaXJzdE9uUmVzaXplID0gY2hhbmdl
Rmlyc3Q7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEB0eXBlIHtib29sZWFufQorICAgICAq
IEByZXR1cm4ge0VsZW1lbnR9CiAgICAgICovCi0gICAgc2V0IHJlc2l6YWJsZShyZXNpemFibGUp
CisgICAgcmVzaXplckVsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9yZXNpemFibGUgPT09IHJlc2l6YWJsZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
dGhpcy5fcmVzaXphYmxlID0gcmVzaXphYmxlOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVy
KHJlc2l6YWJsZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVyRWxlbWVudDsKICAgICB9
LAogCi0gICAgX3VwZGF0ZVJlc2l6ZXI6IGZ1bmN0aW9uKCkKKyAgICBzaG93T25seUZpcnN0OiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5yZXNpemFibGUpCi0gICAgICAgICAg
ICB0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1lbnQuYWRk
U3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRoaXMuX3Nob3dPbmx5KHRoaXMuX2ZpcnN0
RWxlbWVudCwgdGhpcy5fc2Vjb25kRWxlbWVudCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEB0eXBlIHtzdHJpbmd9Ci0gICAgICovCi0gICAgc2V0IHNpZGViYXJQb3NpdGlvbihzaWRlYmFy
UG9zaXRpb24pCisgICAgc2hvd09ubHlTZWNvbmQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9zaWRlYmFyUG9zaXRpb24gPT09IHNpZGViYXJQb3NpdGlvbikKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faW5uZXJTZXRTaWRlYmFyUG9zaXRpb24oc2lkZWJh
clBvc2l0aW9uKTsKLSAgICAgICAgdGhpcy5fcmVzdG9yZVNpZGViYXJXaWR0aCgpOworICAgICAg
ICB0aGlzLl9zaG93T25seSh0aGlzLl9zZWNvbmRFbGVtZW50LCB0aGlzLl9maXJzdEVsZW1lbnQp
OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lkZWJhclBvc2l0
aW9uCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBzaWRlQQorICAgICAqIEBwYXJhbSB7RWxlbWVu
dH0gc2lkZUIKICAgICAgKi8KLSAgICBfaW5uZXJTZXRTaWRlYmFyUG9zaXRpb246IGZ1bmN0aW9u
KHNpZGViYXJQb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NpZGViYXJQb3NpdGlvbiA9
IHNpZGViYXJQb3NpdGlvbjsKLQotICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5zdHlsZS5sZWZ0
ID0gMDsKLSAgICAgICAgdGhpcy5fcmlnaHRFbGVtZW50LnN0eWxlLnJpZ2h0ID0gMDsKLSAgICAg
ICAgaWYgKHRoaXMuaGFzTGVmdFNpZGViYXIpIHsKLSAgICAgICAgICAgIHRoaXMuX2xlZnRFbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lkZWJhci1sZWZ0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl9yaWdodEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic3BsaXQtdmlldy1zaWRlYmFy
LXJpZ2h0Iik7Ci0gICAgICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9w
ZXJ0eSgicmlnaHQiKTsKLSAgICAgICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5zdHlsZS5yZW1v
dmVQcm9wZXJ0eSgid2lkdGgiKTsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZXJFbGVt
ZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJyaWdodCIpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgdGhpcy5fcmlnaHRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lk
ZWJhci1yaWdodCIpOwotICAgICAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygic3BsaXQtdmlldy1zaWRlYmFyLWxlZnQiKTsKLSAgICAgICAgICAgIHRoaXMuX2xlZnRF
bGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwotICAgICAgICAgICAgdGhpcy5f
cmlnaHRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJsZWZ0Iik7Ci0gICAgICAgICAgICB0
aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgibGVmdCIpOwot
ICAgICAgICB9CisgICAgX3Nob3dPbmx5OiBmdW5jdGlvbihzaWRlQSwgc2lkZUIpCisgICAgewor
ICAgICAgICBzaWRlQS5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgc2lkZUEu
YWRkU3R5bGVDbGFzcygibWF4aW1pemVkIik7CisgICAgICAgIHNpZGVCLmFkZFN0eWxlQ2xhc3Mo
ImhpZGRlbiIpOworICAgICAgICBzaWRlQi5yZW1vdmVTdHlsZUNsYXNzKCJtYXhpbWl6ZWQiKTsK
KyAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGF5b3V0UHJvcGVydGllcygpOworCisgICAgICAgIHRo
aXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgICAgIHRoaXMuX2ZpcnN0RWxl
bWVudC5zdHlsZS5ib3R0b20gPSAwOworICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUu
d2lkdGggPSAiMTAwJSI7CisgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5oZWlnaHQg
PSAiMTAwJSI7CisKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS5sZWZ0ID0gMDsK
KyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS50b3AgPSAwOworICAgICAgICB0aGlz
Ll9zZWNvbmRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOworICAgICAgICB0aGlzLl9zZWNv
bmRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKKworICAgICAgICB0aGlzLl9pc1Nob3dp
bmdPbmUgPSB0cnVlOworICAgICAgICB0aGlzLnNldFJlc2l6YWJsZShmYWxzZSk7CisgICAgICAg
IHRoaXMuZG9SZXNpemUoKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1i
ZXJ9IHdpZHRoCi0gICAgICovCi0gICAgc2V0IG1pbmltYWxTaWRlYmFyV2lkdGgod2lkdGgpCisg
ICAgX3JlbW92ZUFsbExheW91dFByb3BlcnRpZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhpcy5fZmlyc3RF
bGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJyaWdodCIpOworICAgICAgICB0aGlzLl9maXJz
dEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImJvdHRvbSIpOworICAgICAgICB0aGlzLl9m
aXJzdEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7CisgICAgICAgIHRoaXMu
X2ZpcnN0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiaGVpZ2h0Iik7CisgIAorICAgICAg
ICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJsZWZ0Iik7CisgICAg
ICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInRvcCIpOworICAg
ICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwor
ICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQi
KTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCi0gICAg
ICovCi0gICAgc2V0IG1pbmltYWxNYWluV2lkdGgod2lkdGgpCisgICAgc2hvd0JvdGg6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX21pbmltYWxNYWluV2lkdGggPSB3aWR0aDsKLSAg
ICB9LAorICAgICAgICB0aGlzLl9pc1Nob3dpbmdPbmUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
Zmlyc3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAgICB0aGlzLl9m
aXJzdEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibWF4aW1pemVkIik7CisgICAgICAgIHRoaXMu
X3NlY29uZEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRoaXMu
X3NlY29uZEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibWF4aW1pemVkIik7CiAKLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhQZXJjZW50Ci0gICAgICovCi0gICAgc2V0IG1p
bmltYWxTaWRlYmFyV2lkdGhQZXJjZW50KHdpZHRoUGVyY2VudCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX21pbmltYWxTaWRlYmFyV2lkdGhQZXJjZW50ID0gd2lkdGhQZXJjZW50OwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhQZXJjZW50Ci0gICAgICovCi0g
ICAgc2V0IG1pbmltYWxNYWluV2lkdGhQZXJjZW50KHdpZHRoUGVyY2VudCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX21pbmltYWxNYWluV2lkdGhQZXJjZW50ID0gd2lkdGhQZXJjZW50OwotICAgIH0s
CisgICAgICAgIC8vIEZvcmNlIHVwZGF0ZQorICAgICAgICBkZWxldGUgdGhpcy5fc3BsaXRPZmZz
ZXQ7CisgICAgICAgIHRoaXMuc2V0U3BsaXRPZmZzZXQodGhpcy5fbGFzdFNwbGl0T2Zmc2V0KCkp
OwogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCi0gICAgICovCi0gICAg
c2V0TWFpbldpZHRoOiBmdW5jdGlvbih3aWR0aCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0U2lk
ZWJhcldpZHRoKHRoaXMuX3RvdGFsV2lkdGggLSB3aWR0aCk7CisgICAgICAgIHRoaXMuc2V0UmVz
aXphYmxlKHRydWUpOworICAgICAgICB0aGlzLmRvUmVzaXplKCk7CiAgICAgfSwKIAogICAgIC8q
KgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
cmVzaXphYmxlCiAgICAgICovCi0gICAgc2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkK
KyAgICBzZXRSZXNpemFibGU6IGZ1bmN0aW9uKHJlc2l6YWJsZSkKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9zaWRlYmFyV2lkdGggPT09IHdpZHRoKQorICAgICAgICBpZiAodGhpcy5fcmVzaXph
YmxlID09PSByZXNpemFibGUpCiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5f
aW5uZXJTZXRTaWRlYmFyV2lkdGgod2lkdGgpOwotICAgICAgICB0aGlzLnNhdmVTaWRlYmFyV2lk
dGgoKTsKLSAgICB9LAotCi0gICAgc2lkZWJhcldpZHRoOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fc2lkZWJhcldpZHRoOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge251bWJlcn0gd2lkdGgKLSAgICAgKi8KLSAgICBfaW5uZXJTZXRTaWRlYmFyV2lk
dGg6IGZ1bmN0aW9uKHdpZHRoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaGFzTGVmdFNpZGVi
YXIpCi0gICAgICAgICAgICB0aGlzLl9pbm5lclNldExlZnRTaWRlYmFyV2lkdGgod2lkdGgpOwor
ICAgICAgICB0aGlzLl9yZXNpemFibGUgPSByZXNpemFibGU7CisgICAgICAgIGlmIChyZXNpemFi
bGUpCisgICAgICAgICAgICB0aGlzLl9yZXNpemVyRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJo
aWRkZW4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRSaWdodFNp
ZGViYXJXaWR0aCh3aWR0aCk7Ci0gICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHdpZHRoOwot
ICAgICAgICB0aGlzLmRvUmVzaXplKCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuRXZlbnRUeXBlcy5SZXNpemVkLCB0aGlzLl9z
aWRlYmFyV2lkdGgpOworICAgICAgICAgICAgdGhpcy5fcmVzaXplckVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiaGlkZGVuIik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKICAgICAgKi8KLSAgICBfaW5u
ZXJTZXRMZWZ0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKKyAgICBzZXRTcGxpdE9mZnNl
dDogZnVuY3Rpb24ob2Zmc2V0KQogICAgIHsKLSAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQuc3R5
bGUud2lkdGggPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5zdHls
ZS5sZWZ0ID0gd2lkdGggKyAicHgiOwotICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVu
dC5zdHlsZS5sZWZ0ID0gKHdpZHRoIC0gMykgKyAicHgiOworICAgICAgICBpZiAodGhpcy5fc3Bs
aXRPZmZzZXQgPT09IG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9pbm5lclNldFNwbGl0T2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHRoaXMuX3NhdmVTcGxpdE9m
ZnNldChvZmZzZXQpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0g
d2lkdGgKLSAgICAgKi8KLSAgICBfaW5uZXJTZXRSaWdodFNpZGViYXJXaWR0aDogZnVuY3Rpb24o
d2lkdGgpCisgICAgc3BsaXRPZmZzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X3JpZ2h0RWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgInB4IjsKLSAgICAgICAgdGhpcy5f
bGVmdEVsZW1lbnQuc3R5bGUucmlnaHQgPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHRoaXMuc2lk
ZWJhclJlc2l6ZXJFbGVtZW50LnN0eWxlLnJpZ2h0ID0gKHdpZHRoIC0gMykgKyAicHgiOworICAg
ICAgICByZXR1cm4gdGhpcy5fc3BsaXRPZmZzZXQ7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKICAg
ICAgKi8KLSAgICBfc2V0U2lkZWJhcldpZHRoRW5zdXJpbmdDb25zdHJhaW50czogZnVuY3Rpb24o
d2lkdGgpCisgICAgX2lubmVyU2V0U3BsaXRPZmZzZXQ6IGZ1bmN0aW9uKG9mZnNldCkKICAgICB7
Ci0gICAgICAgIHZhciBtaW5XaWR0aCA9IE1hdGgubWF4KHRoaXMuX21pbmltYWxTaWRlYmFyV2lk
dGgsIHRoaXMuX3RvdGFsV2lkdGggKiB0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRoUGVyY2VudCk7
Ci0gICAgICAgIHZhciBtYXhXaWR0aCA9IE1hdGgubWluKHRoaXMuX3RvdGFsV2lkdGggLSB0aGlz
Ll9taW5pbWFsTWFpbldpZHRoLCB0aGlzLl90b3RhbFdpZHRoICogKDEwMCAtIHRoaXMuX21pbmlt
YWxNYWluV2lkdGhQZXJjZW50KSAvIDEwMCApOwotICAgICAgICB3aWR0aCA9IE51bWJlci5jb25z
dHJhaW4od2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCk7Ci0KLSAgICAgICAgdGhpcy5zZXRTaWRl
YmFyV2lkdGgod2lkdGgpOwotICAgIH0sCi0KLSAgICBoaWRlTWFpbkVsZW1lbnQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tYWluRWxlbWVudEhpZGRlbikKKyAgICAgICAg
aWYgKHRoaXMuX2lzU2hvd2luZ09uZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAodGhpcy5fc2lkZWJhckVsZW1lbnRIaWRkZW4pCi0gICAgICAgICAgICB0aGlzLnNob3dTaWRl
YmFyRWxlbWVudCgpOworICAgICAgICB0aGlzLl9yZW1vdmVBbGxMYXlvdXRQcm9wZXJ0aWVzKCk7
CiAKLSAgICAgICAgdGhpcy5tYWluRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAg
ICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJtYXhpbWl6ZWQiKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmICh0aGlzLmhhc0xlZnRTaWRlYmFyKQotICAgICAgICAgICAgdGhp
cy5zaWRlYmFyRWxlbWVudC5zdHlsZS5yaWdodCA9ICIwcHgiOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN0eWxlLmxlZnQgPSAiMHB4IjsKLSAgICAgICAg
Ci0gICAgICAgIHRoaXMuX21haW5FbGVtZW50SGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlUmVzaXplcigpOwotICAgICAgICB0aGlzLl9yZXN0b3JlU2lkZWJhcldpZHRoKCk7Ci0g
ICAgICAgIHRoaXMuZG9SZXNpemUoKTsKLSAgICB9LAotCi0gICAgc2hvd01haW5FbGVtZW50OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX21haW5FbGVtZW50SGlkZGVuKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMubWFpbkVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygibWF4aW1pemVkIik7Ci0gICAgICAgIAotICAgICAgICBpZiAodGhpcy5oYXNMZWZ0
U2lkZWJhcikKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3R5bGUucmlnaHQgPSAi
IjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdHlsZS5s
ZWZ0ID0gIiI7Ci0KLSAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4gPSBmYWxzZTsKLSAg
ICAgICAgdGhpcy5fdXBkYXRlUmVzaXplcigpOwotICAgICAgICB0aGlzLl9yZXN0b3JlU2lkZWJh
cldpZHRoKCk7Ci0gICAgICAgIHRoaXMuZG9SZXNpemUoKTsKLSAgICB9LAotCi0gICAgaGlkZVNp
ZGViYXJFbGVtZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fc2lkZWJh
ckVsZW1lbnRIaWRkZW4pCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciB2YWx1ZVRv
U2V0ID0gKHRoaXMuX2NoYW5nZUZpcnN0T25SZXNpemUgPyB0aGlzLl90b3RhbFNpemUgLSBvZmZz
ZXQgOiBvZmZzZXQpICsgInB4IjsKIAotICAgICAgICBpZiAodGhpcy5fbWFpbkVsZW1lbnRIaWRk
ZW4pCi0gICAgICAgICAgICB0aGlzLnNob3dNYWluRWxlbWVudCgpOworICAgICAgICBpZiAodGhp
cy5faXNWZXJ0aWNhbCkgeworICAgICAgICAgICAgdmFyIHJlc2l6ZXJXaWR0aCA9IHRoaXMuX3Jl
c2l6ZXJFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5nZUZp
cnN0T25SZXNpemUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUu
cmlnaHQgPSB2YWx1ZVRvU2V0OworICAgICAgICAgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQu
c3R5bGUud2lkdGggPSB2YWx1ZVRvU2V0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUud2lkdGggPSB2YWx1ZVRvU2V0OworICAg
ICAgICAgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUubGVmdCA9IHZhbHVlVG9TZXQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9yZXNpemVyRWxlbWVudC5zdHlsZS5s
ZWZ0ID0gb2Zmc2V0IC0gcmVzaXplcldpZHRoIC8gMiArICJweCI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB2YXIgcmVzaXplckhlaWdodCA9IHRoaXMuX3Jlc2l6ZXJFbGVtZW50Lm9m
ZnNldEhlaWdodDsKKyAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5fY2hhbmdlRmly
c3RPblJlc2l6ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5i
b3R0b20gPSB2YWx1ZVRvU2V0OworICAgICAgICAgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQu
c3R5bGUuaGVpZ2h0ID0gdmFsdWVUb1NldDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLmhlaWdodCA9IHZhbHVlVG9TZXQ7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS50b3AgPSB2YWx1ZVRvU2V0
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fcmVzaXplckVsZW1lbnQuc3R5bGUu
dG9wID0gb2Zmc2V0IC0gcmVzaXplckhlaWdodCAvIDIgKyAicHgiOworICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAg
ICAgdGhpcy5fc2lkZWJhckVsZW1lbnRIaWRkZW4gPSB0cnVlOwotICAgICAgICB0aGlzLl91cGRh
dGVSZXNpemVyKCk7Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKKyAgICAg
ICAgdGhpcy5fc3BsaXRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHRoaXMuZG9SZXNpemUoKTsK
ICAgICB9LAogCi0gICAgc2hvd1NpZGViYXJFbGVtZW50OiBmdW5jdGlvbigpCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAg
ICAgKi8KKyAgICBhcHBseUNvbnN0cmFpbnRzOiBmdW5jdGlvbihvZmZzZXQpCiAgICAgewotICAg
ICAgICBpZiAoIXRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVu
Iik7Ci0gICAgICAgIHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuID0gZmFsc2U7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZVJlc2l6ZXIoKTsKLSAgICAgICAgdGhpcy5fcmVzdG9yZVNpZGViYXJXaWR0
aCgpOwotICAgICAgICB0aGlzLmRvUmVzaXplKCk7CisgICAgICAgIGNvbnN0IG1pblNpemUgPSAy
MDsKKyAgICAgICAgb2Zmc2V0ID0gTWF0aC5tYXgob2Zmc2V0LCBtaW5TaXplKTsKKyAgICAgICAg
aWYgKHRoaXMuX3RvdGFsU2l6ZSAtIG9mZnNldCA8IG1pblNpemUpCisgICAgICAgICAgICBvZmZz
ZXQgPSB0aGlzLl90b3RhbFNpemUgLSBtaW5TaXplOworICAgICAgICByZXR1cm4gb2Zmc2V0Owog
ICAgIH0sCiAKICAgICB3YXNTaG93bjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5f
dG90YWxXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAgdGhpcy5fcmVz
dG9yZVNpZGViYXJXaWR0aCgpOworICAgICAgICB0aGlzLl90b3RhbFNpemUgPSB0aGlzLmVsZW1l
bnQub2Zmc2V0V2lkdGg7CisgICAgICAgIHRoaXMuc2V0U3BsaXRPZmZzZXQodGhpcy5fbGFzdFNw
bGl0T2Zmc2V0KCkpOwogICAgIH0sCiAKICAgICBvblJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5fdG90YWxXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDsKLQot
ICAgICAgICBpZiAodGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4pCi0gICAgICAgICAgICB0aGlzLl9z
aWRlYmFyV2lkdGggPSB0aGlzLl90b3RhbFdpZHRoOworICAgICAgICB2YXIgb2xkVG90YWxTaXpl
ID0gdGhpcy5fdG90YWxTaXplOworICAgICAgICB0aGlzLl90b3RhbFNpemUgPSB0aGlzLl9pc1Zl
cnRpY2FsID8gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoIDogdGhpcy5lbGVtZW50Lm9mZnNldEhl
aWdodDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNjUsOCArMjcxLDcgQEAgV2ViSW5zcGVjdG9y
LlNwbGl0Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzaXphYmxlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHZhciBsZWZ0V2lkdGggPSB0aGlz
Lmhhc0xlZnRTaWRlYmFyID8gdGhpcy5fc2lkZWJhcldpZHRoIDogdGhpcy5fdG90YWxXaWR0aCAt
IHRoaXMuX3NpZGViYXJXaWR0aDsKLSAgICAgICAgdGhpcy5fZHJhZ09mZnNldCA9IGxlZnRXaWR0
aCAtIGV2ZW50LnBhZ2VYOworICAgICAgICB0aGlzLl9kcmFnT2Zmc2V0ID0gdGhpcy5fc3BsaXRP
ZmZzZXQgLSAodGhpcy5faXNWZXJ0aWNhbCA/IGV2ZW50LnBhZ2VYIDogZXZlbnQucGFnZVkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCkBAIC0zNzUsMTEgKzI4MCw4IEBAIFdlYklu
c3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9yZXNpemVyRHJh
Z2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGxlZnRXaWR0aCA9IGV2
ZW50LnBhZ2VYICsgdGhpcy5fZHJhZ09mZnNldDsKLSAgICAgICAgdmFyIHJpZ2h0V2lkdGggPSB0
aGlzLl90b3RhbFdpZHRoIC0gbGVmdFdpZHRoOwotICAgICAgICB2YXIgc2lkZWJhcldpZHRoID0g
dGhpcy5oYXNMZWZ0U2lkZWJhciA/IGxlZnRXaWR0aCA6IHJpZ2h0V2lkdGg7Ci0KLSAgICAgICAg
dGhpcy5fc2V0U2lkZWJhcldpZHRoRW5zdXJpbmdDb25zdHJhaW50cyhzaWRlYmFyV2lkdGgpOwor
ICAgICAgICB2YXIgbmV3T2Zmc2V0ID0gKHRoaXMuX2lzVmVydGljYWwgPyBldmVudC5wYWdlWCA6
IGV2ZW50LnBhZ2VZKSArIHRoaXMuX2RyYWdPZmZzZXQ7CisgICAgICAgIHRoaXMuc2V0U3BsaXRP
ZmZzZXQodGhpcy5hcHBseUNvbnN0cmFpbnRzKG5ld09mZnNldCkpOwogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgIH0sCiAKQEAgLTM5Niw1MiArMjk4LDMwIEBAIFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGluc3RhbGxSZXNpemVy
OiBmdW5jdGlvbihyZXNpemVyRWxlbWVudCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5p
bnN0YWxsRHJhZ0hhbmRsZShyZXNpemVyRWxlbWVudCwgdGhpcy5fc3RhcnRSZXNpemVyRHJhZ2dp
bmcuYmluZCh0aGlzKSwgdGhpcy5fcmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2Vu
ZFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCAiZXctcmVzaXplIik7CisgICAgICAgIFdlYklu
c3BlY3Rvci5pbnN0YWxsRHJhZ0hhbmRsZShyZXNpemVyRWxlbWVudCwgdGhpcy5fc3RhcnRSZXNp
emVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fcmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyks
IHRoaXMuX2VuZFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCB0aGlzLl9pc1ZlcnRpY2FsID8g
ImV3LXJlc2l6ZSIgOiAibnMtcmVzaXplIik7CiAgICAgfSwKIAogICAgIC8qKgogICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KICAgICAgKi8KLSAgICBwcmVmZXJyZWRTaWRlYmFyV2lkdGg6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZWRTaWRlYmFyV2lkdGg7Ci0KLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFt
ZV0uZ2V0KCkgfHwgdGhpcy5fc2F2ZWRTaWRlYmFyV2lkdGg7Ci0gICAgfSwKLQotICAgIF9yZXN0
b3JlU2lkZWJhcldpZHRoOiBmdW5jdGlvbigpCisgICAgX2xhc3RTcGxpdE9mZnNldDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21haW5FbGVtZW50SGlkZGVuKSB7Ci0gICAg
ICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN0eWxlLndpZHRoID0gIiI7Ci0gICAgICAgICAg
ICB0aGlzLl9zaWRlYmFyV2lkdGggPSB0aGlzLl90b3RhbFdpZHRoOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFt
ZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zYXZlZFNwbGl0T2Zmc2V0OwogCi0gICAgICAg
IGlmICh0aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRlbikgewotICAgICAgICAgICAgdGhpcy5faW5u
ZXJTZXRTaWRlYmFyV2lkdGgoMCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBFbnN1cmUgcmVzdG9yZSBzYXRpc2ZpZXMgY29uc3RyYWludHMuCi0gICAgICAg
IHRoaXMuX3NldFNpZGViYXJXaWR0aEVuc3VyaW5nQ29uc3RyYWludHModGhpcy5wcmVmZXJyZWRT
aWRlYmFyV2lkdGgoKSk7Ci0gICAgfSwKLQotICAgIHNhdmVTaWRlYmFyV2lkdGg6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NhdmVkU2lkZWJhcldpZHRoID0gdGhpcy5fc2lkZWJh
cldpZHRoOwotICAgICAgICBpZiAoIXRoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9z
aWRlYmFyV2lkdGhTZXR0aW5nTmFtZV0uc2V0KHRoaXMuX3NpZGViYXJXaWR0aCk7CisgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3Iuc2V0dGluZ3NbdGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFt
ZV0uZ2V0KCkgfHwgdGhpcy5fc2F2ZWRTcGxpdE9mZnNldDsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBv
ZmZzZXQKICAgICAgKi8KLSAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zvcjog
ZnVuY3Rpb24oKQorICAgIF9zYXZlU3BsaXRPZmZzZXQ6IGZ1bmN0aW9uKG9mZnNldCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBbIHRoaXMubWFpbkVsZW1lbnQsIHRoaXMuc2lkZWJhckVsZW1lbnQg
XTsKKyAgICAgICAgdGhpcy5fc2F2ZWRTcGxpdE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgaWYg
KCF0aGlzLl9zcGxpdE9mZnNldFNldHRpbmdOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zcGxpdE9mZnNldFNldHRpbmdOYW1l
XS5zZXQob2Zmc2V0KTsKICAgICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwppbmRleCBkMzFjODBhOWJiYTY3NjBkYzllZDMxZDMwNzUwN2NjY2Jl
ZTg2M2MzLi41YTg2MDBkMGY2NTE3YmFjMmI3OGU4YjRjZWFkZTc5MTE2YzdjNjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
CkBAIC02MSw4ICs2MSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24o
KQogICAgIHRoaXMuX3NpZGViYXJCYWNrZ3JvdW5kRWxlbWVudC5jbGFzc05hbWUgPSAic2lkZWJh
ciBzcGxpdC12aWV3LXNpZGViYXItbGVmdCB0aW1lbGluZS1zaWRlYmFyLWJhY2tncm91bmQiOwog
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zaWRlYmFyQmFja2dyb3VuZEVsZW1l
bnQpOwogCi0gICAgdGhpcy5jcmVhdGVTcGxpdFZpZXdXaXRoU2lkZWJhclRyZWUoKTsKLSAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zcGxpdFZpZXcuc2lkZWJhclJlc2l6ZXJFbGVt
ZW50KTsKKyAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3V2l0aFRyZWUoKTsKKyAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zcGxpdFZpZXcucmVzaXplckVsZW1lbnQoKSk7CiAKICAg
ICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gdGhpcy5zcGxpdFZpZXcuZWxlbWVudDsKICAgICB0
aGlzLl9jb250YWluZXJFbGVtZW50LmlkID0gInRpbWVsaW5lLWNvbnRhaW5lciI7CkBAIC03Miw3
ICs3Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuX3RpbWVsaW5lTWVtb3J5U3BsaXR0ZXIuaWQgPSAidGltZWxpbmUtbWVtb3J5LXNwbGl0dGVy
IjsKICAgICBXZWJJbnNwZWN0b3IuaW5zdGFsbERyYWdIYW5kbGUodGhpcy5fdGltZWxpbmVNZW1v
cnlTcGxpdHRlciwgdGhpcy5fc3RhcnRTcGxpdHRlckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMu
X3NwbGl0dGVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fZW5kU3BsaXR0ZXJEcmFnZ2luZy5i
aW5kKHRoaXMpLCAibnMtcmVzaXplIik7CiAgICAgdGhpcy5fdGltZWxpbmVNZW1vcnlTcGxpdHRl
ci5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICB0aGlzLl9tZW1vcnlTdGF0aXN0aWNzID0g
bmV3IFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzKHRoaXMsIHRoaXMuX21vZGVsLCB0aGlz
LnNwbGl0Vmlldy5wcmVmZXJyZWRTaWRlYmFyV2lkdGgoKSk7CisgICAgdGhpcy5fbWVtb3J5U3Rh
dGlzdGljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyh0aGlzLCB0aGlzLl9t
b2RlbCwgdGhpcy5zcGxpdFZpZXcuc2lkZWJhcldpZHRoKCkpOwogICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5tZW1vcnlDb3VudGVyR3JhcGhzSGVpZ2h0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNyZWF0ZVNldHRpbmcoIm1lbW9yeUNvdW50ZXJHcmFwaHNIZWlnaHQiLCAxNTApOwogCiAgICAg
dmFyIGl0ZW1zVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJl
ZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSRUNPUkRTIiksIHt9LCB0cnVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCAzMzhm
Zjg5YmZkNDQ2YThjZjQ1YTllNWU4OWNiNTRiZjE5OTBkNDI4Li5hMGNmOTUzZWI1YjUxYzdiMTlm
ZjRiZjFjMTZiZWUzNDhiOTIxZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCkBAIC0xNzIsNiArMTcyLDcgQEAKICAgICA8ZmlsZT5TaWRlYmFy
T3ZlcmxheS5qczwvZmlsZT4KICAgICA8ZmlsZT5TaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8
ZmlsZT5TaWRlYmFyVHJlZUVsZW1lbnQuanM8L2ZpbGU+CisgICAgPGZpbGU+U2lkZWJhclZpZXcu
anM8L2ZpbGU+CiAgICAgPGZpbGU+U25pcHBldEphdmFTY3JpcHRTb3VyY2VGcmFtZS5qczwvZmls
ZT4KICAgICA8ZmlsZT5TbmlwcGV0U3RvcmFnZS5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb2Z0Q29u
dGV4dE1lbnUuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA2ZWEwYWY3ZTk0M2ZiY2JmYjk2NjM0MGZlMzYyNjdl
MTBiMjgxZjMzLi45NzlhN2I0ZDk5NThkYmRjYmU1YjhkY2IwNjcwM2VmN2M1NThhNDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
QEAgLTExMyw2ICsxMTMsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNwbGl0Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2lkZWJhclZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnNvbGVQYW5l
bC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
RXh0ZW5zaW9uQVBJLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJFeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc3BsaXRWaWV3LmNzcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc3BsaXRWaWV3LmNzcwppbmRleCAwNjE0
YzZmOTI5YmM4MzZiNjc4Y2VhYWI4YWFjYjgwMzkwNjA1ZTdkLi44MjZlMTdmNTRhOTY4MjQ0N2Qy
ZTRjYzJjOWQ4M2EyYzQ1ZWI5ZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3NwbGl0Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzCkBAIC0zNywxMCArMzcsMjAgQEAKIAogLnNwbGl0LXZp
ZXctY29udGVudHMgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAg
Ym90dG9tOiAwOwogICAgIG92ZXJmbG93OiBhdXRvOwogICAgIGN1cnNvcjogZGVmYXVsdDsKKyAg
ICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworfQorCisuc3BsaXQtdmlldy1jb250ZW50cyAuc3Bs
aXQtdmlldy1jb250ZW50cy12ZXJ0aWNhbCB7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsK
K30KKworLnNwbGl0LXZpZXctY29udGVudHMgLnNwbGl0LXZpZXctY29udGVudHMtaG9yaXpvbnRh
bCB7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKIH0KIAogLnNwbGl0LXZpZXctc2lkZWJh
ci1sZWZ0IHsKQEAgLTY0LDcgKzc0LDcgQEAKICAgICB0b3A6IDA7CiAgICAgYm90dG9tOiAwOwog
ICAgIHdpZHRoOiA1cHg7Ci0gICAgei1pbmRleDogNTAwOworICAgIHotaW5kZXg6IDE1MDA7CiAg
ICAgY3Vyc29yOiBldy1yZXNpemU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173074</attachid>
            <date>2012-11-08 11:01:19 -0800</date>
            <delta_ts>2012-11-09 01:08:10 -0800</delta_ts>
            <desc>[Patch] with canvas profiler migrated to the split</desc>
            <filename>bug-101612-20121108225927.patch</filename>
            <type>text/plain</type>
            <size>59208</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFkZDliOGZjMzE0OTJj
NGJiZWU2ODgwMDhlOThmNzgzZTJiZjkyOC4uOTllMTgxMDQ5Y2RkNzcxNjI0ZDNiMjk5MjU0ZmVi
M2E0Yjg3NjQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTExLTA4ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNwbGl0IFNwbGl0VmlldyBpbnRvIFNwbGl0VmlldyBhbmQgU2lkZWJhclZpZXcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTYxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgU3Bs
aXRWaWV3IGlzIHJhdGhlciBhIHNpZGViYXIgdmlldy4gSSdtIGV4dHJhY3RpbmcgdGhlIHJldXNh
YmxlIHNwbGl0IGNvbXBvbmVudCBmcm9tIGl0LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5
cGUud2FzU2hvd24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q291bnRlclVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3Rv
dHlwZS5zZXRUb3BQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS52aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZS5zZXQgX3Bpbk5hdmln
YXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIu
cHJvdG90eXBlLnNldCBzaG93TmF2aWdhdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVOYXZpZ2F0b3JPdmVy
bGF5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5w
cm90b3R5cGUuX2lubmVySGlkZU5hdmlnYXRvck92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmNyZWF0
ZVNpZGViYXJWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuY3Jl
YXRlU2lkZWJhclZpZXdXaXRoVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGVi
YXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLl9oYXNMZWZ0U2lkZWJh
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdldCBtYWlu
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdl
dCBzaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJv
dG90eXBlLl9pbm5lclNldFNpZGViYXJQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLnNldE1pbmltYWxTaWRlYmFyV2lkdGgpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LnByb3RvdHlwZS5zZXRNaW5pbWFsTWFpbldpZHRoUGVy
Y2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNldFNp
ZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBl
LnNpZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90
eXBlLm9uUmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5
cGUuYXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcu
cHJvdG90eXBlLmhpZGVNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJh
clZpZXcucHJvdG90eXBlLnNob3dNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLmhpZGVTaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNob3dTaWRlYmFyRWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3Jl
U2Nyb2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuZmlyc3RFbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNlY29uZEVsZW1lbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuc2V0Q2hhbmdlRmlyc3RPblJlc2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5yZXNpemVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5zaG93T25seUZp
cnN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNob3dPbmx5
U2Vjb25kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLl9zaG93
T25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5fcmVtb3Zl
QWxsTGF5b3V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnBy
b3RvdHlwZS5zaG93Qm90aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3Rv
dHlwZS5zZXRSZXNpemFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90
b3R5cGUuc2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuc3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuX2lubmVyU2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
bGl0Vmlldy5wcm90b3R5cGUuX3N0YXJ0UmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzOgor
CiAyMDEyLTExLTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMzODkyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDllNzVjOGQ4YjljNWYxZTcwZTg0NGQ3MGMxMjRlMmRiMjczYTQyYmIuLmU2YTFhZjll
OTZmNjJhYzc5ZDM5NDRiYmFmZDQ3ODJlZTg5YWJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY0
NjYsNiArNjQ2Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyT3ZlcmxheS5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyVmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyVHJlZUVsZW1lbnQuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldFN0b3JhZ2UuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNGM5NjZmZWJjYzc1MDhi
N2VjZjQ3NWNhMGM1MTI5NTFkOTc4NWFkMi4uY2M1Yjg5ZjhmZDkzNTk0ODYyOTZlY2NmYWE2ODRj
N2FkNDZmZTZmNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTc2NjQ2LDYgKzc2NjQ2LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNpZGViYXJW
aWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTbmlwcGV0SmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpz
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNzY2OTQsNiArNzY2OTgsMTAgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxm
cm9udC1lbmRcU2lkZWJhclZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNwbGl0Vmlldy5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQppbmRleCA5YmYzOTVjZmFlNDA5M2VmMjg5MGNhNmM4ZTgxNzcwZTEwNzQ2
MDY3Li5jNjgyODU5YmVkMjlhZmEyMzMyMmU3YjcyMDk0OTVlNGVkZTRiMTYzIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC0xNDIsNiArMTQy
LDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJTb3VyY2VUb2tlbml6ZXIuanMiLAogICAg
ICAgICAgICAgIlNwZWN0cnVtLmpzIiwKICAgICAgICAgICAgICJTcGxpdFZpZXcuanMiLAorICAg
ICAgICAgICAgIlNpZGViYXJWaWV3LmpzIiwKICAgICAgICAgICAgICJTdGF0dXNCYXJCdXR0b24u
anMiLAogICAgICAgICAgICAgIlRhYmJlZFBhbmUuanMiLAogICAgICAgICAgICAgIlRleHRFZGl0
b3IuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMKaW5kZXggMjYyNGQ0ZDE1YTUxYzRhZWUyMjY2Mjk1NmVhZWUwOTg4YzE2ZjgyMC4u
YzZlZDE3ZGIyODI3NDg1YmY2NjNhZTYyZWVlZjQxZjg1ZjI0ZGE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC0zOCw3ICsz
OCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnJl
Z2lzdGVyUmVxdWlyZWRDU1MoInBhbmVsRW5hYmxlclZpZXcuY3NzIik7CiAgICAgdGhpcy5yZWdp
c3RlclJlcXVpcmVkQ1NTKCJhdWRpdHNQYW5lbC5jc3MiKTsKIAotICAgIHRoaXMuY3JlYXRlU3Bs
aXRWaWV3V2l0aFNpZGViYXJUcmVlKCk7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmlld1dpdGhU
cmVlKCk7CiAgICAgdGhpcy5hdWRpdHNUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU2lk
ZWJhclNlY3Rpb25UcmVlRWxlbWVudCgiIiwge30sIHRydWUpOwogICAgIHRoaXMuc2lkZWJhclRy
ZWUuYXBwZW5kQ2hpbGQodGhpcy5hdWRpdHNUcmVlRWxlbWVudCk7CiAgICAgdGhpcy5hdWRpdHNU
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0Nv
bGxlY3Rpb25zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
TmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzCmluZGV4IGI5MmEwNjZkYTZhYTAwNjRkOTA1OTMx
MjI4ODBjMjhiZDc1OTUwYjAuLmYwZTkzYjM2MjRjOTA4MWRmYWJlYTIyYmRlNmI1MWNlN2U3OWVl
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzCkBAIC0yOSwxMSArMjksMTEg
QEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3fQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TaWRlYmFyVmlld30KICAqLwogV2Vi
SW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldyA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmll
dy5TaWRlYmFyUG9zaXRpb24uTGVmdCk7CisgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LmNh
bGwodGhpcywgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0KTsK
ICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoImNzc05hbWVkRmxvd3MuY3NzIik7CiAKICAg
ICB0aGlzLl9uYW1lZEZsb3dzID0ge307CkBAIC0zNDMsNyArMzQzLDcgQEAgV2ViSW5zcGVjdG9y
LkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICB3YXNTaG93
bjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90
b3R5cGUud2FzU2hvd24uY2FsbCh0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJW
aWV3LnByb3RvdHlwZS53YXNTaG93bi5jYWxsKHRoaXMpOwogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQodGhpcy5fc2V0RG9jdW1lbnQuYmluZCh0aGlzKSk7
CiAKQEAgLTM3Myw3ICszNzMsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlv
bnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lLkV2ZW50VHlwZXMuVGFiQ2xvc2VkLCB0
aGlzLl90YWJDbG9zZWQsIHRoaXMpOwogICAgIH0sCiAKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcucHJvdG90eXBlCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU2lk
ZWJhclZpZXcucHJvdG90eXBlCiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ2FudmFzUHJvZmlsZVZpZXcuanMKaW5kZXggZGY3ZjUxMDlh
OWNjMjZiOGM1ZDE3ZDQxZTlhZjQ1ZjgyODIyOGRhOS4uNDQwZmFiZGU0YzBlZDMxMzU5ZGVjOTdl
ZGExMjdmMmY3MmMzN2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCkBAIC0zOSwyMCArMzksMjEgQEAgV2Vi
SW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKICAgICB0aGlz
Ll9wcm9maWxlID0gcHJvZmlsZTsKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY2Fu
dmFzLXByb2ZpbGUtdmlldyIpOwogCi0gICAgdGhpcy5fdHJhY2VMb2dFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdHJhY2VMb2dFbGVtZW50LmNsYXNz
TmFtZSA9ICJjYW52YXMtdHJhY2UtbG9nIjsKKyAgICB0aGlzLl9zcGxpdFZpZXcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNwbGl0VmlldyhmYWxzZSwgImNhbnZhc1Byb2ZpbGVWaWV3U3BsaXRMb2NhdGlv
biIsIDMwMCk7CisgICAgdGhpcy5fdHJhY2VMb2dFbGVtZW50ID0gdGhpcy5fc3BsaXRWaWV3LnNl
Y29uZEVsZW1lbnQoKTsKKyAgICB0aGlzLl90cmFjZUxvZ0VsZW1lbnQuYWRkU3R5bGVDbGFzcygi
Y2FudmFzLXRyYWNlLWxvZyIpOwogICAgIHRoaXMuX3RyYWNlTG9nRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX29uVHJhY2VMb2dJdGVtQ2xpY2suYmluZCh0aGlzKSwgZmFs
c2UpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90cmFjZUxvZ0VsZW1lbnQp
OwogCi0gICAgdmFyIHJlcGxheUltYWdlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgdmFyIHJlcGxheUltYWdlQ29udGFpbmVyID0gdGhpcy5fc3BsaXRWaWV3
LmZpcnN0RWxlbWVudCgpOwogICAgIHJlcGxheUltYWdlQ29udGFpbmVyLmlkID0gImNhbnZhcy1y
ZXBsYXktaW1hZ2UtY29udGFpbmVyIjsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVw
bGF5SW1hZ2VDb250YWluZXIpOwogCiAgICAgdGhpcy5fcmVwbGF5SW1hZ2VFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1hZ2UiKTsKICAgICB0aGlzLl9yZXBsYXlJbWFnZUVsZW1l
bnQuaWQgPSAiY2FudmFzLXJlcGxheS1pbWFnZSI7CiAgICAgcmVwbGF5SW1hZ2VDb250YWluZXIu
YXBwZW5kQ2hpbGQodGhpcy5fcmVwbGF5SW1hZ2VFbGVtZW50KTsKIAogICAgIHRoaXMuX2RlYnVn
SW5mb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKworICAgIHRoaXMu
X3NwbGl0Vmlldy5zaG93KHRoaXMuZWxlbWVudCk7CiAgICAgcmVwbGF5SW1hZ2VDb250YWluZXIu
YXBwZW5kQ2hpbGQodGhpcy5fZGVidWdJbmZvRWxlbWVudCk7CiAKICAgICB0aGlzLl9saW5raWZp
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmtpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGRiZTA4YWE0Zjdl
MzUwNmNlMTIwY2VjMmMyYjdlMzQyYjRjNjFmMzYuLmM0MjhhMWE0Zjc3NzlmNjUyOTJmZjI3ODEx
NjU1NGNlM2U3YjgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTQ5LDkgKzQ5LDkgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICBjb25zdCBpbml0aWFsU2lkZWJhcldpZHRo
ID0gMzI1OwogICAgIGNvbnN0IG1pbmltYWxDb250ZW50V2lkdGhQZXJjZW50ID0gMzQ7Ci0gICAg
dGhpcy5jcmVhdGVTcGxpdFZpZXcodGhpcy5lbGVtZW50LCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3
LlNpZGViYXJQb3NpdGlvbi5SaWdodCwgaW5pdGlhbFNpZGViYXJXaWR0aCk7Ci0gICAgdGhpcy5z
cGxpdFZpZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pbkVsZW1lbnRzU2lk
ZWJhcldpZHRoOwotICAgIHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxNYWluV2lkdGhQZXJjZW50ID0g
bWluaW1hbENvbnRlbnRXaWR0aFBlcmNlbnQ7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmlldyh0
aGlzLmVsZW1lbnQsIFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9zaXRpb24uUmln
aHQsIGluaXRpYWxTaWRlYmFyV2lkdGgpOworICAgIHRoaXMuc3BsaXRWaWV3LnNldE1pbmltYWxT
aWRlYmFyV2lkdGgoUHJlZmVyZW5jZXMubWluRWxlbWVudHNTaWRlYmFyV2lkdGgpOworICAgIHRo
aXMuc3BsaXRWaWV3LnNldE1pbmltYWxNYWluV2lkdGhQZXJjZW50KG1pbmltYWxDb250ZW50V2lk
dGhQZXJjZW50KTsKIAogICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSB0aGlzLnNwbGl0Vmlldy5t
YWluRWxlbWVudDsKICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmlkID0gImVsZW1lbnRzLWNvbnRl
bnQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbVZpZXcuanMKaW5kZXggMTQ0NjVmNWUwOTA3OTYzMmNmNzhjYzJlMGQyMTQ5Y2IwMjNiNzk1
Ny4uNmI5MTQ5MTY5YzMzYjMxOTNjNWFkNDBhMmI3Nzk1ODkyNThjMWJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBA
IC0zMCwxMiArMzAsMTIgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TaWRlYmFy
Vmlld30KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVt
fSBmaWxlU3lzdGVtCiAgKi8KIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1bmN0aW9u
KGZpbGVTeXN0ZW0pCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsICJGaWxlU3lzdGVtVmll
d1NpZGViYXJXaWR0aCIpOworICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgIkZpbGVTeXN0
ZW1WaWV3U2lkZWJhcldpZHRoIik7CiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZp
bGUtc3lzdGVtLXZpZXciKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic3RvcmFn
ZS12aWV3Iik7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kaXJlY3RvcnlUcmVlLnNlbGVjdGVkVHJl
ZUVsZW1lbnQuZGVsZXRlRW50cnkoKTsKICAgICB9LAogCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZQorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNp
ZGViYXJWaWV3LnByb3RvdHlwZQogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwppbmRleCAzMGExNTJjY2Uz
OWI3ZWUwMTkxNmIyNDhjNGY2OTFhOWE1MzkzZmJlLi5kNDRjYzY1ZDA4NmZhZWJmZGZiZDg3ZmNl
YjkwY2E3MDI1YzgwMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCkBAIC00MywxMyArNDMsMTMgQEAgV2ViSW5z
cGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MgPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwg
c2lkZWJhcldpZHRoKQogICAgIG1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTW9kZWwuRXZlbnRzLlJlY29yZHNDbGVhcmVkLCB0aGlzLl9vblJlY29yZHNDbGVhcmVk
LCB0aGlzKTsKIAogICAgIHRoaXMuX2NvbnRhaW5lckFuY2hvciA9IHRpbWVsaW5lUGFuZWwuZWxl
bWVudC5sYXN0Q2hpbGQ7Ci0gICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uTGVm
dCwgdW5kZWZpbmVkLCBzaWRlYmFyV2lkdGgpOwotICAgIHRoaXMuX21lbW9yeVNwbGl0Vmlldy5z
aWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaWRlYmFyIik7Ci0gICAgdGhpcy5fbWVtb3J5
U3BsaXRWaWV3LmVsZW1lbnQuaWQgPSAibWVtb3J5LWdyYXBocy1jb250YWluZXIiOworICAgIHRo
aXMuX21lbW9yeVNpZGViYXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyhXZWJJ
bnNwZWN0b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsIHVuZGVmaW5lZCwgc2lk
ZWJhcldpZHRoKTsKKyAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5zaWRlYmFyRWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJzaWRlYmFyIik7CisgICAgdGhpcy5fbWVtb3J5U2lkZWJhclZpZXcuZWxl
bWVudC5pZCA9ICJtZW1vcnktZ3JhcGhzLWNvbnRhaW5lciI7CiAKLSAgICB0aGlzLl9tZW1vcnlT
cGxpdFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LkV2ZW50VHlw
ZXMuUmVzaXplZCwgdGhpcy5fc2lkZWJhclJlc2l6ZWQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5f
bWVtb3J5U2lkZWJhclZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhclZp
ZXcuRXZlbnRUeXBlcy5SZXNpemVkLCB0aGlzLl9zaWRlYmFyUmVzaXplZC5iaW5kKHRoaXMpKTsK
IAotICAgIHRoaXMuX2NhbnZhc0NvbnRhaW5lciA9IHRoaXMuX21lbW9yeVNwbGl0Vmlldy5tYWlu
RWxlbWVudDsKKyAgICB0aGlzLl9jYW52YXNDb250YWluZXIgPSB0aGlzLl9tZW1vcnlTaWRlYmFy
Vmlldy5tYWluRWxlbWVudDsKICAgICB0aGlzLl9jYW52YXNDb250YWluZXIuaWQgPSAibWVtb3J5
LWdyYXBocy1jYW52YXMtY29udGFpbmVyIjsKICAgICB0aGlzLl9jdXJyZW50VmFsdWVzQmFyID0g
dGhpcy5fY2FudmFzQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJkaXYiKTsKICAgICB0aGlzLl9jdXJy
ZW50VmFsdWVzQmFyLmlkID0gImNvdW50ZXItdmFsdWVzLWJhciI7CkBAIC02Niw3ICs2Niw3IEBA
IFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzID0gZnVuY3Rpb24odGltZWxpbmVQYW5lbCwg
bW9kZWwsIHNpZGViYXJXaWR0aCkKICAgICB0aGlzLl9jYW52YXNDb250YWluZXIuYXBwZW5kQ2hp
bGQodGhpcy5fdGltZWxpbmVHcmlkLmRpdmlkZXJzRWxlbWVudCk7CiAKICAgICAvLyBQb3B1bGF0
ZSBzaWRlYmFyCi0gICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LnNpZGViYXJFbGVtZW50LmNyZWF0
ZUNoaWxkKCJkaXYiLCAic2lkZWJhci10cmVlIHNpZGViYXItdHJlZS1zZWN0aW9uIikudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNPVU5URVJTIik7CisgICAgdGhpcy5fbWVt
b3J5U2lkZWJhclZpZXcuc2lkZWJhckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzaWRlYmFy
LXRyZWUgc2lkZWJhci10cmVlLXNlY3Rpb24iKS50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ09VTlRFUlMiKTsKICAgICBmdW5jdGlvbiBnZXREb2N1bWVudENvdW50KGVudHJ5
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGVudHJ5LmRvY3VtZW50Q291bnQ7CkBAIC0xMzgsNyAr
MTM4LDcgQEAgV2ViSW5zcGVjdG9yLkNvdW50ZXJVSSA9IGZ1bmN0aW9uKG1lbW9yeUNvdW50ZXJz
UGFuZSwgdGl0bGUsIGN1cnJlbnRWYWx1ZUxhYmVsLAogewogICAgIHRoaXMuX21lbW9yeUNvdW50
ZXJzUGFuZSA9IG1lbW9yeUNvdW50ZXJzUGFuZTsKICAgICB0aGlzLnZhbHVlR2V0dGVyID0gdmFs
dWVHZXR0ZXI7Ci0gICAgdmFyIGNvbnRhaW5lciA9IG1lbW9yeUNvdW50ZXJzUGFuZS5fbWVtb3J5
U3BsaXRWaWV3LnNpZGViYXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAibWVtb3J5LWNvdW50
ZXItc2lkZWJhci1pbmZvIik7CisgICAgdmFyIGNvbnRhaW5lciA9IG1lbW9yeUNvdW50ZXJzUGFu
ZS5fbWVtb3J5U2lkZWJhclZpZXcuc2lkZWJhckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJt
ZW1vcnktY291bnRlci1zaWRlYmFyLWluZm8iKTsKICAgICB2YXIgc3dhdGNoQ29sb3IgPSAicmdi
KCIgKyByZ2Iuam9pbigiLCIpICsgIikiOwogICAgIHRoaXMuX3N3YXRjaCA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3dhdGNoQ2hlY2tib3goV2ViSW5zcGVjdG9yLlVJU3RyaW5nKHRpdGxlKSwgc3dhdGNo
Q29sb3IpOwogICAgIHRoaXMuX3N3YXRjaC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
d2F0Y2hDaGVja2JveC5FdmVudHMuQ2hhbmdlZCwgdGhpcy5fdG9nZ2xlQ291bnRlckdyYXBoLmJp
bmQodGhpcykpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0
aWNzLnByb3RvdHlwZSA9IHsKIAogICAgIHNldFRvcFBvc2l0aW9uOiBmdW5jdGlvbih0b3ApCiAg
ICAgewotICAgICAgICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuZWxlbWVudC5zdHlsZS50b3AgPSB0
b3AgKyAicHgiOworICAgICAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5lbGVtZW50LnN0eWxl
LnRvcCA9IHRvcCArICJweCI7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNpemUoKTsKICAgICB9LAog
CkBAIC0yMzIsNyArMjMyLDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5faWdub3JlU2lkZWJhclJlc2l6ZSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgdGhpcy5faWdub3JlU2lkZWJhclJlc2l6ZSA9IHRydWU7Ci0g
ICAgICAgIHRoaXMuX21lbW9yeVNwbGl0Vmlldy5zZXRTaWRlYmFyV2lkdGgod2lkdGgpOworICAg
ICAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5zZXRTaWRlYmFyV2lkdGgod2lkdGgpOwogICAg
ICAgICB0aGlzLl9pZ25vcmVTaWRlYmFyUmVzaXplID0gZmFsc2U7CiAgICAgfSwKIApAQCAtNDA0
LDEzICs0MDQsMTMgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0g
ewogCiAgICAgdmlzaWJsZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X21lbW9yeVNwbGl0Vmlldy5pc1Nob3dpbmcoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21lbW9y
eVNpZGViYXJWaWV3LmlzU2hvd2luZygpOwogICAgIH0sCiAKICAgICBzaG93OiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB2YXIgYW5jaG9yID0gLyoqIEB0eXBlIHtFbGVtZW50fG51bGx9ICov
ICh0aGlzLl9jb250YWluZXJBbmNob3IubmV4dFNpYmxpbmcpOwotICAgICAgICB0aGlzLl9tZW1v
cnlTcGxpdFZpZXcuc2hvdyh0aGlzLl90aW1lbGluZVBhbmVsLmVsZW1lbnQsIGFuY2hvcik7Cisg
ICAgICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LnNob3codGhpcy5fdGltZWxpbmVQYW5lbC5l
bGVtZW50LCBhbmNob3IpOwogICAgICAgICB0aGlzLl91cGRhdGVTaXplKCk7CiAgICAgICAgIHRo
aXMuX3JlZnJlc2hEaXZpZGVycygpOwogICAgICAgICBzZXRUaW1lb3V0KHRoaXMuX2RyYXcuYmlu
ZCh0aGlzKSwgMCk7CkBAIC00MjYsNyArNDI2LDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRp
c3RpY3MucHJvdG90eXBlID0gewogCiAgICAgaGlkZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LmRldGFjaCgpOworICAgICAgICB0aGlzLl9tZW1vcnlT
aWRlYmFyVmlldy5kZXRhY2goKTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hEaXZpZGVyczogZnVu
Y3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
YXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIuanMKaW5kZXggODA2YzAwMTgyYzA1
YTk2MDEzM2M5YTFmNDQ3MWFiMjFkMWI0NDYwZi4uMDEyODBjNTk0ZjNmYWYxZDk3YTUxNTY2Yjhl
MmNkNGI0Mjc1Y2U1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzCkBAIC0yOCwx
OSArMjgsMTkgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNwbGl0Vmlld30gcGFyZW50U3BsaXRWaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
aWRlYmFyVmlld30gcGFyZW50U2lkZWJhclZpZXcKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZp
ZXd9IG5hdmlnYXRvclZpZXcKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IGVkaXRvclZp
ZXcKICAqLwotV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyID0gZnVuY3Rp
b24ocGFyZW50U3BsaXRWaWV3LCBuYXZpZ2F0b3JWaWV3LCBlZGl0b3JWaWV3KQorV2ViSW5zcGVj
dG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyID0gZnVuY3Rpb24ocGFyZW50U2lkZWJhclZp
ZXcsIG5hdmlnYXRvclZpZXcsIGVkaXRvclZpZXcpCiB7Ci0gICAgdGhpcy5fcGFyZW50U3BsaXRW
aWV3ID0gcGFyZW50U3BsaXRWaWV3OworICAgIHRoaXMuX3BhcmVudFNpZGViYXJWaWV3ID0gcGFy
ZW50U2lkZWJhclZpZXc7CiAgICAgdGhpcy5fbmF2aWdhdG9yVmlldyA9IG5hdmlnYXRvclZpZXc7
CiAgICAgdGhpcy5fZWRpdG9yVmlldyA9IGVkaXRvclZpZXc7CiAKICAgICB0aGlzLl9uYXZpZ2F0
b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNjcmlwdHMtbmF2aWdhdG9yLXJlc2l6ZXItd2lkZ2V0Iik7Ci0gICAgdGhpcy5f
cGFyZW50U3BsaXRWaWV3Lmluc3RhbGxSZXNpemVyKHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNp
emVXaWRnZXRFbGVtZW50KTsKKyAgICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5pbnN0YWxsUmVz
aXplcih0aGlzLl9uYXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7CiAgICAgdGhp
cy5fbmF2aWdhdG9yVmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNpZGVi
YXJSZXNpemVXaWRnZXRFbGVtZW50KTsKIAogICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0
dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJIaWRlIG5hdmlnYXRvciIpLCAic2NyaXB0cy1uYXZpZ2F0b3Itc2hvdy1oaWRlLWJ1dHRv
biIsIDMpOwpAQCAtNzksMTIgKzc5LDEyIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JT
aG93SGlkZUJ1dHRvbi5zdGF0ZSA9ICJoaWRkZW4iOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JT
aG93SGlkZUJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBuYXZpZ2F0
b3IiKTsKLSAgICAgICAgdGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3Bh
cmVudFNpZGViYXJWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yU2hvd0hp
ZGVCdXR0b24uZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fZWRpdG9yVmlldy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoIm5hdmlnYXRvci1oaWRkZW4iKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9y
U2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAKLSAg
ICAgICAgdGhpcy5fcGFyZW50U3BsaXRWaWV3LmhpZGVTaWRlYmFyRWxlbWVudCgpOworICAgICAg
ICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5oaWRlU2lkZWJhckVsZW1lbnQoKTsKICAgICAgICAg
dGhpcy5fbmF2aWdhdG9yVmlldy5kZXRhY2goKTsKICAgICAgICAgdGhpcy5fZWRpdG9yVmlldy5m
b2N1cygpOwogCkBAIC0xMDIsOCArMTAyLDggQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJs
YXlDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdG9yVmlldy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmVsZW1lbnQpOwog
CiAgICAgICAgIHRoaXMuX2lubmVySGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKLSAgICAgICAgdGhp
cy5fcGFyZW50U3BsaXRWaWV3LnNob3dTaWRlYmFyRWxlbWVudCgpOwotICAgICAgICB0aGlzLl9u
YXZpZ2F0b3JWaWV3LnNob3codGhpcy5fcGFyZW50U3BsaXRWaWV3LnNpZGViYXJFbGVtZW50KTsK
KyAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhclZpZXcuc2hvd1NpZGViYXJFbGVtZW50KCk7Cisg
ICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuc2hvdyh0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5z
aWRlYmFyRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZm9jdXMoKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLm5hdmlnYXRvckhpZGRlbi5zZXQoZmFsc2UpOwog
ICAgIH0sCkBAIC0xMjUsOSArMTI1LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uZWxlbWVudCk7
CiAgICAgICAgIHRoaXMuX2JvdW5kQ29udGFpbmluZ0VsZW1lbnRGb2N1c2VkID0gdGhpcy5fY29u
dGFpbmluZ0VsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX3BhcmVudFNw
bGl0Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5k
Q29udGFpbmluZ0VsZW1lbnRGb2N1c2VkLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3BhcmVudFNp
ZGViYXJWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91
bmRDb250YWluaW5nRWxlbWVudEZvY3VzZWQsIGZhbHNlKTsKIAotICAgICAgICB0aGlzLl9zaWRl
YmFyT3ZlcmxheS5zaG93KHRoaXMuX3BhcmVudFNwbGl0Vmlldy5lbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fc2lkZWJhck92ZXJsYXkuc2hvdyh0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5lbGVtZW50
KTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5mb2N1cygpOwogICAgIH0sCiAKQEAgLTE0
OSw3ICsxNDksNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnN0YXRl
ID0gImhpZGRlbiI7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG5hdmlnYXRvciIpOwotICAgICAgICB0aGlz
Ll9wYXJlbnRTcGxpdFZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93
SGlkZUJ1dHRvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fcGFyZW50U2lkZWJhclZpZXcuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5lbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9pbm5lckhpZGVOYXZpZ2F0b3JPdmVybGF5KCk7CiAgICAgICAgIHRo
aXMuX2VkaXRvclZpZXcuZm9jdXMoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBXZWJJbnNwZWN0b3Iu
TmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAgX2lubmVySGlk
ZU5hdmlnYXRvck92ZXJsYXk6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcmVu
dFNwbGl0Vmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X2JvdW5kQ29udGFpbmluZ0VsZW1lbnRGb2N1c2VkLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3Bh
cmVudFNpZGViYXJWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
dGhpcy5fYm91bmRDb250YWluaW5nRWxlbWVudEZvY3VzZWQsIGZhbHNlKTsKICAgICAgICAgdGhp
cy5fc2lkZWJhck92ZXJsYXkuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcy5fYm91bmRLZXlEb3duLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX3NpZGViYXJPdmVybGF5
LmhpZGUoKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA0YWE1ODNlNjFhMGZhMjFkZjNkYjE3MmUxM2Q1OTIz
M2Q0MDkzNmFkLi43ODM3YzFmMTBkODRjOTliOGM0ZWMxYzQ0ZWZmOWJlNzM5MDNhYTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
cwpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCA9IGZ1bmN0
aW9uKCkKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCAibmV0d29yayIpOwogICAg
IHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygibmV0d29ya1BhbmVsLmNzcyIpOwogCi0gICAgdGhp
cy5jcmVhdGVTcGxpdFZpZXcoKTsKKyAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3KCk7CiAgICAg
dGhpcy5zcGxpdFZpZXcuaGlkZU1haW5FbGVtZW50KCk7CiAKICAgICB0aGlzLl9uZXR3b3JrTG9n
VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCmluZGV4IGYwNWRiMjA0NDk5MjY3Mzc1YmZk
YjgwZWQzMzA4ZDdjNzVkMWY1OGIuLmQ1MzdjNGU4YjdhZGUyYjNhNDNjMGI3Y2Y4MDFkNGYwMmRk
ZThjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwpA
QCAtMTUzLDcgKzE1Myw3IEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICogQHBhcmFtIHtzdHJpbmc9fSBwb3NpdGlvbgogICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVm
YXVsdFdpZHRoCiAgICAgICovCi0gICAgY3JlYXRlU3BsaXRWaWV3OiBmdW5jdGlvbihwYXJlbnRF
bGVtZW50LCBwb3NpdGlvbiwgZGVmYXVsdFdpZHRoKQorICAgIGNyZWF0ZVNpZGViYXJWaWV3OiBm
dW5jdGlvbihwYXJlbnRFbGVtZW50LCBwb3NpdGlvbiwgZGVmYXVsdFdpZHRoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuc3BsaXRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYxLDkg
KzE2MSw5IEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICgh
cGFyZW50RWxlbWVudCkKICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7
CiAKLSAgICAgICAgdGhpcy5zcGxpdFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldyhw
b3NpdGlvbiB8fCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCB0
aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSgpLCBkZWZhdWx0V2lkdGgpOworICAgICAgICB0
aGlzLnNwbGl0VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcocG9zaXRpb24gfHwg
V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCB0aGlzLl9zaWRl
YmFyV2lkdGhTZXR0aW5nTmFtZSgpLCBkZWZhdWx0V2lkdGgpOwogICAgICAgICB0aGlzLnNwbGl0
Vmlldy5zaG93KHBhcmVudEVsZW1lbnQpOwotICAgICAgICB0aGlzLnNwbGl0Vmlldy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuRXZlbnRUeXBlcy5SZXNpemVkLCB0aGlz
LnNpZGViYXJSZXNpemVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLnNwbGl0Vmlldy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5FdmVudFR5cGVzLlJlc2l6ZWQs
IHRoaXMuc2lkZWJhclJlc2l6ZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5zaWRlYmFy
RWxlbWVudCA9IHRoaXMuc3BsaXRWaWV3LnNpZGViYXJFbGVtZW50OwogICAgIH0sCkBAIC0xNzMs
MTIgKzE3MywxMiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAqIEBw
YXJhbSB7c3RyaW5nPX0gcG9zaXRpb24KICAgICAgKiBAcGFyYW0ge251bWJlcj19IGRlZmF1bHRX
aWR0aAogICAgICAqLwotICAgIGNyZWF0ZVNwbGl0Vmlld1dpdGhTaWRlYmFyVHJlZTogZnVuY3Rp
b24ocGFyZW50RWxlbWVudCwgcG9zaXRpb24sIGRlZmF1bHRXaWR0aCkKKyAgICBjcmVhdGVTaWRl
YmFyVmlld1dpdGhUcmVlOiBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBwb3NpdGlvbiwgZGVmYXVs
dFdpZHRoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuc3BsaXRWaWV3KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3KHBhcmVudEVsZW1lbnQsIHBv
c2l0aW9uKTsKKyAgICAgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmlldyhwYXJlbnRFbGVtZW50LCBw
b3NpdGlvbik7CiAKICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICB0aGlzLnNpZGViYXJUcmVlRWxlbWVudC5jbGFz
c05hbWUgPSAic2lkZWJhci10cmVlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCAzZTkwODg1ODI1MjE0Y2M0YTZlMjE4
OGJjMmIwYjFjZWZmODMxYTdlLi4yMjZhYzlhZTgxMTZmNzE3MTdlYzFkMTI3ZWNlMGQzZDA1NDAz
OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzCkBAIC0xOTMsNyArMTkzLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJoZWFwUHJvZmls
ZXIuY3NzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJwcm9maWxlc1BhbmVsLmNz
cyIpOwogCi0gICAgdGhpcy5jcmVhdGVTcGxpdFZpZXdXaXRoU2lkZWJhclRyZWUoKTsKKyAgICB0
aGlzLmNyZWF0ZVNpZGViYXJWaWV3V2l0aFRyZWUoKTsKIAogICAgIHRoaXMucHJvZmlsZXNJdGVt
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVzU2lkZWJhclRyZWVFbGVtZW50
KHRoaXMpOwogICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5wcm9maWxlc0l0
ZW1UcmVlRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCAyZGEzZTllMWQ2ZmVhODliZjNmOTU0ODM1OGNl
ZjQwZTY2MmQyODJmLi4xNWUzNzQ4NTk3MmRjZjIxZmQxMmZjOThjM2RlOTUwMGQ2NjcxMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKQEAgLTQ3LDcgKzQ3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0g
ZnVuY3Rpb24oZGF0YWJhc2UpCiAKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2Vz
TGFzdFNlbGVjdGVkSXRlbSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJy
ZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtIiwge30pOwogCi0gICAgdGhpcy5jcmVhdGVTcGxpdFZp
ZXdXaXRoU2lkZWJhclRyZWUoKTsKKyAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3V2l0aFRyZWUo
KTsKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xv
c3VyZSIpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsdGVyLWFs
bCIpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY2hpbGRyZW4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKaW5kZXggOWEwM2FkMjM0NmJiNjhjNWMzMjJkOTNkNWI3NDNlNWVhZmY5MzQ4YS4uZjc4OWU5
M2UxNWY5NWE1ZmM1OTkwOTlkM2QwYzMzNjQ0ZTE3MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTY5LDEwICs2OSwx
MCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24od29ya3NwYWNlRm9yVGVz
dCkKIAogICAgIGNvbnN0IGluaXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCA9IDIyNTsKICAgICBjb25z
dCBtYXhpbWFsRGVidWdTaWRlYmFyV2lkdGhQZXJjZW50ID0gNTA7Ci0gICAgdGhpcy5jcmVhdGVT
cGxpdFZpZXcodGhpcy5lbGVtZW50LCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3Np
dGlvbi5SaWdodCwgaW5pdGlhbERlYnVnU2lkZWJhcldpZHRoKTsKKyAgICB0aGlzLmNyZWF0ZVNp
ZGViYXJWaWV3KHRoaXMuZWxlbWVudCwgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQ
b3NpdGlvbi5SaWdodCwgaW5pdGlhbERlYnVnU2lkZWJhcldpZHRoKTsKICAgICB0aGlzLnNwbGl0
Vmlldy5lbGVtZW50LmlkID0gInNjcmlwdHMtc3BsaXQtdmlldyI7Ci0gICAgdGhpcy5zcGxpdFZp
ZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pblNjcmlwdHNTaWRlYmFyV2lk
dGg7Ci0gICAgdGhpcy5zcGxpdFZpZXcubWluaW1hbE1haW5XaWR0aFBlcmNlbnQgPSAxMDAgLSBt
YXhpbWFsRGVidWdTaWRlYmFyV2lkdGhQZXJjZW50OworICAgIHRoaXMuc3BsaXRWaWV3LnNldE1p
bmltYWxTaWRlYmFyV2lkdGgoUHJlZmVyZW5jZXMubWluU2NyaXB0c1NpZGViYXJXaWR0aCk7Cisg
ICAgdGhpcy5zcGxpdFZpZXcuc2V0TWluaW1hbE1haW5XaWR0aFBlcmNlbnQobWF4aW1hbERlYnVn
U2lkZWJhcldpZHRoUGVyY2VudCk7CiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuZGVidWdUb29sYmFyKTsKIApAQCAtODMsMTEgKzgzLDExIEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbih3b3Jrc3BhY2VGb3JUZXN0KQogICAgIC8vIENyZWF0
ZSBzY3JpcHRzIG5hdmlnYXRvcgogICAgIGNvbnN0IGluaXRpYWxOYXZpZ2F0b3JXaWR0aCA9IDIy
NTsKICAgICBjb25zdCBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQgPSA1MDsKLSAg
ICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNwbGl0VmlldyhXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAic2NyaXB0c1BhbmVsTmF2aWdhdG9y
U2lkZWJhcldpZHRoIiwgaW5pdGlhbE5hdmlnYXRvcldpZHRoKTsKKyAgICB0aGlzLmVkaXRvclZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3KFdlYkluc3BlY3Rvci5TaWRlYmFyVmll
dy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgInNjcmlwdHNQYW5lbE5hdmlnYXRvclNpZGViYXJXaWR0
aCIsIGluaXRpYWxOYXZpZ2F0b3JXaWR0aCk7CiAgICAgdGhpcy5lZGl0b3JWaWV3LmVsZW1lbnQu
dGFiSW5kZXggPSAwOwogCi0gICAgdGhpcy5lZGl0b3JWaWV3Lm1pbmltYWxTaWRlYmFyV2lkdGgg
PSBQcmVmZXJlbmNlcy5taW5TY3JpcHRzU2lkZWJhcldpZHRoOwotICAgIHRoaXMuZWRpdG9yVmll
dy5taW5pbWFsTWFpbldpZHRoUGVyY2VudCA9IG1pbmltYWxWaWV3c0NvbnRhaW5lcldpZHRoUGVy
Y2VudDsKKyAgICB0aGlzLmVkaXRvclZpZXcuc2V0TWluaW1hbFNpZGViYXJXaWR0aChQcmVmZXJl
bmNlcy5taW5TY3JpcHRzU2lkZWJhcldpZHRoKTsKKyAgICB0aGlzLmVkaXRvclZpZXcuc2V0TWlu
aW1hbE1haW5XaWR0aFBlcmNlbnQobWluaW1hbFZpZXdzQ29udGFpbmVyV2lkdGhQZXJjZW50KTsK
ICAgICB0aGlzLmVkaXRvclZpZXcuc2hvdyh0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudCk7CiAK
ICAgICB0aGlzLl9uYXZpZ2F0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJh
clZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJWaWV3
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhYTg1MjAzOGE4YTBkMzQ5OWYxYzQzODYxNjk4NjQwMjU1N2IyNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Np
ZGViYXJWaWV3LmpzCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuCisgKiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmlld30KKyAqIEBw
YXJhbSB7c3RyaW5nPX0gc2lkZWJhclBvc2l0aW9uCisgKiBAcGFyYW0ge3N0cmluZz19IHNpZGVi
YXJXaWR0aFNldHRpbmdOYW1lCisgKiBAcGFyYW0ge251bWJlcj19IGRlZmF1bHRTaWRlYmFyV2lk
dGgKKyAqLworV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3ID0gZnVuY3Rpb24oc2lkZWJhclBvc2l0
aW9uLCBzaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSwgZGVmYXVsdFNpZGViYXJXaWR0aCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgdHJ1ZSwgc2lkZWJhcldpZHRoU2V0
dGluZ05hbWUsIGRlZmF1bHRTaWRlYmFyV2lkdGggfHwgMjAwKTsKKworICAgIHRoaXMuX2xlZnRF
bGVtZW50ID0gdGhpcy5maXJzdEVsZW1lbnQoKTsKKyAgICB0aGlzLl9yaWdodEVsZW1lbnQgPSB0
aGlzLnNlY29uZEVsZW1lbnQoKTsKKworICAgIHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGggPSBQ
cmVmZXJlbmNlcy5taW5TaWRlYmFyV2lkdGg7CisgICAgdGhpcy5fbWluaW1hbE1haW5XaWR0aFBl
cmNlbnQgPSA1MDsKKworICAgIHRoaXMuX21haW5FbGVtZW50SGlkZGVuID0gZmFsc2U7CisgICAg
dGhpcy5fc2lkZWJhckVsZW1lbnRIaWRkZW4gPSBmYWxzZTsKKworICAgIHRoaXMuX2lubmVyU2V0
U2lkZWJhclBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbiB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhclZp
ZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQpOworICAgIHRoaXMuc2V0Q2hhbmdlRmlyc3RPblJlc2l6
ZShzaWRlYmFyUG9zaXRpb24gIT09IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9z
aXRpb24uTGVmdCk7Cit9CisKK1dlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5FdmVudFR5cGVzID0g
eworICAgIFJlc2l6ZWQ6ICJSZXNpemVkIgorfQorCisvKioKKyAqIEBlbnVtIHtzdHJpbmd9Cisg
Ki8KK1dlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9zaXRpb24gPSB7CisgICAgTGVm
dDogIkxlZnQiLAorICAgIFJpZ2h0OiAiUmlnaHQiCit9CisKK1dlYkluc3BlY3Rvci5TaWRlYmFy
Vmlldy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KKyAgICBfaGFzTGVmdFNpZGViYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9zaWRlYmFyUG9zaXRpb24gPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5T
aWRlYmFyUG9zaXRpb24uTGVmdDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7
RWxlbWVudH0KKyAgICAgKi8KKyAgICBnZXQgbWFpbkVsZW1lbnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkgPyB0aGlzLl9yaWdodEVsZW1lbnQgOiB0aGlz
Ll9sZWZ0RWxlbWVudDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7RWxlbWVu
dH0KKyAgICAgKi8KKyAgICBnZXQgc2lkZWJhckVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkgPyB0aGlzLl9sZWZ0RWxlbWVudCA6IHRoaXMuX3Jp
Z2h0RWxlbWVudDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNp
ZGViYXJQb3NpdGlvbgorICAgICAqLworICAgIF9pbm5lclNldFNpZGViYXJQb3NpdGlvbjogZnVu
Y3Rpb24oc2lkZWJhclBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2lkZWJhclBvc2l0
aW9uID0gc2lkZWJhclBvc2l0aW9uOworCisgICAgICAgIGlmICh0aGlzLl9oYXNMZWZ0U2lkZWJh
cigpKSB7CisgICAgICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzcGxp
dC12aWV3LXNpZGViYXItbGVmdCIpOworICAgICAgICAgICAgdGhpcy5fcmlnaHRFbGVtZW50LnJl
bW92ZVN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lkZWJhci1yaWdodCIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGhpcy5fcmlnaHRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNwbGl0
LXZpZXctc2lkZWJhci1yaWdodCIpOworICAgICAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQucmVt
b3ZlU3R5bGVDbGFzcygic3BsaXQtdmlldy1zaWRlYmFyLWxlZnQiKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKi8KKyAg
ICBzZXRNaW5pbWFsU2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKKyAgICB7CisgICAgICAg
IHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGggPSB3aWR0aDsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoUGVyY2VudAorICAgICAqLworICAgIHNldE1pbmlt
YWxNYWluV2lkdGhQZXJjZW50OiBmdW5jdGlvbih3aWR0aFBlcmNlbnQpCisgICAgeworICAgICAg
ICB0aGlzLl9taW5pbWFsTWFpbldpZHRoUGVyY2VudCA9IHdpZHRoUGVyY2VudDsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICovCisgICAgc2V0
U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKKyAgICB7CisgICAgICAgIHRoaXMuc2V0U3Bs
aXRPZmZzZXQod2lkdGgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgICAgICovCisgICAgc2lkZWJhcldpZHRoOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5zcGxpdE9mZnNldCgpOworICAgIH0sCisKKyAgICBvblJlc2l6ZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUu
b25SZXNpemUuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LkV2ZW50VHlwZXMuUmVzaXplZCwgdGhpcy5zcGxp
dE9mZnNldCgpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG9m
ZnNldAorICAgICAqLworICAgIGFwcGx5Q29uc3RyYWludHM6IGZ1bmN0aW9uKG9mZnNldCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9oYXNMZWZ0U2lkZWJhcigpKSB7CisgICAgICAgICAgICB2
YXIgbWluT2Zmc2V0ID0gdGhpcy5fbWluaW1hbFNpZGViYXJXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBtYXhPZmZzZXQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGggKiAoMTAwIC0gdGhpcy5fbWlu
aW1hbE1haW5XaWR0aFBlcmNlbnQpIC8gMTAwOworICAgICAgICAgICAgcmV0dXJuIE51bWJlci5j
b25zdHJhaW4ob2Zmc2V0LCBtaW5PZmZzZXQsIG1heE9mZnNldCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB2YXIgbWluT2Zmc2V0ID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoICog
dGhpcy5fbWluaW1hbE1haW5XaWR0aFBlcmNlbnQgLyAxMDA7CisgICAgICAgICAgICB2YXIgbWF4
T2Zmc2V0ID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5fbWluaW1hbFNpZGViYXJX
aWR0aDsKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXIuY29uc3RyYWluKG9mZnNldCwgbWluT2Zm
c2V0LCBtYXhPZmZzZXQpOworICAgICAgICB9CisgICAgfSwKKworICAgIGhpZGVNYWluRWxlbWVu
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkp
CisgICAgICAgICAgICB0aGlzLnNob3dPbmx5Rmlyc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5zaG93T25seVNlY29uZCgpOworICAgIH0sCisKKyAgICBzaG93TWFpbkVsZW1l
bnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuc2hvd0JvdGgoKTsKKyAgICB9LAor
CisgICAgaGlkZVNpZGViYXJFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5faGFzTGVmdFNpZGViYXIoKSkKKyAgICAgICAgICAgIHRoaXMuc2hvd09ubHlTZWNvbmQo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zaG93T25seUZpcnN0KCk7CisgICAg
fSwKKworICAgIHNob3dTaWRlYmFyRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5zaG93Qm90aCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJh
eS48RWxlbWVudD59CisgICAgICovCisgICAgZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlv
bnNGb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbIHRoaXMubWFpbkVsZW1l
bnQsIHRoaXMuc2lkZWJhckVsZW1lbnQgXTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TcGxpdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmlldy5qcwppbmRleCAxMTFjM2UyYjg2MGQ5ZjRjYjExM2Iz
ZTBiMjhiZWE1ODE3ODYwZmYyLi42ZmQ1NTQwY2EyNWIzMzJmMDk1N2JjNDgyODFmZjAwODBlMzUz
ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmll
dy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjksMzMxICsyOSwyNDMgQEAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKiBAcGFyYW0ge3N0cmluZz19IHNpZGViYXJQb3NpdGlv
bgotICogQHBhcmFtIHtzdHJpbmc9fSBzaWRlYmFyV2lkdGhTZXR0aW5nTmFtZQotICogQHBhcmFt
IHtudW1iZXI9fSBkZWZhdWx0U2lkZWJhcldpZHRoCisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVy
dGljYWwKKyAqIEBwYXJhbSB7c3RyaW5nPX0gc3BsaXRPZmZzZXRTZXR0aW5nTmFtZQorICogQHBh
cmFtIHtudW1iZXI9fSBkZWZhdWx0U3BsaXRPZmZzZXQKICAqLwotV2ViSW5zcGVjdG9yLlNwbGl0
VmlldyA9IGZ1bmN0aW9uKHNpZGViYXJQb3NpdGlvbiwgc2lkZWJhcldpZHRoU2V0dGluZ05hbWUs
IGRlZmF1bHRTaWRlYmFyV2lkdGgpCitXZWJJbnNwZWN0b3IuU3BsaXRWaWV3ID0gZnVuY3Rpb24o
aXNWZXJ0aWNhbCwgc3BsaXRPZmZzZXRTZXR0aW5nTmFtZSwgZGVmYXVsdFNwbGl0T2Zmc2V0KQog
ewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisgICAgdGhpcy5faXNWZXJ0aWNh
bCA9IGlzVmVydGljYWw7CisKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInNwbGl0Vmll
dy5jc3MiKTsKIAogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAic3BsaXQtdmlldyI7CiAK
LSAgICB0aGlzLl9sZWZ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX2xlZnRFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIjsK
LSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdEVsZW1lbnQpOwotCi0gICAg
dGhpcy5fcmlnaHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5fcmlnaHRFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIjsKLSAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRFbGVtZW50KTsKLQotICAgIHRo
aXMuc2lkZWJhclJlc2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1lbnQuY2xhc3NOYW1lID0gInNwbGl0LXZpZXct
cmVzaXplciI7Ci0gICAgdGhpcy5pbnN0YWxsUmVzaXplcih0aGlzLnNpZGViYXJSZXNpemVyRWxl
bWVudCk7CisgICAgdGhpcy5fZmlyc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgdGhpcy5fZmlyc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNv
bnRlbnRzIHNwbGl0LXZpZXctY29udGVudHMtIiArIChpc1ZlcnRpY2FsID8gInZlcnRpY2FsIiA6
ICJob3Jpem9udGFsIik7CisgICAgaWYgKGlzVmVydGljYWwpCisgICAgICAgIHRoaXMuX2ZpcnN0
RWxlbWVudC5zdHlsZS5sZWZ0ID0gMDsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuX2ZpcnN0RWxl
bWVudC5zdHlsZS50b3AgPSAwOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9m
aXJzdEVsZW1lbnQpOworCisgICAgdGhpcy5fc2Vjb25kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuY2xhc3NOYW1lID0gInNw
bGl0LXZpZXctY29udGVudHMgc3BsaXQtdmlldy1jb250ZW50cy0iICsgKGlzVmVydGljYWwgPyAi
dmVydGljYWwiIDogImhvcml6b250YWwiKTsKKyAgICBpZiAoaXNWZXJ0aWNhbCkKKyAgICAgICAg
dGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgZWxzZQorICAgICAgICB0
aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLmJvdHRvbSA9IDA7CisgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3NlY29uZEVsZW1lbnQpOworCisgICAgdGhpcy5fcmVzaXplckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9yZXNpemVyRWxl
bWVudC5jbGFzc05hbWUgPSAic3BsaXQtdmlldy1yZXNpemVyIHNwbGl0LXZpZXctcmVzaXplci0i
ICsgKGlzVmVydGljYWwgPyAidmVydGljYWwiIDogImhvcml6b250YWwiKTsKKyAgICB0aGlzLmlu
c3RhbGxSZXNpemVyKHRoaXMuX3Jlc2l6ZXJFbGVtZW50KTsKICAgICB0aGlzLl9yZXNpemFibGUg
PSB0cnVlOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJSZXNpemVy
RWxlbWVudCk7Ci0KLSAgICBkZWZhdWx0U2lkZWJhcldpZHRoID0gZGVmYXVsdFNpZGViYXJXaWR0
aCB8fCAyMDA7Ci0gICAgdGhpcy5fc2F2ZWRTaWRlYmFyV2lkdGggPSBkZWZhdWx0U2lkZWJhcldp
ZHRoOwotCi0gICAgdGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUgPSBzaWRlYmFyV2lkdGhT
ZXR0aW5nTmFtZTsKLSAgICBpZiAodGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUpCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZV0g
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZyh0aGlzLl9zaWRlYmFyV2lkdGhT
ZXR0aW5nTmFtZSwgdW5kZWZpbmVkKTsKLQotICAgIHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGgg
PSBQcmVmZXJlbmNlcy5taW5TaWRlYmFyV2lkdGg7Ci0gICAgdGhpcy5fbWluaW1hbE1haW5XaWR0
aCA9IDA7Ci0gICAgdGhpcy5fbWluaW1hbFNpZGViYXJXaWR0aFBlcmNlbnQgPSAwOwotICAgIHRo
aXMuX21pbmltYWxNYWluV2lkdGhQZXJjZW50ID0gNTA7Ci0KLSAgICB0aGlzLl9tYWluRWxlbWVu
dEhpZGRlbiA9IGZhbHNlOwotICAgIHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuID0gZmFsc2U7
CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc2l6ZXJFbGVtZW50KTsKIAot
ICAgIHRoaXMuX2lubmVyU2V0U2lkZWJhclBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbiB8fCBXZWJJ
bnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0KTsKLX0KKyAgICBkZWZhdWx0
U3BsaXRPZmZzZXQgPSBkZWZhdWx0U3BsaXRPZmZzZXQgfHwgMjAwOworICAgIHRoaXMuX3NhdmVk
U3BsaXRPZmZzZXQgPSBkZWZhdWx0U3BsaXRPZmZzZXQ7CiAKLVdlYkluc3BlY3Rvci5TcGxpdFZp
ZXcuRXZlbnRUeXBlcyA9IHsKLSAgICBSZXNpemVkOiAiUmVzaXplZCIKLX0KKyAgICB0aGlzLl9z
cGxpdE9mZnNldFNldHRpbmdOYW1lID0gc3BsaXRPZmZzZXRTZXR0aW5nTmFtZTsKKyAgICBpZiAo
dGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFtZSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRp
bmdzW3RoaXMuX3NwbGl0T2Zmc2V0U2V0dGluZ05hbWVdID0gV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNyZWF0ZVNldHRpbmcodGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFtZSwgdW5kZWZpbmVkKTsK
IAotLyoqCi0gKiBAZW51bSB7c3RyaW5nfQotICovCi1XZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNp
ZGViYXJQb3NpdGlvbiA9IHsKLSAgICBMZWZ0OiAiTGVmdCIsCi0gICAgUmlnaHQ6ICJSaWdodCIK
KyAgICB0aGlzLl9jaGFuZ2VGaXJzdE9uUmVzaXplID0gdHJ1ZTsKIH0KIAogV2ViSW5zcGVjdG9y
LlNwbGl0Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVh
bn0KLSAgICAgKi8KLSAgICBnZXQgaGFzTGVmdFNpZGViYXIoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3NpZGViYXJQb3NpdGlvbiA9PT0gV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRl
YmFyUG9zaXRpb24uTGVmdDsKLSAgICB9LAotCi0gICAgLyoqCiAgICAgICogQHJldHVybiB7RWxl
bWVudH0KICAgICAgKi8KLSAgICBnZXQgbWFpbkVsZW1lbnQoKQorICAgIGZpcnN0RWxlbWVudDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaGFzTGVmdFNpZGViYXIgPyB0
aGlzLl9yaWdodEVsZW1lbnQgOiB0aGlzLl9sZWZ0RWxlbWVudDsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2ZpcnN0RWxlbWVudDsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7RWxl
bWVudH0KICAgICAgKi8KLSAgICBnZXQgc2lkZWJhckVsZW1lbnQoKQorICAgIHNlY29uZEVsZW1l
bnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmhhc0xlZnRTaWRlYmFy
ID8gdGhpcy5fbGVmdEVsZW1lbnQgOiB0aGlzLl9yaWdodEVsZW1lbnQ7CisgICAgICAgIHJldHVy
biB0aGlzLl9zZWNvbmRFbGVtZW50OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJu
IHtib29sZWFufQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hhbmdlRmlyc3QKICAgICAgKi8K
LSAgICBnZXQgcmVzaXphYmxlKCkKKyAgICBzZXRDaGFuZ2VGaXJzdE9uUmVzaXplOiBmdW5jdGlv
bihjaGFuZ2VGaXJzdCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemFibGUgJiYg
IXRoaXMuX21haW5FbGVtZW50SGlkZGVuICYmICF0aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRlbjsK
KyAgICAgICAgdGhpcy5fY2hhbmdlRmlyc3RPblJlc2l6ZSA9IGNoYW5nZUZpcnN0OwogICAgIH0s
CiAKICAgICAvKioKLSAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KKyAgICAgKiBAcmV0dXJuIHtFbGVt
ZW50fQogICAgICAqLwotICAgIHNldCByZXNpemFibGUocmVzaXphYmxlKQorICAgIHJlc2l6ZXJF
bGVtZW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fcmVzaXphYmxlID09
PSByZXNpemFibGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3Jlc2l6YWJs
ZSA9IHJlc2l6YWJsZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzaXplcihyZXNpemFibGUpOwot
ICAgIH0sCi0KLSAgICBfdXBkYXRlUmVzaXplcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMucmVzaXphYmxlKQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMuc2lkZWJhclJlc2l6ZXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzaXplckVsZW1lbnQ7CiAgICAgfSwKIAotICAgIC8qKgotICAg
ICAqIEB0eXBlIHtzdHJpbmd9Ci0gICAgICovCi0gICAgc2V0IHNpZGViYXJQb3NpdGlvbihzaWRl
YmFyUG9zaXRpb24pCisgICAgc2hvd09ubHlGaXJzdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX3NpZGViYXJQb3NpdGlvbiA9PT0gc2lkZWJhclBvc2l0aW9uKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9pbm5lclNldFNpZGViYXJQb3NpdGlvbihzaWRl
YmFyUG9zaXRpb24pOwotICAgICAgICB0aGlzLl9yZXN0b3JlU2lkZWJhcldpZHRoKCk7CisgICAg
ICAgIHRoaXMuX3Nob3dPbmx5KHRoaXMuX2ZpcnN0RWxlbWVudCwgdGhpcy5fc2Vjb25kRWxlbWVu
dCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlYmFyUG9z
aXRpb24KLSAgICAgKi8KLSAgICBfaW5uZXJTZXRTaWRlYmFyUG9zaXRpb246IGZ1bmN0aW9uKHNp
ZGViYXJQb3NpdGlvbikKKyAgICBzaG93T25seVNlY29uZDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fc2lkZWJhclBvc2l0aW9uID0gc2lkZWJhclBvc2l0aW9uOwotCi0gICAgICAg
IHRoaXMuX2xlZnRFbGVtZW50LnN0eWxlLmxlZnQgPSAwOwotICAgICAgICB0aGlzLl9yaWdodEVs
ZW1lbnQuc3R5bGUucmlnaHQgPSAwOwotICAgICAgICBpZiAodGhpcy5oYXNMZWZ0U2lkZWJhcikg
ewotICAgICAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic3BsaXQtdmll
dy1zaWRlYmFyLWxlZnQiKTsKLSAgICAgICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5yZW1vdmVT
dHlsZUNsYXNzKCJzcGxpdC12aWV3LXNpZGViYXItcmlnaHQiKTsKLSAgICAgICAgICAgIHRoaXMu
X2xlZnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJyaWdodCIpOwotICAgICAgICAgICAg
dGhpcy5fcmlnaHRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwotICAgICAg
ICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInJp
Z2h0Iik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQu
YWRkU3R5bGVDbGFzcygic3BsaXQtdmlldy1zaWRlYmFyLXJpZ2h0Iik7Ci0gICAgICAgICAgICB0
aGlzLl9sZWZ0RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzcGxpdC12aWV3LXNpZGViYXItbGVm
dCIpOwotICAgICAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHko
IndpZHRoIik7Ci0gICAgICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJv
cGVydHkoImxlZnQiKTsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZXJFbGVtZW50LnN0
eWxlLnJlbW92ZVByb3BlcnR5KCJsZWZ0Iik7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2hv
d09ubHkodGhpcy5fc2Vjb25kRWxlbWVudCwgdGhpcy5fZmlyc3RFbGVtZW50KTsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtF
bGVtZW50fSBzaWRlQQorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gc2lkZUIKICAgICAgKi8KLSAg
ICBzZXQgbWluaW1hbFNpZGViYXJXaWR0aCh3aWR0aCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX21p
bmltYWxTaWRlYmFyV2lkdGggPSB3aWR0aDsKKyAgICBfc2hvd09ubHk6IGZ1bmN0aW9uKHNpZGVB
LCBzaWRlQikKKyAgICB7CisgICAgICAgIHNpZGVBLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIp
OworICAgICAgICBzaWRlQS5hZGRTdHlsZUNsYXNzKCJtYXhpbWl6ZWQiKTsKKyAgICAgICAgc2lk
ZUIuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHNpZGVCLnJlbW92ZVN0eWxlQ2xh
c3MoIm1heGltaXplZCIpOworICAgICAgICB0aGlzLl9yZW1vdmVBbGxMYXlvdXRQcm9wZXJ0aWVz
KCk7CisKKyAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLnJpZ2h0ID0gMDsKKyAgICAg
ICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLmJvdHRvbSA9IDA7CisgICAgICAgIHRoaXMuX2Zp
cnN0RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKKyAgICAgICAgdGhpcy5fZmlyc3RFbGVt
ZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKKworICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50
LnN0eWxlLmxlZnQgPSAwOworICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLnRvcCA9
IDA7CisgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7Cisg
ICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOworCisgICAg
ICAgIHRoaXMuX2lzU2hvd2luZ09uZSA9IHRydWU7CisgICAgICAgIHRoaXMuc2V0UmVzaXphYmxl
KGZhbHNlKTsKKyAgICAgICAgdGhpcy5kb1Jlc2l6ZSgpOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKLSAgICAgKi8KLSAgICBzZXQgbWluaW1hbE1haW5X
aWR0aCh3aWR0aCkKKyAgICBfcmVtb3ZlQWxsTGF5b3V0UHJvcGVydGllczogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fbWluaW1hbE1haW5XaWR0aCA9IHdpZHRoOworICAgICAgICB0
aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInJpZ2h0Iik7CisgICAgICAg
IHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiYm90dG9tIik7CisgICAg
ICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgid2lkdGgiKTsKKyAg
ICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKTsK
KyAgCisgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImxl
ZnQiKTsKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgi
dG9wIik7CisgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHko
IndpZHRoIik7CisgICAgICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVy
dHkoImhlaWdodCIpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0g
d2lkdGhQZXJjZW50Ci0gICAgICovCi0gICAgc2V0IG1pbmltYWxTaWRlYmFyV2lkdGhQZXJjZW50
KHdpZHRoUGVyY2VudCkKKyAgICBzaG93Qm90aDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5fbWluaW1hbFNpZGViYXJXaWR0aFBlcmNlbnQgPSB3aWR0aFBlcmNlbnQ7Ci0gICAgfSwK
KyAgICAgICAgdGhpcy5faXNTaG93aW5nT25lID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2ZpcnN0
RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fZmlyc3RF
bGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoIm1heGltaXplZCIpOworICAgICAgICB0aGlzLl9zZWNv
bmRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAgICB0aGlzLl9zZWNv
bmRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoIm1heGltaXplZCIpOwogCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoUGVyY2VudAotICAgICAqLwotICAgIHNldCBtaW5pbWFs
TWFpbldpZHRoUGVyY2VudCh3aWR0aFBlcmNlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9taW5p
bWFsTWFpbldpZHRoUGVyY2VudCA9IHdpZHRoUGVyY2VudDsKLSAgICB9LAorICAgICAgICAvLyBG
b3JjZSB1cGRhdGUKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NwbGl0T2Zmc2V0OworICAgICAgICB0
aGlzLnNldFNwbGl0T2Zmc2V0KHRoaXMuX2xhc3RTcGxpdE9mZnNldCgpKTsKIAotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAotICAgICAqLwotICAgIHNldE1haW5XaWR0aDog
ZnVuY3Rpb24od2lkdGgpCi0gICAgewotICAgICAgICB0aGlzLnNldFNpZGViYXJXaWR0aCh0aGlz
Ll90b3RhbFdpZHRoIC0gd2lkdGgpOworICAgICAgICB0aGlzLnNldFJlc2l6YWJsZSh0cnVlKTsK
KyAgICAgICAgdGhpcy5kb1Jlc2l6ZSgpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFy
YW0ge251bWJlcn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlc2l6YWJsZQogICAg
ICAqLwotICAgIHNldFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCisgICAgc2V0UmVzaXph
YmxlOiBmdW5jdGlvbihyZXNpemFibGUpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2lkZWJh
cldpZHRoID09PSB3aWR0aCkKKyAgICAgICAgaWYgKHRoaXMuX3Jlc2l6YWJsZSA9PT0gcmVzaXph
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2lubmVyU2V0U2lkZWJh
cldpZHRoKHdpZHRoKTsKLSAgICAgICAgdGhpcy5zYXZlU2lkZWJhcldpZHRoKCk7Ci0gICAgfSwK
LQotICAgIHNpZGViYXJXaWR0aDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3NpZGViYXJXaWR0aDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1i
ZXJ9IHdpZHRoCi0gICAgICovCi0gICAgX2lubmVyU2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3
aWR0aCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmhhc0xlZnRTaWRlYmFyKQotICAgICAgICAg
ICAgdGhpcy5faW5uZXJTZXRMZWZ0U2lkZWJhcldpZHRoKHdpZHRoKTsKKyAgICAgICAgdGhpcy5f
cmVzaXphYmxlID0gcmVzaXphYmxlOworICAgICAgICBpZiAocmVzaXphYmxlKQorICAgICAgICAg
ICAgdGhpcy5fcmVzaXplckVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2lubmVyU2V0UmlnaHRTaWRlYmFyV2lkdGgod2lk
dGgpOwotICAgICAgICB0aGlzLl9zaWRlYmFyV2lkdGggPSB3aWR0aDsKLSAgICAgICAgdGhpcy5k
b1Jlc2l6ZSgpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuU3BsaXRWaWV3LkV2ZW50VHlwZXMuUmVzaXplZCwgdGhpcy5fc2lkZWJhcldpZHRoKTsK
KyAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIp
OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CiAgICAgICovCi0gICAgX2lubmVyU2V0TGVmdFNpZGVi
YXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCisgICAgc2V0U3BsaXRPZmZzZXQ6IGZ1bmN0aW9uKG9m
ZnNldCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2xlZnRFbGVtZW50LnN0eWxlLndpZHRoID0gd2lk
dGggKyAicHgiOwotICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQuc3R5bGUubGVmdCA9IHdpZHRo
ICsgInB4IjsKLSAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1lbnQuc3R5bGUubGVmdCA9
ICh3aWR0aCAtIDMpICsgInB4IjsKKyAgICAgICAgaWYgKHRoaXMuX3NwbGl0T2Zmc2V0ID09PSBv
ZmZzZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faW5uZXJTZXRTcGxp
dE9mZnNldChvZmZzZXQpOworICAgICAgICB0aGlzLl9zYXZlU3BsaXRPZmZzZXQob2Zmc2V0KTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCi0gICAgICov
Ci0gICAgX2lubmVyU2V0UmlnaHRTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQorICAgIHNw
bGl0T2Zmc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQu
c3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHRoaXMuX2xlZnRFbGVtZW50LnN0
eWxlLnJpZ2h0ID0gd2lkdGggKyAicHgiOwotICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVyRWxl
bWVudC5zdHlsZS5yaWdodCA9ICh3aWR0aCAtIDMpICsgInB4IjsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NwbGl0T2Zmc2V0OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJl
cn0gd2lkdGgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0CiAgICAgICovCi0gICAgX3Nl
dFNpZGViYXJXaWR0aEVuc3VyaW5nQ29uc3RyYWludHM6IGZ1bmN0aW9uKHdpZHRoKQotICAgIHsK
LSAgICAgICAgdmFyIG1pbldpZHRoID0gTWF0aC5tYXgodGhpcy5fbWluaW1hbFNpZGViYXJXaWR0
aCwgdGhpcy5fdG90YWxXaWR0aCAqIHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGhQZXJjZW50KTsK
LSAgICAgICAgdmFyIG1heFdpZHRoID0gTWF0aC5taW4odGhpcy5fdG90YWxXaWR0aCAtIHRoaXMu
X21pbmltYWxNYWluV2lkdGgsIHRoaXMuX3RvdGFsV2lkdGggKiAoMTAwIC0gdGhpcy5fbWluaW1h
bE1haW5XaWR0aFBlcmNlbnQpIC8gMTAwICk7Ci0gICAgICAgIHdpZHRoID0gTnVtYmVyLmNvbnN0
cmFpbih3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoKTsKLQotICAgICAgICB0aGlzLnNldFNpZGVi
YXJXaWR0aCh3aWR0aCk7Ci0gICAgfSwKLQotICAgIGhpZGVNYWluRWxlbWVudDogZnVuY3Rpb24o
KQorICAgIF9pbm5lclNldFNwbGl0T2Zmc2V0OiBmdW5jdGlvbihvZmZzZXQpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4pCisgICAgICAgIGlmICh0aGlzLl9pc1No
b3dpbmdPbmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuX3NpZGVi
YXJFbGVtZW50SGlkZGVuKQotICAgICAgICAgICAgdGhpcy5zaG93U2lkZWJhckVsZW1lbnQoKTsK
KyAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGF5b3V0UHJvcGVydGllcygpOwogCi0gICAgICAgIHRo
aXMubWFpbkVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuc2lk
ZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygibWF4aW1pemVkIik7Ci0gICAgICAgIAotICAgICAg
ICBpZiAodGhpcy5oYXNMZWZ0U2lkZWJhcikKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1l
bnQuc3R5bGUucmlnaHQgPSAiMHB4IjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5z
aWRlYmFyRWxlbWVudC5zdHlsZS5sZWZ0ID0gIjBweCI7Ci0gICAgICAgIAotICAgICAgICB0aGlz
Ll9tYWluRWxlbWVudEhpZGRlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc2l6ZXIo
KTsKLSAgICAgICAgdGhpcy5fcmVzdG9yZVNpZGViYXJXaWR0aCgpOwotICAgICAgICB0aGlzLmRv
UmVzaXplKCk7Ci0gICAgfSwKLQotICAgIHNob3dNYWluRWxlbWVudDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9tYWluRWxlbWVudEhpZGRlbikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLm1haW5FbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRl
biIpOwotICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoIm1heGlt
aXplZCIpOwotICAgICAgICAKLSAgICAgICAgaWYgKHRoaXMuaGFzTGVmdFNpZGViYXIpCi0gICAg
ICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN0eWxlLnJpZ2h0ID0gIiI7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3R5bGUubGVmdCA9ICIiOwotCi0g
ICAgICAgIHRoaXMuX21haW5FbGVtZW50SGlkZGVuID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZVJlc2l6ZXIoKTsKLSAgICAgICAgdGhpcy5fcmVzdG9yZVNpZGViYXJXaWR0aCgpOwotICAg
ICAgICB0aGlzLmRvUmVzaXplKCk7Ci0gICAgfSwKLQotICAgIGhpZGVTaWRlYmFyRWxlbWVudDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVu
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdmFsdWVUb1NldCA9ICh0aGlzLl9j
aGFuZ2VGaXJzdE9uUmVzaXplID8gdGhpcy5fdG90YWxTaXplIC0gb2Zmc2V0IDogb2Zmc2V0KSAr
ICJweCI7CiAKLSAgICAgICAgaWYgKHRoaXMuX21haW5FbGVtZW50SGlkZGVuKQotICAgICAgICAg
ICAgdGhpcy5zaG93TWFpbkVsZW1lbnQoKTsKKyAgICAgICAgaWYgKHRoaXMuX2lzVmVydGljYWwp
IHsKKyAgICAgICAgICAgIHZhciByZXNpemVyV2lkdGggPSB0aGlzLl9yZXNpemVyRWxlbWVudC5v
ZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2VGaXJzdE9uUmVzaXplKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLnJpZ2h0ID0gdmFsdWVU
b1NldDsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLndpZHRoID0g
dmFsdWVUb1NldDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5f
Zmlyc3RFbGVtZW50LnN0eWxlLndpZHRoID0gdmFsdWVUb1NldDsKKyAgICAgICAgICAgICAgICB0
aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLmxlZnQgPSB2YWx1ZVRvU2V0OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdGhpcy5fcmVzaXplckVsZW1lbnQuc3R5bGUubGVmdCA9IG9mZnNldCAt
IHJlc2l6ZXJXaWR0aCAvIDIgKyAicHgiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dmFyIHJlc2l6ZXJIZWlnaHQgPSB0aGlzLl9yZXNpemVyRWxlbWVudC5vZmZzZXRIZWlnaHQ7Cisg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5nZUZpcnN0T25SZXNpemUpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUuYm90dG9tID0gdmFsdWVU
b1NldDsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLmhlaWdodCA9
IHZhbHVlVG9TZXQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMu
X2ZpcnN0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB2YWx1ZVRvU2V0OworICAgICAgICAgICAgICAg
IHRoaXMuX3NlY29uZEVsZW1lbnQuc3R5bGUudG9wID0gdmFsdWVUb1NldDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJFbGVtZW50LnN0eWxlLnRvcCA9IG9mZnNldCAt
IHJlc2l6ZXJIZWlnaHQgLyAyICsgInB4IjsKKyAgICAgICAgfQogCi0gICAgICAgIHRoaXMuc2lk
ZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuX3NpZGVi
YXJFbGVtZW50SGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzaXplcigpOwot
ICAgICAgICB0aGlzLl9yZXN0b3JlU2lkZWJhcldpZHRoKCk7CisgICAgICAgIHRoaXMuX3NwbGl0
T2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB0aGlzLmRvUmVzaXplKCk7CiAgICAgfSwKIAotICAg
IHNob3dTaWRlYmFyRWxlbWVudDogZnVuY3Rpb24oKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBvZmZzZXQKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgYXBw
bHlDb25zdHJhaW50czogZnVuY3Rpb24ob2Zmc2V0KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
Ll9zaWRlYmFyRWxlbWVudEhpZGRlbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0
aGlzLnNpZGViYXJFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICB0
aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRlbiA9IGZhbHNlOwotICAgICAgICB0aGlzLl91cGRhdGVS
ZXNpemVyKCk7Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKLSAgICAgICAg
dGhpcy5kb1Jlc2l6ZSgpOworICAgICAgICBjb25zdCBtaW5TaXplID0gMjA7CisgICAgICAgIG9m
ZnNldCA9IE1hdGgubWF4KG9mZnNldCwgbWluU2l6ZSk7CisgICAgICAgIGlmICh0aGlzLl90b3Rh
bFNpemUgLSBvZmZzZXQgPCBtaW5TaXplKQorICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5fdG90
YWxTaXplIC0gbWluU2l6ZTsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9LAogCiAgICAg
d2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RvdGFsV2lkdGggPSB0
aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTaWRlYmFyV2lk
dGgoKTsKKyAgICAgICAgdGhpcy5fdG90YWxTaXplID0gdGhpcy5faXNWZXJ0aWNhbCA/IHRoaXMu
ZWxlbWVudC5vZmZzZXRXaWR0aCA6IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAg
IHRoaXMuc2V0U3BsaXRPZmZzZXQodGhpcy5fbGFzdFNwbGl0T2Zmc2V0KCkpOwogICAgIH0sCiAK
ICAgICBvblJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fdG90YWxXaWR0
aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDsKLQotICAgICAgICBpZiAodGhpcy5fbWFpbkVs
ZW1lbnRIaWRkZW4pCi0gICAgICAgICAgICB0aGlzLl9zaWRlYmFyV2lkdGggPSB0aGlzLl90b3Rh
bFdpZHRoOworICAgICAgICB2YXIgb2xkVG90YWxTaXplID0gdGhpcy5fdG90YWxTaXplOworICAg
ICAgICB0aGlzLl90b3RhbFNpemUgPSB0aGlzLl9pc1ZlcnRpY2FsID8gdGhpcy5lbGVtZW50Lm9m
ZnNldFdpZHRoIDogdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0zNjUsOCArMjc3LDcgQEAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghdGhpcy5fcmVzaXphYmxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHZhciBsZWZ0V2lkdGggPSB0aGlzLmhhc0xlZnRTaWRlYmFyID8gdGhpcy5f
c2lkZWJhcldpZHRoIDogdGhpcy5fdG90YWxXaWR0aCAtIHRoaXMuX3NpZGViYXJXaWR0aDsKLSAg
ICAgICAgdGhpcy5fZHJhZ09mZnNldCA9IGxlZnRXaWR0aCAtIGV2ZW50LnBhZ2VYOworICAgICAg
ICB0aGlzLl9kcmFnT2Zmc2V0ID0gdGhpcy5fc3BsaXRPZmZzZXQgLSAodGhpcy5faXNWZXJ0aWNh
bCA/IGV2ZW50LnBhZ2VYIDogZXZlbnQucGFnZVkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9LAogCkBAIC0zNzUsMTEgKzI4Niw4IEBAIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIF9yZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdmFyIGxlZnRXaWR0aCA9IGV2ZW50LnBhZ2VYICsgdGhpcy5fZHJhZ09m
ZnNldDsKLSAgICAgICAgdmFyIHJpZ2h0V2lkdGggPSB0aGlzLl90b3RhbFdpZHRoIC0gbGVmdFdp
ZHRoOwotICAgICAgICB2YXIgc2lkZWJhcldpZHRoID0gdGhpcy5oYXNMZWZ0U2lkZWJhciA/IGxl
ZnRXaWR0aCA6IHJpZ2h0V2lkdGg7Ci0KLSAgICAgICAgdGhpcy5fc2V0U2lkZWJhcldpZHRoRW5z
dXJpbmdDb25zdHJhaW50cyhzaWRlYmFyV2lkdGgpOworICAgICAgICB2YXIgbmV3T2Zmc2V0ID0g
KHRoaXMuX2lzVmVydGljYWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZKSArIHRoaXMuX2Ry
YWdPZmZzZXQ7CisgICAgICAgIHRoaXMuc2V0U3BsaXRPZmZzZXQodGhpcy5hcHBseUNvbnN0cmFp
bnRzKG5ld09mZnNldCkpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0s
CiAKQEAgLTM5Niw1MiArMzA0LDMwIEBAIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIGluc3RhbGxSZXNpemVyOiBmdW5jdGlvbihyZXNpemVyRWxlbWVu
dCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pbnN0YWxsRHJhZ0hhbmRsZShyZXNpemVy
RWxlbWVudCwgdGhpcy5fc3RhcnRSZXNpemVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fcmVz
aXplckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRo
aXMpLCAiZXctcmVzaXplIik7CisgICAgICAgIFdlYkluc3BlY3Rvci5pbnN0YWxsRHJhZ0hhbmRs
ZShyZXNpemVyRWxlbWVudCwgdGhpcy5fc3RhcnRSZXNpemVyRHJhZ2dpbmcuYmluZCh0aGlzKSwg
dGhpcy5fcmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFJlc2l6ZXJEcmFnZ2lu
Zy5iaW5kKHRoaXMpLCB0aGlzLl9pc1ZlcnRpY2FsID8gImV3LXJlc2l6ZSIgOiAibnMtcmVzaXpl
Iik7CiAgICAgfSwKIAogICAgIC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8K
LSAgICBwcmVmZXJyZWRTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKCkKKyAgICBfbGFzdFNwbGl0T2Zm
c2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NpZGViYXJXaWR0aFNl
dHRpbmdOYW1lKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmVkU2lkZWJhcldpZHRoOwor
ICAgICAgICBpZiAoIXRoaXMuX3NwbGl0T2Zmc2V0U2V0dGluZ05hbWUpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fc2F2ZWRTcGxpdE9mZnNldDsKIAotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLnNldHRpbmdzW3RoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lXS5nZXQoKSB8fCB0aGlz
Ll9zYXZlZFNpZGViYXJXaWR0aDsKLSAgICB9LAotCi0gICAgX3Jlc3RvcmVTaWRlYmFyV2lkdGg6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tYWluRWxlbWVudEhpZGRlbikg
ewotICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdHlsZS53aWR0aCA9ICIiOwotICAg
ICAgICAgICAgdGhpcy5fc2lkZWJhcldpZHRoID0gdGhpcy5fdG90YWxXaWR0aDsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9zaWRlYmFyRWxlbWVu
dEhpZGRlbikgewotICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRTaWRlYmFyV2lkdGgoMCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbnN1cmUgcmVzdG9y
ZSBzYXRpc2ZpZXMgY29uc3RyYWludHMuCi0gICAgICAgIHRoaXMuX3NldFNpZGViYXJXaWR0aEVu
c3VyaW5nQ29uc3RyYWludHModGhpcy5wcmVmZXJyZWRTaWRlYmFyV2lkdGgoKSk7Ci0gICAgfSwK
LQotICAgIHNhdmVTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3NhdmVkU2lkZWJhcldpZHRoID0gdGhpcy5fc2lkZWJhcldpZHRoOwotICAgICAgICBpZiAoIXRo
aXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZV0u
c2V0KHRoaXMuX3NpZGViYXJXaWR0aCk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3NbdGhpcy5fc3BsaXRPZmZzZXRTZXR0aW5nTmFtZV0uZ2V0KCkgfHwgdGhpcy5fc2F2ZWRT
cGxpdE9mZnNldDsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7QXJyYXkuPEVs
ZW1lbnQ+fQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQKICAgICAgKi8KLSAgICBlbGVt
ZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQorICAgIF9zYXZlU3Bs
aXRPZmZzZXQ6IGZ1bmN0aW9uKG9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbIHRoaXMu
bWFpbkVsZW1lbnQsIHRoaXMuc2lkZWJhckVsZW1lbnQgXTsKKyAgICAgICAgdGhpcy5fc2F2ZWRT
cGxpdE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgaWYgKCF0aGlzLl9zcGxpdE9mZnNldFNldHRp
bmdOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0
aW5nc1t0aGlzLl9zcGxpdE9mZnNldFNldHRpbmdOYW1lXS5zZXQob2Zmc2V0KTsKICAgICB9LAog
CiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCBk
MzFjODBhOWJiYTY3NjBkYzllZDMxZDMwNzUwN2NjY2JlZTg2M2MzLi41YTg2MDBkMGY2NTE3YmFj
MmI3OGU4YjRjZWFkZTc5MTE2YzdjNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC02MSw4ICs2MSw4IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3NpZGViYXJCYWNr
Z3JvdW5kRWxlbWVudC5jbGFzc05hbWUgPSAic2lkZWJhciBzcGxpdC12aWV3LXNpZGViYXItbGVm
dCB0aW1lbGluZS1zaWRlYmFyLWJhY2tncm91bmQiOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9zaWRlYmFyQmFja2dyb3VuZEVsZW1lbnQpOwogCi0gICAgdGhpcy5jcmVhdGVT
cGxpdFZpZXdXaXRoU2lkZWJhclRyZWUoKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5zcGxpdFZpZXcuc2lkZWJhclJlc2l6ZXJFbGVtZW50KTsKKyAgICB0aGlzLmNyZWF0ZVNp
ZGViYXJWaWV3V2l0aFRyZWUoKTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5z
cGxpdFZpZXcucmVzaXplckVsZW1lbnQoKSk7CiAKICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50
ID0gdGhpcy5zcGxpdFZpZXcuZWxlbWVudDsKICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50Lmlk
ID0gInRpbWVsaW5lLWNvbnRhaW5lciI7CkBAIC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3RpbWVsaW5lTWVtb3J5U3BsaXR0
ZXIuaWQgPSAidGltZWxpbmUtbWVtb3J5LXNwbGl0dGVyIjsKICAgICBXZWJJbnNwZWN0b3IuaW5z
dGFsbERyYWdIYW5kbGUodGhpcy5fdGltZWxpbmVNZW1vcnlTcGxpdHRlciwgdGhpcy5fc3RhcnRT
cGxpdHRlckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX3NwbGl0dGVyRHJhZ2dpbmcuYmluZCh0
aGlzKSwgdGhpcy5fZW5kU3BsaXR0ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCAibnMtcmVzaXplIik7
CiAgICAgdGhpcy5fdGltZWxpbmVNZW1vcnlTcGxpdHRlci5hZGRTdHlsZUNsYXNzKCJoaWRkZW4i
KTsKLSAgICB0aGlzLl9tZW1vcnlTdGF0aXN0aWNzID0gbmV3IFdlYkluc3BlY3Rvci5NZW1vcnlT
dGF0aXN0aWNzKHRoaXMsIHRoaXMuX21vZGVsLCB0aGlzLnNwbGl0Vmlldy5wcmVmZXJyZWRTaWRl
YmFyV2lkdGgoKSk7CisgICAgdGhpcy5fbWVtb3J5U3RhdGlzdGljcyA9IG5ldyBXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljcyh0aGlzLCB0aGlzLl9tb2RlbCwgdGhpcy5zcGxpdFZpZXcuc2lk
ZWJhcldpZHRoKCkpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tZW1vcnlDb3VudGVyR3Jh
cGhzSGVpZ2h0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoIm1lbW9yeUNv
dW50ZXJHcmFwaHNIZWlnaHQiLCAxNTApOwogCiAgICAgdmFyIGl0ZW1zVHJlZUVsZW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSRUNPUkRTIiksIHt9LCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBlNTdjODk0ZGJiMzVkZmViZWZkMjE0NjEyMWVh
OTdmM2IzNzY1MDM2Li45YWU2Y2M3NTk1NjVmZDY0MjRlN2U2MDU5YTk4NzY5MzE5OTVjZWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0x
NzIsNiArMTcyLDcgQEAKICAgICA8ZmlsZT5TaWRlYmFyT3ZlcmxheS5qczwvZmlsZT4KICAgICA8
ZmlsZT5TaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5TaWRlYmFyVHJlZUVsZW1lbnQu
anM8L2ZpbGU+CisgICAgPGZpbGU+U2lkZWJhclZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+U25p
cHBldEphdmFTY3JpcHRTb3VyY2VGcmFtZS5qczwvZmlsZT4KICAgICA8ZmlsZT5TbmlwcGV0U3Rv
cmFnZS5qczwvZmlsZT4KICAgICA8ZmlsZT5Tb2Z0Q29udGV4dE1lbnUuanM8L2ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NhbnZhc1Byb2ZpbGVy
LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY2FudmFzUHJvZmlsZXIu
Y3NzCmluZGV4IDA2ZjgzOTA3YzFiMjM3Nzg3MTFiOTAxYWQ1YWQ0YWExNGZhZjMyMTkuLmU3NjIw
NjljMDczMmVjMmNmZDBlOTViMDg4MjA0OWFmMjU1YTAyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY2FudmFzUHJvZmlsZXIuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY2FudmFzUHJvZmlsZXIuY3NzCkBAIC0zNywx
NSArMzcsMTUgQEAKICAgICBib3R0b206IDA7CiB9CiAKKy5jYW52YXMtcHJvZmlsZS12aWV3IC5z
cGxpdC12aWV3LXJlc2l6ZXIgeworICAgIGJhY2tncm91bmQ6IHJnYigxMjgsIDEyOCwgMTI4KTsK
K30KKwogLmNhbnZhcy10cmFjZS1sb2cgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0
b3A6IDQwMHB4OwotICAgIGxlZnQ6IDVweDsKLSAgICByaWdodDogNXB4OwotICAgIGJvdHRvbTog
MTBweDsKICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgd2hp
dGUtc3BhY2U6IG5vd3JhcDsKKyAgICBwYWRkaW5nOiA1cHg7CiB9CiAKIC5jYW52YXMtdHJhY2Ut
bG9nIGRpdiB7CkBAIC01MywxMCArNTMsMTAgQEAKIH0KIAogI2NhbnZhcy1yZXBsYXktaW1hZ2Ut
Y29udGFpbmVyIHsKLSAgICBoZWlnaHQ6IDQwMHB4OwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgICBwYWRkaW5nOiA1cHggNXB4IDE2cHggNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IHdo
aXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIG92ZXJmbG93OiBoaWRkZW47
CisgICAgcGFkZGluZzogNXB4OwogfQogCiAjY2FudmFzLXJlcGxheS1pbWFnZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA2
ZWEwYWY3ZTk0M2ZiY2JmYjk2NjM0MGZlMzYyNjdlMTBiMjgxZjMzLi45NzlhN2I0ZDk5NThkYmRj
YmU1YjhkY2IwNjcwM2VmN2M1NThhNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTExMyw2ICsxMTMsNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlNwbGl0Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU2lkZWJhclZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnNvbGVQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQVBJLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25BdWRpdENh
dGVnb3J5LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvc3BsaXRWaWV3LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvc3BsaXRWaWV3LmNzcwppbmRleCAwNjE0YzZmOTI5YmM4MzZiNjc4Y2VhYWI4YWFjYjgw
MzkwNjA1ZTdkLi44YzJkMzg1M2FiOTA2YzAwZGY1ZTk3NzdkZjY0MDlmZTFjYjIwOGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3NwbGl0Vmlldy5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzCkBA
IC0zNywxMiArMzcsMjAgQEAKIAogLnNwbGl0LXZpZXctY29udGVudHMgewogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgYm90dG9tOiAwOwogICAgIG92ZXJmbG93OiBh
dXRvOwogICAgIGN1cnNvcjogZGVmYXVsdDsKIH0KIAorLnNwbGl0LXZpZXctY29udGVudHMuc3Bs
aXQtdmlldy1jb250ZW50cy12ZXJ0aWNhbCB7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsK
K30KKworLnNwbGl0LXZpZXctY29udGVudHMuc3BsaXQtdmlldy1jb250ZW50cy1ob3Jpem9udGFs
IHsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworfQorCiAuc3BsaXQtdmlldy1zaWRlYmFy
LWxlZnQgewogICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYig2NCUsIDY0JSwgNjQlKTsK
IH0KQEAgLTU5LDE1ICs2NywyNCBAQAogICAgIGJvcmRlci1yaWdodDogbm9uZTsKIH0KIAotLnNw
bGl0LXZpZXctcmVzaXplciB7Cisuc3BsaXQtdmlldy1yZXNpemVyLnNwbGl0LXZpZXctcmVzaXpl
ci12ZXJ0aWNhbCB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKICAgICBi
b3R0b206IDA7CiAgICAgd2lkdGg6IDVweDsKLSAgICB6LWluZGV4OiA1MDA7CisgICAgei1pbmRl
eDogMTUwMDsKICAgICBjdXJzb3I6IGV3LXJlc2l6ZTsKIH0KIAorLnNwbGl0LXZpZXctcmVzaXpl
ci5zcGxpdC12aWV3LXJlc2l6ZXItaG9yaXpvbnRhbCB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgaGVpZ2h0OiA1cHg7CisgICAgei1p
bmRleDogMTUwMDsKKyAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKK30KKwogLnNpZGViYXItb3Zlcmxh
eSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173232</attachid>
            <date>2012-11-09 01:08:16 -0800</date>
            <delta_ts>2012-11-09 01:21:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101612-20121109130623.patch</filename>
            <type>text/plain</type>
            <size>59410</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQwNGNhNjI0OWJiOWNj
OGRmODg5YTRkYTFjYzU2NDIwYjNkOTBkZi4uNTIyODgyZmNjYzcxOTQ5ZGRmMzVkZDI3MzNmYzlm
ZTYzNTc2NTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTExLTA4ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNwbGl0IFNwbGl0VmlldyBpbnRvIFNwbGl0VmlldyBhbmQgU2lkZWJhclZpZXcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTYxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgU3Bs
aXRWaWV3IGlzIHJhdGhlciBhIHNpZGViYXIgdmlldy4gSSdtIGV4dHJhY3RpbmcgdGhlIHJldXNh
YmxlIHNwbGl0IGNvbXBvbmVudCBmcm9tIGl0LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5
cGUud2FzU2hvd24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q291bnRlclVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3Rv
dHlwZS5zZXRUb3BQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS52aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLnByb3RvdHlwZS5zZXQgX3Bpbk5hdmln
YXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIu
cHJvdG90eXBlLnNldCBzaG93TmF2aWdhdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVOYXZpZ2F0b3JPdmVy
bGF5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5w
cm90b3R5cGUuX2lubmVySGlkZU5hdmlnYXRvck92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmNyZWF0
ZVNpZGViYXJWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuY3Jl
YXRlU2lkZWJhclZpZXdXaXRoVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGVi
YXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLl9oYXNMZWZ0U2lkZWJh
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdldCBtYWlu
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmdl
dCBzaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJv
dG90eXBlLl9pbm5lclNldFNpZGViYXJQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLnNldE1pbmltYWxTaWRlYmFyV2lkdGgpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LnByb3RvdHlwZS5zZXRNaW5pbWFsTWFpbldpZHRoUGVy
Y2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNldFNp
ZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBl
LnNpZGViYXJXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90
eXBlLm9uUmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5
cGUuYXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcu
cHJvdG90eXBlLmhpZGVNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2lkZWJh
clZpZXcucHJvdG90eXBlLnNob3dNYWluRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2lkZWJhclZpZXcucHJvdG90eXBlLmhpZGVTaWRlYmFyRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLnNob3dTaWRlYmFyRWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3Jl
U2Nyb2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuZmlyc3RFbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNlY29uZEVsZW1lbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUuc2V0Q2hhbmdlRmlyc3RPblJlc2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5yZXNpemVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5zaG93T25seUZp
cnN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLnNob3dPbmx5
U2Vjb25kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlLl9zaG93
T25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5fcmVtb3Zl
QWxsTGF5b3V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnBy
b3RvdHlwZS5zaG93Qm90aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3Rv
dHlwZS5zZXRSZXNpemFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90
b3R5cGUuc2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuc3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5w
cm90b3R5cGUuX2lubmVyU2V0U3BsaXRPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNw
bGl0Vmlldy5wcm90b3R5cGUuX3N0YXJ0UmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzOgor
CiAyMDEyLTExLTA4ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYnVnQGdtYWlsLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZTogIlNlbmQgUmVxdWVzdCIgZXZlbnRz
IGFyZSBzaG93biBvdXQgb2Ygb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGJkMWZjNGNkYzNj
ZTRhMzVmNjYzYmZhYjg0NWE1ZmI5ZmE1NmVkNy4uYzQ2NTYwNjk1MGZjZTZjZDZkMTY0NTlmYzJi
MDlkYmNlOWEwZDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQ2Niw2ICs2NDY2LDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJPdmVybGF5LmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1NpZGViYXJWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1NpZGViYXJUcmVlRWxlbWVudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TbmlwcGV0U3RvcmFnZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCA1MjI0NGE1YmY1OWQxNjllZDc4NTJhNjEzOTZhMTUwNjBi
ZTk5MDdhLi5iNTNlNzE1MzRkZmQyMTVkOWQ5ZDViMzA1NzFlOGU4MGUwODA4OTNmIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY2NTAsNiAr
NzY2NTAsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU2lkZWJhclZpZXcuanMiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXFNuaXBwZXRKYXZhU2NyaXB0U291cmNlRnJhbWUuanMiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CkBAIC03NjY5OCw2ICs3NjcwMiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTaWRlYmFyVmll
dy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3BsaXRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5k
LnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4
IDliZjM5NWNmYWU0MDkzZWYyODkwY2E2YzhlODE3NzBlMTA3NDYwNjcuLmM2ODI4NTliZWQyOWFm
YTIzMzIyZTdiNzIwOTQ5NWU0ZWRlNGIxNjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTE0Miw2ICsxNDIsNyBAQCBtb2R1bGVzID0gWwog
ICAgICAgICAgICAgIlNvdXJjZVRva2VuaXplci5qcyIsCiAgICAgICAgICAgICAiU3BlY3RydW0u
anMiLAogICAgICAgICAgICAgIlNwbGl0Vmlldy5qcyIsCisgICAgICAgICAgICAiU2lkZWJhclZp
ZXcuanMiLAogICAgICAgICAgICAgIlN0YXR1c0JhckJ1dHRvbi5qcyIsCiAgICAgICAgICAgICAi
VGFiYmVkUGFuZS5qcyIsCiAgICAgICAgICAgICAiVGV4dEVkaXRvci5qcyIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwppbmRleCAyNjI0
ZDRkMTVhNTFjNGFlZTIyNjYyOTU2ZWFlZTA5ODhjMTZmODIwLi5jNmVkMTdkYjI4Mjc0ODViZjY2
M2FlNjJlZWVmNDFmODVmMjRkYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTM4LDcgKzM4LDcgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygi
cGFuZWxFbmFibGVyVmlldy5jc3MiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoImF1
ZGl0c1BhbmVsLmNzcyIpOwogCi0gICAgdGhpcy5jcmVhdGVTcGxpdFZpZXdXaXRoU2lkZWJhclRy
ZWUoKTsKKyAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3V2l0aFRyZWUoKTsKICAgICB0aGlzLmF1
ZGl0c1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVt
ZW50KCIiLCB7fSwgdHJ1ZSk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlz
LmF1ZGl0c1RyZWVFbGVtZW50KTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50Lmxpc3RJdGVt
RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9u
c1ZpZXcuanMKaW5kZXggYjkyYTA2NmRhNmFhMDA2NGQ5MDU5MzEyMjg4MGMyOGJkNzU5NTBiMC4u
ZjBlOTNiMzYyNGM5MDgxZGZhYmVhMjJiZGU2YjUxY2U3ZTc5ZWU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1Zp
ZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NOYW1lZEZs
b3dDb2xsZWN0aW9uc1ZpZXcuanMKQEAgLTI5LDExICsyOSwxMSBAQAogCiAvKioKICAqIEBjb25z
dHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TcGxpdFZpZXd9CisgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3fQogICovCiBXZWJJbnNwZWN0b3IuQ1NTTmFtZWRG
bG93Q29sbGVjdGlvbnNWaWV3ID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5TcGxp
dFZpZXcuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5M
ZWZ0KTsKKyAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQpOwogICAgIHRoaXMucmVnaXN0ZXJS
ZXF1aXJlZENTUygiY3NzTmFtZWRGbG93cy5jc3MiKTsKIAogICAgIHRoaXMuX25hbWVkRmxvd3Mg
PSB7fTsKQEAgLTM0Myw3ICszNDMsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVj
dGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS53YXNTaG93bi5jYWxs
KHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcucHJvdG90eXBlLndhc1No
b3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3RE
b2N1bWVudCh0aGlzLl9zZXREb2N1bWVudC5iaW5kKHRoaXMpKTsKIApAQCAtMzczLDcgKzM3Myw3
IEBAIFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRhYmJlZFBhbmUuRXZlbnRUeXBlcy5UYWJDbG9zZWQsIHRoaXMuX3RhYkNsb3NlZCwgdGhp
cyk7CiAgICAgfSwKIAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90
b3R5cGUKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5wcm90b3R5cGUK
IH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NhbnZhc1Byb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYW52YXNQcm9maWxlVmlldy5qcwppbmRleCBkZjdmNTEwOWE5Y2MyNmI4YzVkMTdkNDFlOWFm
NDVmODI4MjI4ZGE5Li40NDBmYWJkZTRjMGVkMzEzNTlkZWM5N2VkYTEyN2YyZjcyYzM3ZDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbnZhc1Byb2Zp
bGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FudmFz
UHJvZmlsZVZpZXcuanMKQEAgLTM5LDIwICszOSwyMSBAQCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJv
ZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxl
OwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjYW52YXMtcHJvZmlsZS12aWV3Iik7
CiAKLSAgICB0aGlzLl90cmFjZUxvZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl90cmFjZUxvZ0VsZW1lbnQuY2xhc3NOYW1lID0gImNhbnZhcy10cmFj
ZS1sb2ciOworICAgIHRoaXMuX3NwbGl0VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3
KGZhbHNlLCAiY2FudmFzUHJvZmlsZVZpZXdTcGxpdExvY2F0aW9uIiwgMzAwKTsKKyAgICB0aGlz
Ll90cmFjZUxvZ0VsZW1lbnQgPSB0aGlzLl9zcGxpdFZpZXcuc2Vjb25kRWxlbWVudCgpOworICAg
IHRoaXMuX3RyYWNlTG9nRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjYW52YXMtdHJhY2UtbG9nIik7
CiAgICAgdGhpcy5fdHJhY2VMb2dFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fb25UcmFjZUxvZ0l0ZW1DbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3RyYWNlTG9nRWxlbWVudCk7CiAKLSAgICB2YXIgcmVwbGF5
SW1hZ2VDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB2YXIg
cmVwbGF5SW1hZ2VDb250YWluZXIgPSB0aGlzLl9zcGxpdFZpZXcuZmlyc3RFbGVtZW50KCk7CiAg
ICAgcmVwbGF5SW1hZ2VDb250YWluZXIuaWQgPSAiY2FudmFzLXJlcGxheS1pbWFnZS1jb250YWlu
ZXIiOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyZXBsYXlJbWFnZUNvbnRhaW5lcik7
CiAKICAgICB0aGlzLl9yZXBsYXlJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWFnZSIpOwogICAgIHRoaXMuX3JlcGxheUltYWdlRWxlbWVudC5pZCA9ICJjYW52YXMtcmVw
bGF5LWltYWdlIjsKICAgICByZXBsYXlJbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9y
ZXBsYXlJbWFnZUVsZW1lbnQpOwogCiAgICAgdGhpcy5fZGVidWdJbmZvRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworCisgICAgdGhpcy5fc3BsaXRWaWV3LnNob3codGhp
cy5lbGVtZW50KTsKICAgICByZXBsYXlJbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9k
ZWJ1Z0luZm9FbGVtZW50KTsKIAogICAgIHRoaXMuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0
b3IuTGlua2lmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggZGJlMDhhYTRmN2UzNTA2Y2UxMjBjZWMyYzJiN2Uz
NDJiNGM2MWYzNi4uMWI4NjUxMGEwN2Q2NmFjNmFhMjk4NDg0NTg2YTYxNzI1NGFmNjVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwpAQCAtNDgsMTAgKzQ4LDEwIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVu
Y3Rpb24oKQogICAgIHRoaXMuc2V0SGlkZU9uRGV0YWNoKCk7CiAKICAgICBjb25zdCBpbml0aWFs
U2lkZWJhcldpZHRoID0gMzI1OwotICAgIGNvbnN0IG1pbmltYWxDb250ZW50V2lkdGhQZXJjZW50
ID0gMzQ7Ci0gICAgdGhpcy5jcmVhdGVTcGxpdFZpZXcodGhpcy5lbGVtZW50LCBXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5SaWdodCwgaW5pdGlhbFNpZGViYXJXaWR0aCk7
Ci0gICAgdGhpcy5zcGxpdFZpZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1p
bkVsZW1lbnRzU2lkZWJhcldpZHRoOwotICAgIHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxNYWluV2lk
dGhQZXJjZW50ID0gbWluaW1hbENvbnRlbnRXaWR0aFBlcmNlbnQ7CisgICAgY29uc3QgbWluaW11
bUNvbnRlbnRXaWR0aFBlcmNlbnQgPSAzNDsKKyAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3KHRo
aXMuZWxlbWVudCwgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5SaWdo
dCwgaW5pdGlhbFNpZGViYXJXaWR0aCk7CisgICAgdGhpcy5zcGxpdFZpZXcuc2V0TWluaW11bVNp
ZGViYXJXaWR0aChQcmVmZXJlbmNlcy5taW5FbGVtZW50c1NpZGViYXJXaWR0aCk7CisgICAgdGhp
cy5zcGxpdFZpZXcuc2V0TWluaW11bU1haW5XaWR0aFBlcmNlbnQobWluaW11bUNvbnRlbnRXaWR0
aFBlcmNlbnQpOwogCiAgICAgdGhpcy5jb250ZW50RWxlbWVudCA9IHRoaXMuc3BsaXRWaWV3Lm1h
aW5FbGVtZW50OwogICAgIHRoaXMuY29udGVudEVsZW1lbnQuaWQgPSAiZWxlbWVudHMtY29udGVu
dCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtVmlldy5qcwppbmRleCAxNDQ2NWY1ZTA5MDc5NjMyY2Y3OGNjMmUwZDIxNDljYjAyM2I3OTU3
Li42YjkxNDkxNjljMzNiMzE5M2M1YWQ0MGEyYjc3OTU4OTI1OGMxYmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKQEAg
LTMwLDEyICszMCwxMiBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5TcGxpdFZpZXd9CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNpZGViYXJW
aWV3fQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19
IGZpbGVTeXN0ZW0KICAqLwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24o
ZmlsZVN5c3RlbSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgIkZpbGVTeXN0ZW1WaWV3
U2lkZWJhcldpZHRoIik7CisgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAiRmlsZVN5c3Rl
bVZpZXdTaWRlYmFyV2lkdGgiKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmls
ZS1zeXN0ZW0tdmlldyIpOwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzdG9yYWdl
LXZpZXciKTsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RpcmVjdG9yeVRyZWUuc2VsZWN0ZWRUcmVl
RWxlbWVudC5kZWxldGVFbnRyeSgpOwogICAgIH0sCiAKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcucHJvdG90eXBlCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU2lk
ZWJhclZpZXcucHJvdG90eXBlCiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCmluZGV4IDMwYTE1MmNjZTM5
YjdlZTAxOTE2YjI0OGM0ZjY5MWE5YTUzOTNmYmUuLmQ0NGNjNjVkMDg2ZmFlYmZkZmJkODdmY2Vi
OTBjYTcwMjVjODAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKQEAgLTQzLDEzICs0MywxMyBAQCBXZWJJbnNw
ZWN0b3IuTWVtb3J5U3RhdGlzdGljcyA9IGZ1bmN0aW9uKHRpbWVsaW5lUGFuZWwsIG1vZGVsLCBz
aWRlYmFyV2lkdGgpCiAgICAgbW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNb2RlbC5FdmVudHMuUmVjb3Jkc0NsZWFyZWQsIHRoaXMuX29uUmVjb3Jkc0NsZWFyZWQs
IHRoaXMpOwogCiAgICAgdGhpcy5fY29udGFpbmVyQW5jaG9yID0gdGltZWxpbmVQYW5lbC5lbGVt
ZW50Lmxhc3RDaGlsZDsKLSAgICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNwbGl0VmlldyhXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0
LCB1bmRlZmluZWQsIHNpZGViYXJXaWR0aCk7Ci0gICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LnNp
ZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKLSAgICB0aGlzLl9tZW1vcnlT
cGxpdFZpZXcuZWxlbWVudC5pZCA9ICJtZW1vcnktZ3JhcGhzLWNvbnRhaW5lciI7CisgICAgdGhp
cy5fbWVtb3J5U2lkZWJhclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3KFdlYklu
c3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgdW5kZWZpbmVkLCBzaWRl
YmFyV2lkdGgpOworICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LnNpZGViYXJFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKyAgICB0aGlzLl9tZW1vcnlTaWRlYmFyVmlldy5lbGVt
ZW50LmlkID0gIm1lbW9yeS1ncmFwaHMtY29udGFpbmVyIjsKIAotICAgIHRoaXMuX21lbW9yeVNw
bGl0Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuRXZlbnRUeXBl
cy5SZXNpemVkLCB0aGlzLl9zaWRlYmFyUmVzaXplZC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9t
ZW1vcnlTaWRlYmFyVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyVmll
dy5FdmVudFR5cGVzLlJlc2l6ZWQsIHRoaXMuX3NpZGViYXJSZXNpemVkLmJpbmQodGhpcykpOwog
Ci0gICAgdGhpcy5fY2FudmFzQ29udGFpbmVyID0gdGhpcy5fbWVtb3J5U3BsaXRWaWV3Lm1haW5F
bGVtZW50OworICAgIHRoaXMuX2NhbnZhc0NvbnRhaW5lciA9IHRoaXMuX21lbW9yeVNpZGViYXJW
aWV3Lm1haW5FbGVtZW50OwogICAgIHRoaXMuX2NhbnZhc0NvbnRhaW5lci5pZCA9ICJtZW1vcnkt
Z3JhcGhzLWNhbnZhcy1jb250YWluZXIiOwogICAgIHRoaXMuX2N1cnJlbnRWYWx1ZXNCYXIgPSB0
aGlzLl9jYW52YXNDb250YWluZXIuY3JlYXRlQ2hpbGQoImRpdiIpOwogICAgIHRoaXMuX2N1cnJl
bnRWYWx1ZXNCYXIuaWQgPSAiY291bnRlci12YWx1ZXMtYmFyIjsKQEAgLTY2LDcgKzY2LDcgQEAg
V2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MgPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBt
b2RlbCwgc2lkZWJhcldpZHRoKQogICAgIHRoaXMuX2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGls
ZCh0aGlzLl90aW1lbGluZUdyaWQuZGl2aWRlcnNFbGVtZW50KTsKIAogICAgIC8vIFBvcHVsYXRl
IHNpZGViYXIKLSAgICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQuY3JlYXRl
Q2hpbGQoImRpdiIsICJzaWRlYmFyLXRyZWUgc2lkZWJhci10cmVlLXNlY3Rpb24iKS50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ09VTlRFUlMiKTsKKyAgICB0aGlzLl9tZW1v
cnlTaWRlYmFyVmlldy5zaWRlYmFyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNpZGViYXIt
dHJlZSBzaWRlYmFyLXRyZWUtc2VjdGlvbiIpLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDT1VOVEVSUyIpOwogICAgIGZ1bmN0aW9uIGdldERvY3VtZW50Q291bnQoZW50cnkp
CiAgICAgewogICAgICAgICByZXR1cm4gZW50cnkuZG9jdW1lbnRDb3VudDsKQEAgLTEzOCw3ICsx
MzgsNyBAQCBXZWJJbnNwZWN0b3IuQ291bnRlclVJID0gZnVuY3Rpb24obWVtb3J5Q291bnRlcnNQ
YW5lLCB0aXRsZSwgY3VycmVudFZhbHVlTGFiZWwsCiB7CiAgICAgdGhpcy5fbWVtb3J5Q291bnRl
cnNQYW5lID0gbWVtb3J5Q291bnRlcnNQYW5lOwogICAgIHRoaXMudmFsdWVHZXR0ZXIgPSB2YWx1
ZUdldHRlcjsKLSAgICB2YXIgY29udGFpbmVyID0gbWVtb3J5Q291bnRlcnNQYW5lLl9tZW1vcnlT
cGxpdFZpZXcuc2lkZWJhckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJtZW1vcnktY291bnRl
ci1zaWRlYmFyLWluZm8iKTsKKyAgICB2YXIgY29udGFpbmVyID0gbWVtb3J5Q291bnRlcnNQYW5l
Ll9tZW1vcnlTaWRlYmFyVmlldy5zaWRlYmFyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgIm1l
bW9yeS1jb3VudGVyLXNpZGViYXItaW5mbyIpOwogICAgIHZhciBzd2F0Y2hDb2xvciA9ICJyZ2Io
IiArIHJnYi5qb2luKCIsIikgKyAiKSI7CiAgICAgdGhpcy5fc3dhdGNoID0gbmV3IFdlYkluc3Bl
Y3Rvci5Td2F0Y2hDaGVja2JveChXZWJJbnNwZWN0b3IuVUlTdHJpbmcodGl0bGUpLCBzd2F0Y2hD
b2xvcik7CiAgICAgdGhpcy5fc3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN3
YXRjaENoZWNrYm94LkV2ZW50cy5DaGFuZ2VkLCB0aGlzLl90b2dnbGVDb3VudGVyR3JhcGguYmlu
ZCh0aGlzKSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3Rp
Y3MucHJvdG90eXBlID0gewogCiAgICAgc2V0VG9wUG9zaXRpb246IGZ1bmN0aW9uKHRvcCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX21lbW9yeVNwbGl0Vmlldy5lbGVtZW50LnN0eWxlLnRvcCA9IHRv
cCArICJweCI7CisgICAgICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LmVsZW1lbnQuc3R5bGUu
dG9wID0gdG9wICsgInB4IjsKICAgICAgICAgdGhpcy5fdXBkYXRlU2l6ZSgpOwogICAgIH0sCiAK
QEAgLTIzMiw3ICsyMzIsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVTaWRlYmFyUmVzaXplKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9pZ25vcmVTaWRlYmFyUmVzaXplID0gdHJ1ZTsKLSAg
ICAgICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LnNldFNpZGViYXJXaWR0aCh3aWR0aCk7CisgICAg
ICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LnNldFNpZGViYXJXaWR0aCh3aWR0aCk7CiAgICAg
ICAgIHRoaXMuX2lnbm9yZVNpZGViYXJSZXNpemUgPSBmYWxzZTsKICAgICB9LAogCkBAIC00MDQs
MTMgKzQwNCwxMyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7
CiAKICAgICB2aXNpYmxlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
bWVtb3J5U3BsaXRWaWV3LmlzU2hvd2luZygpOworICAgICAgICByZXR1cm4gdGhpcy5fbWVtb3J5
U2lkZWJhclZpZXcuaXNTaG93aW5nKCk7CiAgICAgfSwKIAogICAgIHNob3c6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHZhciBhbmNob3IgPSAvKiogQHR5cGUge0VsZW1lbnR8bnVsbH0gKi8g
KHRoaXMuX2NvbnRhaW5lckFuY2hvci5uZXh0U2libGluZyk7Ci0gICAgICAgIHRoaXMuX21lbW9y
eVNwbGl0Vmlldy5zaG93KHRoaXMuX3RpbWVsaW5lUGFuZWwuZWxlbWVudCwgYW5jaG9yKTsKKyAg
ICAgICAgdGhpcy5fbWVtb3J5U2lkZWJhclZpZXcuc2hvdyh0aGlzLl90aW1lbGluZVBhbmVsLmVs
ZW1lbnQsIGFuY2hvcik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNpemUoKTsKICAgICAgICAgdGhp
cy5fcmVmcmVzaERpdmlkZXJzKCk7CiAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fZHJhdy5iaW5k
KHRoaXMpLCAwKTsKQEAgLTQyNiw3ICs0MjYsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUgPSB7CiAKICAgICBoaWRlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMuX21lbW9yeVNp
ZGViYXJWaWV3LmRldGFjaCgpOwogICAgIH0sCiAKICAgICBfcmVmcmVzaERpdmlkZXJzOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05h
dmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5qcwppbmRleCA4MDZjMDAxODJjMDVh
OTYwMTMzYzlhMWY0NDcxYWIyMWQxYjQ0NjBmLi4wMTI4MGM1OTRmM2ZhZjFkOTdhNTE1NjZiOGUy
Y2Q0YjQyNzVjZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05hdmlnYXRvck92ZXJsYXlDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIuanMKQEAgLTI4LDE5
ICsyOCwxOSBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3fSBwYXJlbnRTcGxpdFZpZXcKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNp
ZGViYXJWaWV3fSBwYXJlbnRTaWRlYmFyVmlldwogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmll
d30gbmF2aWdhdG9yVmlldwogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmlld30gZWRpdG9yVmll
dwogICovCi1XZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIgPSBmdW5jdGlv
bihwYXJlbnRTcGxpdFZpZXcsIG5hdmlnYXRvclZpZXcsIGVkaXRvclZpZXcpCitXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xsZXIgPSBmdW5jdGlvbihwYXJlbnRTaWRlYmFyVmll
dywgbmF2aWdhdG9yVmlldywgZWRpdG9yVmlldykKIHsKLSAgICB0aGlzLl9wYXJlbnRTcGxpdFZp
ZXcgPSBwYXJlbnRTcGxpdFZpZXc7CisgICAgdGhpcy5fcGFyZW50U2lkZWJhclZpZXcgPSBwYXJl
bnRTaWRlYmFyVmlldzsKICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3ID0gbmF2aWdhdG9yVmlldzsK
ICAgICB0aGlzLl9lZGl0b3JWaWV3ID0gZWRpdG9yVmlldzsKIAogICAgIHRoaXMuX25hdmlnYXRv
clNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgdGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQuYWRkU3R5
bGVDbGFzcygic2NyaXB0cy1uYXZpZ2F0b3ItcmVzaXplci13aWRnZXQiKTsKLSAgICB0aGlzLl9w
YXJlbnRTcGxpdFZpZXcuaW5zdGFsbFJlc2l6ZXIodGhpcy5fbmF2aWdhdG9yU2lkZWJhclJlc2l6
ZVdpZGdldEVsZW1lbnQpOworICAgIHRoaXMuX3BhcmVudFNpZGViYXJWaWV3Lmluc3RhbGxSZXNp
emVyKHRoaXMuX25hdmlnYXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50KTsKICAgICB0aGlz
Ll9uYXZpZ2F0b3JWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yU2lkZWJh
clJlc2l6ZVdpZGdldEVsZW1lbnQpOwogCiAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0
b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkhpZGUgbmF2aWdhdG9yIiksICJzY3JpcHRzLW5hdmlnYXRvci1zaG93LWhpZGUtYnV0dG9u
IiwgMyk7CkBAIC03OSwxMiArNzksMTIgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvck92ZXJsYXlD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNo
b3dIaWRlQnV0dG9uLnN0YXRlID0gImhpZGRlbiI7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNo
b3dIaWRlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG5hdmlnYXRv
ciIpOwotICAgICAgICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fcGFy
ZW50U2lkZWJhclZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93SGlk
ZUJ1dHRvbi5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9lZGl0b3JWaWV3LmVsZW1lbnQuYWRk
U3R5bGVDbGFzcygibmF2aWdhdG9yLWhpZGRlbiIpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JT
aWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKIAotICAg
ICAgICB0aGlzLl9wYXJlbnRTcGxpdFZpZXcuaGlkZVNpZGViYXJFbGVtZW50KCk7CisgICAgICAg
IHRoaXMuX3BhcmVudFNpZGViYXJWaWV3LmhpZGVTaWRlYmFyRWxlbWVudCgpOwogICAgICAgICB0
aGlzLl9uYXZpZ2F0b3JWaWV3LmRldGFjaCgpOwogICAgICAgICB0aGlzLl9lZGl0b3JWaWV3LmZv
Y3VzKCk7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3Zlcmxh
eUNvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lZGl0b3JWaWV3LmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uZWxlbWVudCk7CiAK
ICAgICAgICAgdGhpcy5faW5uZXJIaWRlTmF2aWdhdG9yT3ZlcmxheSgpOwotICAgICAgICB0aGlz
Ll9wYXJlbnRTcGxpdFZpZXcuc2hvd1NpZGViYXJFbGVtZW50KCk7Ci0gICAgICAgIHRoaXMuX25h
dmlnYXRvclZpZXcuc2hvdyh0aGlzLl9wYXJlbnRTcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQpOwor
ICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5zaG93U2lkZWJhckVsZW1lbnQoKTsKKyAg
ICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5zaG93KHRoaXMuX3BhcmVudFNpZGViYXJWaWV3LnNp
ZGViYXJFbGVtZW50KTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldy5mb2N1cygpOwogICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubmF2aWdhdG9ySGlkZGVuLnNldChmYWxzZSk7CiAg
ICAgfSwKQEAgLTEyNSw5ICsxMjUsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNv
bnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5lbGVtZW50KTsK
ICAgICAgICAgdGhpcy5fYm91bmRDb250YWluaW5nRWxlbWVudEZvY3VzZWQgPSB0aGlzLl9jb250
YWluaW5nRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fcGFyZW50U3Bs
aXRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRD
b250YWluaW5nRWxlbWVudEZvY3VzZWQsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fcGFyZW50U2lk
ZWJhclZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3Vu
ZENvbnRhaW5pbmdFbGVtZW50Rm9jdXNlZCwgZmFsc2UpOwogCi0gICAgICAgIHRoaXMuX3NpZGVi
YXJPdmVybGF5LnNob3codGhpcy5fcGFyZW50U3BsaXRWaWV3LmVsZW1lbnQpOworICAgICAgICB0
aGlzLl9zaWRlYmFyT3ZlcmxheS5zaG93KHRoaXMuX3BhcmVudFNpZGViYXJWaWV3LmVsZW1lbnQp
OwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3LmZvY3VzKCk7CiAgICAgfSwKIApAQCAtMTQ5
LDcgKzE0OSw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uc3RhdGUg
PSAiaGlkZGVuIjsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgbmF2aWdhdG9yIik7Ci0gICAgICAgIHRoaXMu
X3BhcmVudFNwbGl0Vmlldy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dI
aWRlQnV0dG9uLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyVmlldy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmVsZW1lbnQpOwog
CiAgICAgICAgIHRoaXMuX2lubmVySGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKICAgICAgICAgdGhp
cy5fZWRpdG9yVmlldy5mb2N1cygpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0b3JPdmVybGF5Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBfaW5uZXJIaWRl
TmF2aWdhdG9yT3ZlcmxheTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcGFyZW50
U3BsaXRWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5f
Ym91bmRDb250YWluaW5nRWxlbWVudEZvY3VzZWQsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fcGFy
ZW50U2lkZWJhclZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9ib3VuZENvbnRhaW5pbmdFbGVtZW50Rm9jdXNlZCwgZmFsc2UpOwogICAgICAgICB0aGlz
Ll9zaWRlYmFyT3ZlcmxheS5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0
aGlzLl9ib3VuZEtleURvd24sIGZhbHNlKTsKICAgICAgICAgdGhpcy5fc2lkZWJhck92ZXJsYXku
aGlkZSgpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDRhYTU4M2U2MWEwZmEyMWRmM2RiMTcyZTEzZDU5MjMz
ZDQwOTM2YWQuLjc4MzdjMWYxMGQ4NGM5OWI4YzRlYzFjNDRlZmY5YmU3MzkwM2FhN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
CkBAIC0xMjg1LDcgKzEyODUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rp
b24oKQogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJuZXR3b3JrIik7CiAgICAg
dGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJuZXR3b3JrUGFuZWwuY3NzIik7CiAKLSAgICB0aGlz
LmNyZWF0ZVNwbGl0VmlldygpOworICAgIHRoaXMuY3JlYXRlU2lkZWJhclZpZXcoKTsKICAgICB0
aGlzLnNwbGl0Vmlldy5oaWRlTWFpbkVsZW1lbnQoKTsKIAogICAgIHRoaXMuX25ldHdvcmtMb2dW
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKaW5kZXggZjA1ZGIyMDQ0OTkyNjczNzViZmRi
ODBlZDMzMDhkN2M3NWQxZjU4Yi4uZDUzN2M0ZThiN2FkZTJiM2E0M2MwYjdjZjgwMWQ0ZjAyZGRl
OGNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCkBA
IC0xNTMsNyArMTUzLDcgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
KiBAcGFyYW0ge3N0cmluZz19IHBvc2l0aW9uCiAgICAgICogQHBhcmFtIHtudW1iZXI9fSBkZWZh
dWx0V2lkdGgKICAgICAgKi8KLSAgICBjcmVhdGVTcGxpdFZpZXc6IGZ1bmN0aW9uKHBhcmVudEVs
ZW1lbnQsIHBvc2l0aW9uLCBkZWZhdWx0V2lkdGgpCisgICAgY3JlYXRlU2lkZWJhclZpZXc6IGZ1
bmN0aW9uKHBhcmVudEVsZW1lbnQsIHBvc2l0aW9uLCBkZWZhdWx0V2lkdGgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5zcGxpdFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjEsOSAr
MTYxLDkgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFw
YXJlbnRFbGVtZW50KQogICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudDsK
IAotICAgICAgICB0aGlzLnNwbGl0VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3KHBv
c2l0aW9uIHx8IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsIHRo
aXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKCksIGRlZmF1bHRXaWR0aCk7CisgICAgICAgIHRo
aXMuc3BsaXRWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldyhwb3NpdGlvbiB8fCBX
ZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsIHRoaXMuX3NpZGVi
YXJXaWR0aFNldHRpbmdOYW1lKCksIGRlZmF1bHRXaWR0aCk7CiAgICAgICAgIHRoaXMuc3BsaXRW
aWV3LnNob3cocGFyZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuc3BsaXRWaWV3LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5FdmVudFR5cGVzLlJlc2l6ZWQsIHRoaXMu
c2lkZWJhclJlc2l6ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuc3BsaXRWaWV3LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LkV2ZW50VHlwZXMuUmVzaXplZCwg
dGhpcy5zaWRlYmFyUmVzaXplZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0aGlzLnNpZGViYXJF
bGVtZW50ID0gdGhpcy5zcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQ7CiAgICAgfSwKQEAgLTE3Mywx
MiArMTczLDEyIEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBh
cmFtIHtzdHJpbmc9fSBwb3NpdGlvbgogICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVmYXVsdFdp
ZHRoCiAgICAgICovCi0gICAgY3JlYXRlU3BsaXRWaWV3V2l0aFNpZGViYXJUcmVlOiBmdW5jdGlv
bihwYXJlbnRFbGVtZW50LCBwb3NpdGlvbiwgZGVmYXVsdFdpZHRoKQorICAgIGNyZWF0ZVNpZGVi
YXJWaWV3V2l0aFRyZWU6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIHBvc2l0aW9uLCBkZWZhdWx0
V2lkdGgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5zcGxpdFZpZXcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGhpcy5jcmVhdGVTcGxpdFZpZXcocGFyZW50RWxlbWVudCwgcG9z
aXRpb24pOworICAgICAgICB0aGlzLmNyZWF0ZVNpZGViYXJWaWV3KHBhcmVudEVsZW1lbnQsIHBv
c2l0aW9uKTsKIAogICAgICAgICB0aGlzLnNpZGViYXJUcmVlRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50LmNsYXNz
TmFtZSA9ICJzaWRlYmFyLXRyZWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDNlOTA4ODU4MjUyMTRjYzRhNmUyMTg4
YmMyYjBiMWNlZmY4MzFhN2UuLjIyNmFjOWFlODExNmY3MTcxN2VjMWQxMjdlY2UwZDNkMDU0MDM5
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKQEAgLTE5Myw3ICsxOTMsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoImhlYXBQcm9maWxl
ci5jc3MiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInByb2ZpbGVzUGFuZWwuY3Nz
Iik7CiAKLSAgICB0aGlzLmNyZWF0ZVNwbGl0Vmlld1dpdGhTaWRlYmFyVHJlZSgpOworICAgIHRo
aXMuY3JlYXRlU2lkZWJhclZpZXdXaXRoVHJlZSgpOwogCiAgICAgdGhpcy5wcm9maWxlc0l0ZW1U
cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZXNTaWRlYmFyVHJlZUVsZW1lbnQo
dGhpcyk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLnByb2ZpbGVzSXRl
bVRyZWVFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDJkYTNlOWUxZDZmZWE4OWJmM2Y5NTQ4MzU4Y2Vm
NDBlNjYyZDI4MmYuLjE1ZTM3NDg1OTcyZGNmMjFmZDEyZmM5OGMzZGU5NTAwZDY2NzExNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcwpAQCAtNDcsNyArNDcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBm
dW5jdGlvbihkYXRhYmFzZSkKIAogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNM
YXN0U2VsZWN0ZWRJdGVtID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoInJl
c291cmNlc0xhc3RTZWxlY3RlZEl0ZW0iLCB7fSk7CiAKLSAgICB0aGlzLmNyZWF0ZVNwbGl0Vmll
d1dpdGhTaWRlYmFyVHJlZSgpOworICAgIHRoaXMuY3JlYXRlU2lkZWJhclZpZXdXaXRoVHJlZSgp
OwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9z
dXJlIik7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJmaWx0ZXItYWxs
Iik7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjaGlsZHJlbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cwppbmRleCA5YTAzYWQyMzQ2YmI2OGM1YzMyMmQ5M2Q1Yjc0M2U1ZWFmZjkzNDhhLi4zNzE5Mzg4
YmIwZjA3ZGYwMjQ4MWY4YTVmNDQzYjcyMzM5NjUyNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtNjgsMTEgKzY4LDEx
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbih3b3Jrc3BhY2VGb3JUZXN0
KQogICAgIHRoaXMuZGVidWdUb29sYmFyID0gdGhpcy5fY3JlYXRlRGVidWdUb29sYmFyKGhlbHBT
ZWN0aW9uKTsKIAogICAgIGNvbnN0IGluaXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCA9IDIyNTsKLSAg
ICBjb25zdCBtYXhpbWFsRGVidWdTaWRlYmFyV2lkdGhQZXJjZW50ID0gNTA7Ci0gICAgdGhpcy5j
cmVhdGVTcGxpdFZpZXcodGhpcy5lbGVtZW50LCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGVi
YXJQb3NpdGlvbi5SaWdodCwgaW5pdGlhbERlYnVnU2lkZWJhcldpZHRoKTsKKyAgICBjb25zdCBt
aW5pbXVtRGVidWdTaWRlYmFyV2lkdGhQZXJjZW50ID0gNTA7CisgICAgdGhpcy5jcmVhdGVTaWRl
YmFyVmlldyh0aGlzLmVsZW1lbnQsIFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRlYmFyUG9z
aXRpb24uUmlnaHQsIGluaXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCk7CiAgICAgdGhpcy5zcGxpdFZp
ZXcuZWxlbWVudC5pZCA9ICJzY3JpcHRzLXNwbGl0LXZpZXciOwotICAgIHRoaXMuc3BsaXRWaWV3
Lm1pbmltYWxTaWRlYmFyV2lkdGggPSBQcmVmZXJlbmNlcy5taW5TY3JpcHRzU2lkZWJhcldpZHRo
OwotICAgIHRoaXMuc3BsaXRWaWV3Lm1pbmltYWxNYWluV2lkdGhQZXJjZW50ID0gMTAwIC0gbWF4
aW1hbERlYnVnU2lkZWJhcldpZHRoUGVyY2VudDsKKyAgICB0aGlzLnNwbGl0Vmlldy5zZXRNaW5p
bXVtU2lkZWJhcldpZHRoKFByZWZlcmVuY2VzLm1pblNjcmlwdHNTaWRlYmFyV2lkdGgpOworICAg
IHRoaXMuc3BsaXRWaWV3LnNldE1pbmltdW1NYWluV2lkdGhQZXJjZW50KG1pbmltdW1EZWJ1Z1Np
ZGViYXJXaWR0aFBlcmNlbnQpOwogCiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmRlYnVnVG9vbGJhcik7CiAKQEAgLTgyLDEyICs4MiwxMiBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsID0gZnVuY3Rpb24od29ya3NwYWNlRm9yVGVzdCkKIAogICAgIC8vIENyZWF0
ZSBzY3JpcHRzIG5hdmlnYXRvcgogICAgIGNvbnN0IGluaXRpYWxOYXZpZ2F0b3JXaWR0aCA9IDIy
NTsKLSAgICBjb25zdCBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQgPSA1MDsKLSAg
ICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNwbGl0VmlldyhXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAic2NyaXB0c1BhbmVsTmF2aWdhdG9y
U2lkZWJhcldpZHRoIiwgaW5pdGlhbE5hdmlnYXRvcldpZHRoKTsKKyAgICBjb25zdCBtaW5pbXVt
Vmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQgPSA1MDsKKyAgICB0aGlzLmVkaXRvclZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3KFdlYkluc3BlY3Rvci5TaWRlYmFyVmlldy5TaWRl
YmFyUG9zaXRpb24uTGVmdCwgInNjcmlwdHNQYW5lbE5hdmlnYXRvclNpZGViYXJXaWR0aCIsIGlu
aXRpYWxOYXZpZ2F0b3JXaWR0aCk7CiAgICAgdGhpcy5lZGl0b3JWaWV3LmVsZW1lbnQudGFiSW5k
ZXggPSAwOwogCi0gICAgdGhpcy5lZGl0b3JWaWV3Lm1pbmltYWxTaWRlYmFyV2lkdGggPSBQcmVm
ZXJlbmNlcy5taW5TY3JpcHRzU2lkZWJhcldpZHRoOwotICAgIHRoaXMuZWRpdG9yVmlldy5taW5p
bWFsTWFpbldpZHRoUGVyY2VudCA9IG1pbmltYWxWaWV3c0NvbnRhaW5lcldpZHRoUGVyY2VudDsK
KyAgICB0aGlzLmVkaXRvclZpZXcuc2V0TWluaW11bVNpZGViYXJXaWR0aChQcmVmZXJlbmNlcy5t
aW5TY3JpcHRzU2lkZWJhcldpZHRoKTsKKyAgICB0aGlzLmVkaXRvclZpZXcuc2V0TWluaW11bU1h
aW5XaWR0aFBlcmNlbnQobWluaW11bVZpZXdzQ29udGFpbmVyV2lkdGhQZXJjZW50KTsKICAgICB0
aGlzLmVkaXRvclZpZXcuc2hvdyh0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudCk7CiAKICAgICB0
aGlzLl9uYXZpZ2F0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJWaWV3LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4NmM0ZGIzNzhlY2QxYjBiYzdhNGYzZDJmODIyMzEwYWQzYWUzMTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJW
aWV3LmpzCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuCisgKiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmlld30KKyAqIEBwYXJhbSB7
c3RyaW5nPX0gc2lkZWJhclBvc2l0aW9uCisgKiBAcGFyYW0ge3N0cmluZz19IHNpZGViYXJXaWR0
aFNldHRpbmdOYW1lCisgKiBAcGFyYW0ge251bWJlcj19IGRlZmF1bHRTaWRlYmFyV2lkdGgKKyAq
LworV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3ID0gZnVuY3Rpb24oc2lkZWJhclBvc2l0aW9uLCBz
aWRlYmFyV2lkdGhTZXR0aW5nTmFtZSwgZGVmYXVsdFNpZGViYXJXaWR0aCkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgdHJ1ZSwgc2lkZWJhcldpZHRoU2V0dGluZ05h
bWUsIGRlZmF1bHRTaWRlYmFyV2lkdGggfHwgMjAwKTsKKworICAgIHRoaXMuX2xlZnRFbGVtZW50
ID0gdGhpcy5maXJzdEVsZW1lbnQoKTsKKyAgICB0aGlzLl9yaWdodEVsZW1lbnQgPSB0aGlzLnNl
Y29uZEVsZW1lbnQoKTsKKworICAgIHRoaXMuX21pbmltdW1TaWRlYmFyV2lkdGggPSBQcmVmZXJl
bmNlcy5taW5TaWRlYmFyV2lkdGg7CisgICAgdGhpcy5fbWluaW11bU1haW5XaWR0aFBlcmNlbnQg
PSA1MDsKKworICAgIHRoaXMuX21haW5FbGVtZW50SGlkZGVuID0gZmFsc2U7CisgICAgdGhpcy5f
c2lkZWJhckVsZW1lbnRIaWRkZW4gPSBmYWxzZTsKKworICAgIHRoaXMuX2lubmVyU2V0U2lkZWJh
clBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbiB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhclZpZXcuU2lk
ZWJhclBvc2l0aW9uLkxlZnQpOworICAgIHRoaXMuc2V0U2Vjb25kSXNTaWRlYmFyKHNpZGViYXJQ
b3NpdGlvbiAhPT0gV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0
KTsKK30KKworV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LkV2ZW50VHlwZXMgPSB7CisgICAgUmVz
aXplZDogIlJlc2l6ZWQiCit9CisKKy8qKgorICogQGVudW0ge3N0cmluZ30KKyAqLworV2ViSW5z
cGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3NpdGlvbiA9IHsKKyAgICBMZWZ0OiAiTGVmdCIs
CisgICAgUmlnaHQ6ICJSaWdodCIKK30KKworV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LnByb3Rv
dHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAg
IF9oYXNMZWZ0U2lkZWJhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3NpZGViYXJQb3NpdGlvbiA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXJWaWV3LlNpZGViYXJQb3Np
dGlvbi5MZWZ0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQor
ICAgICAqLworICAgIGdldCBtYWluRWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5faGFzTGVmdFNpZGViYXIoKSA/IHRoaXMuX3JpZ2h0RWxlbWVudCA6IHRoaXMuX2xlZnRFbGVt
ZW50OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQorICAgICAq
LworICAgIGdldCBzaWRlYmFyRWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
aGFzTGVmdFNpZGViYXIoKSA/IHRoaXMuX2xlZnRFbGVtZW50IDogdGhpcy5fcmlnaHRFbGVtZW50
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lkZWJhclBvc2l0
aW9uCisgICAgICovCisgICAgX2lubmVyU2V0U2lkZWJhclBvc2l0aW9uOiBmdW5jdGlvbihzaWRl
YmFyUG9zaXRpb24pCisgICAgeworICAgICAgICB0aGlzLl9zaWRlYmFyUG9zaXRpb24gPSBzaWRl
YmFyUG9zaXRpb247CisKKyAgICAgICAgaWYgKHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2xlZnRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lk
ZWJhci1sZWZ0Iik7CisgICAgICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygic3BsaXQtdmlldy1zaWRlYmFyLXJpZ2h0Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic3BsaXQtdmlldy1zaWRl
YmFyLXJpZ2h0Iik7CisgICAgICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJzcGxpdC12aWV3LXNpZGViYXItbGVmdCIpOworICAgICAgICB9CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqLworICAgIHNldE1pbmlt
dW1TaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWlu
aW11bVNpZGViYXJXaWR0aCA9IHdpZHRoOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gd2lkdGhQZXJjZW50CisgICAgICovCisgICAgc2V0TWluaW11bU1haW5XaWR0
aFBlcmNlbnQ6IGZ1bmN0aW9uKHdpZHRoUGVyY2VudCkKKyAgICB7CisgICAgICAgIHRoaXMuX21p
bmltdW1NYWluV2lkdGhQZXJjZW50ID0gd2lkdGhQZXJjZW50OworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAgKi8KKyAgICBzZXRTaWRlYmFyV2lk
dGg6IGZ1bmN0aW9uKHdpZHRoKQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRTaWRlYmFyU2l6ZSh3
aWR0aCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAg
Ki8KKyAgICBzaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLnNpZGViYXJTaXplKCk7CisgICAgfSwKKworICAgIG9uUmVzaXplOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZS5vblJlc2l6ZS5j
YWxsKHRoaXMpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuU2lkZWJhclZpZXcuRXZlbnRUeXBlcy5SZXNpemVkLCB0aGlzLnNpZGViYXJXaWR0aCgp
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAg
Ki8KKyAgICBhcHBseUNvbnN0cmFpbnRzOiBmdW5jdGlvbihzaXplKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE51bWJlci5jb25zdHJhaW4oc2l6ZSwgdGhpcy5fbWluaW11bVNpZGViYXJXaWR0aCwg
dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoICogKDEwMCAtIHRoaXMuX21pbmltdW1NYWluV2lkdGhQ
ZXJjZW50KSAvIDEwMCk7CisgICAgfSwKKworICAgIGhpZGVNYWluRWxlbWVudDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hhc0xlZnRTaWRlYmFyKCkpCisgICAgICAgICAg
ICB0aGlzLnNob3dPbmx5Rmlyc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5z
aG93T25seVNlY29uZCgpOworICAgIH0sCisKKyAgICBzaG93TWFpbkVsZW1lbnQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuc2hvd0JvdGgoKTsKKyAgICB9LAorCisgICAgaGlkZVNp
ZGViYXJFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5faGFzTGVm
dFNpZGViYXIoKSkKKyAgICAgICAgICAgIHRoaXMuc2hvd09ubHlTZWNvbmQoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGhpcy5zaG93T25seUZpcnN0KCk7CisgICAgfSwKKworICAgIHNo
b3dTaWRlYmFyRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93Qm90
aCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48RWxlbWVudD59
CisgICAgICovCisgICAgZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbIHRoaXMubWFpbkVsZW1lbnQsIHRoaXMuc2lk
ZWJhckVsZW1lbnQgXTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LnByb3RvdHlwZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TcGxpdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NwbGl0Vmlldy5qcwppbmRleCAxMTFjM2UyYjg2MGQ5ZjRjYjExM2IzZTBiMjhiZWE1ODE3
ODYwZmYyLi5hZGZjOTk2NzM5YzZhYzI2YWYzMzY3MTQ2MzYzZDhiYjg4MjY5MmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NwbGl0Vmlldy5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjksMzMx
ICsyOSwyNTUgQEAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlZpZXd9Ci0gKiBAcGFyYW0ge3N0cmluZz19IHNpZGViYXJQb3NpdGlvbgotICogQHBhcmFt
IHtzdHJpbmc9fSBzaWRlYmFyV2lkdGhTZXR0aW5nTmFtZQotICogQHBhcmFtIHtudW1iZXI9fSBk
ZWZhdWx0U2lkZWJhcldpZHRoCisgKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmVydGljYWwKKyAqIEBw
YXJhbSB7c3RyaW5nPX0gc2lkZWJhclNpemVTZXR0aW5nTmFtZQorICogQHBhcmFtIHtudW1iZXI9
fSBkZWZhdWx0U2lkZWJhclNpemUKICAqLwotV2ViSW5zcGVjdG9yLlNwbGl0VmlldyA9IGZ1bmN0
aW9uKHNpZGViYXJQb3NpdGlvbiwgc2lkZWJhcldpZHRoU2V0dGluZ05hbWUsIGRlZmF1bHRTaWRl
YmFyV2lkdGgpCitXZWJJbnNwZWN0b3IuU3BsaXRWaWV3ID0gZnVuY3Rpb24oaXNWZXJ0aWNhbCwg
c2lkZWJhclNpemVTZXR0aW5nTmFtZSwgZGVmYXVsdFNpZGViYXJTaXplKQogewogICAgIFdlYklu
c3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisgICAgdGhpcy5faXNWZXJ0aWNhbCA9IGlzVmVydGlj
YWw7CisKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInNwbGl0Vmlldy5jc3MiKTsKIAog
ICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAic3BsaXQtdmlldyI7CiAKLSAgICB0aGlzLl9s
ZWZ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2xl
ZnRFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIjsKLSAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdEVsZW1lbnQpOwotCi0gICAgdGhpcy5fcmlnaHRF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fcmlnaHRF
bGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIjsKLSAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRFbGVtZW50KTsKLQotICAgIHRoaXMuc2lkZWJhclJl
c2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5z
aWRlYmFyUmVzaXplckVsZW1lbnQuY2xhc3NOYW1lID0gInNwbGl0LXZpZXctcmVzaXplciI7Ci0g
ICAgdGhpcy5pbnN0YWxsUmVzaXplcih0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudCk7CisgICAg
dGhpcy5fZmlyc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
dGhpcy5fZmlyc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzcGxpdC12aWV3LWNvbnRlbnRzIHNwbGl0
LXZpZXctY29udGVudHMtIiArIChpc1ZlcnRpY2FsID8gInZlcnRpY2FsIiA6ICJob3Jpem9udGFs
Iik7CisgICAgaWYgKGlzVmVydGljYWwpCisgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHls
ZS5sZWZ0ID0gMDsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS50
b3AgPSAwOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maXJzdEVsZW1lbnQp
OworCisgICAgdGhpcy5fc2Vjb25kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgIHRoaXMuX3NlY29uZEVsZW1lbnQuY2xhc3NOYW1lID0gInNwbGl0LXZpZXctY29u
dGVudHMgc3BsaXQtdmlldy1jb250ZW50cy0iICsgKGlzVmVydGljYWwgPyAidmVydGljYWwiIDog
Imhvcml6b250YWwiKTsKKyAgICBpZiAoaXNWZXJ0aWNhbCkKKyAgICAgICAgdGhpcy5fc2Vjb25k
RWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgZWxzZQorICAgICAgICB0aGlzLl9zZWNvbmRF
bGVtZW50LnN0eWxlLmJvdHRvbSA9IDA7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3NlY29uZEVsZW1lbnQpOworCisgICAgdGhpcy5fcmVzaXplckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9yZXNpemVyRWxlbWVudC5jbGFzc05h
bWUgPSAic3BsaXQtdmlldy1yZXNpemVyIHNwbGl0LXZpZXctcmVzaXplci0iICsgKGlzVmVydGlj
YWwgPyAidmVydGljYWwiIDogImhvcml6b250YWwiKTsKKyAgICB0aGlzLmluc3RhbGxSZXNpemVy
KHRoaXMuX3Jlc2l6ZXJFbGVtZW50KTsKICAgICB0aGlzLl9yZXNpemFibGUgPSB0cnVlOwotICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudCk7Ci0K
LSAgICBkZWZhdWx0U2lkZWJhcldpZHRoID0gZGVmYXVsdFNpZGViYXJXaWR0aCB8fCAyMDA7Ci0g
ICAgdGhpcy5fc2F2ZWRTaWRlYmFyV2lkdGggPSBkZWZhdWx0U2lkZWJhcldpZHRoOwotCi0gICAg
dGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUgPSBzaWRlYmFyV2lkdGhTZXR0aW5nTmFtZTsK
LSAgICBpZiAodGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUpCi0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZV0gPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZyh0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSwg
dW5kZWZpbmVkKTsKLQotICAgIHRoaXMuX21pbmltYWxTaWRlYmFyV2lkdGggPSBQcmVmZXJlbmNl
cy5taW5TaWRlYmFyV2lkdGg7Ci0gICAgdGhpcy5fbWluaW1hbE1haW5XaWR0aCA9IDA7Ci0gICAg
dGhpcy5fbWluaW1hbFNpZGViYXJXaWR0aFBlcmNlbnQgPSAwOwotICAgIHRoaXMuX21pbmltYWxN
YWluV2lkdGhQZXJjZW50ID0gNTA7Ci0KLSAgICB0aGlzLl9tYWluRWxlbWVudEhpZGRlbiA9IGZh
bHNlOwotICAgIHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuID0gZmFsc2U7CisgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc2l6ZXJFbGVtZW50KTsKIAotICAgIHRoaXMuX2lu
bmVyU2V0U2lkZWJhclBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbiB8fCBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0KTsKLX0KKyAgICBkZWZhdWx0U2lkZWJhclNpemUg
PSBkZWZhdWx0U2lkZWJhclNpemUgfHwgMjAwOworICAgIHRoaXMuX3NhdmVkU2lkZWJhclNpemUg
PSBkZWZhdWx0U2lkZWJhclNpemU7CiAKLVdlYkluc3BlY3Rvci5TcGxpdFZpZXcuRXZlbnRUeXBl
cyA9IHsKLSAgICBSZXNpemVkOiAiUmVzaXplZCIKLX0KKyAgICB0aGlzLl9zaWRlYmFyU2l6ZVNl
dHRpbmdOYW1lID0gc2lkZWJhclNpemVTZXR0aW5nTmFtZTsKKyAgICBpZiAodGhpcy5fc2lkZWJh
clNpemVTZXR0aW5nTmFtZSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzW3RoaXMuX3Np
ZGViYXJTaXplU2V0dGluZ05hbWVdID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRp
bmcodGhpcy5fc2lkZWJhclNpemVTZXR0aW5nTmFtZSwgdW5kZWZpbmVkKTsKIAotLyoqCi0gKiBA
ZW51bSB7c3RyaW5nfQotICovCi1XZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlv
biA9IHsKLSAgICBMZWZ0OiAiTGVmdCIsCi0gICAgUmlnaHQ6ICJSaWdodCIKKyAgICB0aGlzLl9z
ZWNvbmRJc1NpZGViYXIgPSB0cnVlOwogfQogCiBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAg
IGdldCBoYXNMZWZ0U2lkZWJhcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc2lkZWJh
clBvc2l0aW9uID09PSBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0
OwotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQogICAgICAqLwot
ICAgIGdldCBtYWluRWxlbWVudCgpCisgICAgZmlyc3RFbGVtZW50OiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5oYXNMZWZ0U2lkZWJhciA/IHRoaXMuX3JpZ2h0RWxlbWVu
dCA6IHRoaXMuX2xlZnRFbGVtZW50OworICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RFbGVtZW50
OwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQogICAgICAqLwot
ICAgIGdldCBzaWRlYmFyRWxlbWVudCgpCisgICAgc2Vjb25kRWxlbWVudDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaGFzTGVmdFNpZGViYXIgPyB0aGlzLl9sZWZ0RWxl
bWVudCA6IHRoaXMuX3JpZ2h0RWxlbWVudDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZEVs
ZW1lbnQ7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAg
ICogQHBhcmFtIHtib29sZWFufSBzZWNvbmRJc1NpZGViYXIKICAgICAgKi8KLSAgICBnZXQgcmVz
aXphYmxlKCkKKyAgICBzZXRTZWNvbmRJc1NpZGViYXI6IGZ1bmN0aW9uKHNlY29uZElzU2lkZWJh
cikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemFibGUgJiYgIXRoaXMuX21haW5F
bGVtZW50SGlkZGVuICYmICF0aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRlbjsKKyAgICAgICAgdGhp
cy5fc2Vjb25kSXNTaWRlYmFyID0gc2Vjb25kSXNTaWRlYmFyOwogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KKyAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQogICAgICAq
LwotICAgIHNldCByZXNpemFibGUocmVzaXphYmxlKQorICAgIHJlc2l6ZXJFbGVtZW50OiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fcmVzaXphYmxlID09PSByZXNpemFibGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3Jlc2l6YWJsZSA9IHJlc2l6YWJs
ZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzaXplcihyZXNpemFibGUpOworICAgICAgICByZXR1
cm4gdGhpcy5fcmVzaXplckVsZW1lbnQ7CiAgICAgfSwKIAotICAgIF91cGRhdGVSZXNpemVyOiBm
dW5jdGlvbigpCisgICAgc2hvd09ubHlGaXJzdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMucmVzaXphYmxlKQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMuc2lkZWJhclJlc2l6ZXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAg
ICAgICB0aGlzLl9zaG93T25seSh0aGlzLl9maXJzdEVsZW1lbnQsIHRoaXMuX3NlY29uZEVsZW1l
bnQpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAdHlwZSB7c3RyaW5nfQotICAgICAqLwot
ICAgIHNldCBzaWRlYmFyUG9zaXRpb24oc2lkZWJhclBvc2l0aW9uKQorICAgIHNob3dPbmx5U2Vj
b25kOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2lkZWJhclBvc2l0aW9u
ID09PSBzaWRlYmFyUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMu
X2lubmVyU2V0U2lkZWJhclBvc2l0aW9uKHNpZGViYXJQb3NpdGlvbik7Ci0gICAgICAgIHRoaXMu
X3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKKyAgICAgICAgdGhpcy5fc2hvd09ubHkodGhpcy5fc2Vj
b25kRWxlbWVudCwgdGhpcy5fZmlyc3RFbGVtZW50KTsKICAgICB9LAogCiAgICAgLyoqCi0gICAg
ICogQHBhcmFtIHtzdHJpbmd9IHNpZGViYXJQb3NpdGlvbgorICAgICAqIEBwYXJhbSB7RWxlbWVu
dH0gc2lkZUEKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHNpZGVCCiAgICAgICovCi0gICAgX2lu
bmVyU2V0U2lkZWJhclBvc2l0aW9uOiBmdW5jdGlvbihzaWRlYmFyUG9zaXRpb24pCi0gICAgewot
ICAgICAgICB0aGlzLl9zaWRlYmFyUG9zaXRpb24gPSBzaWRlYmFyUG9zaXRpb247Ci0KLSAgICAg
ICAgdGhpcy5fbGVmdEVsZW1lbnQuc3R5bGUubGVmdCA9IDA7Ci0gICAgICAgIHRoaXMuX3JpZ2h0
RWxlbWVudC5zdHlsZS5yaWdodCA9IDA7Ci0gICAgICAgIGlmICh0aGlzLmhhc0xlZnRTaWRlYmFy
KSB7Ci0gICAgICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzcGxpdC12
aWV3LXNpZGViYXItbGVmdCIpOwotICAgICAgICAgICAgdGhpcy5fcmlnaHRFbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lkZWJhci1yaWdodCIpOwotICAgICAgICAgICAgdGhp
cy5fbGVmdEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoInJpZ2h0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl9yaWdodEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Ci0gICAg
ICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgi
cmlnaHQiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJzcGxpdC12aWV3LXNpZGViYXItcmlnaHQiKTsKLSAgICAgICAgICAg
IHRoaXMuX2xlZnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNwbGl0LXZpZXctc2lkZWJhci1s
ZWZ0Iik7Ci0gICAgICAgICAgICB0aGlzLl9sZWZ0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0
eSgid2lkdGgiKTsKLSAgICAgICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5zdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgibGVmdCIpOwotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplckVsZW1lbnQu
c3R5bGUucmVtb3ZlUHJvcGVydHkoImxlZnQiKTsKLSAgICAgICAgfQorICAgIF9zaG93T25seTog
ZnVuY3Rpb24oc2lkZUEsIHNpZGVCKQorICAgIHsKKyAgICAgICAgc2lkZUEucmVtb3ZlU3R5bGVD
bGFzcygiaGlkZGVuIik7CisgICAgICAgIHNpZGVBLmFkZFN0eWxlQ2xhc3MoIm1heGltaXplZCIp
OworICAgICAgICBzaWRlQi5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgc2lkZUIu
cmVtb3ZlU3R5bGVDbGFzcygibWF4aW1pemVkIik7CisgICAgICAgIHRoaXMuX3JlbW92ZUFsbExh
eW91dFByb3BlcnRpZXMoKTsKKworICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUucmln
aHQgPSAwOworICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUuYm90dG9tID0gMDsKKyAg
ICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOworICAgICAgICB0
aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOworCisgICAgICAgIHRoaXMu
X3NlY29uZEVsZW1lbnQuc3R5bGUubGVmdCA9IDA7CisgICAgICAgIHRoaXMuX3NlY29uZEVsZW1l
bnQuc3R5bGUudG9wID0gMDsKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS53aWR0
aCA9ICIxMDAlIjsKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAi
MTAwJSI7CisKKyAgICAgICAgdGhpcy5faXNTaG93aW5nT25lID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5zZXRSZXNpemFibGUoZmFsc2UpOworICAgICAgICB0aGlzLmRvUmVzaXplKCk7CiAgICAgfSwK
IAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAotICAgICAqLwotICAgIHNl
dCBtaW5pbWFsU2lkZWJhcldpZHRoKHdpZHRoKQorICAgIF9yZW1vdmVBbGxMYXlvdXRQcm9wZXJ0
aWVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRo
ID0gd2lkdGg7CisgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0
eSgicmlnaHQiKTsKKyAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLnJlbW92ZVByb3Bl
cnR5KCJib3R0b20iKTsKKyAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnN0eWxlLnJlbW92ZVBy
b3BlcnR5KCJ3aWR0aCIpOworICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUucmVtb3Zl
UHJvcGVydHkoImhlaWdodCIpOworICAKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5zdHls
ZS5yZW1vdmVQcm9wZXJ0eSgibGVmdCIpOworICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0
eWxlLnJlbW92ZVByb3BlcnR5KCJ0b3AiKTsKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVudC5z
dHlsZS5yZW1vdmVQcm9wZXJ0eSgid2lkdGgiKTsKKyAgICAgICAgdGhpcy5fc2Vjb25kRWxlbWVu
dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiaGVpZ2h0Iik7CiAgICAgfSwKIAotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAotICAgICAqLwotICAgIHNldCBtaW5pbWFsTWFpbldp
ZHRoKHdpZHRoKQorICAgIHNob3dCb3RoOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlz
Ll9taW5pbWFsTWFpbldpZHRoID0gd2lkdGg7Ci0gICAgfSwKKyAgICAgICAgdGhpcy5faXNTaG93
aW5nT25lID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fZmlyc3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoIm1heGltaXplZCIpOworICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoImhpZGRlbiIpOworICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoIm1heGltaXplZCIpOwogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdp
ZHRoUGVyY2VudAotICAgICAqLwotICAgIHNldCBtaW5pbWFsU2lkZWJhcldpZHRoUGVyY2VudCh3
aWR0aFBlcmNlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRoUGVy
Y2VudCA9IHdpZHRoUGVyY2VudDsKLSAgICB9LAorICAgICAgICAvLyBGb3JjZSB1cGRhdGUKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX3NpZGViYXJTaXplOworICAgICAgICB0aGlzLnNldFNpZGViYXJT
aXplKHRoaXMuX2xhc3RTaWRlYmFyU2l6ZSgpKTsKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB3aWR0aFBlcmNlbnQKLSAgICAgKi8KLSAgICBzZXQgbWluaW1hbE1haW5XaWR0aFBl
cmNlbnQod2lkdGhQZXJjZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fbWluaW1hbE1haW5XaWR0
aFBlcmNlbnQgPSB3aWR0aFBlcmNlbnQ7CisgICAgICAgIHRoaXMuc2V0UmVzaXphYmxlKHRydWUp
OworICAgICAgICB0aGlzLmRvUmVzaXplKCk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVzaXphYmxlCiAg
ICAgICovCi0gICAgc2V0TWFpbldpZHRoOiBmdW5jdGlvbih3aWR0aCkKKyAgICBzZXRSZXNpemFi
bGU6IGZ1bmN0aW9uKHJlc2l6YWJsZSkKICAgICB7Ci0gICAgICAgIHRoaXMuc2V0U2lkZWJhcldp
ZHRoKHRoaXMuX3RvdGFsV2lkdGggLSB3aWR0aCk7CisgICAgICAgIGlmICh0aGlzLl9yZXNpemFi
bGUgPT09IHJlc2l6YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fcmVz
aXphYmxlID0gcmVzaXphYmxlOworICAgICAgICBpZiAocmVzaXphYmxlKQorICAgICAgICAgICAg
dGhpcy5fcmVzaXplckVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhp
ZGRlbiIpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQogICAgICAqLwotICAgIHNldFNpZGViYXJXaWR0
aDogZnVuY3Rpb24od2lkdGgpCisgICAgc2V0U2lkZWJhclNpemU6IGZ1bmN0aW9uKHNpemUpCiAg
ICAgewotICAgICAgICBpZiAodGhpcy5fc2lkZWJhcldpZHRoID09PSB3aWR0aCkKKyAgICAgICAg
aWYgKHRoaXMuX3NpZGViYXJTaXplID09PSBzaXplKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHRoaXMuX2lubmVyU2V0U2lkZWJhcldpZHRoKHdpZHRoKTsKLSAgICAgICAgdGhpcy5z
YXZlU2lkZWJhcldpZHRoKCk7Ci0gICAgfSwKLQotICAgIHNpZGViYXJXaWR0aDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGViYXJXaWR0aDsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCi0gICAgICovCi0gICAgX2lubmVy
U2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlz
Lmhhc0xlZnRTaWRlYmFyKQotICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRMZWZ0U2lkZWJhcldp
ZHRoKHdpZHRoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRSaWdo
dFNpZGViYXJXaWR0aCh3aWR0aCk7Ci0gICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHdpZHRo
OwotICAgICAgICB0aGlzLmRvUmVzaXplKCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuRXZlbnRUeXBlcy5SZXNpemVkLCB0aGlz
Ll9zaWRlYmFyV2lkdGgpOworICAgICAgICBzaXplID0gdGhpcy5hcHBseUNvbnN0cmFpbnRzKHNp
emUpOworICAgICAgICB0aGlzLl9pbm5lclNldFNpZGViYXJTaXplKHNpemUpOworICAgICAgICB0
aGlzLl9zYXZlU2lkZWJhclNpemUoc2l6ZSk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB3aWR0aAorICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8KLSAg
ICBfaW5uZXJTZXRMZWZ0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKKyAgICBzaWRlYmFy
U2l6ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fbGVmdEVsZW1lbnQuc3R5bGUu
d2lkdGggPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHRoaXMuX3JpZ2h0RWxlbWVudC5zdHlsZS5s
ZWZ0ID0gd2lkdGggKyAicHgiOwotICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudC5z
dHlsZS5sZWZ0ID0gKHdpZHRoIC0gMykgKyAicHgiOworICAgICAgICByZXR1cm4gdGhpcy5fc2lk
ZWJhclNpemU7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0
aAorICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8KLSAgICBfaW5uZXJTZXRSaWdodFNp
ZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCisgICAgdG90YWxTaXplOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLl9yaWdodEVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICJw
eCI7Ci0gICAgICAgIHRoaXMuX2xlZnRFbGVtZW50LnN0eWxlLnJpZ2h0ID0gd2lkdGggKyAicHgi
OwotICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVyRWxlbWVudC5zdHlsZS5yaWdodCA9ICh3aWR0
aCAtIDMpICsgInB4IjsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RvdGFsU2l6ZTsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHNpemUKICAgICAgKi8KLSAgICBfc2V0U2lkZWJhcldpZHRoRW5zdXJpbmdDb25zdHJh
aW50czogZnVuY3Rpb24od2lkdGgpCi0gICAgewotICAgICAgICB2YXIgbWluV2lkdGggPSBNYXRo
Lm1heCh0aGlzLl9taW5pbWFsU2lkZWJhcldpZHRoLCB0aGlzLl90b3RhbFdpZHRoICogdGhpcy5f
bWluaW1hbFNpZGViYXJXaWR0aFBlcmNlbnQpOwotICAgICAgICB2YXIgbWF4V2lkdGggPSBNYXRo
Lm1pbih0aGlzLl90b3RhbFdpZHRoIC0gdGhpcy5fbWluaW1hbE1haW5XaWR0aCwgdGhpcy5fdG90
YWxXaWR0aCAqICgxMDAgLSB0aGlzLl9taW5pbWFsTWFpbldpZHRoUGVyY2VudCkgLyAxMDAgKTsK
LSAgICAgICAgd2lkdGggPSBOdW1iZXIuY29uc3RyYWluKHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lk
dGgpOwotCi0gICAgICAgIHRoaXMuc2V0U2lkZWJhcldpZHRoKHdpZHRoKTsKLSAgICB9LAotCi0g
ICAgaGlkZU1haW5FbGVtZW50OiBmdW5jdGlvbigpCisgICAgX2lubmVyU2V0U2lkZWJhclNpemU6
IGZ1bmN0aW9uKHNpemUpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbWFpbkVsZW1lbnRIaWRk
ZW4pCisgICAgICAgIGlmICh0aGlzLl9pc1Nob3dpbmdPbmUpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHRoaXMuX3NpZGViYXJFbGVtZW50SGlkZGVuKQotICAgICAgICAgICAg
dGhpcy5zaG93U2lkZWJhckVsZW1lbnQoKTsKLQotICAgICAgICB0aGlzLm1haW5FbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0
eWxlQ2xhc3MoIm1heGltaXplZCIpOwotICAgICAgICAKLSAgICAgICAgaWYgKHRoaXMuaGFzTGVm
dFNpZGViYXIpCi0gICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN0eWxlLnJpZ2h0ID0g
IjBweCI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3R5
bGUubGVmdCA9ICIwcHgiOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnRIaWRk
ZW4gPSB0cnVlOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyKCk7Ci0gICAgICAgIHRoaXMu
X3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKLSAgICAgICAgdGhpcy5kb1Jlc2l6ZSgpOwotICAgIH0s
Ci0KLSAgICBzaG93TWFpbkVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy5tYWluRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgdGhp
cy5zaWRlYmFyRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJtYXhpbWl6ZWQiKTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICh0aGlzLmhhc0xlZnRTaWRlYmFyKQotICAgICAgICAgICAgdGhpcy5zaWRl
YmFyRWxlbWVudC5zdHlsZS5yaWdodCA9ICIiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzLnNpZGViYXJFbGVtZW50LnN0eWxlLmxlZnQgPSAiIjsKLQotICAgICAgICB0aGlzLl9tYWlu
RWxlbWVudEhpZGRlbiA9IGZhbHNlOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyKCk7Ci0g
ICAgICAgIHRoaXMuX3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKLSAgICAgICAgdGhpcy5kb1Jlc2l6
ZSgpOwotICAgIH0sCi0KLSAgICBoaWRlU2lkZWJhckVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9zaWRlYmFyRWxlbWVudEhpZGRlbikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAodGhpcy5fbWFpbkVsZW1lbnRIaWRkZW4pCi0gICAgICAgICAg
ICB0aGlzLnNob3dNYWluRWxlbWVudCgpOworICAgICAgICB0aGlzLl9yZW1vdmVBbGxMYXlvdXRQ
cm9wZXJ0aWVzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2lzVmVydGljYWwpIHsKKyAgICAgICAg
ICAgIHZhciByZXNpemVyV2lkdGggPSB0aGlzLl9yZXNpemVyRWxlbWVudC5vZmZzZXRXaWR0aDsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9zZWNvbmRJc1NpZGViYXIpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUucmlnaHQgPSBzaXplICsgInB4IjsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLndpZHRoID0gc2l6ZSArICJweCI7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplckVsZW1lbnQuc3R5bGUucmlnaHQgPSBzaXplIC0g
cmVzaXplcldpZHRoIC8gMiArICJweCI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHRoaXMuX2ZpcnN0RWxlbWVudC5zdHlsZS53aWR0aCA9IHNpemUgKyAicHgiOzsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9zZWNvbmRFbGVtZW50LnN0eWxlLmxlZnQgPSBzaXplICsgInB4
Ijs7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplckVsZW1lbnQuc3R5bGUubGVmdCA9IHNp
emUgLSByZXNpemVyV2lkdGggLyAyICsgInB4IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHZhciByZXNpemVySGVpZ2h0ID0gdGhpcy5fcmVzaXplckVsZW1l
bnQub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWNv
bmRJc1NpZGViYXIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maXJzdEVsZW1lbnQuc3R5bGUu
Ym90dG9tID0gc2l6ZSArICJweCI7OworICAgICAgICAgICAgICAgIHRoaXMuX3NlY29uZEVsZW1l
bnQuc3R5bGUuaGVpZ2h0ID0gc2l6ZSArICJweCI7OworICAgICAgICAgICAgICAgIHRoaXMuX3Jl
c2l6ZXJFbGVtZW50LnN0eWxlLmJvdHRvbSA9IHNpemUgLSByZXNpemVySGVpZ2h0IC8gMiArICJw
eCI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0RWxl
bWVudC5zdHlsZS5oZWlnaHQgPSBzaXplICsgInB4Ijs7CisgICAgICAgICAgICAgICAgdGhpcy5f
c2Vjb25kRWxlbWVudC5zdHlsZS50b3AgPSBzaXplICsgInB4Ijs7CisgICAgICAgICAgICAgICAg
dGhpcy5fcmVzaXplckVsZW1lbnQuc3R5bGUudG9wID0gc2l6ZSAtIHJlc2l6ZXJIZWlnaHQgLyAy
ICsgInB4IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIHRoaXMuc2lkZWJh
ckVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMuX3NpZGViYXJF
bGVtZW50SGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzaXplcigpOwotICAg
ICAgICB0aGlzLl9yZXN0b3JlU2lkZWJhcldpZHRoKCk7CisgICAgICAgIHRoaXMuX3NpZGViYXJT
aXplID0gc2l6ZTsKICAgICAgICAgdGhpcy5kb1Jlc2l6ZSgpOwogICAgIH0sCiAKLSAgICBzaG93
U2lkZWJhckVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc2l6ZQorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBhcHBseUNvbnN0
cmFpbnRzOiBmdW5jdGlvbihzaXplKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zaWRlYmFy
RWxlbWVudEhpZGRlbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnNpZGVi
YXJFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICB0aGlzLl9zaWRl
YmFyRWxlbWVudEhpZGRlbiA9IGZhbHNlOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyKCk7
Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTaWRlYmFyV2lkdGgoKTsKLSAgICAgICAgdGhpcy5kb1Jl
c2l6ZSgpOworICAgICAgICBjb25zdCBtaW5TaXplID0gMjA7CisgICAgICAgIHNpemUgPSBNYXRo
Lm1heChzaXplLCBtaW5TaXplKTsKKyAgICAgICAgaWYgKHRoaXMuX3RvdGFsU2l6ZSAtIHNpemUg
PCBtaW5TaXplKQorICAgICAgICAgICAgc2l6ZSA9IHRoaXMuX3RvdGFsU2l6ZSAtIG1pblNpemU7
CisgICAgICAgIHJldHVybiBzaXplOwogICAgIH0sCiAKICAgICB3YXNTaG93bjogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5fdG90YWxXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRX
aWR0aDsKLSAgICAgICAgdGhpcy5fcmVzdG9yZVNpZGViYXJXaWR0aCgpOworICAgICAgICB0aGlz
Ll90b3RhbFNpemUgPSB0aGlzLl9pc1ZlcnRpY2FsID8gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRo
IDogdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5zZXRTaWRlYmFyU2l6
ZSh0aGlzLl9sYXN0U2lkZWJhclNpemUoKSk7CiAgICAgfSwKIAogICAgIG9uUmVzaXplOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl90b3RhbFdpZHRoID0gdGhpcy5lbGVtZW50Lm9m
ZnNldFdpZHRoOwotCi0gICAgICAgIGlmICh0aGlzLl9tYWluRWxlbWVudEhpZGRlbikKLSAgICAg
ICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHRoaXMuX3RvdGFsV2lkdGg7CisgICAgICAgIHZh
ciBvbGRUb3RhbFNpemUgPSB0aGlzLl90b3RhbFNpemU7CisgICAgICAgIHRoaXMuX3RvdGFsU2l6
ZSA9IHRoaXMuX2lzVmVydGljYWwgPyB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGggOiB0aGlzLmVs
ZW1lbnQub2Zmc2V0SGVpZ2h0OwogICAgIH0sCiAKICAgICAvKioKQEAgLTM2NSw4ICsyODksNyBA
QCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlz
Ll9yZXNpemFibGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdmFyIGxl
ZnRXaWR0aCA9IHRoaXMuaGFzTGVmdFNpZGViYXIgPyB0aGlzLl9zaWRlYmFyV2lkdGggOiB0aGlz
Ll90b3RhbFdpZHRoIC0gdGhpcy5fc2lkZWJhcldpZHRoOwotICAgICAgICB0aGlzLl9kcmFnT2Zm
c2V0ID0gbGVmdFdpZHRoIC0gZXZlbnQucGFnZVg7CisgICAgICAgIHRoaXMuX2RyYWdPZmZzZXQg
PSAodGhpcy5fc2Vjb25kSXNTaWRlYmFyID8gdGhpcy5fdG90YWxTaXplIC0gdGhpcy5fc2lkZWJh
clNpemUgOiB0aGlzLl9zaWRlYmFyU2l6ZSkgLSAodGhpcy5faXNWZXJ0aWNhbCA/IGV2ZW50LnBh
Z2VYIDogZXZlbnQucGFnZVkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCkBAIC0z
NzUsMTEgKzI5OCw5IEBAIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9yZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdmFyIGxlZnRXaWR0aCA9IGV2ZW50LnBhZ2VYICsgdGhpcy5fZHJhZ09mZnNldDsKLSAgICAg
ICAgdmFyIHJpZ2h0V2lkdGggPSB0aGlzLl90b3RhbFdpZHRoIC0gbGVmdFdpZHRoOwotICAgICAg
ICB2YXIgc2lkZWJhcldpZHRoID0gdGhpcy5oYXNMZWZ0U2lkZWJhciA/IGxlZnRXaWR0aCA6IHJp
Z2h0V2lkdGg7Ci0KLSAgICAgICAgdGhpcy5fc2V0U2lkZWJhcldpZHRoRW5zdXJpbmdDb25zdHJh
aW50cyhzaWRlYmFyV2lkdGgpOworICAgICAgICB2YXIgbmV3T2Zmc2V0ID0gKHRoaXMuX2lzVmVy
dGljYWwgPyBldmVudC5wYWdlWCA6IGV2ZW50LnBhZ2VZKSArIHRoaXMuX2RyYWdPZmZzZXQ7Cisg
ICAgICAgIHZhciBuZXdTaXplID0gKHRoaXMuX3NlY29uZElzU2lkZWJhciA/IHRoaXMuX3RvdGFs
U2l6ZSAtIG5ld09mZnNldCA6IG5ld09mZnNldCk7CisgICAgICAgIHRoaXMuc2V0U2lkZWJhclNp
emUobmV3U2l6ZSk7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfSwKIApA
QCAtMzk2LDUyICszMTcsMjcgQEAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgaW5zdGFsbFJlc2l6ZXI6IGZ1bmN0aW9uKHJlc2l6ZXJFbGVtZW50KQog
ICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHJlc2l6ZXJFbGVt
ZW50LCB0aGlzLl9zdGFydFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCB0aGlzLl9yZXNpemVy
RHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fZW5kUmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyks
ICJldy1yZXNpemUiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHJl
c2l6ZXJFbGVtZW50LCB0aGlzLl9zdGFydFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCB0aGlz
Ll9yZXNpemVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fZW5kUmVzaXplckRyYWdnaW5nLmJp
bmQodGhpcyksIHRoaXMuX2lzVmVydGljYWwgPyAiZXctcmVzaXplIiA6ICJucy1yZXNpemUiKTsK
ICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICAqLwotICAg
IHByZWZlcnJlZFNpZGViYXJXaWR0aDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9z
YXZlZFNpZGViYXJXaWR0aDsKLQotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnNldHRpbmdz
W3RoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lXS5nZXQoKSB8fCB0aGlzLl9zYXZlZFNpZGVi
YXJXaWR0aDsKLSAgICB9LAotCi0gICAgX3Jlc3RvcmVTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKCkK
KyAgICBfbGFzdFNpZGViYXJTaXplOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhp
cy5fbWFpbkVsZW1lbnRIaWRkZW4pIHsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3R5bGUud2lkdGggPSAiIjsKLSAgICAgICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHRoaXMu
X3RvdGFsV2lkdGg7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAodGhpcy5fc2lkZWJhckVsZW1lbnRIaWRkZW4pIHsKLSAgICAgICAgICAgIHRoaXMuX2lubmVy
U2V0U2lkZWJhcldpZHRoKDApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gRW5zdXJlIHJlc3RvcmUgc2F0aXNmaWVzIGNvbnN0cmFpbnRzLgotICAgICAgICB0
aGlzLl9zZXRTaWRlYmFyV2lkdGhFbnN1cmluZ0NvbnN0cmFpbnRzKHRoaXMucHJlZmVycmVkU2lk
ZWJhcldpZHRoKCkpOwotICAgIH0sCi0KLSAgICBzYXZlU2lkZWJhcldpZHRoOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB0aGlzLl9zYXZlZFNpZGViYXJXaWR0aCA9IHRoaXMuX3NpZGViYXJX
aWR0aDsKLSAgICAgICAgaWYgKCF0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3NbdGhpcy5fc2lk
ZWJhcldpZHRoU2V0dGluZ05hbWVdLnNldCh0aGlzLl9zaWRlYmFyV2lkdGgpOworICAgICAgICBy
ZXR1cm4gdGhpcy5fc2lkZWJhclNpemVTZXR0aW5nTmFtZSA/IFdlYkluc3BlY3Rvci5zZXR0aW5n
c1t0aGlzLl9zaWRlYmFyU2l6ZVNldHRpbmdOYW1lXS5nZXQoKSB8fCB0aGlzLl9zYXZlZFNpZGVi
YXJTaXplIDogdGhpcy5fc2F2ZWRTaWRlYmFyU2l6ZTsKICAgICB9LAogCiAgICAgLyoqCi0gICAg
ICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXpl
CiAgICAgICovCi0gICAgZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0
aW9uKCkKKyAgICBfc2F2ZVNpZGViYXJTaXplOiBmdW5jdGlvbihzaXplKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFsgdGhpcy5tYWluRWxlbWVudCwgdGhpcy5zaWRlYmFyRWxlbWVudCBdOworICAg
ICAgICB0aGlzLl9zYXZlZFNpZGViYXJTaXplID0gc2l6ZTsKKyAgICAgICAgaWYgKCF0aGlzLl9z
aWRlYmFyU2l6ZVNldHRpbmdOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyU2l6ZVNldHRpbmdOYW1lXS5zZXQodGhp
cy5fc2F2ZWRTaWRlYmFyU2l6ZSk7CiAgICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLlZpZXcucHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggM2I1MGVhYWNjMGM3ZGRiNmE5NzE2MmE2Y2I2
OTU1Y2NkZWUwMjllNy4uMGJmNGEzMDZlNDBjNTYxMDU5MGZiZjk4YmU5OWZkY2ZiYzM4MmFiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQ
YW5lbC5qcwpAQCAtNjEsOCArNjEsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLl9zaWRlYmFyQmFja2dyb3VuZEVsZW1lbnQuY2xhc3NOYW1lID0g
InNpZGViYXIgc3BsaXQtdmlldy1zaWRlYmFyLWxlZnQgdGltZWxpbmUtc2lkZWJhci1iYWNrZ3Jv
dW5kIjsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2lkZWJhckJhY2tncm91
bmRFbGVtZW50KTsKIAotICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3V2l0aFNpZGViYXJUcmVlKCk7
Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3BsaXRWaWV3LnNpZGViYXJSZXNp
emVyRWxlbWVudCk7CisgICAgdGhpcy5jcmVhdGVTaWRlYmFyVmlld1dpdGhUcmVlKCk7CisgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3BsaXRWaWV3LnJlc2l6ZXJFbGVtZW50KCkp
OwogCiAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9IHRoaXMuc3BsaXRWaWV3LmVsZW1lbnQ7
CiAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5pZCA9ICJ0aW1lbGluZS1jb250YWluZXIiOwpA
QCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLl90aW1lbGluZU1lbW9yeVNwbGl0dGVyLmlkID0gInRpbWVsaW5lLW1lbW9yeS1z
cGxpdHRlciI7CiAgICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRoaXMuX3RpbWVs
aW5lTWVtb3J5U3BsaXR0ZXIsIHRoaXMuX3N0YXJ0U3BsaXR0ZXJEcmFnZ2luZy5iaW5kKHRoaXMp
LCB0aGlzLl9zcGxpdHRlckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFNwbGl0dGVyRHJh
Z2dpbmcuYmluZCh0aGlzKSwgIm5zLXJlc2l6ZSIpOwogICAgIHRoaXMuX3RpbWVsaW5lTWVtb3J5
U3BsaXR0ZXIuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgdGhpcy5fbWVtb3J5U3RhdGlz
dGljcyA9IG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyh0aGlzLCB0aGlzLl9tb2Rl
bCwgdGhpcy5zcGxpdFZpZXcucHJlZmVycmVkU2lkZWJhcldpZHRoKCkpOworICAgIHRoaXMuX21l
bW9yeVN0YXRpc3RpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3ModGhpcywg
dGhpcy5fbW9kZWwsIHRoaXMuc3BsaXRWaWV3LnNpZGViYXJXaWR0aCgpKTsKICAgICBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MubWVtb3J5Q291bnRlckdyYXBoc0hlaWdodCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJtZW1vcnlDb3VudGVyR3JhcGhzSGVpZ2h0IiwgMTUwKTsK
IAogICAgIHZhciBpdGVtc1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2Vj
dGlvblRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUkVDT1JEUyIpLCB7fSwgdHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5k
ZXggZTU3Yzg5NGRiYjM1ZGZlYmVmZDIxNDYxMjFlYTk3ZjNiMzc2NTAzNi4uOWFlNmNjNzU5NTY1
ZmQ2NDI0ZTdlNjA1OWE5ODc2OTMxOTk1Y2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTcyLDYgKzE3Miw3IEBACiAgICAgPGZpbGU+
U2lkZWJhck92ZXJsYXkuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2lkZWJhclBhbmUuanM8L2ZpbGU+
CiAgICAgPGZpbGU+U2lkZWJhclRyZWVFbGVtZW50LmpzPC9maWxlPgorICAgIDxmaWxlPlNpZGVi
YXJWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlNuaXBwZXRKYXZhU2NyaXB0U291cmNlRnJhbWUu
anM8L2ZpbGU+CiAgICAgPGZpbGU+U25pcHBldFN0b3JhZ2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+
U29mdENvbnRleHRNZW51LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9jYW52YXNQcm9maWxlci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2NhbnZhc1Byb2ZpbGVyLmNzcwppbmRleCAwNmY4MzkwN2MxYjIzNzc4
NzExYjkwMWFkNWFkNGFhMTRmYWYzMjE5Li5lNzYyMDY5YzA3MzJlYzJjZmQwZTk1YjA4ODIwNDlh
ZjI1NWEwMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2NhbnZhc1Byb2ZpbGVyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2NhbnZhc1Byb2ZpbGVyLmNzcwpAQCAtMzcsMTUgKzM3LDE1IEBACiAgICAgYm90dG9tOiAw
OwogfQogCisuY2FudmFzLXByb2ZpbGUtdmlldyAuc3BsaXQtdmlldy1yZXNpemVyIHsKKyAgICBi
YWNrZ3JvdW5kOiByZ2IoMTI4LCAxMjgsIDEyOCk7Cit9CisKIC5jYW52YXMtdHJhY2UtbG9nIHsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiA0MDBweDsKLSAgICBsZWZ0OiA1cHg7
Ci0gICAgcmlnaHQ6IDVweDsKLSAgICBib3R0b206IDEwcHg7CiAgICAgZm9udC1zaXplOiAxM3B4
OwogICAgIG92ZXJmbG93OiBhdXRvOwogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgcGFk
ZGluZzogNXB4OwogfQogCiAuY2FudmFzLXRyYWNlLWxvZyBkaXYgewpAQCAtNTMsMTAgKzUzLDEw
IEBACiB9CiAKICNjYW52YXMtcmVwbGF5LWltYWdlLWNvbnRhaW5lciB7Ci0gICAgaGVpZ2h0OiA0
MDBweDsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgcGFkZGluZzogNXB4IDVweCAxNnB4
IDVweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBibGFjazsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHBhZGRpbmc6IDVweDsKIH0KIAog
I2NhbnZhcy1yZXBsYXktaW1hZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNmVhMGFmN2U5NDNmYmNiZmI5NjYzNDBmZTM2
MjY3ZTEwYjI4MWYzMy4uOTc5YTdiNGQ5OTU4ZGJkY2JlNWI4ZGNiMDY3MDNlZjdjNTU4YTQ5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCkBAIC0xMTMsNiArMTEzLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJGb250Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTcGxpdFZpZXcuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNpZGViYXJWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb25zb2xl
UGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkV4dGVuc2lvbkFQSS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3NwbGl0Vmlldy5jc3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3NwbGl0Vmlldy5jc3MKaW5kZXgg
MDYxNGM2ZjkyOWJjODM2YjY3OGNlYWFiOGFhY2I4MDM5MDYwNWU3ZC4uOGMyZDM4NTNhYjkwNmMw
MGRmNWU5Nzc3ZGY2NDA5ZmUxY2IyMDhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9zcGxpdFZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvc3BsaXRWaWV3LmNzcwpAQCAtMzcsMTIgKzM3LDIwIEBACiAKIC5zcGxp
dC12aWV3LWNvbnRlbnRzIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwot
ICAgIGJvdHRvbTogMDsKICAgICBvdmVyZmxvdzogYXV0bzsKICAgICBjdXJzb3I6IGRlZmF1bHQ7
CiB9CiAKKy5zcGxpdC12aWV3LWNvbnRlbnRzLnNwbGl0LXZpZXctY29udGVudHMtdmVydGljYWwg
eworICAgIHRvcDogMDsKKyAgICBib3R0b206IDA7Cit9CisKKy5zcGxpdC12aWV3LWNvbnRlbnRz
LnNwbGl0LXZpZXctY29udGVudHMtaG9yaXpvbnRhbCB7CisgICAgbGVmdDogMDsKKyAgICByaWdo
dDogMDsKK30KKwogLnNwbGl0LXZpZXctc2lkZWJhci1sZWZ0IHsKICAgICBib3JkZXItcmlnaHQ6
IDFweCBzb2xpZCByZ2IoNjQlLCA2NCUsIDY0JSk7CiB9CkBAIC01OSwxNSArNjcsMjQgQEAKICAg
ICBib3JkZXItcmlnaHQ6IG5vbmU7CiB9CiAKLS5zcGxpdC12aWV3LXJlc2l6ZXIgeworLnNwbGl0
LXZpZXctcmVzaXplci5zcGxpdC12aWV3LXJlc2l6ZXItdmVydGljYWwgewogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CiAgICAgYm90dG9tOiAwOwogICAgIHdpZHRoOiA1cHg7
Ci0gICAgei1pbmRleDogNTAwOworICAgIHotaW5kZXg6IDE1MDA7CiAgICAgY3Vyc29yOiBldy1y
ZXNpemU7CiB9CiAKKy5zcGxpdC12aWV3LXJlc2l6ZXIuc3BsaXQtdmlldy1yZXNpemVyLWhvcml6
b250YWwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0
OiAwOworICAgIGhlaWdodDogNXB4OworICAgIHotaW5kZXg6IDE1MDA7CisgICAgY3Vyc29yOiBu
cy1yZXNpemU7Cit9CisKIC5zaWRlYmFyLW92ZXJsYXkgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKICAgICB0b3A6IDA7Cg==
</data>
<flag name="review"
          id="187851"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>