<?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>112693</bug_id>
          
          <creation_ts>2013-03-19 06:44:26 -0700</creation_ts>
          <short_desc>Web Inspector: move OverviewGrid and OverviewWindow into separate file.</short_desc>
          <delta_ts>2013-03-19 07:49:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112577</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858227</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-19 06:44:26 -0700</bug_when>
    <thetext>the third patch for the bug &quot;Web Inspector: meta bug: extract OverviewGrid from TimelineOverviewPane&quot;

It just movies the OverviewGrid into its own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858231</commentid>
    <comment_count>1</comment_count>
      <attachid>193813</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-19 06:48:06 -0700</bug_when>
    <thetext>Created attachment 193813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858238</commentid>
    <comment_count>2</comment_count>
      <attachid>193813</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-19 06:53:41 -0700</bug_when>
    <thetext>Comment on attachment 193813
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        It just movies the OverviewGrid and the related classes into its own file.

movies -&gt; moves

&gt; Source/WebCore/inspector/compile-front-end.py:138
&gt; +            &quot;OverviewGrid.js&quot;,

You should also add this to .vcproj and .gypi files.

&gt; Source/WebCore/inspector/front-end/OverviewGrid.js:2
&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.

2013

&gt; Source/WebCore/inspector/front-end/OverviewGrid.js:35
&gt; +WebInspector.OverviewGrid = function(prefix)

Maybe call it OverviewPane?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858255</commentid>
    <comment_count>3</comment_count>
      <attachid>193821</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-19 07:14:34 -0700</bug_when>
    <thetext>Created attachment 193821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858261</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-19 07:20:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 193813 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193813&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        It just movies the OverviewGrid and the related classes into its own file.
&gt; 
&gt; movies -&gt; moves

done

&gt; 
&gt; &gt; Source/WebCore/inspector/compile-front-end.py:138
&gt; &gt; +            &quot;OverviewGrid.js&quot;,
&gt; 
&gt; You should also add this to .vcproj and .gypi files.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/OverviewGrid.js:2
&gt; &gt; + * Copyright (C) 2012 Google Inc. All rights reserved.
&gt; 
&gt; 2013

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/OverviewGrid.js:35
&gt; &gt; +WebInspector.OverviewGrid = function(prefix)
&gt; 
&gt; Maybe call it OverviewPane?

The wording is bad. I would like to change it in the next patch.
But it is not a pane. It is a component that could be used anywhere.
I&apos;m going to use it in FlameChartOverviewPane and it is a part of TimelineOverviewPane.

If grid suffix is ok it could be OverviewTimelineGrid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858286</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-19 07:49:47 -0700</bug_when>
    <thetext>Committed r146204: &lt;http://trac.webkit.org/changeset/146204&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193813</attachid>
            <date>2013-03-19 06:48:06 -0700</date>
            <delta_ts>2013-03-19 07:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112693-20130319174356.patch</filename>
            <type>text/plain</type>
            <size>39973</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA3NjM4MmY4NjE4OTJl
OTI4MDA0OWE3ZThiNjZhYzNlYTQ5MGFkMS4uMTA2YjY3MjIwOWVkNjYxNDIyYmUxMjMwNWMwMTMy
MjhjODYyOTVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDEzLTAzLTE5ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtb3ZlIE92ZXJ2aWV3R3JpZCBhbmQgT3ZlcnZpZXdXaW5kb3cgaW50byBzZXBhcmF0ZSBm
aWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQg
aXMgdGhlIHRoaXJkIHBhdGNoIGZvciB0aGUgbWV0YSBidWcgIldlYiBJbnNwZWN0b3I6IG1ldGEg
YnVnOiBleHRyYWN0IE92ZXJ2aWV3R3JpZCBmcm9tIFRpbWVsaW5lT3ZlcnZpZXdQYW5lIgorICAg
ICAgICBJdCBqdXN0IG1vdmllcyB0aGUgT3ZlcnZpZXdHcmlkIGFuZCB0aGUgcmVsYXRlZCBjbGFz
c2VzIGludG8gaXRzIG93biBmaWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJv
bnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT3ZlcnZpZXdHcmlkLmpz
OiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUuaXRlbXNHcmFwaHNFbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQucHJvdG90eXBlLmluc2VydEJlZm9y
ZUl0ZW1zR3JhcGhzRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlk
LnByb3RvdHlwZS5jbGllbnRXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdH
cmlkLnByb3RvdHlwZS5zaG93SXRlbXNHcmFwaHNFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5PdmVydmlld0dyaWQucHJvdG90eXBlLmhpZGVJdGVtc0dyYXBoc0VsZW1lbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUudXBkYXRlRGl2aWRlcnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUuYWRkRXZlbnRE
aXZpZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3RvdHlwZS5y
ZW1vdmVFdmVudERpdmlkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQu
cHJvdG90eXBlLnNldFdpbmRvd1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVy
dmlld0dyaWQucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmll
d0dyaWQucHJvdG90eXBlLndpbmRvd0xlZnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2
aWV3R3JpZC5wcm90b3R5cGUud2luZG93UmlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3R3JpZC5wcm90b3R5cGUuc2V0V2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2
aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fbGVmdFJlc2l6ZUVsZW1lbnREcmFnZ2luZyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90b3R5cGUuX3Jp
Z2h0UmVzaXplRWxlbWVudERyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmll
d0dyaWQuV2luZG93LnByb3RvdHlwZS5fc3RhcnRXaW5kb3dTZWxlY3RvckRyYWdnaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fd2luZG93
U2VsZWN0b3JEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldp
bmRvdy5wcm90b3R5cGUuX2VuZFdpbmRvd1NlbGVjdG9yRHJhZ2dpbmcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLl9zdGFydFdpbmRvd0RyYWdn
aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlw
ZS5fd2luZG93RHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5X
aW5kb3cucHJvdG90eXBlLl9lbmRXaW5kb3dEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90b3R5cGUuX21vdmVXaW5kb3cpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLl9yZXNpemVXaW5kb3dM
ZWZ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlw
ZS5fcmVzaXplV2luZG93UmlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZC5XaW5kb3cucHJvdG90eXBlLl9yZXNpemVXaW5kb3dNYXhpbXVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fc2V0V2luZG93KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fc2V0V2luZG93
UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJv
dG90eXBlLl9vbk1vdXNlV2hlZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZC5XaW5kb3cucHJvdG90eXBlLl96b29tKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmll
d0dyaWQuV2luZG93U2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZC5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUuX2NyZWF0ZVNlbGVjdG9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvd1NlbGVjdG9yLnByb3RvdHlwZS5f
Y2xvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rv
ci5wcm90b3R5cGUuX3VwZGF0ZVBvc2l0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sOgorCisyMDEzLTAzLTE5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgVGltZWxpbmVPdmVydmlld1dpbmRv
dyB0byBPdmVydmlld0dyaWQuV2luZG93IGFuZCBmaXggbmFtZXMgZm9yIGNvbnN0YW50cy4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjY4NQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggM2Zi
NDk4YzgyNTNhODZmYTkwMzA2YjYwZGNmNDBjOTNmYmNkMTJlNi4uN2UxMGFiYzE0YzAyNGNiNDM0
ZGUyNzAzMDU2NDA0N2U2ZmY0OTMxOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weQpAQCAtMTM1LDYgKzEzNSw3IEBAIG1vZHVsZXMgPSBbCiAgICAg
ICAgICAgICAiSGVscFNjcmVlbi5qcyIsCiAgICAgICAgICAgICAiSW5zcGVjdG9yVmlldy5qcyIs
CiAgICAgICAgICAgICAiS2V5Ym9hcmRTaG9ydGN1dC5qcyIsCisgICAgICAgICAgICAiT3ZlcnZp
ZXdHcmlkLmpzIiwKICAgICAgICAgICAgICJQYW5lbC5qcyIsCiAgICAgICAgICAgICAiUGFuZWxF
bmFibGVyVmlldy5qcyIsCiAgICAgICAgICAgICAiUGxhY2FyZC5qcyIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL092ZXJ2aWV3R3JpZC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT3ZlcnZpZXdHcmlkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmMjMwNTExOTAwZTdmZWVkZDkxMzA1Nzg2YjViMTU3MjU4MjJjNTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL092ZXJ2aWV3R3JpZC5qcwpA
QCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30g
cHJlZml4CisgKi8KK1dlYkluc3BlY3Rvci5PdmVydmlld0dyaWQgPSBmdW5jdGlvbihwcmVmaXgp
Cit7CisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJmaWxsIjsKKyAgICB0aGlzLmVsZW1lbnQuaWQg
PSBwcmVmaXggKyAiLW92ZXJ2aWV3LWNvbnRhaW5lciI7CisKKyAgICB0aGlzLl9ncmlkID0gbmV3
IFdlYkluc3BlY3Rvci5UaW1lbGluZUdyaWQoKTsKKyAgICB0aGlzLl9ncmlkLmVsZW1lbnQuaWQg
PSBwcmVmaXggKyAiLW92ZXJ2aWV3LWdyaWQiOworICAgIHRoaXMuX2dyaWQuaXRlbXNHcmFwaHNF
bGVtZW50LmlkID0gcHJlZml4ICsgIi1vdmVydmlldy10aW1lbGluZXMiOworICAgIHRoaXMuX2dy
aWQuc2V0U2Nyb2xsQW5kRGl2aWRlclRvcCgwLCAwKTsKKworICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9ncmlkLmVsZW1lbnQpOworCisgICAgdGhpcy5fd2luZG93ID0gbmV3IFdl
Ykluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93KHRoaXMuZWxlbWVudCwgdGhpcy5fZ3JpZC5k
aXZpZGVyc0xhYmVsQmFyRWxlbWVudCwgcHJlZml4KTsKK30KKworV2ViSW5zcGVjdG9yLk92ZXJ2
aWV3R3JpZC5wcm90b3R5cGUgPSB7CisgICAgaXRlbXNHcmFwaHNFbGVtZW50OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQ7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IU5vZGV9IGNoaWxkCisgICAgICovCisg
ICAgaW5zZXJ0QmVmb3JlSXRlbXNHcmFwaHNFbGVtZW50OiBmdW5jdGlvbihjaGlsZCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2dyaWQuZWxlbWVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIHRoaXMuX2dy
aWQuaXRlbXNHcmFwaHNFbGVtZW50KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVy
biB7bnVtYmVyfQorICAgICAqLworICAgIGNsaWVudFdpZHRoOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsaWVudFdpZHRoOworICAgIH0sCisKKyAgICBz
aG93SXRlbXNHcmFwaHNFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9n
cmlkLml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICB9
LAorCisgICAgaGlkZUl0ZW1zR3JhcGhzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3Q2FsY3VsYXRvcn0gY2FsY3VsYXRvcgorICAgICAqLworICAgIHVwZGF0ZURpdmlk
ZXJzOiBmdW5jdGlvbihjYWxjdWxhdG9yKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC51cGRh
dGVEaXZpZGVycyhjYWxjdWxhdG9yKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHshQXJyYXkuPEVsZW1lbnQ+fSBkaXZpZGVycworICAgICAqLworICAgIGFkZEV2ZW50RGl2aWRl
cnM6IGZ1bmN0aW9uKGRpdmlkZXJzKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC5hZGRFdmVu
dERpdmlkZXJzKGRpdmlkZXJzKTsKKyAgICB9LAorCisgICAgcmVtb3ZlRXZlbnREaXZpZGVyczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC5yZW1vdmVFdmVudERpdmlkZXJz
KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P251bWJlcn0gc3RhcnQKKyAg
ICAgKiBAcGFyYW0gez9udW1iZXJ9IGVuZAorICAgICAqLworICAgIHNldFdpbmRvd1Bvc2l0aW9u
OiBmdW5jdGlvbihzdGFydCwgZW5kKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93Ll9zZXRX
aW5kb3dQb3NpdGlvbihzdGFydCwgZW5kKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3dpbmRvdy5yZXNldCgpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgd2luZG93TGVmdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvdy53aW5kb3dMZWZ0Owor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAg
d2luZG93UmlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl93aW5k
b3cud2luZG93UmlnaHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsZWZ0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJpZ2h0CisgICAgICovCisgICAgc2V0V2lu
ZG93OiBmdW5jdGlvbihsZWZ0LCByaWdodCkKKyAgICB7CisgICAgICAgIHRoaXMuX3dpbmRvdy5f
c2V0V2luZG93KGxlZnQsIHJpZ2h0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGV2ZW50VHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9y
LkV2ZW50KX0gbGlzdGVuZXIKKyAgICAgKiBAcGFyYW0ge09iamVjdD19IHRoaXNPYmplY3QKKyAg
ICAgKi8KKyAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVy
LCB0aGlzT2JqZWN0KQorICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCk7CisgICAgfQorfQorCisKK1dlYklu
c3BlY3Rvci5PdmVydmlld0dyaWQuTWluU2VsZWN0YWJsZVNpemUgPSAxMjsKKworV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTY3JvbGxTcGVlZEZhY3RvciA9IC4zOworCitXZWJJbnNw
ZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQgPSAzLjU7IC8vIGhhbGYgcGl4ZWwgYmVj
YXVzZSBvZmZzZXQgdmFsdWVzIGFyZSBub3Qgcm91bmRlZCBidXQgY2VpbGVkCisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBwYXJh
bSB7RWxlbWVudH0gcGFyZW50RWxlbWVudAorICogQHBhcmFtIHtFbGVtZW50fSBkaXZpZGVyc0xh
YmVsQmFyRWxlbWVudAorICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeAorICovCitXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLldpbmRvdyA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIGRpdmlkZXJz
TGFiZWxCYXJFbGVtZW50LCBwcmVmaXgpCit7CisgICAgdGhpcy5fcGFyZW50RWxlbWVudCA9IHBh
cmVudEVsZW1lbnQ7CisgICAgdGhpcy5fZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQgPSBkaXZpZGVy
c0xhYmVsQmFyRWxlbWVudDsKKyAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7CisKKyAgICBXZWJJ
bnNwZWN0b3IuaW5zdGFsbERyYWdIYW5kbGUodGhpcy5fcGFyZW50RWxlbWVudCwgdGhpcy5fc3Rh
cnRXaW5kb3dTZWxlY3RvckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX3dpbmRvd1NlbGVjdG9y
RHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fZW5kV2luZG93U2VsZWN0b3JEcmFnZ2luZy5iaW5k
KHRoaXMpLCAiZXctcmVzaXplIik7CisgICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxl
KHRoaXMuX2RpdmlkZXJzTGFiZWxCYXJFbGVtZW50LCB0aGlzLl9zdGFydFdpbmRvd0RyYWdnaW5n
LmJpbmQodGhpcyksIHRoaXMuX3dpbmRvd0RyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFdp
bmRvd0RyYWdnaW5nLmJpbmQodGhpcyksICJldy1yZXNpemUiKTsKKworICAgIHRoaXMud2luZG93
TGVmdCA9IDAuMDsKKyAgICB0aGlzLndpbmRvd1JpZ2h0ID0gMS4wOworCisgICAgdGhpcy5fcGFy
ZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5fb25Nb3VzZVdo
ZWVsLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuX3BhcmVudEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9yZXNpemVXaW5kb3dNYXhpbXVtLmJpbmQodGhpcyks
IHRydWUpOworCisgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LmNsYXNz
TmFtZSA9IHByZWZpeCArICItb3ZlcnZpZXctd2luZG93IjsKKyAgICBwYXJlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudCk7CisKKyAgICB0aGlzLl9vdmVy
dmlld1dpbmRvd0JvcmRlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudC5jbGFzc05hbWUgPSBwcmVm
aXggKyAiLW92ZXJ2aWV3LXdpbmRvdy1ydWxlcnMiOworICAgIHBhcmVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudCk7CisKKyAgICB2YXIgb3Zl
cnZpZXdEaXZpZGVyc0JhY2tncm91bmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBvdmVydmlld0RpdmlkZXJzQmFja2dyb3VuZC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLW92
ZXJ2aWV3LWRpdmlkZXJzLWJhY2tncm91bmQiOworICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQob3ZlcnZpZXdEaXZpZGVyc0JhY2tncm91bmQpOworCisgICAgdGhpcy5fbGVmdFJlc2l6ZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9sZWZ0UmVz
aXplRWxlbWVudC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLXdpbmRvdy1yZXNpemVyIjsKKyAgICB0
aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gMDsKKyAgICBwYXJlbnRFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRSZXNpemVFbGVtZW50KTsKKyAgICBXZWJJbnNwZWN0b3Iu
aW5zdGFsbERyYWdIYW5kbGUodGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQsIG51bGwsIHRoaXMuX2xl
ZnRSZXNpemVFbGVtZW50RHJhZ2dpbmcuYmluZCh0aGlzKSwgbnVsbCwgImV3LXJlc2l6ZSIpOwor
CisgICAgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9IHByZWZpeCAr
ICItd2luZG93LXJlc2l6ZXIgIiArIHByZWZpeCArICItd2luZG93LXJlc2l6ZXItcmlnaHQiOwor
ICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgcGFyZW50
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQpOworICAgIFdlYklu
c3BlY3Rvci5pbnN0YWxsRHJhZ0hhbmRsZSh0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQsIG51bGws
IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudERyYWdnaW5nLmJpbmQodGhpcyksIG51bGwsICJldy1y
ZXNpemUiKTsKK30KKworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5FdmVudHMgPSB7CisgICAg
V2luZG93Q2hhbmdlZDogIldpbmRvd0NoYW5nZWQiCit9CisKK1dlYkluc3BlY3Rvci5PdmVydmll
d0dyaWQuV2luZG93LnByb3RvdHlwZSA9IHsKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy53aW5kb3dMZWZ0ID0gMC4wOworICAgICAgICB0aGlzLndpbmRvd1JpZ2h0
ID0gMS4wOworCisgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS5sZWZ0
ID0gIjAlIjsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LnN0eWxlLndpZHRo
ID0gIjEwMCUiOworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVtZW50LnN0
eWxlLmxlZnQgPSAiMCUiOworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVt
ZW50LnN0eWxlLnJpZ2h0ID0gIjAlIjsKKyAgICAgICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQu
c3R5bGUubGVmdCA9ICIwJSI7CisgICAgICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5zdHls
ZS5sZWZ0ID0gIjEwMCUiOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50
fSBldmVudAorICAgICAqLworICAgIF9sZWZ0UmVzaXplRWxlbWVudERyYWdnaW5nOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICB0aGlzLl9yZXNpemVXaW5kb3dMZWZ0KGV2ZW50LnBhZ2VY
IC0gdGhpcy5fcGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0KTsKKyAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50
CisgICAgICovCisgICAgX3JpZ2h0UmVzaXplRWxlbWVudERyYWdnaW5nOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICB0aGlzLl9yZXNpemVXaW5kb3dSaWdodChldmVudC5wYWdlWCAtIHRo
aXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdCk7CisgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgX3N0YXJ0V2luZG93U2VsZWN0b3JE
cmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcG9zaXRpb24gPSBl
dmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgdGhp
cy5fb3ZlcnZpZXdXaW5kb3dTZWxlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlk
LldpbmRvd1NlbGVjdG9yKHRoaXMuX3BhcmVudEVsZW1lbnQsIHBvc2l0aW9uLCB0aGlzLl9wcmVm
aXgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfd2luZG93U2VsZWN0b3JEcmFnZ2luZzog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd1NlbGVj
dG9yLl91cGRhdGVQb3NpdGlvbihldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zm
c2V0TGVmdCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2VuZFdpbmRv
d1NlbGVjdG9yRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHdp
bmRvdyA9IHRoaXMuX292ZXJ2aWV3V2luZG93U2VsZWN0b3IuX2Nsb3NlKGV2ZW50LnBhZ2VYIC0g
dGhpcy5fcGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX292
ZXJ2aWV3V2luZG93U2VsZWN0b3I7CisgICAgICAgIGlmICh3aW5kb3cuZW5kID09PSB3aW5kb3cu
c3RhcnQpIHsgLy8gQ2xpY2ssIG5vdCBkcmFnLgorICAgICAgICAgICAgdmFyIG1pZGRsZSA9IHdp
bmRvdy5lbmQ7CisgICAgICAgICAgICB3aW5kb3cuc3RhcnQgPSBNYXRoLm1heCgwLCBtaWRkbGUg
LSBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplIC8gMik7CisgICAg
ICAgICAgICB3aW5kb3cuZW5kID0gTWF0aC5taW4odGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRX
aWR0aCwgbWlkZGxlICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6
ZSAvIDIpOworICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5lbmQgLSB3aW5kb3cuc3RhcnQgPCBX
ZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIHdpbmRvdy5lbmQgPiBXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAgICAg
IHdpbmRvdy5lbmQgPSB3aW5kb3cuc3RhcnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1p
blNlbGVjdGFibGVTaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdpbmRv
dy5zdGFydCA9IHdpbmRvdy5lbmQgLSBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVj
dGFibGVTaXplOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKHdp
bmRvdy5zdGFydCwgd2luZG93LmVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7RXZlbnR9IGV2ZW50CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBf
c3RhcnRXaW5kb3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
d2luZG93TGVmdCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNw
ZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHRoaXMuX2RyYWdPZmZz
ZXQgPSB3aW5kb3dMZWZ0IC0gZXZlbnQucGFnZVg7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAgICAqLworICAg
IF93aW5kb3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgd2lu
ZG93TGVmdCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHZhciBzdGFydCA9IHRoaXMu
X2RyYWdPZmZzZXQgKyBldmVudC5wYWdlWDsKKyAgICAgICAgdGhpcy5fbW92ZVdpbmRvdyhzdGFy
dCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2VuZFdpbmRvd0RyYWdn
aW5nOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9kcmFnT2Zm
c2V0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAg
ICAgKi8KKyAgICBfbW92ZVdpbmRvdzogZnVuY3Rpb24oc3RhcnQpCisgICAgeworICAgICAgICB2
YXIgd2luZG93TGVmdCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHZhciB3aW5kb3dS
aWdodCA9IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9y
Lk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0OworICAgICAgICB2YXIgd2luZG93U2l6ZSA9IHdp
bmRvd1JpZ2h0IC0gd2luZG93TGVmdDsKKyAgICAgICAgdmFyIGVuZCA9IHN0YXJ0ICsgd2luZG93
U2l6ZTsKKworICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgICAgICBzdGFydCA9IDA7
CisgICAgICAgICAgICBlbmQgPSB3aW5kb3dTaXplOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGVuZCA+IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGgpIHsKKyAgICAgICAgICAgIGVu
ZCA9IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICBzdGFydCA9
IGVuZCAtIHdpbmRvd1NpemU7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2V0V2luZG93UG9z
aXRpb24oc3RhcnQsIGVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBzdGFydAorICAgICAqLworICAgIF9yZXNpemVXaW5kb3dMZWZ0OiBmdW5jdGlvbihzdGFy
dCkKKyAgICB7CisgICAgICAgIC8vIEdsdWUgdG8gZWRnZS4KKyAgICAgICAgaWYgKHN0YXJ0IDwg
MTApCisgICAgICAgICAgICBzdGFydCA9IDA7CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID4gdGhp
cy5fcmlnaHRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgLSAgNCkKKyAgICAgICAgICAgIHN0YXJ0
ID0gdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgLSA0OworICAgICAgICB0aGlz
Ll9zZXRXaW5kb3dQb3NpdGlvbihzdGFydCwgbnVsbCk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKKyAgICAgKi8KKyAgICBfcmVzaXplV2luZG93UmlnaHQ6
IGZ1bmN0aW9uKGVuZCkKKyAgICB7CisgICAgICAgIC8vIEdsdWUgdG8gZWRnZS4KKyAgICAgICAg
aWYgKGVuZCA+IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAxMCkKKyAgICAgICAg
ICAgIGVuZCA9IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIGVsc2Ug
aWYgKGVuZCA8IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAgZW5kID0gdGhp
cy5fbGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dy
aWQuTWluU2VsZWN0YWJsZVNpemU7CisgICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKG51
bGwsIGVuZCk7CisgICAgfSwKKworICAgIF9yZXNpemVXaW5kb3dNYXhpbXVtOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbigwLCB0aGlzLl9wYXJlbnRF
bGVtZW50LmNsaWVudFdpZHRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxlZnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmlnaHQKKyAgICAgKi8KKyAgICBf
c2V0V2luZG93OiBmdW5jdGlvbihsZWZ0LCByaWdodCkKKyAgICB7CisgICAgICAgIHZhciBjbGll
bnRXaWR0aCA9IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIHRoaXMu
X3NldFdpbmRvd1Bvc2l0aW9uKGxlZnQgKiBjbGllbnRXaWR0aCwgcmlnaHQgKiBjbGllbnRXaWR0
aCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P251bWJlcn0gc3RhcnQKKyAg
ICAgKiBAcGFyYW0gez9udW1iZXJ9IGVuZAorICAgICAqLworICAgIF9zZXRXaW5kb3dQb3NpdGlv
bjogZnVuY3Rpb24oc3RhcnQsIGVuZCkKKyAgICB7CisgICAgICAgIHZhciBjbGllbnRXaWR0aCA9
IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIGNvbnN0IHJ1bGVyQWRq
dXN0bWVudCA9IDEgLyBjbGllbnRXaWR0aDsKKyAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PT0g
Im51bWJlciIpIHsKKyAgICAgICAgICAgIHRoaXMud2luZG93TGVmdCA9IHN0YXJ0IC8gY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0g
dGhpcy53aW5kb3dMZWZ0ICogMTAwICsgIiUiOworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdX
aW5kb3dFbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLndpbmRvd0xlZnQgKiAxMDAgKyAiJSI7Cisg
ICAgICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVtZW50LnN0eWxlLmxlZnQg
PSAodGhpcy53aW5kb3dMZWZ0IC0gcnVsZXJBZGp1c3RtZW50KSAqIDEwMCArICIlIjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodHlwZW9mIGVuZCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IHRoaXMud2luZG93UmlnaHQgPSBlbmQgLyBjbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHRoaXMu
X3JpZ2h0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy53aW5kb3dSaWdodCAqIDEwMCAr
ICIlIjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0VsZW1lbnQuc3R5
bGUud2lkdGggPSAodGhpcy53aW5kb3dSaWdodCAtIHRoaXMud2luZG93TGVmdCkgKiAxMDAgKyAi
JSI7CisgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93Qm9yZGVyc0VsZW1lbnQuc3R5bGUucmln
aHQgPSAoMSAtIHRoaXMud2luZG93UmlnaHQgKyAyICogcnVsZXJBZGp1c3RtZW50KSAqIDEwMCAr
ICIlIjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
Lk92ZXJ2aWV3R3JpZC5FdmVudHMuV2luZG93Q2hhbmdlZCk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX29uTW91c2VXaGVlbDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBjb25zdCB6b29tRmFjdG9yID0gMS4xOwor
ICAgICAgICBjb25zdCBtb3VzZVdoZWVsWm9vbVNwZWVkID0gMSAvIDEyMDsKKworICAgICAgICBp
ZiAodHlwZW9mIGV2ZW50LndoZWVsRGVsdGFZID09PSAibnVtYmVyIiAmJiBldmVudC53aGVlbERl
bHRhWSkgeworICAgICAgICAgICAgdmFyIHJlZmVyZW5jZVBvaW50ID0gZXZlbnQucGFnZVggLSB0
aGlzLl9wYXJlbnRFbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICB0aGlzLl96b29tKE1h
dGgucG93KHpvb21GYWN0b3IsIC1ldmVudC53aGVlbERlbHRhWSAqIG1vdXNlV2hlZWxab29tU3Bl
ZWQpLCByZWZlcmVuY2VQb2ludCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBldmVu
dC53aGVlbERlbHRhWCA9PT0gIm51bWJlciIgJiYgZXZlbnQud2hlZWxEZWx0YVgpIHsKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dMZWZ0ID0gdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVm
dCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuUmVzaXplck9mZnNldDsKKyAgICAgICAgICAg
IHZhciBzdGFydCA9IHdpbmRvd0xlZnQgLSBNYXRoLnJvdW5kKGV2ZW50LndoZWVsRGVsdGFYICog
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTY3JvbGxTcGVlZEZhY3Rvcik7CisgICAg
ICAgICAgICB0aGlzLl9tb3ZlV2luZG93KHN0YXJ0KTsKKyAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IGZhY3RvcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWZlcmVuY2VQb2ludAor
ICAgICAqLworICAgIF96b29tOiBmdW5jdGlvbihmYWN0b3IsIHJlZmVyZW5jZVBvaW50KQorICAg
IHsKKyAgICAgICAgdmFyIGxlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0
ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0OworICAgICAgICB2YXIg
cmlnaHQgPSB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rv
ci5PdmVydmlld0dyaWQuUmVzaXplck9mZnNldDsKKworICAgICAgICB2YXIgZGVsdGEgPSBmYWN0
b3IgKiAocmlnaHQgLSBsZWZ0KTsKKyAgICAgICAgaWYgKGZhY3RvciA8IDEgJiYgZGVsdGEgPCBX
ZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB2YXIgbWF4ID0gdGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0
aDsKKyAgICAgICAgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG1heCAtIGRlbHRhLCByZWZl
cmVuY2VQb2ludCArIChsZWZ0IC0gcmVmZXJlbmNlUG9pbnQpICogZmFjdG9yKSk7CisgICAgICAg
IHJpZ2h0ID0gTWF0aC5taW4obWF4LCBsZWZ0ICsgZGVsdGEpOworICAgICAgICB0aGlzLl9zZXRX
aW5kb3dQb3NpdGlvbihsZWZ0LCByaWdodCk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBwYXJhbSB7c3RyaW5nfSBwcmVmaXgKKyAqLworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5X
aW5kb3dTZWxlY3RvciA9IGZ1bmN0aW9uKHBhcmVudCwgcG9zaXRpb24sIHByZWZpeCkKK3sKKyAg
ICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7CisgICAgdGhpcy5fc3RhcnRQb3NpdGlvbiA9IHBvc2l0
aW9uOworICAgIHRoaXMuX3dpZHRoID0gcGFyZW50Lm9mZnNldFdpZHRoOworICAgIHRoaXMuX3dp
bmRvd1NlbGVjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5f
d2luZG93U2VsZWN0b3IuY2xhc3NOYW1lID0gcHJlZml4ICsgIi13aW5kb3ctc2VsZWN0b3IiOwor
ICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSB0aGlzLl9zdGFydFBvc2l0aW9u
ICsgInB4IjsKKyAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRoaXMuX3dp
ZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICArICJweCI7CisgICAgcGFyZW50LmFwcGVuZENo
aWxkKHRoaXMuX3dpbmRvd1NlbGVjdG9yKTsKK30KKworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZC5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUgPSB7CisgICAgX2NyZWF0ZVNlbGVjdG9yRWxlbWVu
dDogZnVuY3Rpb24ocGFyZW50LCBsZWZ0LCB3aWR0aCwgaGVpZ2h0KQorICAgIHsKKyAgICAgICAg
dmFyIHNlbGVjdG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICBzZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5fcHJlZml4ICsgIi13aW5kb3ct
c2VsZWN0b3IiOworICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAi
cHgiOworICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7
CisgICAgICAgIHNlbGVjdG9yRWxlbWVudC5zdHlsZS50b3AgPSAiMHB4IjsKKyAgICAgICAgc2Vs
ZWN0b3JFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisgICAgICAgIHBhcmVu
dC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOworICAgICAgICByZXR1cm4gc2VsZWN0b3JF
bGVtZW50OworICAgIH0sCisKKyAgICBfY2xvc2U6IGZ1bmN0aW9uKHBvc2l0aW9uKQorICAgIHsK
KyAgICAgICAgcG9zaXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihwb3NpdGlvbiwgdGhpcy5f
d2lkdGgpKTsKKyAgICAgICAgdGhpcy5fd2luZG93U2VsZWN0b3IucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZCh0aGlzLl93aW5kb3dTZWxlY3Rvcik7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFBv
c2l0aW9uIDwgcG9zaXRpb24gPyB7c3RhcnQ6IHRoaXMuX3N0YXJ0UG9zaXRpb24sIGVuZDogcG9z
aXRpb259IDoge3N0YXJ0OiBwb3NpdGlvbiwgZW5kOiB0aGlzLl9zdGFydFBvc2l0aW9ufTsKKyAg
ICB9LAorCisgICAgX3VwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbikKKyAgICB7Cisg
ICAgICAgIHBvc2l0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocG9zaXRpb24sIHRoaXMuX3dp
ZHRoKSk7CisgICAgICAgIGlmIChwb3NpdGlvbiA8IHRoaXMuX3N0YXJ0UG9zaXRpb24pIHsKKyAg
ICAgICAgICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSBwb3NpdGlvbiArICJw
eCI7CisgICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRoaXMu
X3dpZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICJweCI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5sZWZ0ID0gdGhpcy5fc3RhcnRQ
b3NpdGlvbiArICJweCI7CisgICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5y
aWdodCA9IHRoaXMuX3dpZHRoIC0gcG9zaXRpb24gKyAicHgiOworICAgICAgICB9CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGlt
ZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNWU1NGViNTdjNjZkMDJkYTE4ZWMyMzI0ZjBlYjY3
MjVmZWM1NDk0YS4uMmJlNGY0YjhmODEwN2IyMjhlZDU4OWM0NTJiYWFjMzZmYmIyOTY2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2
aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC05OSwxMzYgKzk5LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXdQYW5lID0gZnVuY3Rpb24obW9kZWwpCiAgICAgdGhpcy5fb3ZlcnZpZXdHcmlk
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5FdmVudHMuV2luZG93
Q2hhbmdlZCwgdGhpcy5fb25XaW5kb3dDaGFuZ2VkLCB0aGlzKTsKIH0KIAotLyoqCi0gKiBAY29u
c3RydWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXgKLSAqLwotV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3R3JpZCA9IGZ1bmN0aW9uKHByZWZpeCkKLXsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0g
ImZpbGwiOwotICAgIHRoaXMuZWxlbWVudC5pZCA9IHByZWZpeCArICItb3ZlcnZpZXctY29udGFp
bmVyIjsKLQotICAgIHRoaXMuX2dyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZCgp
OwotICAgIHRoaXMuX2dyaWQuZWxlbWVudC5pZCA9IHByZWZpeCArICItb3ZlcnZpZXctZ3JpZCI7
Ci0gICAgdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQuaWQgPSBwcmVmaXggKyAiLW92ZXJ2
aWV3LXRpbWVsaW5lcyI7Ci0gICAgdGhpcy5fZ3JpZC5zZXRTY3JvbGxBbmREaXZpZGVyVG9wKDAs
IDApOwotCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyaWQuZWxlbWVudCk7
Ci0KLSAgICB0aGlzLl93aW5kb3cgPSBuZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5k
b3codGhpcy5lbGVtZW50LCB0aGlzLl9ncmlkLmRpdmlkZXJzTGFiZWxCYXJFbGVtZW50LCBwcmVm
aXgpOwotfQotCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBp
dGVtc0dyYXBoc0VsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9ncmlkLml0ZW1zR3JhcGhzRWxlbWVudDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHshTm9kZX0gY2hpbGQKLSAgICAgKi8KLSAgICBpbnNlcnRCZWZvcmVJdGVtc0dyYXBoc0Vs
ZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkKQotICAgIHsKLSAgICAgICAgdGhpcy5fZ3JpZC5lbGVtZW50
Lmluc2VydEJlZm9yZShjaGlsZCwgdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Ci0gICAgICovCi0gICAgY2xp
ZW50V2lkdGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQu
Y2xpZW50V2lkdGg7Ci0gICAgfSwKLQotICAgIHNob3dJdGVtc0dyYXBoc0VsZW1lbnQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2dyaWQuaXRlbXNHcmFwaHNFbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgIH0sCi0KLSAgICBoaWRlSXRlbXNHcmFwaHNFbGVt
ZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9ncmlkLml0ZW1zR3JhcGhzRWxl
bWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yfSBjYWxjdWxh
dG9yCi0gICAgICovCi0gICAgdXBkYXRlRGl2aWRlcnM6IGZ1bmN0aW9uKGNhbGN1bGF0b3IpCi0g
ICAgewotICAgICAgICB0aGlzLl9ncmlkLnVwZGF0ZURpdmlkZXJzKGNhbGN1bGF0b3IpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0geyFBcnJheS48RWxlbWVudD59IGRpdmlkZXJz
Ci0gICAgICovCi0gICAgYWRkRXZlbnREaXZpZGVyczogZnVuY3Rpb24oZGl2aWRlcnMpCi0gICAg
ewotICAgICAgICB0aGlzLl9ncmlkLmFkZEV2ZW50RGl2aWRlcnMoZGl2aWRlcnMpOwotICAgIH0s
Ci0KLSAgICByZW1vdmVFdmVudERpdmlkZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLl9ncmlkLnJlbW92ZUV2ZW50RGl2aWRlcnMoKTsKLSAgICB9LAotICAgIAotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7P251bWJlcn0gc3RhcnQKLSAgICAgKiBAcGFyYW0gez9udW1iZXJ9IGVu
ZAotICAgICAqLwotICAgIHNldFdpbmRvd1Bvc2l0aW9uOiBmdW5jdGlvbihzdGFydCwgZW5kKQot
ICAgIHsKLSAgICAgICAgdGhpcy5fd2luZG93Ll9zZXRXaW5kb3dQb3NpdGlvbihzdGFydCwgZW5k
KTsKLSAgICB9LAotCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3dpbmRvdy5yZXNldCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtudW1i
ZXJ9Ci0gICAgICovCi0gICAgd2luZG93TGVmdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3dpbmRvdy53aW5kb3dMZWZ0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9Ci0gICAgICovCi0gICAgd2luZG93UmlnaHQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl93aW5kb3cud2luZG93UmlnaHQ7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0Ci0gICAgICogQHBhcmFtIHtu
dW1iZXJ9IHJpZ2h0Ci0gICAgICovCi0gICAgc2V0V2luZG93OiBmdW5jdGlvbihsZWZ0LCByaWdo
dCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3dpbmRvdy5fc2V0V2luZG93KGxlZnQsIHJpZ2h0KTsK
LSAgICB9LAotICAgIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUK
LSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5FdmVudCl9IGxpc3RlbmVyCi0g
ICAgICogQHBhcmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0Ci0gICAgICovCi0gICAgYWRkRXZlbnRM
aXN0ZW5lcjogZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHRoaXNPYmplY3QpOwotICAgIH0KLX0KLQotCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlk
Lk1pblNlbGVjdGFibGVTaXplID0gMTI7Ci0KLVdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2lu
ZG93U2Nyb2xsU3BlZWRGYWN0b3IgPSAuMzsKLQotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5S
ZXNpemVyT2Zmc2V0ID0gMy41OyAvLyBoYWxmIHBpeGVsIGJlY2F1c2Ugb2Zmc2V0IHZhbHVlcyBh
cmUgbm90IHJvdW5kZWQgYnV0IGNlaWxlZAotCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUuTW9kZSA9IHsKICAgICBFdmVudHM6ICJFdmVudHMiLAogICAgIEZyYW1lczogIkZyYW1l
cyIsCkBAIC00NjksMjg2ICszMzksNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1Bh
bmUucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5PYmplY3R9Ci0gKiBAcGFyYW0ge0VsZW1lbnR9IHBhcmVudEVsZW1lbnQKLSAq
IEBwYXJhbSB7RWxlbWVudH0gZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQKLSAqIEBwYXJhbSB7c3Ry
aW5nfSBwcmVmaXgKLSAqLwotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cgPSBmdW5j
dGlvbihwYXJlbnRFbGVtZW50LCBkaXZpZGVyc0xhYmVsQmFyRWxlbWVudCwgcHJlZml4KQotewot
ICAgIHRoaXMuX3BhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50OwotICAgIHRoaXMuX2Rpdmlk
ZXJzTGFiZWxCYXJFbGVtZW50ID0gZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQ7Ci0gICAgdGhpcy5f
cHJlZml4ID0gcHJlZml4OwotCi0gICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRo
aXMuX3BhcmVudEVsZW1lbnQsIHRoaXMuX3N0YXJ0V2luZG93U2VsZWN0b3JEcmFnZ2luZy5iaW5k
KHRoaXMpLCB0aGlzLl93aW5kb3dTZWxlY3RvckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2Vu
ZFdpbmRvd1NlbGVjdG9yRHJhZ2dpbmcuYmluZCh0aGlzKSwgImV3LXJlc2l6ZSIpOwotICAgIFdl
Ykluc3BlY3Rvci5pbnN0YWxsRHJhZ0hhbmRsZSh0aGlzLl9kaXZpZGVyc0xhYmVsQmFyRWxlbWVu
dCwgdGhpcy5fc3RhcnRXaW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMpLCB0aGlzLl93aW5kb3dEcmFn
Z2luZy5iaW5kKHRoaXMpLCB0aGlzLl9lbmRXaW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMpLCAiZXct
cmVzaXplIik7Ci0KLSAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7Ci0gICAgdGhpcy53aW5kb3dS
aWdodCA9IDEuMDsKLQotICAgIHRoaXMuX3BhcmVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V3aGVlbCIsIHRoaXMuX29uTW91c2VXaGVlbC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB0
aGlzLl9wYXJlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fcmVz
aXplV2luZG93TWF4aW11bS5iaW5kKHRoaXMpLCB0cnVlKTsKLQotICAgIHRoaXMuX292ZXJ2aWV3
V2luZG93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X292ZXJ2aWV3V2luZG93RWxlbWVudC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLW92ZXJ2aWV3LXdp
bmRvdyI7Ci0gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vdmVydmlld1dpbmRv
d0VsZW1lbnQpOwotCi0gICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX292ZXJ2aWV3V2luZG93Qm9y
ZGVyc0VsZW1lbnQuY2xhc3NOYW1lID0gcHJlZml4ICsgIi1vdmVydmlldy13aW5kb3ctcnVsZXJz
IjsKLSAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3V2luZG93Qm9y
ZGVyc0VsZW1lbnQpOwotCi0gICAgdmFyIG92ZXJ2aWV3RGl2aWRlcnNCYWNrZ3JvdW5kID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgb3ZlcnZpZXdEaXZpZGVyc0JhY2tncm91
bmQuY2xhc3NOYW1lID0gcHJlZml4ICsgIi1vdmVydmlldy1kaXZpZGVycy1iYWNrZ3JvdW5kIjsK
LSAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG92ZXJ2aWV3RGl2aWRlcnNCYWNrZ3JvdW5k
KTsKLQotICAgIHRoaXMuX2xlZnRSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0gcHJlZml4
ICsgIi13aW5kb3ctcmVzaXplciI7Ci0gICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQuc3R5bGUu
bGVmdCA9IDA7Ci0gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0UmVzaXpl
RWxlbWVudCk7Ci0gICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRoaXMuX2xlZnRS
ZXNpemVFbGVtZW50LCBudWxsLCB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudERyYWdnaW5nLmJpbmQo
dGhpcyksIG51bGwsICJldy1yZXNpemUiKTsKLQotICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3JpZ2h0UmVzaXpl
RWxlbWVudC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLXdpbmRvdy1yZXNpemVyICIgKyBwcmVmaXgg
KyAiLXdpbmRvdy1yZXNpemVyLXJpZ2h0IjsKLSAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQu
c3R5bGUucmlnaHQgPSAwOwotICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmln
aHRSZXNpemVFbGVtZW50KTsKLSAgICBXZWJJbnNwZWN0b3IuaW5zdGFsbERyYWdIYW5kbGUodGhp
cy5fcmlnaHRSZXNpemVFbGVtZW50LCBudWxsLCB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnREcmFn
Z2luZy5iaW5kKHRoaXMpLCBudWxsLCAiZXctcmVzaXplIik7Ci19Ci0KLVdlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQuRXZlbnRzID0gewotICAgIFdpbmRvd0NoYW5nZWQ6ICJXaW5kb3dDaGFuZ2Vk
IgotfQotCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90b3R5cGUgPSB7Ci0g
ICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMud2luZG93TGVmdCA9IDAu
MDsKLSAgICAgICAgdGhpcy53aW5kb3dSaWdodCA9IDEuMDsKLQotICAgICAgICB0aGlzLl9vdmVy
dmlld1dpbmRvd0VsZW1lbnQuc3R5bGUubGVmdCA9ICIwJSI7Ci0gICAgICAgIHRoaXMuX292ZXJ2
aWV3V2luZG93RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKLSAgICAgICAgdGhpcy5fb3Zl
cnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudC5zdHlsZS5sZWZ0ID0gIjAlIjsKLSAgICAgICAgdGhp
cy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudC5zdHlsZS5yaWdodCA9ICIwJSI7Ci0gICAg
ICAgIHRoaXMuX2xlZnRSZXNpemVFbGVtZW50LnN0eWxlLmxlZnQgPSAiMCUiOwotICAgICAgICB0
aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICIxMDAlIjsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBfbGVmdFJl
c2l6ZUVsZW1lbnREcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgdGhpcy5f
cmVzaXplV2luZG93TGVmdChldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0
TGVmdCk7Ci0gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqLwotICAgIF9yaWdodFJlc2l6ZUVs
ZW1lbnREcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgdGhpcy5fcmVzaXpl
V2luZG93UmlnaHQoZXZlbnQucGFnZVggLSB0aGlzLl9wYXJlbnRFbGVtZW50Lm9mZnNldExlZnQp
OwotICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAq
LwotICAgIF9zdGFydFdpbmRvd1NlbGVjdG9yRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIHBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLl9wYXJlbnRFbGVt
ZW50Lm9mZnNldExlZnQ7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93U2VsZWN0b3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rvcih0aGlzLl9wYXJlbnRF
bGVtZW50LCBwb3NpdGlvbiwgdGhpcy5fcHJlZml4KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50Ci0gICAgICovCi0g
ICAgX3dpbmRvd1NlbGVjdG9yRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dTZWxlY3Rvci5fdXBkYXRlUG9zaXRpb24oZXZlbnQucGFn
ZVggLSB0aGlzLl9wYXJlbnRFbGVtZW50Lm9mZnNldExlZnQpOwotICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBl
dmVudAotICAgICAqLwotICAgIF9lbmRXaW5kb3dTZWxlY3RvckRyYWdnaW5nOiBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIHZhciB3aW5kb3cgPSB0aGlzLl9vdmVydmlld1dpbmRvd1Nl
bGVjdG9yLl9jbG9zZShldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVm
dCk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9vdmVydmlld1dpbmRvd1NlbGVjdG9yOwotICAgICAg
ICBpZiAod2luZG93LmVuZCA9PT0gd2luZG93LnN0YXJ0KSB7IC8vIENsaWNrLCBub3QgZHJhZy4K
LSAgICAgICAgICAgIHZhciBtaWRkbGUgPSB3aW5kb3cuZW5kOwotICAgICAgICAgICAgd2luZG93
LnN0YXJ0ID0gTWF0aC5tYXgoMCwgbWlkZGxlIC0gV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5N
aW5TZWxlY3RhYmxlU2l6ZSAvIDIpOwotICAgICAgICAgICAgd2luZG93LmVuZCA9IE1hdGgubWlu
KHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGgsIG1pZGRsZSArIFdlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQuTWluU2VsZWN0YWJsZVNpemUgLyAyKTsKLSAgICAgICAgfSBlbHNlIGlmICh3
aW5kb3cuZW5kIC0gd2luZG93LnN0YXJ0IDwgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5T
ZWxlY3RhYmxlU2l6ZSkgewotICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudEVsZW1lbnQuY2xp
ZW50V2lkdGggLSB3aW5kb3cuZW5kID4gV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxl
Y3RhYmxlU2l6ZSkKLSAgICAgICAgICAgICAgICB3aW5kb3cuZW5kID0gd2luZG93LnN0YXJ0ICsg
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB3aW5kb3cuc3RhcnQgPSB3aW5kb3cuZW5kIC0gV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZTsKLSAgICAgICAgfQotICAgICAg
ICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbih3aW5kb3cuc3RhcnQsIHdpbmRvdy5lbmQpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgX3N0YXJ0V2luZG93RHJhZ2dpbmc6IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVzaXpl
RWxlbWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zm
c2V0OwotICAgICAgICB0aGlzLl9kcmFnT2Zmc2V0ID0gd2luZG93TGVmdCAtIGV2ZW50LnBhZ2VY
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtFdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBfd2luZG93RHJhZ2dpbmc6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxl
bWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0
OwotICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLl9kcmFnT2Zmc2V0ICsgZXZlbnQucGFnZVg7Ci0g
ICAgICAgIHRoaXMuX21vdmVXaW5kb3coc3RhcnQpOwotICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAot
ICAgICAqLwotICAgIF9lbmRXaW5kb3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICBkZWxldGUgdGhpcy5fZHJhZ09mZnNldDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0Ci0gICAgICovCi0gICAgX21vdmVXaW5kb3c6IGZ1bmN0
aW9uKHN0YXJ0KQotICAgIHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVz
aXplRWxlbWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVy
T2Zmc2V0OwotICAgICAgICB2YXIgd2luZG93UmlnaHQgPSB0aGlzLl9yaWdodFJlc2l6ZUVsZW1l
bnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuUmVzaXplck9mZnNldDsK
LSAgICAgICAgdmFyIHdpbmRvd1NpemUgPSB3aW5kb3dSaWdodCAtIHdpbmRvd0xlZnQ7Ci0gICAg
ICAgIHZhciBlbmQgPSBzdGFydCArIHdpbmRvd1NpemU7Ci0KLSAgICAgICAgaWYgKHN0YXJ0IDwg
MCkgewotICAgICAgICAgICAgc3RhcnQgPSAwOwotICAgICAgICAgICAgZW5kID0gd2luZG93U2l6
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlbmQgPiB0aGlzLl9wYXJlbnRFbGVtZW50LmNs
aWVudFdpZHRoKSB7Ci0gICAgICAgICAgICBlbmQgPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVu
dFdpZHRoOwotICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSB3aW5kb3dTaXplOwotICAgICAgICB9
Ci0gICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKHN0YXJ0LCBlbmQpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKLSAgICAgKi8KLSAgICBfcmVz
aXplV2luZG93TGVmdDogZnVuY3Rpb24oc3RhcnQpCi0gICAgewotICAgICAgICAvLyBHbHVlIHRv
IGVkZ2UuCi0gICAgICAgIGlmIChzdGFydCA8IDEwKQotICAgICAgICAgICAgc3RhcnQgPSAwOwot
ICAgICAgICBlbHNlIGlmIChzdGFydCA+IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRM
ZWZ0IC0gIDQpCi0gICAgICAgICAgICBzdGFydCA9IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5v
ZmZzZXRMZWZ0IC0gNDsKLSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24oc3RhcnQsIG51
bGwpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kCi0gICAg
ICovCi0gICAgX3Jlc2l6ZVdpbmRvd1JpZ2h0OiBmdW5jdGlvbihlbmQpCi0gICAgewotICAgICAg
ICAvLyBHbHVlIHRvIGVkZ2UuCi0gICAgICAgIGlmIChlbmQgPiB0aGlzLl9wYXJlbnRFbGVtZW50
LmNsaWVudFdpZHRoIC0gMTApCi0gICAgICAgICAgICBlbmQgPSB0aGlzLl9wYXJlbnRFbGVtZW50
LmNsaWVudFdpZHRoOwotICAgICAgICBlbHNlIGlmIChlbmQgPCB0aGlzLl9sZWZ0UmVzaXplRWxl
bWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxl
U2l6ZSkKLSAgICAgICAgICAgIGVuZCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExl
ZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplOwotICAgICAg
ICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbihudWxsLCBlbmQpOwotICAgIH0sCi0KLSAgICBfcmVz
aXplV2luZG93TWF4aW11bTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0V2lu
ZG93UG9zaXRpb24oMCwgdGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCk7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0Ci0gICAgICogQHBhcmFtIHtu
dW1iZXJ9IHJpZ2h0Ci0gICAgICovCi0gICAgX3NldFdpbmRvdzogZnVuY3Rpb24obGVmdCwgcmln
aHQpCi0gICAgewotICAgICAgICB2YXIgY2xpZW50V2lkdGggPSB0aGlzLl9wYXJlbnRFbGVtZW50
LmNsaWVudFdpZHRoOwotICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbihsZWZ0ICogY2xp
ZW50V2lkdGgsIHJpZ2h0ICogY2xpZW50V2lkdGgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0gez9udW1iZXJ9IHN0YXJ0Ci0gICAgICogQHBhcmFtIHs/bnVtYmVyfSBlbmQKLSAg
ICAgKi8KLSAgICBfc2V0V2luZG93UG9zaXRpb246IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCi0gICAg
ewotICAgICAgICB2YXIgY2xpZW50V2lkdGggPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdp
ZHRoOwotICAgICAgICBjb25zdCBydWxlckFkanVzdG1lbnQgPSAxIC8gY2xpZW50V2lkdGg7Ci0g
ICAgICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aGlz
LndpbmRvd0xlZnQgPSBzdGFydCAvIGNsaWVudFdpZHRoOwotICAgICAgICAgICAgdGhpcy5fbGVm
dFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMud2luZG93TGVmdCAqIDEwMCArICIlIjsK
LSAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhp
cy53aW5kb3dMZWZ0ICogMTAwICsgIiUiOwotICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5k
b3dCb3JkZXJzRWxlbWVudC5zdHlsZS5sZWZ0ID0gKHRoaXMud2luZG93TGVmdCAtIHJ1bGVyQWRq
dXN0bWVudCkgKiAxMDAgKyAiJSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHR5cGVvZiBlbmQg
PT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aGlzLndpbmRvd1JpZ2h0ID0gZW5kIC8gY2xp
ZW50V2lkdGg7Ci0gICAgICAgICAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVm
dCA9IHRoaXMud2luZG93UmlnaHQgKiAxMDAgKyAiJSI7Ci0gICAgICAgIH0KLSAgICAgICAgdGhp
cy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LnN0eWxlLndpZHRoID0gKHRoaXMud2luZG93UmlnaHQg
LSB0aGlzLndpbmRvd0xlZnQpICogMTAwICsgIiUiOwotICAgICAgICB0aGlzLl9vdmVydmlld1dp
bmRvd0JvcmRlcnNFbGVtZW50LnN0eWxlLnJpZ2h0ID0gKDEgLSB0aGlzLndpbmRvd1JpZ2h0ICsg
MiAqIHJ1bGVyQWRqdXN0bWVudCkgKiAxMDAgKyAiJSI7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuRXZlbnRzLldpbmRvd0No
YW5nZWQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAot
ICAgICAqLwotICAgIF9vbk1vdXNlV2hlZWw6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgY29uc3Qgem9vbUZhY3RvciA9IDEuMTsKLSAgICAgICAgY29uc3QgbW91c2VXaGVlbFpvb21T
cGVlZCA9IDEgLyAxMjA7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBldmVudC53aGVlbERlbHRhWSA9
PT0gIm51bWJlciIgJiYgZXZlbnQud2hlZWxEZWx0YVkpIHsKLSAgICAgICAgICAgIHZhciByZWZl
cmVuY2VQb2ludCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fcGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0
OwotICAgICAgICAgICAgdGhpcy5fem9vbShNYXRoLnBvdyh6b29tRmFjdG9yLCAtZXZlbnQud2hl
ZWxEZWx0YVkgKiBtb3VzZVdoZWVsWm9vbVNwZWVkKSwgcmVmZXJlbmNlUG9pbnQpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICh0eXBlb2YgZXZlbnQud2hlZWxEZWx0YVggPT09ICJudW1iZXIiICYm
IGV2ZW50LndoZWVsRGVsdGFYKSB7Ci0gICAgICAgICAgICB2YXIgd2luZG93TGVmdCA9IHRoaXMu
X2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlk
LlJlc2l6ZXJPZmZzZXQ7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSB3aW5kb3dMZWZ0IC0gTWF0
aC5yb3VuZChldmVudC53aGVlbERlbHRhWCAqIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2lu
ZG93U2Nyb2xsU3BlZWRGYWN0b3IpOwotICAgICAgICAgICAgdGhpcy5fbW92ZVdpbmRvdyhzdGFy
dCk7Ci0gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICB9Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmYWN0b3IKLSAgICAgKiBAcGFy
YW0ge251bWJlcn0gcmVmZXJlbmNlUG9pbnQKLSAgICAgKi8KLSAgICBfem9vbTogZnVuY3Rpb24o
ZmFjdG9yLCByZWZlcmVuY2VQb2ludCkKLSAgICB7Ci0gICAgICAgIHZhciBsZWZ0ID0gdGhpcy5f
bGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQu
UmVzaXplck9mZnNldDsKLSAgICAgICAgdmFyIHJpZ2h0ID0gdGhpcy5fcmlnaHRSZXNpemVFbGVt
ZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7
Ci0KLSAgICAgICAgdmFyIGRlbHRhID0gZmFjdG9yICogKHJpZ2h0IC0gbGVmdCk7Ci0gICAgICAg
IGlmIChmYWN0b3IgPCAxICYmIGRlbHRhIDwgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5T
ZWxlY3RhYmxlU2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIG1heCA9IHRo
aXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7Ci0gICAgICAgIGxlZnQgPSBNYXRoLm1heCgw
LCBNYXRoLm1pbihtYXggLSBkZWx0YSwgcmVmZXJlbmNlUG9pbnQgKyAobGVmdCAtIHJlZmVyZW5j
ZVBvaW50KSAqIGZhY3RvcikpOwotICAgICAgICByaWdodCA9IE1hdGgubWluKG1heCwgbGVmdCAr
IGRlbHRhKTsKLSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24obGVmdCwgcmlnaHQpOwot
ICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCi19
Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3Q2FsY3VsYXRvciA9IGZ1bmN0aW9uKCkKIHsKQEAgLTgxOCw1NSArNDA4LDYgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogLyoqCiAg
KiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXgKLSAqLwotV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3RvciA9IGZ1bmN0aW9uKHBhcmVudCwgcG9zaXRp
b24sIHByZWZpeCkKLXsKLSAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7Ci0gICAgdGhpcy5fc3Rh
cnRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIHRoaXMuX3dpZHRoID0gcGFyZW50Lm9mZnNldFdp
ZHRoOwotICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdGhpcy5fd2luZG93U2VsZWN0b3IuY2xhc3NOYW1lID0gcHJlZml4ICsgIi13
aW5kb3ctc2VsZWN0b3IiOwotICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSB0
aGlzLl9zdGFydFBvc2l0aW9uICsgInB4IjsKLSAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHls
ZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICArICJweCI7Ci0g
ICAgcGFyZW50LmFwcGVuZENoaWxkKHRoaXMuX3dpbmRvd1NlbGVjdG9yKTsKLX0KLQotV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUgPSB7Ci0gICAgX2Ny
ZWF0ZVNlbGVjdG9yRWxlbWVudDogZnVuY3Rpb24ocGFyZW50LCBsZWZ0LCB3aWR0aCwgaGVpZ2h0
KQotICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5f
cHJlZml4ICsgIi13aW5kb3ctc2VsZWN0b3IiOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5
bGUubGVmdCA9IGxlZnQgKyAicHgiOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUud2lk
dGggPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHNlbGVjdG9yRWxlbWVudC5zdHlsZS50b3AgPSAi
MHB4IjsKLSAgICAgICAgc2VsZWN0b3JFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJw
eCI7Ci0gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOwotICAgICAg
ICByZXR1cm4gc2VsZWN0b3JFbGVtZW50OwotICAgIH0sCi0KLSAgICBfY2xvc2U6IGZ1bmN0aW9u
KHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgcG9zaXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1p
bihwb3NpdGlvbiwgdGhpcy5fd2lkdGgpKTsKLSAgICAgICAgdGhpcy5fd2luZG93U2VsZWN0b3Iu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl93aW5kb3dTZWxlY3Rvcik7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9zdGFydFBvc2l0aW9uIDwgcG9zaXRpb24gPyB7c3RhcnQ6IHRoaXMuX3N0YXJ0
UG9zaXRpb24sIGVuZDogcG9zaXRpb259IDoge3N0YXJ0OiBwb3NpdGlvbiwgZW5kOiB0aGlzLl9z
dGFydFBvc2l0aW9ufTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbihw
b3NpdGlvbikKLSAgICB7Ci0gICAgICAgIHBvc2l0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4o
cG9zaXRpb24sIHRoaXMuX3dpZHRoKSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiA8IHRoaXMuX3N0
YXJ0UG9zaXRpb24pIHsKLSAgICAgICAgICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxl
ZnQgPSBwb3NpdGlvbiArICJweCI7Ci0gICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5z
dHlsZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICJweCI7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5s
ZWZ0ID0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICJweCI7Ci0gICAgICAgICAgICB0aGlzLl93aW5k
b3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0gcG9zaXRpb24gKyAicHgiOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbH0gbW9kZWwKICAqLwogV2ViSW5zcGVjdG9yLkhlYXBH
cmFwaCA9IGZ1bmN0aW9uKG1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCmluZGV4IGNiMmFkZDgxM2U1ZGMwNzFmZTI0YTQ2ZmIzNGQ3MGVjYzFk
OGI2MjQuLmVkNThjNTdlNWU5YjU5MDliNzNhNTNjNTEwNjlmMTgyZmEzMjY2ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTEzNiw2ICsx
MzYsNyBAQAogICAgIDxmaWxlPk9iamVjdFBvcG92ZXJIZWxwZXIuanM8L2ZpbGU+CiAgICAgPGZp
bGU+T2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanM8L2ZpbGU+CiAgICAgPGZpbGU+T3ZlcnJpZGVz
Vmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5PdmVydmlld0dyaWQuanM8L2ZpbGU+CiAgICAgPGZp
bGU+UGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+UGFuZWxFbmFibGVyVmlldy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5QYXJzZWRVUkwuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBkOWNlOThiYmNkNjJiMDhiYmFh
YWQ1MDE2MThmNmYzYzNiZThiY2U2Li5lOTMwMjU1MzA2NDE3MTNjOTJjZjM4MWViNDNjNmFmZTMy
Y2M2YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKQEAgLTcwLDYgKzcwLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBZHZhbmNlZFNlYXJjaENvbnRyb2xs
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlRpbWVsaW5lR3JpZC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iT3ZlcnZpZXdHcmlkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUmVxdWVz
dC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193821</attachid>
            <date>2013-03-19 07:14:34 -0700</date>
            <delta_ts>2013-03-19 07:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112693-20130319181024.patch</filename>
            <type>text/plain</type>
            <size>43156</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA3NjM4MmY4NjE4OTJl
OTI4MDA0OWE3ZThiNjZhYzNlYTQ5MGFkMS4uMDljMmRjNGQ1YjBhNTM3MTAyOWIxYzYxZmJlMDA4
ODZkZjI0NTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEzLTAzLTE5ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtb3ZlIE92ZXJ2aWV3R3JpZCBhbmQgT3ZlcnZpZXdXaW5kb3cgaW50byBzZXBhcmF0ZSBm
aWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQg
aXMgdGhlIHRoaXJkIHBhdGNoIGZvciB0aGUgbWV0YSBidWcgIldlYiBJbnNwZWN0b3I6IG1ldGEg
YnVnOiBleHRyYWN0IE92ZXJ2aWV3R3JpZCBmcm9tIFRpbWVsaW5lT3ZlcnZpZXdQYW5lIgorICAg
ICAgICBJdCBqdXN0IG1vdmVzIHRoZSBPdmVydmlld0dyaWQgYW5kIHRoZSByZWxhdGVkIGNsYXNz
ZXMgaW50byBpdHMgb3duIGZpbGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT3ZlcnZpZXdHcmlkLmpzOiBBZGRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUuaXRlbXNHcmFwaHNFbGVtZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQucHJvdG90eXBlLmluc2VydEJlZm9yZUl0ZW1zR3Jh
cGhzRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3RvdHlw
ZS5jbGllbnRXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3Rv
dHlwZS5zaG93SXRlbXNHcmFwaHNFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVy
dmlld0dyaWQucHJvdG90eXBlLmhpZGVJdGVtc0dyYXBoc0VsZW1lbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUudXBkYXRlRGl2aWRlcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5wcm90b3R5cGUuYWRkRXZlbnREaXZpZGVycyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3RvdHlwZS5yZW1vdmVFdmVu
dERpdmlkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQucHJvdG90eXBl
LnNldFdpbmRvd1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQu
cHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQucHJv
dG90eXBlLndpbmRvd0xlZnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5w
cm90b3R5cGUud2luZG93UmlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZC5wcm90b3R5cGUuc2V0V2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dy
aWQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3R3JpZC5XaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5X
aW5kb3cucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dy
aWQuV2luZG93LnByb3RvdHlwZS5fbGVmdFJlc2l6ZUVsZW1lbnREcmFnZ2luZyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90b3R5cGUuX3JpZ2h0UmVzaXpl
RWxlbWVudERyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2lu
ZG93LnByb3RvdHlwZS5fc3RhcnRXaW5kb3dTZWxlY3RvckRyYWdnaW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fd2luZG93U2VsZWN0b3JE
cmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90
b3R5cGUuX2VuZFdpbmRvd1NlbGVjdG9yRHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLl9zdGFydFdpbmRvd0RyYWdnaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fd2luZG93
RHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJv
dG90eXBlLl9lbmRXaW5kb3dEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdHcmlkLldpbmRvdy5wcm90b3R5cGUuX21vdmVXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLl9yZXNpemVXaW5kb3dMZWZ0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fcmVzaXpl
V2luZG93UmlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cu
cHJvdG90eXBlLl9yZXNpemVXaW5kb3dNYXhpbXVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fc2V0V2luZG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93LnByb3RvdHlwZS5fc2V0V2luZG93UG9zaXRpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cucHJvdG90eXBlLl9v
bk1vdXNlV2hlZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cu
cHJvdG90eXBlLl96b29tKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2lu
ZG93U2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dT
ZWxlY3Rvci5wcm90b3R5cGUuX2NyZWF0ZVNlbGVjdG9yRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvd1NlbGVjdG9yLnByb3RvdHlwZS5fY2xvc2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rvci5wcm90b3R5
cGUuX3VwZGF0ZVBvc2l0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lT3ZlcnZpZXdQYW5lLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCisy
MDEzLTAzLTE5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgVGltZWxpbmVPdmVydmlld1dpbmRvdyB0byBPdmVy
dmlld0dyaWQuV2luZG93IGFuZCBmaXggbmFtZXMgZm9yIGNvbnN0YW50cy4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjY4NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNGViOWI4NTk0NDJiNGI1OTRkMjE3ZDFiZDdhZjE1OTUxY2Y2MTMxZC4uMTVlYjQx
MTliMDI0ZTU4ZWJiNzY5MDM4YzBhMWY5ZTA1OTdmYWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NTM4Niw2ICs1Mzg2LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dFBvcG92ZXJIZWxwZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2Jq
ZWN0UHJvcGVydGllc1NlY3Rpb24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvT3ZlcnJpZGVzVmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9P
dmVydmlld0dyaWQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwu
anMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWxFbmFibGVyVmlldy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9QYXJzZWRVUkwuanMnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhN2M0OTNm
ZDg1ZTMwZWM1NTY5YzZkNzViZWY3MmM2NTRmYTY2MjYyLi5iMGFlYjRlYzNjZmViNjA1NjM0YzI1
YjhmMWYwNGUzY2M1ZmYwMjg4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNzc3MDYsNiArNzc3MDYsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
T3ZlcnZpZXdHcmlkLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxQYW5lbC5qcyIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IGFhZjFlZDJhZGM2ZWNiOGI5ODgzYjljYmM3NmYxYThiZDRiNDIxMmYuLjFiMTFl
YzZkNGZmMzQ2ODM0ZjJhMzQwOWFiNWQ1ZGZkMWFmOWQ3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTM1MjAsNiArMTM1MjAsNyBA
QAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcT2JqZWN0UG9wb3Zl
ckhlbHBlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XE9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcT3ZlcnJpZGVzVmlldy5qcyIgLz4KKyAgICA8Tm9uZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE92ZXJ2aWV3R3JpZC5qcyIgLz4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFBhbmVsLmpzIiAvPgogICAgIDxOb25lIElu
Y2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRccGFuZWxFbmFibGVyVmlldy5jc3MiIC8+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxQYW5lbEVuYWJsZXJWaWV3
LmpzIiAvPgpAQCAtMTM2MzgsNCArMTM2MzksNCBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA5ZGEz
ZjVlNjFmMzMyNDEzZmMzNjU3NDAwZGQ3N2M3Mzc0MzY1MmNlLi5lN2E3YjI4ZmM4OWZkYjJhMTYz
MGI0ZWNiNzQ2ZGRkZjM4NTAwNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xNDg5Myw2ICsxNDg5Myw5
IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxPdmVycmlkZXNW
aWV3LmpzIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yXGZyb250LWVuZDwvRmlsdGVyPgogICAg
IDwvTm9uZT4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE92ZXJ2
aWV3R3JpZC5qcyI+CisgICAgICA8RmlsdGVyPmluc3BlY3Rvclxmcm9udC1lbmQ8L0ZpbHRlcj4K
KyAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxQ
YW5lbC5qcyI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvclxmcm9udC1lbmQ8L0ZpbHRlcj4KICAg
ICA8L05vbmU+CkBAIC0xNTM0NSw0ICsxNTM0OCw0IEBACiAgICAgICA8RmlsdGVyPnJlbmRlcmlu
ZzwvRmlsdGVyPgogICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggM2ZiNDk4YzgyNTNh
ODZmYTkwMzA2YjYwZGNmNDBjOTNmYmNkMTJlNi4uN2UxMGFiYzE0YzAyNGNiNDM0ZGUyNzAzMDU2
NDA0N2U2ZmY0OTMxOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQpAQCAtMTM1LDYgKzEzNSw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAi
SGVscFNjcmVlbi5qcyIsCiAgICAgICAgICAgICAiSW5zcGVjdG9yVmlldy5qcyIsCiAgICAgICAg
ICAgICAiS2V5Ym9hcmRTaG9ydGN1dC5qcyIsCisgICAgICAgICAgICAiT3ZlcnZpZXdHcmlkLmpz
IiwKICAgICAgICAgICAgICJQYW5lbC5qcyIsCiAgICAgICAgICAgICAiUGFuZWxFbmFibGVyVmll
dy5qcyIsCiAgICAgICAgICAgICAiUGxhY2FyZC5qcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL092ZXJ2aWV3R3JpZC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvT3ZlcnZpZXdHcmlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MDc0MmI0
NWZhMWM1Yjg1NjBhZDdhM2Q3N2E3NWJjMmFlMjA1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL092ZXJ2aWV3R3JpZC5qcwpAQCAtMCwwICsx
LDQ4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4Cisg
Ki8KK1dlYkluc3BlY3Rvci5PdmVydmlld0dyaWQgPSBmdW5jdGlvbihwcmVmaXgpCit7CisgICAg
dGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5l
bGVtZW50LmNsYXNzTmFtZSA9ICJmaWxsIjsKKyAgICB0aGlzLmVsZW1lbnQuaWQgPSBwcmVmaXgg
KyAiLW92ZXJ2aWV3LWNvbnRhaW5lciI7CisKKyAgICB0aGlzLl9ncmlkID0gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUdyaWQoKTsKKyAgICB0aGlzLl9ncmlkLmVsZW1lbnQuaWQgPSBwcmVmaXgg
KyAiLW92ZXJ2aWV3LWdyaWQiOworICAgIHRoaXMuX2dyaWQuaXRlbXNHcmFwaHNFbGVtZW50Lmlk
ID0gcHJlZml4ICsgIi1vdmVydmlldy10aW1lbGluZXMiOworICAgIHRoaXMuX2dyaWQuc2V0U2Ny
b2xsQW5kRGl2aWRlclRvcCgwLCAwKTsKKworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9ncmlkLmVsZW1lbnQpOworCisgICAgdGhpcy5fd2luZG93ID0gbmV3IFdlYkluc3BlY3Rv
ci5PdmVydmlld0dyaWQuV2luZG93KHRoaXMuZWxlbWVudCwgdGhpcy5fZ3JpZC5kaXZpZGVyc0xh
YmVsQmFyRWxlbWVudCwgcHJlZml4KTsKK30KKworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5w
cm90b3R5cGUgPSB7CisgICAgaXRlbXNHcmFwaHNFbGVtZW50OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQ7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7IU5vZGV9IGNoaWxkCisgICAgICovCisgICAgaW5zZXJ0
QmVmb3JlSXRlbXNHcmFwaHNFbGVtZW50OiBmdW5jdGlvbihjaGlsZCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2dyaWQuZWxlbWVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIHRoaXMuX2dyaWQuaXRlbXNH
cmFwaHNFbGVtZW50KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGNsaWVudFdpZHRoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5lbGVtZW50LmNsaWVudFdpZHRoOworICAgIH0sCisKKyAgICBzaG93SXRlbXNH
cmFwaHNFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9ncmlkLml0ZW1z
R3JhcGhzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICB9LAorCisgICAg
aGlkZUl0ZW1zR3JhcGhzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5f
Z3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
Q2FsY3VsYXRvcn0gY2FsY3VsYXRvcgorICAgICAqLworICAgIHVwZGF0ZURpdmlkZXJzOiBmdW5j
dGlvbihjYWxjdWxhdG9yKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC51cGRhdGVEaXZpZGVy
cyhjYWxjdWxhdG9yKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHshQXJyYXku
PEVsZW1lbnQ+fSBkaXZpZGVycworICAgICAqLworICAgIGFkZEV2ZW50RGl2aWRlcnM6IGZ1bmN0
aW9uKGRpdmlkZXJzKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC5hZGRFdmVudERpdmlkZXJz
KGRpdmlkZXJzKTsKKyAgICB9LAorCisgICAgcmVtb3ZlRXZlbnREaXZpZGVyczogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3JpZC5yZW1vdmVFdmVudERpdmlkZXJzKCk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P251bWJlcn0gc3RhcnQKKyAgICAgKiBAcGFy
YW0gez9udW1iZXJ9IGVuZAorICAgICAqLworICAgIHNldFdpbmRvd1Bvc2l0aW9uOiBmdW5jdGlv
bihzdGFydCwgZW5kKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93Ll9zZXRXaW5kb3dQb3Np
dGlvbihzdGFydCwgZW5kKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3dpbmRvdy5yZXNldCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgd2luZG93TGVmdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvdy53aW5kb3dMZWZ0OworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCisgICAgd2luZG93Umln
aHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl93aW5kb3cud2luZG93
UmlnaHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0Cisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IHJpZ2h0CisgICAgICovCisgICAgc2V0V2luZG93OiBmdW5j
dGlvbihsZWZ0LCByaWdodCkKKyAgICB7CisgICAgICAgIHRoaXMuX3dpbmRvdy5fc2V0V2luZG93
KGxlZnQsIHJpZ2h0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGV2ZW50VHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkV2ZW50KX0g
bGlzdGVuZXIKKyAgICAgKiBAcGFyYW0ge09iamVjdD19IHRoaXNPYmplY3QKKyAgICAgKi8KKyAg
ICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCk7CisgICAgfQorfQorCisKK1dlYkluc3BlY3Rvci5P
dmVydmlld0dyaWQuTWluU2VsZWN0YWJsZVNpemUgPSAxMjsKKworV2ViSW5zcGVjdG9yLk92ZXJ2
aWV3R3JpZC5XaW5kb3dTY3JvbGxTcGVlZEZhY3RvciA9IC4zOworCitXZWJJbnNwZWN0b3IuT3Zl
cnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQgPSAzLjU7IC8vIGhhbGYgcGl4ZWwgYmVjYXVzZSBvZmZz
ZXQgdmFsdWVzIGFyZSBub3Qgcm91bmRlZCBidXQgY2VpbGVkCisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBwYXJhbSB7RWxlbWVu
dH0gcGFyZW50RWxlbWVudAorICogQHBhcmFtIHtFbGVtZW50fSBkaXZpZGVyc0xhYmVsQmFyRWxl
bWVudAorICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeAorICovCitXZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdHcmlkLldpbmRvdyA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIGRpdmlkZXJzTGFiZWxCYXJF
bGVtZW50LCBwcmVmaXgpCit7CisgICAgdGhpcy5fcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1l
bnQ7CisgICAgdGhpcy5fZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQgPSBkaXZpZGVyc0xhYmVsQmFy
RWxlbWVudDsKKyAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7CisKKyAgICBXZWJJbnNwZWN0b3Iu
aW5zdGFsbERyYWdIYW5kbGUodGhpcy5fcGFyZW50RWxlbWVudCwgdGhpcy5fc3RhcnRXaW5kb3dT
ZWxlY3RvckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX3dpbmRvd1NlbGVjdG9yRHJhZ2dpbmcu
YmluZCh0aGlzKSwgdGhpcy5fZW5kV2luZG93U2VsZWN0b3JEcmFnZ2luZy5iaW5kKHRoaXMpLCAi
ZXctcmVzaXplIik7CisgICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRoaXMuX2Rp
dmlkZXJzTGFiZWxCYXJFbGVtZW50LCB0aGlzLl9zdGFydFdpbmRvd0RyYWdnaW5nLmJpbmQodGhp
cyksIHRoaXMuX3dpbmRvd0RyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFdpbmRvd0RyYWdn
aW5nLmJpbmQodGhpcyksICJldy1yZXNpemUiKTsKKworICAgIHRoaXMud2luZG93TGVmdCA9IDAu
MDsKKyAgICB0aGlzLndpbmRvd1JpZ2h0ID0gMS4wOworCisgICAgdGhpcy5fcGFyZW50RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgdGhpcy5fb25Nb3VzZVdoZWVsLmJpbmQo
dGhpcyksIHRydWUpOworICAgIHRoaXMuX3BhcmVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
ZGJsY2xpY2siLCB0aGlzLl9yZXNpemVXaW5kb3dNYXhpbXVtLmJpbmQodGhpcyksIHRydWUpOwor
CisgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LmNsYXNzTmFtZSA9IHBy
ZWZpeCArICItb3ZlcnZpZXctd2luZG93IjsKKyAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudCk7CisKKyAgICB0aGlzLl9vdmVydmlld1dpbmRv
d0JvcmRlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhp
cy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLW92
ZXJ2aWV3LXdpbmRvdy1ydWxlcnMiOworICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudCk7CisKKyAgICB2YXIgb3ZlcnZpZXdEaXZp
ZGVyc0JhY2tncm91bmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBvdmVy
dmlld0RpdmlkZXJzQmFja2dyb3VuZC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLW92ZXJ2aWV3LWRp
dmlkZXJzLWJhY2tncm91bmQiOworICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQob3ZlcnZp
ZXdEaXZpZGVyc0JhY2tncm91bmQpOworCisgICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVu
dC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLXdpbmRvdy1yZXNpemVyIjsKKyAgICB0aGlzLl9sZWZ0
UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gMDsKKyAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2xlZnRSZXNpemVFbGVtZW50KTsKKyAgICBXZWJJbnNwZWN0b3IuaW5zdGFsbERy
YWdIYW5kbGUodGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQsIG51bGwsIHRoaXMuX2xlZnRSZXNpemVF
bGVtZW50RHJhZ2dpbmcuYmluZCh0aGlzKSwgbnVsbCwgImV3LXJlc2l6ZSIpOworCisgICAgdGhp
cy5fcmlnaHRSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9IHByZWZpeCArICItd2luZG93
LXJlc2l6ZXIgIiArIHByZWZpeCArICItd2luZG93LXJlc2l6ZXItcmlnaHQiOworICAgIHRoaXMu
X3JpZ2h0UmVzaXplRWxlbWVudC5zdHlsZS5yaWdodCA9IDA7CisgICAgcGFyZW50RWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQpOworICAgIFdlYkluc3BlY3Rvci5p
bnN0YWxsRHJhZ0hhbmRsZSh0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQsIG51bGwsIHRoaXMuX3Jp
Z2h0UmVzaXplRWxlbWVudERyYWdnaW5nLmJpbmQodGhpcyksIG51bGwsICJldy1yZXNpemUiKTsK
K30KKworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5FdmVudHMgPSB7CisgICAgV2luZG93Q2hh
bmdlZDogIldpbmRvd0NoYW5nZWQiCit9CisKK1dlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2lu
ZG93LnByb3RvdHlwZSA9IHsKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy53aW5kb3dMZWZ0ID0gMC4wOworICAgICAgICB0aGlzLndpbmRvd1JpZ2h0ID0gMS4wOwor
CisgICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS5sZWZ0ID0gIjAlIjsK
KyAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUi
OworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVtZW50LnN0eWxlLmxlZnQg
PSAiMCUiOworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVtZW50LnN0eWxl
LnJpZ2h0ID0gIjAlIjsKKyAgICAgICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVm
dCA9ICIwJSI7CisgICAgICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0g
IjEwMCUiOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAor
ICAgICAqLworICAgIF9sZWZ0UmVzaXplRWxlbWVudERyYWdnaW5nOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICB0aGlzLl9yZXNpemVXaW5kb3dMZWZ0KGV2ZW50LnBhZ2VYIC0gdGhpcy5f
cGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0KTsKKyAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICov
CisgICAgX3JpZ2h0UmVzaXplRWxlbWVudERyYWdnaW5nOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICB0aGlzLl9yZXNpemVXaW5kb3dSaWdodChldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVu
dEVsZW1lbnQub2Zmc2V0TGVmdCk7CisgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgX3N0YXJ0V2luZG93U2VsZWN0b3JEcmFnZ2luZzog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcG9zaXRpb24gPSBldmVudC5wYWdl
WCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgdGhpcy5fb3ZlcnZp
ZXdXaW5kb3dTZWxlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvd1Nl
bGVjdG9yKHRoaXMuX3BhcmVudEVsZW1lbnQsIHBvc2l0aW9uLCB0aGlzLl9wcmVmaXgpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFdmVu
dH0gZXZlbnQKKyAgICAgKi8KKyAgICBfd2luZG93U2VsZWN0b3JEcmFnZ2luZzogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd1NlbGVjdG9yLl91cGRh
dGVQb3NpdGlvbihldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdCk7
CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2VuZFdpbmRvd1NlbGVjdG9y
RHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHdpbmRvdyA9IHRo
aXMuX292ZXJ2aWV3V2luZG93U2VsZWN0b3IuX2Nsb3NlKGV2ZW50LnBhZ2VYIC0gdGhpcy5fcGFy
ZW50RWxlbWVudC5vZmZzZXRMZWZ0KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX292ZXJ2aWV3V2lu
ZG93U2VsZWN0b3I7CisgICAgICAgIGlmICh3aW5kb3cuZW5kID09PSB3aW5kb3cuc3RhcnQpIHsg
Ly8gQ2xpY2ssIG5vdCBkcmFnLgorICAgICAgICAgICAgdmFyIG1pZGRsZSA9IHdpbmRvdy5lbmQ7
CisgICAgICAgICAgICB3aW5kb3cuc3RhcnQgPSBNYXRoLm1heCgwLCBtaWRkbGUgLSBXZWJJbnNw
ZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplIC8gMik7CisgICAgICAgICAgICB3
aW5kb3cuZW5kID0gTWF0aC5taW4odGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCwgbWlk
ZGxlICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZSAvIDIpOwor
ICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5lbmQgLSB3aW5kb3cuc3RhcnQgPCBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKSB7CisgICAgICAgICAgICBpZiAodGhp
cy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIHdpbmRvdy5lbmQgPiBXZWJJbnNwZWN0b3Iu
T3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAgICAgIHdpbmRvdy5l
bmQgPSB3aW5kb3cuc3RhcnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFi
bGVTaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdpbmRvdy5zdGFydCA9
IHdpbmRvdy5lbmQgLSBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXpl
OworICAgICAgICB9CisgICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKHdpbmRvdy5zdGFy
dCwgd2luZG93LmVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9
IGV2ZW50CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfc3RhcnRXaW5k
b3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgd2luZG93TGVm
dCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3Zl
cnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHRoaXMuX2RyYWdPZmZzZXQgPSB3aW5k
b3dMZWZ0IC0gZXZlbnQucGFnZVg7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAgICAqLworICAgIF93aW5kb3dE
cmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgd2luZG93TGVmdCA9
IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHZhciBzdGFydCA9IHRoaXMuX2RyYWdPZmZz
ZXQgKyBldmVudC5wYWdlWDsKKyAgICAgICAgdGhpcy5fbW92ZVdpbmRvdyhzdGFydCk7CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2VuZFdpbmRvd0RyYWdnaW5nOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9kcmFnT2Zmc2V0OworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAgICAgKi8KKyAg
ICBfbW92ZVdpbmRvdzogZnVuY3Rpb24oc3RhcnQpCisgICAgeworICAgICAgICB2YXIgd2luZG93
TGVmdCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3Iu
T3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7CisgICAgICAgIHZhciB3aW5kb3dSaWdodCA9IHRo
aXMuX3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3
R3JpZC5SZXNpemVyT2Zmc2V0OworICAgICAgICB2YXIgd2luZG93U2l6ZSA9IHdpbmRvd1JpZ2h0
IC0gd2luZG93TGVmdDsKKyAgICAgICAgdmFyIGVuZCA9IHN0YXJ0ICsgd2luZG93U2l6ZTsKKwor
ICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgICAgICBzdGFydCA9IDA7CisgICAgICAg
ICAgICBlbmQgPSB3aW5kb3dTaXplOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVuZCA+IHRo
aXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGgpIHsKKyAgICAgICAgICAgIGVuZCA9IHRoaXMu
X3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICBzdGFydCA9IGVuZCAtIHdp
bmRvd1NpemU7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24oc3Rh
cnQsIGVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFy
dAorICAgICAqLworICAgIF9yZXNpemVXaW5kb3dMZWZ0OiBmdW5jdGlvbihzdGFydCkKKyAgICB7
CisgICAgICAgIC8vIEdsdWUgdG8gZWRnZS4KKyAgICAgICAgaWYgKHN0YXJ0IDwgMTApCisgICAg
ICAgICAgICBzdGFydCA9IDA7CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID4gdGhpcy5fcmlnaHRS
ZXNpemVFbGVtZW50Lm9mZnNldExlZnQgLSAgNCkKKyAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5f
cmlnaHRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgLSA0OworICAgICAgICB0aGlzLl9zZXRXaW5k
b3dQb3NpdGlvbihzdGFydCwgbnVsbCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBlbmQKKyAgICAgKi8KKyAgICBfcmVzaXplV2luZG93UmlnaHQ6IGZ1bmN0aW9u
KGVuZCkKKyAgICB7CisgICAgICAgIC8vIEdsdWUgdG8gZWRnZS4KKyAgICAgICAgaWYgKGVuZCA+
IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAxMCkKKyAgICAgICAgICAgIGVuZCA9
IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIGVsc2UgaWYgKGVuZCA8
IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAgZW5kID0gdGhpcy5fbGVmdFJl
c2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuTWluU2Vs
ZWN0YWJsZVNpemU7CisgICAgICAgIHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKG51bGwsIGVuZCk7
CisgICAgfSwKKworICAgIF9yZXNpemVXaW5kb3dNYXhpbXVtOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbigwLCB0aGlzLl9wYXJlbnRFbGVtZW50LmNs
aWVudFdpZHRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxl
ZnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmlnaHQKKyAgICAgKi8KKyAgICBfc2V0V2luZG93
OiBmdW5jdGlvbihsZWZ0LCByaWdodCkKKyAgICB7CisgICAgICAgIHZhciBjbGllbnRXaWR0aCA9
IHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIHRoaXMuX3NldFdpbmRv
d1Bvc2l0aW9uKGxlZnQgKiBjbGllbnRXaWR0aCwgcmlnaHQgKiBjbGllbnRXaWR0aCk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7P251bWJlcn0gc3RhcnQKKyAgICAgKiBAcGFy
YW0gez9udW1iZXJ9IGVuZAorICAgICAqLworICAgIF9zZXRXaW5kb3dQb3NpdGlvbjogZnVuY3Rp
b24oc3RhcnQsIGVuZCkKKyAgICB7CisgICAgICAgIHZhciBjbGllbnRXaWR0aCA9IHRoaXMuX3Bh
cmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAgIGNvbnN0IHJ1bGVyQWRqdXN0bWVudCA9
IDEgLyBjbGllbnRXaWR0aDsKKyAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgIHRoaXMud2luZG93TGVmdCA9IHN0YXJ0IC8gY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy53aW5k
b3dMZWZ0ICogMTAwICsgIiUiOworICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVt
ZW50LnN0eWxlLmxlZnQgPSB0aGlzLndpbmRvd0xlZnQgKiAxMDAgKyAiJSI7CisgICAgICAgICAg
ICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRlcnNFbGVtZW50LnN0eWxlLmxlZnQgPSAodGhpcy53
aW5kb3dMZWZ0IC0gcnVsZXJBZGp1c3RtZW50KSAqIDEwMCArICIlIjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodHlwZW9mIGVuZCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRoaXMud2lu
ZG93UmlnaHQgPSBlbmQgLyBjbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHRoaXMuX3JpZ2h0UmVz
aXplRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy53aW5kb3dSaWdodCAqIDEwMCArICIlIjsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0VsZW1lbnQuc3R5bGUud2lkdGgg
PSAodGhpcy53aW5kb3dSaWdodCAtIHRoaXMud2luZG93TGVmdCkgKiAxMDAgKyAiJSI7CisgICAg
ICAgIHRoaXMuX292ZXJ2aWV3V2luZG93Qm9yZGVyc0VsZW1lbnQuc3R5bGUucmlnaHQgPSAoMSAt
IHRoaXMud2luZG93UmlnaHQgKyAyICogcnVsZXJBZGp1c3RtZW50KSAqIDEwMCArICIlIjsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3
R3JpZC5FdmVudHMuV2luZG93Q2hhbmdlZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX29uTW91c2VXaGVlbDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBjb25zdCB6b29tRmFjdG9yID0gMS4xOworICAgICAgICBj
b25zdCBtb3VzZVdoZWVsWm9vbVNwZWVkID0gMSAvIDEyMDsKKworICAgICAgICBpZiAodHlwZW9m
IGV2ZW50LndoZWVsRGVsdGFZID09PSAibnVtYmVyIiAmJiBldmVudC53aGVlbERlbHRhWSkgewor
ICAgICAgICAgICAgdmFyIHJlZmVyZW5jZVBvaW50ID0gZXZlbnQucGFnZVggLSB0aGlzLl9wYXJl
bnRFbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICB0aGlzLl96b29tKE1hdGgucG93KHpv
b21GYWN0b3IsIC1ldmVudC53aGVlbERlbHRhWSAqIG1vdXNlV2hlZWxab29tU3BlZWQpLCByZWZl
cmVuY2VQb2ludCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBldmVudC53aGVlbERl
bHRhWCA9PT0gIm51bWJlciIgJiYgZXZlbnQud2hlZWxEZWx0YVgpIHsKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dMZWZ0ID0gdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYklu
c3BlY3Rvci5PdmVydmlld0dyaWQuUmVzaXplck9mZnNldDsKKyAgICAgICAgICAgIHZhciBzdGFy
dCA9IHdpbmRvd0xlZnQgLSBNYXRoLnJvdW5kKGV2ZW50LndoZWVsRGVsdGFYICogV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTY3JvbGxTcGVlZEZhY3Rvcik7CisgICAgICAgICAgICB0
aGlzLl9tb3ZlV2luZG93KHN0YXJ0KTsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGZhY3RvcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWZlcmVuY2VQb2ludAorICAgICAqLwor
ICAgIF96b29tOiBmdW5jdGlvbihmYWN0b3IsIHJlZmVyZW5jZVBvaW50KQorICAgIHsKKyAgICAg
ICAgdmFyIGxlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0ICsgV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0OworICAgICAgICB2YXIgcmlnaHQgPSB0
aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmll
d0dyaWQuUmVzaXplck9mZnNldDsKKworICAgICAgICB2YXIgZGVsdGEgPSBmYWN0b3IgKiAocmln
aHQgLSBsZWZ0KTsKKyAgICAgICAgaWYgKGZhY3RvciA8IDEgJiYgZGVsdGEgPCBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB2YXIgbWF4ID0gdGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG1heCAtIGRlbHRhLCByZWZlcmVuY2VQb2lu
dCArIChsZWZ0IC0gcmVmZXJlbmNlUG9pbnQpICogZmFjdG9yKSk7CisgICAgICAgIHJpZ2h0ID0g
TWF0aC5taW4obWF4LCBsZWZ0ICsgZGVsdGEpOworICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3Np
dGlvbihsZWZ0LCByaWdodCk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGUKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7
c3RyaW5nfSBwcmVmaXgKKyAqLworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxl
Y3RvciA9IGZ1bmN0aW9uKHBhcmVudCwgcG9zaXRpb24sIHByZWZpeCkKK3sKKyAgICB0aGlzLl9w
cmVmaXggPSBwcmVmaXg7CisgICAgdGhpcy5fc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAg
IHRoaXMuX3dpZHRoID0gcGFyZW50Lm9mZnNldFdpZHRoOworICAgIHRoaXMuX3dpbmRvd1NlbGVj
dG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fd2luZG93U2Vs
ZWN0b3IuY2xhc3NOYW1lID0gcHJlZml4ICsgIi13aW5kb3ctc2VsZWN0b3IiOworICAgIHRoaXMu
X3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSB0aGlzLl9zdGFydFBvc2l0aW9uICsgInB4IjsK
KyAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0gdGhp
cy5fc3RhcnRQb3NpdGlvbiArICArICJweCI7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKHRoaXMu
X3dpbmRvd1NlbGVjdG9yKTsKK30KKworV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dT
ZWxlY3Rvci5wcm90b3R5cGUgPSB7CisgICAgX2NyZWF0ZVNlbGVjdG9yRWxlbWVudDogZnVuY3Rp
b24ocGFyZW50LCBsZWZ0LCB3aWR0aCwgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVj
dG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBzZWxl
Y3RvckVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5fcHJlZml4ICsgIi13aW5kb3ctc2VsZWN0b3Ii
OworICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAicHgiOworICAg
ICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7CisgICAgICAg
IHNlbGVjdG9yRWxlbWVudC5zdHlsZS50b3AgPSAiMHB4IjsKKyAgICAgICAgc2VsZWN0b3JFbGVt
ZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisgICAgICAgIHBhcmVudC5hcHBlbmRD
aGlsZChzZWxlY3RvckVsZW1lbnQpOworICAgICAgICByZXR1cm4gc2VsZWN0b3JFbGVtZW50Owor
ICAgIH0sCisKKyAgICBfY2xvc2U6IGZ1bmN0aW9uKHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAg
cG9zaXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihwb3NpdGlvbiwgdGhpcy5fd2lkdGgpKTsK
KyAgICAgICAgdGhpcy5fd2luZG93U2VsZWN0b3IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlz
Ll93aW5kb3dTZWxlY3Rvcik7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFBvc2l0aW9uIDwg
cG9zaXRpb24gPyB7c3RhcnQ6IHRoaXMuX3N0YXJ0UG9zaXRpb24sIGVuZDogcG9zaXRpb259IDog
e3N0YXJ0OiBwb3NpdGlvbiwgZW5kOiB0aGlzLl9zdGFydFBvc2l0aW9ufTsKKyAgICB9LAorCisg
ICAgX3VwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHBv
c2l0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocG9zaXRpb24sIHRoaXMuX3dpZHRoKSk7Cisg
ICAgICAgIGlmIChwb3NpdGlvbiA8IHRoaXMuX3N0YXJ0UG9zaXRpb24pIHsKKyAgICAgICAgICAg
IHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSBwb3NpdGlvbiArICJweCI7CisgICAg
ICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0g
dGhpcy5fc3RhcnRQb3NpdGlvbiArICJweCI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5sZWZ0ID0gdGhpcy5fc3RhcnRQb3NpdGlvbiAr
ICJweCI7CisgICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9IHRo
aXMuX3dpZHRoIC0gcG9zaXRpb24gKyAicHgiOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3
UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVy
dmlld1BhbmUuanMKaW5kZXggNWU1NGViNTdjNjZkMDJkYTE4ZWMyMzI0ZjBlYjY3MjVmZWM1NDk0
YS4uMmJlNGY0YjhmODEwN2IyMjhlZDU4OWM0NTJiYWFjMzZmYmIyOTY2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZp
ZXdQYW5lLmpzCkBAIC05OSwxMzYgKzk5LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXdQYW5lID0gZnVuY3Rpb24obW9kZWwpCiAgICAgdGhpcy5fb3ZlcnZpZXdHcmlkLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5FdmVudHMuV2luZG93Q2hhbmdlZCwg
dGhpcy5fb25XaW5kb3dDaGFuZ2VkLCB0aGlzKTsKIH0KIAotLyoqCi0gKiBAY29uc3RydWN0b3IK
LSAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXgKLSAqLwotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3Jp
ZCA9IGZ1bmN0aW9uKHByZWZpeCkKLXsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImZpbGwiOwot
ICAgIHRoaXMuZWxlbWVudC5pZCA9IHByZWZpeCArICItb3ZlcnZpZXctY29udGFpbmVyIjsKLQot
ICAgIHRoaXMuX2dyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lR3JpZCgpOwotICAgIHRo
aXMuX2dyaWQuZWxlbWVudC5pZCA9IHByZWZpeCArICItb3ZlcnZpZXctZ3JpZCI7Ci0gICAgdGhp
cy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQuaWQgPSBwcmVmaXggKyAiLW92ZXJ2aWV3LXRpbWVs
aW5lcyI7Ci0gICAgdGhpcy5fZ3JpZC5zZXRTY3JvbGxBbmREaXZpZGVyVG9wKDAsIDApOwotCi0g
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyaWQuZWxlbWVudCk7Ci0KLSAgICB0
aGlzLl93aW5kb3cgPSBuZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3codGhpcy5l
bGVtZW50LCB0aGlzLl9ncmlkLmRpdmlkZXJzTGFiZWxCYXJFbGVtZW50LCBwcmVmaXgpOwotfQot
Ci1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBpdGVtc0dyYXBo
c0VsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ncmlkLml0
ZW1zR3JhcGhzRWxlbWVudDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHshTm9k
ZX0gY2hpbGQKLSAgICAgKi8KLSAgICBpbnNlcnRCZWZvcmVJdGVtc0dyYXBoc0VsZW1lbnQ6IGZ1
bmN0aW9uKGNoaWxkKQotICAgIHsKLSAgICAgICAgdGhpcy5fZ3JpZC5lbGVtZW50Lmluc2VydEJl
Zm9yZShjaGlsZCwgdGhpcy5fZ3JpZC5pdGVtc0dyYXBoc0VsZW1lbnQpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Ci0gICAgICovCi0gICAgY2xpZW50V2lkdGg6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xpZW50V2lk
dGg7Ci0gICAgfSwKLQotICAgIHNob3dJdGVtc0dyYXBoc0VsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX2dyaWQuaXRlbXNHcmFwaHNFbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoImhpZGRlbiIpOwotICAgIH0sCi0KLSAgICBoaWRlSXRlbXNHcmFwaHNFbGVtZW50OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9ncmlkLml0ZW1zR3JhcGhzRWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHsh
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yfSBjYWxjdWxhdG9yCi0gICAg
ICovCi0gICAgdXBkYXRlRGl2aWRlcnM6IGZ1bmN0aW9uKGNhbGN1bGF0b3IpCi0gICAgewotICAg
ICAgICB0aGlzLl9ncmlkLnVwZGF0ZURpdmlkZXJzKGNhbGN1bGF0b3IpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0geyFBcnJheS48RWxlbWVudD59IGRpdmlkZXJzCi0gICAgICov
Ci0gICAgYWRkRXZlbnREaXZpZGVyczogZnVuY3Rpb24oZGl2aWRlcnMpCi0gICAgewotICAgICAg
ICB0aGlzLl9ncmlkLmFkZEV2ZW50RGl2aWRlcnMoZGl2aWRlcnMpOwotICAgIH0sCi0KLSAgICBy
ZW1vdmVFdmVudERpdmlkZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9ncmlk
LnJlbW92ZUV2ZW50RGl2aWRlcnMoKTsKLSAgICB9LAotICAgIAotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7P251bWJlcn0gc3RhcnQKLSAgICAgKiBAcGFyYW0gez9udW1iZXJ9IGVuZAotICAgICAq
LwotICAgIHNldFdpbmRvd1Bvc2l0aW9uOiBmdW5jdGlvbihzdGFydCwgZW5kKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fd2luZG93Ll9zZXRXaW5kb3dQb3NpdGlvbihzdGFydCwgZW5kKTsKLSAgICB9
LAotCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3dpbmRvdy5y
ZXNldCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtudW1iZXJ9Ci0gICAg
ICovCi0gICAgd2luZG93TGVmdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3dpbmRvdy53aW5kb3dMZWZ0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJu
IHtudW1iZXJ9Ci0gICAgICovCi0gICAgd2luZG93UmlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl93aW5kb3cud2luZG93UmlnaHQ7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0Ci0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJp
Z2h0Ci0gICAgICovCi0gICAgc2V0V2luZG93OiBmdW5jdGlvbihsZWZ0LCByaWdodCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3dpbmRvdy5fc2V0V2luZG93KGxlZnQsIHJpZ2h0KTsKLSAgICB9LAot
ICAgIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5FdmVudCl9IGxpc3RlbmVyCi0gICAgICogQHBh
cmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0Ci0gICAgICovCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjog
ZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNP
YmplY3QpOwotICAgIH0KLX0KLQotCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVj
dGFibGVTaXplID0gMTI7Ci0KLVdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93U2Nyb2xs
U3BlZWRGYWN0b3IgPSAuMzsKLQotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zm
c2V0ID0gMy41OyAvLyBoYWxmIHBpeGVsIGJlY2F1c2Ugb2Zmc2V0IHZhbHVlcyBhcmUgbm90IHJv
dW5kZWQgYnV0IGNlaWxlZAotCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUuTW9k
ZSA9IHsKICAgICBFdmVudHM6ICJFdmVudHMiLAogICAgIEZyYW1lczogIkZyYW1lcyIsCkBAIC00
NjksMjg2ICszMzksNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5PYmplY3R9Ci0gKiBAcGFyYW0ge0VsZW1lbnR9IHBhcmVudEVsZW1lbnQKLSAqIEBwYXJhbSB7
RWxlbWVudH0gZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQKLSAqIEBwYXJhbSB7c3RyaW5nfSBwcmVm
aXgKLSAqLwotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3cgPSBmdW5jdGlvbihwYXJl
bnRFbGVtZW50LCBkaXZpZGVyc0xhYmVsQmFyRWxlbWVudCwgcHJlZml4KQotewotICAgIHRoaXMu
X3BhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50OwotICAgIHRoaXMuX2RpdmlkZXJzTGFiZWxC
YXJFbGVtZW50ID0gZGl2aWRlcnNMYWJlbEJhckVsZW1lbnQ7Ci0gICAgdGhpcy5fcHJlZml4ID0g
cHJlZml4OwotCi0gICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRoaXMuX3BhcmVu
dEVsZW1lbnQsIHRoaXMuX3N0YXJ0V2luZG93U2VsZWN0b3JEcmFnZ2luZy5iaW5kKHRoaXMpLCB0
aGlzLl93aW5kb3dTZWxlY3RvckRyYWdnaW5nLmJpbmQodGhpcyksIHRoaXMuX2VuZFdpbmRvd1Nl
bGVjdG9yRHJhZ2dpbmcuYmluZCh0aGlzKSwgImV3LXJlc2l6ZSIpOwotICAgIFdlYkluc3BlY3Rv
ci5pbnN0YWxsRHJhZ0hhbmRsZSh0aGlzLl9kaXZpZGVyc0xhYmVsQmFyRWxlbWVudCwgdGhpcy5f
c3RhcnRXaW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMpLCB0aGlzLl93aW5kb3dEcmFnZ2luZy5iaW5k
KHRoaXMpLCB0aGlzLl9lbmRXaW5kb3dEcmFnZ2luZy5iaW5kKHRoaXMpLCAiZXctcmVzaXplIik7
Ci0KLSAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7Ci0gICAgdGhpcy53aW5kb3dSaWdodCA9IDEu
MDsKLQotICAgIHRoaXMuX3BhcmVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVl
bCIsIHRoaXMuX29uTW91c2VXaGVlbC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB0aGlzLl9wYXJl
bnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fcmVzaXplV2luZG93
TWF4aW11bS5iaW5kKHRoaXMpLCB0cnVlKTsKLQotICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX292ZXJ2aWV3
V2luZG93RWxlbWVudC5jbGFzc05hbWUgPSBwcmVmaXggKyAiLW92ZXJ2aWV3LXdpbmRvdyI7Ci0g
ICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vdmVydmlld1dpbmRvd0VsZW1lbnQp
OwotCi0gICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJzRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX292ZXJ2aWV3V2luZG93Qm9yZGVyc0VsZW1l
bnQuY2xhc3NOYW1lID0gcHJlZml4ICsgIi1vdmVydmlldy13aW5kb3ctcnVsZXJzIjsKLSAgICBw
YXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX292ZXJ2aWV3V2luZG93Qm9yZGVyc0VsZW1l
bnQpOwotCi0gICAgdmFyIG92ZXJ2aWV3RGl2aWRlcnNCYWNrZ3JvdW5kID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgb3ZlcnZpZXdEaXZpZGVyc0JhY2tncm91bmQuY2xhc3NO
YW1lID0gcHJlZml4ICsgIi1vdmVydmlldy1kaXZpZGVycy1iYWNrZ3JvdW5kIjsKLSAgICBwYXJl
bnRFbGVtZW50LmFwcGVuZENoaWxkKG92ZXJ2aWV3RGl2aWRlcnNCYWNrZ3JvdW5kKTsKLQotICAg
IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0gcHJlZml4ICsgIi13aW5k
b3ctcmVzaXplciI7Ci0gICAgdGhpcy5fbGVmdFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9IDA7
Ci0gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0UmVzaXplRWxlbWVudCk7
Ci0gICAgV2ViSW5zcGVjdG9yLmluc3RhbGxEcmFnSGFuZGxlKHRoaXMuX2xlZnRSZXNpemVFbGVt
ZW50LCBudWxsLCB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudERyYWdnaW5nLmJpbmQodGhpcyksIG51
bGwsICJldy1yZXNpemUiKTsKLQotICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5j
bGFzc05hbWUgPSBwcmVmaXggKyAiLXdpbmRvdy1yZXNpemVyICIgKyBwcmVmaXggKyAiLXdpbmRv
dy1yZXNpemVyLXJpZ2h0IjsKLSAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUucmln
aHQgPSAwOwotICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRSZXNpemVF
bGVtZW50KTsKLSAgICBXZWJJbnNwZWN0b3IuaW5zdGFsbERyYWdIYW5kbGUodGhpcy5fcmlnaHRS
ZXNpemVFbGVtZW50LCBudWxsLCB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnREcmFnZ2luZy5iaW5k
KHRoaXMpLCBudWxsLCAiZXctcmVzaXplIik7Ci19Ci0KLVdlYkluc3BlY3Rvci5PdmVydmlld0dy
aWQuRXZlbnRzID0gewotICAgIFdpbmRvd0NoYW5nZWQ6ICJXaW5kb3dDaGFuZ2VkIgotfQotCi1X
ZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLldpbmRvdy5wcm90b3R5cGUgPSB7Ci0gICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMud2luZG93TGVmdCA9IDAuMDsKLSAgICAg
ICAgdGhpcy53aW5kb3dSaWdodCA9IDEuMDsKLQotICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRv
d0VsZW1lbnQuc3R5bGUubGVmdCA9ICIwJSI7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93
RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKLSAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5k
b3dCb3JkZXJzRWxlbWVudC5zdHlsZS5sZWZ0ID0gIjAlIjsKLSAgICAgICAgdGhpcy5fb3ZlcnZp
ZXdXaW5kb3dCb3JkZXJzRWxlbWVudC5zdHlsZS5yaWdodCA9ICIwJSI7Ci0gICAgICAgIHRoaXMu
X2xlZnRSZXNpemVFbGVtZW50LnN0eWxlLmxlZnQgPSAiMCUiOwotICAgICAgICB0aGlzLl9yaWdo
dFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICIxMDAlIjsKLSAgICB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBfbGVmdFJlc2l6ZUVsZW1l
bnREcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgdGhpcy5fcmVzaXplV2lu
ZG93TGVmdChldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdCk7Ci0g
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqLwotICAgIF9yaWdodFJlc2l6ZUVsZW1lbnREcmFn
Z2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgdGhpcy5fcmVzaXplV2luZG93Umln
aHQoZXZlbnQucGFnZVggLSB0aGlzLl9wYXJlbnRFbGVtZW50Lm9mZnNldExlZnQpOwotICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtFdmVudH0gZXZlbnQKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIF9z
dGFydFdpbmRvd1NlbGVjdG9yRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIHBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLl9wYXJlbnRFbGVtZW50Lm9mZnNl
dExlZnQ7Ci0gICAgICAgIHRoaXMuX292ZXJ2aWV3V2luZG93U2VsZWN0b3IgPSBuZXcgV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rvcih0aGlzLl9wYXJlbnRFbGVtZW50LCBw
b3NpdGlvbiwgdGhpcy5fcHJlZml4KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50Ci0gICAgICovCi0gICAgX3dpbmRv
d1NlbGVjdG9yRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5f
b3ZlcnZpZXdXaW5kb3dTZWxlY3Rvci5fdXBkYXRlUG9zaXRpb24oZXZlbnQucGFnZVggLSB0aGlz
Ll9wYXJlbnRFbGVtZW50Lm9mZnNldExlZnQpOwotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAg
ICAqLwotICAgIF9lbmRXaW5kb3dTZWxlY3RvckRyYWdnaW5nOiBmdW5jdGlvbihldmVudCkKLSAg
ICB7Ci0gICAgICAgIHZhciB3aW5kb3cgPSB0aGlzLl9vdmVydmlld1dpbmRvd1NlbGVjdG9yLl9j
bG9zZShldmVudC5wYWdlWCAtIHRoaXMuX3BhcmVudEVsZW1lbnQub2Zmc2V0TGVmdCk7Ci0gICAg
ICAgIGRlbGV0ZSB0aGlzLl9vdmVydmlld1dpbmRvd1NlbGVjdG9yOwotICAgICAgICBpZiAod2lu
ZG93LmVuZCA9PT0gd2luZG93LnN0YXJ0KSB7IC8vIENsaWNrLCBub3QgZHJhZy4KLSAgICAgICAg
ICAgIHZhciBtaWRkbGUgPSB3aW5kb3cuZW5kOwotICAgICAgICAgICAgd2luZG93LnN0YXJ0ID0g
TWF0aC5tYXgoMCwgbWlkZGxlIC0gV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3Rh
YmxlU2l6ZSAvIDIpOwotICAgICAgICAgICAgd2luZG93LmVuZCA9IE1hdGgubWluKHRoaXMuX3Bh
cmVudEVsZW1lbnQuY2xpZW50V2lkdGgsIG1pZGRsZSArIFdlYkluc3BlY3Rvci5PdmVydmlld0dy
aWQuTWluU2VsZWN0YWJsZVNpemUgLyAyKTsKLSAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuZW5k
IC0gd2luZG93LnN0YXJ0IDwgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxl
U2l6ZSkgewotICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudEVsZW1lbnQuY2xpZW50V2lkdGgg
LSB3aW5kb3cuZW5kID4gV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6
ZSkKLSAgICAgICAgICAgICAgICB3aW5kb3cuZW5kID0gd2luZG93LnN0YXJ0ICsgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB3aW5kb3cuc3RhcnQgPSB3aW5kb3cuZW5kIC0gV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9z
ZXRXaW5kb3dQb3NpdGlvbih3aW5kb3cuc3RhcnQsIHdpbmRvdy5lbmQpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59Ci0gICAgICovCi0gICAgX3N0YXJ0V2luZG93RHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5v
ZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0OwotICAg
ICAgICB0aGlzLl9kcmFnT2Zmc2V0ID0gd2luZG93TGVmdCAtIGV2ZW50LnBhZ2VYOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVudH0g
ZXZlbnQKLSAgICAgKi8KLSAgICBfd2luZG93RHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5vZmZz
ZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0OwotICAgICAg
ICB2YXIgc3RhcnQgPSB0aGlzLl9kcmFnT2Zmc2V0ICsgZXZlbnQucGFnZVg7Ci0gICAgICAgIHRo
aXMuX21vdmVXaW5kb3coc3RhcnQpOwotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqLwot
ICAgIF9lbmRXaW5kb3dEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBk
ZWxldGUgdGhpcy5fZHJhZ09mZnNldDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtudW1iZXJ9IHN0YXJ0Ci0gICAgICovCi0gICAgX21vdmVXaW5kb3c6IGZ1bmN0aW9uKHN0YXJ0
KQotICAgIHsKLSAgICAgICAgdmFyIHdpbmRvd0xlZnQgPSB0aGlzLl9sZWZ0UmVzaXplRWxlbWVu
dC5vZmZzZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5SZXNpemVyT2Zmc2V0Owot
ICAgICAgICB2YXIgd2luZG93UmlnaHQgPSB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQub2Zmc2V0
TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuUmVzaXplck9mZnNldDsKLSAgICAgICAg
dmFyIHdpbmRvd1NpemUgPSB3aW5kb3dSaWdodCAtIHdpbmRvd0xlZnQ7Ci0gICAgICAgIHZhciBl
bmQgPSBzdGFydCArIHdpbmRvd1NpemU7Ci0KLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgewotICAg
ICAgICAgICAgc3RhcnQgPSAwOwotICAgICAgICAgICAgZW5kID0gd2luZG93U2l6ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChlbmQgPiB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRo
KSB7Ci0gICAgICAgICAgICBlbmQgPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoOwot
ICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSB3aW5kb3dTaXplOwotICAgICAgICB9Ci0gICAgICAg
IHRoaXMuX3NldFdpbmRvd1Bvc2l0aW9uKHN0YXJ0LCBlbmQpOwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKLSAgICAgKi8KLSAgICBfcmVzaXplV2luZG93
TGVmdDogZnVuY3Rpb24oc3RhcnQpCi0gICAgewotICAgICAgICAvLyBHbHVlIHRvIGVkZ2UuCi0g
ICAgICAgIGlmIChzdGFydCA8IDEwKQotICAgICAgICAgICAgc3RhcnQgPSAwOwotICAgICAgICBl
bHNlIGlmIChzdGFydCA+IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0IC0gIDQp
Ci0gICAgICAgICAgICBzdGFydCA9IHRoaXMuX3JpZ2h0UmVzaXplRWxlbWVudC5vZmZzZXRMZWZ0
IC0gNDsKLSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24oc3RhcnQsIG51bGwpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kCi0gICAgICovCi0gICAg
X3Jlc2l6ZVdpbmRvd1JpZ2h0OiBmdW5jdGlvbihlbmQpCi0gICAgewotICAgICAgICAvLyBHbHVl
IHRvIGVkZ2UuCi0gICAgICAgIGlmIChlbmQgPiB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdp
ZHRoIC0gMTApCi0gICAgICAgICAgICBlbmQgPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdp
ZHRoOwotICAgICAgICBlbHNlIGlmIChlbmQgPCB0aGlzLl9sZWZ0UmVzaXplRWxlbWVudC5vZmZz
ZXRMZWZ0ICsgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxlU2l6ZSkKLSAg
ICAgICAgICAgIGVuZCA9IHRoaXMuX2xlZnRSZXNpemVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdHcmlkLk1pblNlbGVjdGFibGVTaXplOwotICAgICAgICB0aGlzLl9z
ZXRXaW5kb3dQb3NpdGlvbihudWxsLCBlbmQpOwotICAgIH0sCi0KLSAgICBfcmVzaXplV2luZG93
TWF4aW11bTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRp
b24oMCwgdGhpcy5fcGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCk7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0Ci0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJp
Z2h0Ci0gICAgICovCi0gICAgX3NldFdpbmRvdzogZnVuY3Rpb24obGVmdCwgcmlnaHQpCi0gICAg
ewotICAgICAgICB2YXIgY2xpZW50V2lkdGggPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdp
ZHRoOwotICAgICAgICB0aGlzLl9zZXRXaW5kb3dQb3NpdGlvbihsZWZ0ICogY2xpZW50V2lkdGgs
IHJpZ2h0ICogY2xpZW50V2lkdGgpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
ez9udW1iZXJ9IHN0YXJ0Ci0gICAgICogQHBhcmFtIHs/bnVtYmVyfSBlbmQKLSAgICAgKi8KLSAg
ICBfc2V0V2luZG93UG9zaXRpb246IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCi0gICAgewotICAgICAg
ICB2YXIgY2xpZW50V2lkdGggPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoOwotICAg
ICAgICBjb25zdCBydWxlckFkanVzdG1lbnQgPSAxIC8gY2xpZW50V2lkdGg7Ci0gICAgICAgIGlm
ICh0eXBlb2Ygc3RhcnQgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aGlzLndpbmRvd0xl
ZnQgPSBzdGFydCAvIGNsaWVudFdpZHRoOwotICAgICAgICAgICAgdGhpcy5fbGVmdFJlc2l6ZUVs
ZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMud2luZG93TGVmdCAqIDEwMCArICIlIjsKLSAgICAgICAg
ICAgIHRoaXMuX292ZXJ2aWV3V2luZG93RWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy53aW5kb3dM
ZWZ0ICogMTAwICsgIiUiOwotICAgICAgICAgICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dCb3JkZXJz
RWxlbWVudC5zdHlsZS5sZWZ0ID0gKHRoaXMud2luZG93TGVmdCAtIHJ1bGVyQWRqdXN0bWVudCkg
KiAxMDAgKyAiJSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT09ICJudW1i
ZXIiKSB7Ci0gICAgICAgICAgICB0aGlzLndpbmRvd1JpZ2h0ID0gZW5kIC8gY2xpZW50V2lkdGg7
Ci0gICAgICAgICAgICB0aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMu
d2luZG93UmlnaHQgKiAxMDAgKyAiJSI7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fb3ZlcnZp
ZXdXaW5kb3dFbGVtZW50LnN0eWxlLndpZHRoID0gKHRoaXMud2luZG93UmlnaHQgLSB0aGlzLndp
bmRvd0xlZnQpICogMTAwICsgIiUiOwotICAgICAgICB0aGlzLl9vdmVydmlld1dpbmRvd0JvcmRl
cnNFbGVtZW50LnN0eWxlLnJpZ2h0ID0gKDEgLSB0aGlzLndpbmRvd1JpZ2h0ICsgMiAqIHJ1bGVy
QWRqdXN0bWVudCkgKiAxMDAgKyAiJSI7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuRXZlbnRzLldpbmRvd0NoYW5nZWQpOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAgICAqLwot
ICAgIF9vbk1vdXNlV2hlZWw6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc3Qg
em9vbUZhY3RvciA9IDEuMTsKLSAgICAgICAgY29uc3QgbW91c2VXaGVlbFpvb21TcGVlZCA9IDEg
LyAxMjA7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBldmVudC53aGVlbERlbHRhWSA9PT0gIm51bWJl
ciIgJiYgZXZlbnQud2hlZWxEZWx0YVkpIHsKLSAgICAgICAgICAgIHZhciByZWZlcmVuY2VQb2lu
dCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fcGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0OwotICAgICAg
ICAgICAgdGhpcy5fem9vbShNYXRoLnBvdyh6b29tRmFjdG9yLCAtZXZlbnQud2hlZWxEZWx0YVkg
KiBtb3VzZVdoZWVsWm9vbVNwZWVkKSwgcmVmZXJlbmNlUG9pbnQpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICh0eXBlb2YgZXZlbnQud2hlZWxEZWx0YVggPT09ICJudW1iZXIiICYmIGV2ZW50Lndo
ZWVsRGVsdGFYKSB7Ci0gICAgICAgICAgICB2YXIgd2luZG93TGVmdCA9IHRoaXMuX2xlZnRSZXNp
emVFbGVtZW50Lm9mZnNldExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJP
ZmZzZXQ7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSB3aW5kb3dMZWZ0IC0gTWF0aC5yb3VuZChl
dmVudC53aGVlbERlbHRhWCAqIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuV2luZG93U2Nyb2xs
U3BlZWRGYWN0b3IpOwotICAgICAgICAgICAgdGhpcy5fbW92ZVdpbmRvdyhzdGFydCk7Ci0gICAg
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmYWN0b3IKLSAgICAgKiBAcGFyYW0ge251bWJl
cn0gcmVmZXJlbmNlUG9pbnQKLSAgICAgKi8KLSAgICBfem9vbTogZnVuY3Rpb24oZmFjdG9yLCBy
ZWZlcmVuY2VQb2ludCkKLSAgICB7Ci0gICAgICAgIHZhciBsZWZ0ID0gdGhpcy5fbGVmdFJlc2l6
ZUVsZW1lbnQub2Zmc2V0TGVmdCArIFdlYkluc3BlY3Rvci5PdmVydmlld0dyaWQuUmVzaXplck9m
ZnNldDsKLSAgICAgICAgdmFyIHJpZ2h0ID0gdGhpcy5fcmlnaHRSZXNpemVFbGVtZW50Lm9mZnNl
dExlZnQgKyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdHcmlkLlJlc2l6ZXJPZmZzZXQ7Ci0KLSAgICAg
ICAgdmFyIGRlbHRhID0gZmFjdG9yICogKHJpZ2h0IC0gbGVmdCk7Ci0gICAgICAgIGlmIChmYWN0
b3IgPCAxICYmIGRlbHRhIDwgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3R3JpZC5NaW5TZWxlY3RhYmxl
U2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIG1heCA9IHRoaXMuX3BhcmVu
dEVsZW1lbnQuY2xpZW50V2lkdGg7Ci0gICAgICAgIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1p
bihtYXggLSBkZWx0YSwgcmVmZXJlbmNlUG9pbnQgKyAobGVmdCAtIHJlZmVyZW5jZVBvaW50KSAq
IGZhY3RvcikpOwotICAgICAgICByaWdodCA9IE1hdGgubWluKG1heCwgbGVmdCArIGRlbHRhKTsK
LSAgICAgICAgdGhpcy5fc2V0V2luZG93UG9zaXRpb24obGVmdCwgcmlnaHQpOwotICAgIH0sCi0K
LSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCi19Ci0KLS8qKgot
ICogQGNvbnN0cnVjdG9yCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Q2FsY3Vs
YXRvciA9IGZ1bmN0aW9uKCkKIHsKQEAgLTgxOCw1NSArNDA4LDYgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXdDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXgKLSAqLwotV2ViSW5zcGVjdG9yLk92ZXJ2
aWV3R3JpZC5XaW5kb3dTZWxlY3RvciA9IGZ1bmN0aW9uKHBhcmVudCwgcG9zaXRpb24sIHByZWZp
eCkKLXsKLSAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7Ci0gICAgdGhpcy5fc3RhcnRQb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgIHRoaXMuX3dpZHRoID0gcGFyZW50Lm9mZnNldFdpZHRoOwotICAg
IHRoaXMuX3dpbmRvd1NlbGVjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgdGhpcy5fd2luZG93U2VsZWN0b3IuY2xhc3NOYW1lID0gcHJlZml4ICsgIi13aW5kb3ctc2Vs
ZWN0b3IiOwotICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSB0aGlzLl9zdGFy
dFBvc2l0aW9uICsgInB4IjsKLSAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdodCA9
IHRoaXMuX3dpZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICArICJweCI7Ci0gICAgcGFyZW50
LmFwcGVuZENoaWxkKHRoaXMuX3dpbmRvd1NlbGVjdG9yKTsKLX0KLQotV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3R3JpZC5XaW5kb3dTZWxlY3Rvci5wcm90b3R5cGUgPSB7Ci0gICAgX2NyZWF0ZVNlbGVj
dG9yRWxlbWVudDogZnVuY3Rpb24ocGFyZW50LCBsZWZ0LCB3aWR0aCwgaGVpZ2h0KQotICAgIHsK
LSAgICAgICAgdmFyIHNlbGVjdG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5fcHJlZml4ICsg
Ii13aW5kb3ctc2VsZWN0b3IiOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUubGVmdCA9
IGxlZnQgKyAicHgiOwotICAgICAgICBzZWxlY3RvckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0
aCArICJweCI7Ci0gICAgICAgIHNlbGVjdG9yRWxlbWVudC5zdHlsZS50b3AgPSAiMHB4IjsKLSAg
ICAgICAgc2VsZWN0b3JFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7Ci0gICAg
ICAgIHBhcmVudC5hcHBlbmRDaGlsZChzZWxlY3RvckVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
c2VsZWN0b3JFbGVtZW50OwotICAgIH0sCi0KLSAgICBfY2xvc2U6IGZ1bmN0aW9uKHBvc2l0aW9u
KQotICAgIHsKLSAgICAgICAgcG9zaXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihwb3NpdGlv
biwgdGhpcy5fd2lkdGgpKTsKLSAgICAgICAgdGhpcy5fd2luZG93U2VsZWN0b3IucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCh0aGlzLl93aW5kb3dTZWxlY3Rvcik7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9zdGFydFBvc2l0aW9uIDwgcG9zaXRpb24gPyB7c3RhcnQ6IHRoaXMuX3N0YXJ0UG9zaXRpb24s
IGVuZDogcG9zaXRpb259IDoge3N0YXJ0OiBwb3NpdGlvbiwgZW5kOiB0aGlzLl9zdGFydFBvc2l0
aW9ufTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbikK
LSAgICB7Ci0gICAgICAgIHBvc2l0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocG9zaXRpb24s
IHRoaXMuX3dpZHRoKSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiA8IHRoaXMuX3N0YXJ0UG9zaXRp
b24pIHsKLSAgICAgICAgICAgIHRoaXMuX3dpbmRvd1NlbGVjdG9yLnN0eWxlLmxlZnQgPSBwb3Np
dGlvbiArICJweCI7Ci0gICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5yaWdo
dCA9IHRoaXMuX3dpZHRoIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiArICJweCI7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rvci5zdHlsZS5sZWZ0ID0gdGhp
cy5fc3RhcnRQb3NpdGlvbiArICJweCI7Ci0gICAgICAgICAgICB0aGlzLl93aW5kb3dTZWxlY3Rv
ci5zdHlsZS5yaWdodCA9IHRoaXMuX3dpZHRoIC0gcG9zaXRpb24gKyAicHgiOwotICAgICAgICB9
Ci0gICAgfQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVGltZWxpbmVNb2RlbH0gbW9kZWwKICAqLwogV2ViSW5zcGVjdG9yLkhlYXBHcmFwaCA9IGZ1
bmN0aW9uKG1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCmluZGV4IGNiMmFkZDgxM2U1ZGMwNzFmZTI0YTQ2ZmIzNGQ3MGVjYzFkOGI2MjQuLmVk
NThjNTdlNWU5YjU5MDliNzNhNTNjNTEwNjlmMTgyZmEzMjY2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTEzNiw2ICsxMzYsNyBAQAog
ICAgIDxmaWxlPk9iamVjdFBvcG92ZXJIZWxwZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0
UHJvcGVydGllc1NlY3Rpb24uanM8L2ZpbGU+CiAgICAgPGZpbGU+T3ZlcnJpZGVzVmlldy5qczwv
ZmlsZT4KKyAgICA8ZmlsZT5PdmVydmlld0dyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+UGFuZWwu
anM8L2ZpbGU+CiAgICAgPGZpbGU+UGFuZWxFbmFibGVyVmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5QYXJzZWRVUkwuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBkOWNlOThiYmNkNjJiMDhiYmFhYWQ1MDE2MThm
NmYzYzNiZThiY2U2Li5lOTMwMjU1MzA2NDE3MTNjOTJjZjM4MWViNDNjNmFmZTMyY2M2YzkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKQEAgLTcwLDYgKzcwLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
R3JpZC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iT3ZlcnZpZXdHcmlkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUmVxdWVzdC5qcyI+PC9z
Y3JpcHQ+Cg==
</data>
<flag name="review"
          id="215430"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>