<?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>109796</bug_id>
          
          <creation_ts>2013-02-14 01:36:15 -0800</creation_ts>
          <short_desc>Web Inspector: extract DOM counters graph implementation into its own class</short_desc>
          <delta_ts>2013-02-14 02:24:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</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>832844</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-14 01:36:15 -0800</bug_when>
    <thetext>MemoryStatistics.js now implements DOM counters graph and also is inherited by NativeMemoryGraph.js. DOM counters specific should go into its own file leaving only common bits in MemoryStatistics.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832853</commentid>
    <comment_count>1</comment_count>
      <attachid>188290</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-14 01:43:05 -0800</bug_when>
    <thetext>Created attachment 188290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832861</commentid>
    <comment_count>2</comment_count>
      <attachid>188290</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-14 01:58:32 -0800</bug_when>
    <thetext>Comment on attachment 188290
Patch

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

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:32
&gt; + * @param {WebInspector.TimelinePanel} timelinePanel

@param tags should follow the @constructor and @extends tags

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:48
&gt; +WebInspector.DOMCounterUI = function(memoryCountersPane, title, currentValueLabel, rgb, valueGetter)

JSDoc for the params, please

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:50
&gt; +    var swatchColor = &quot;rgb(&quot; + rgb.join(&quot;,&quot;) + &quot;)&quot;;

BTW, why don&apos;t you use WebInspector.Color? It will ease your life.

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:66
&gt; +WebInspector.DOMCountersGraph.Counter = function(time, documentCount, nodeCount, listenerCount)

JSDoc for the params, please

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:159
&gt; +            new WebInspector.DOMCounterUI(this, &quot;Document Count&quot;, &quot;Documents: %d&quot;, [100,0,0], getDocumentCount),

spaces between array elements everywhere

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:242
&gt; +            ctx.arc(x, y, radius, 0, Math.PI*2, true);

whitespace around &apos;*&apos;

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:289
&gt; +        var currentY = originY + (height - (valueGetter(this._counters[this._minimumIndex])- minValue) * yFactor);

whitespace before &apos;-&apos;

&gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:294
&gt; +             currentY = originY + (height - (valueGetter(this._counters[i])- minValue) * yFactor);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832875</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-14 02:14:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 188290 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188290&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:32
&gt; &gt; + * @param {WebInspector.TimelinePanel} timelinePanel
&gt; 
&gt; @param tags should follow the @constructor and @extends tags
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:48
&gt; &gt; +WebInspector.DOMCounterUI = function(memoryCountersPane, title, currentValueLabel, rgb, valueGetter)
&gt; 
&gt; JSDoc for the params, please
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:50
&gt; &gt; +    var swatchColor = &quot;rgb(&quot; + rgb.join(&quot;,&quot;) + &quot;)&quot;;
&gt; 
&gt; BTW, why don&apos;t you use WebInspector.Color? It will ease your life.
&gt; 
I only need to format string value here.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:66
&gt; &gt; +WebInspector.DOMCountersGraph.Counter = function(time, documentCount, nodeCount, listenerCount)
&gt; 
&gt; JSDoc for the params, please
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:159
&gt; &gt; +            new WebInspector.DOMCounterUI(this, &quot;Document Count&quot;, &quot;Documents: %d&quot;, [100,0,0], getDocumentCount),
&gt; 
&gt; spaces between array elements everywhere
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:242
&gt; &gt; +            ctx.arc(x, y, radius, 0, Math.PI*2, true);
&gt; 
&gt; whitespace around &apos;*&apos;
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:289
&gt; &gt; +        var currentY = originY + (height - (valueGetter(this._counters[this._minimumIndex])- minValue) * yFactor);
&gt; 
&gt; whitespace before &apos;-&apos;
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/DOMCountersGraph.js:294
&gt; &gt; +             currentY = originY + (height - (valueGetter(this._counters[i])- minValue) * yFactor);
&gt; 
&gt; ditto
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832879</commentid>
    <comment_count>4</comment_count>
      <attachid>188294</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-14 02:16:53 -0800</bug_when>
    <thetext>Created attachment 188294
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832886</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-14 02:24:04 -0800</bug_when>
    <thetext>Committed r142862: &lt;http://trac.webkit.org/changeset/142862&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188290</attachid>
            <date>2013-02-14 01:43:05 -0800</date>
            <delta_ts>2013-02-14 01:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>dom-counters-extract.patch</filename>
            <type>text/plain</type>
            <size>31259</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWUzM2EyLi44NjRjMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQg
QEAKKzIwMTMtMDItMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBET00gY291bnRlcnMgZ3JhcGggaW1wbGVt
ZW50YXRpb24gaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgRE9NIGNvdW50ZXJzIGdyYXBoIGltcGxlbWVu
dGF0aW9uIGludG8gRE9NQ291bnRlcnNHcmFwaC5qcyBsZWF2aW5nCisgICAgICAgIGluIE1lbW9y
eVN0YXRpc3RpY3MuanMgb25seSBjb21tb24gcGFydHMgc2hhcmVkIHdpdGggTmF0aXZlTWVtb3J5
R3JhcGguanMKKyAgICAgICAgQWRkZWQgc29tZSBjbG9zdXJlIGFubm90YXRpb25zIGFuZCBjb252
ZXJ0ZWQgb2JqZWN0IGxpdGVyYWxzIGludG8gY2xhc3NlcworICAgICAgICB3aXRoIG5hbWVkIGNv
bnN0cnVjdG9ycy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01Db3VudGVyc0dyYXBo
LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyVUkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTUNvdW50ZXJzR3JhcGguQ291bnRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJLnByb3RvdHlwZS5zZXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJLnByb3RvdHlwZS51cGRhdGVDdXJyZW50VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUuY2xlYXJDdXJyZW50VmFsdWVBbmRNYXJrZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUuc2F2ZUltYWdlVW5k
ZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUu
cmVzdG9yZUltYWdlVW5kZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50
ZXJVSS5wcm90b3R5cGUuZGlzY2FyZEltYWdlVW5kZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgucHJvdG90eXBlLl9jcmVhdGVDdXJyZW50VmFsdWVzQmFy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fY3Jl
YXRlQ291bnRlclVJTGlzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNHcmFw
aC5wcm90b3R5cGUuX2NyZWF0ZUNvdW50ZXJVSUxpc3QuZ2V0Tm9kZUNvdW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fY3JlYXRlQ291bnRlclVJ
TGlzdC5nZXRMaXN0ZW5lckNvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBoLnByb3RvdHlwZS5fY2FudmFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fb25SZWNvcmRBZGRlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgucHJvdG90eXBlLl9yZXN0b3JlSW1hZ2VVbmRlck1h
cmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUu
X3NhdmVJbWFnZVVuZGVyTWFya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBoLnByb3RvdHlwZS5fZHJhd01hcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
Q291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2RyYXdHcmFwaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2Rpc2NhcmRJbWFnZVVuZGVyTWFya2VyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljcy5Db3VudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1v
cnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fY3JlYXRlQ3VycmVudFZhbHVlc0Jhcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2NyZWF0ZUNvdW50ZXJV
SUxpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBl
LnNldFRvcFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
LnByb3RvdHlwZS5fY2FudmFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlT
dGF0aXN0aWNzLnByb3RvdHlwZS5fb25SZWNvcmRBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9vbkNsaWNrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fb25Nb3VzZU91dCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX29uTW91c2VPdmVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fb25Nb3Vz
ZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBl
Ll9yZXN0b3JlSW1hZ2VVbmRlck1hcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5
U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXdNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlHcmFwaC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlHcmFwaC5Db3VudGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXRpdmVNZW1vcnlHcmFwaC5wcm90b3R5cGUuX29uUmVjb3JkQWRkZWQuYWRk
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGgucHJv
dG90eXBlLl9vblJlY29yZEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1v
cnlHcmFwaC5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmM6CisKIDIwMTMtMDItMTMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRv
IGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWQ1NjI4ZC4uZWI3YTFjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNTE4MCw2ICs1MTgwLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0RpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUNv
dW50ZXJzR3JhcGguanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRE9NRXh0
ZW5zaW9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRh
dGlvblV0aWxzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3Jh
Z2UuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCA2NTE5ODU5Li45YTU1MDg1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNzcxOTAsNiArNzcxOTAsMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcRE9NQ291bnRlcnNHcmFwaC5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRE9NRXh0ZW5zaW9uLmpz
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CmluZGV4IDdiNDBlMzYuLmI1YWYyOWEgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTI3Nyw2ICsyNzcsNyBAQCBt
b2R1bGVzID0gWwogICAgICAgICAibmFtZSI6ICJ0aW1lbGluZSIsCiAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiBbImNvbXBvbmVudHMiXSwKICAgICAgICAgInNvdXJjZXMiOiBbCisgICAgICAgICAg
ICAiRE9NQ291bnRlcnNHcmFwaC5qcyIsCiAgICAgICAgICAgICAiTWVtb3J5U3RhdGlzdGljcy5q
cyIsCiAgICAgICAgICAgICAiTmF0aXZlTWVtb3J5R3JhcGguanMiLAogICAgICAgICAgICAgIlRp
bWVsaW5lTW9kZWwuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01Db3VudGVyc0dyYXBoLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01Db3VudGVyc0dyYXBoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmIxYTg5YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUNvdW50ZXJzR3JhcGguanMKQEAgLTAsMCArMSwzMTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWx9IHRpbWVsaW5lUGFuZWwKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCisgKiBAcGFyYW0ge251bWJl
cn0gc2lkZWJhcldpZHRoCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljc30KKyAqLworV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgg
PSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwgc2lkZWJhcldpZHRoKQoreworICAgIFdl
Ykluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLmNhbGwodGhpcywgdGltZWxpbmVQYW5lbCwgbW9k
ZWwsIHNpZGViYXJXaWR0aCk7CisgICAgVGltZWxpbmVBZ2VudC5zZXRJbmNsdWRlRG9tQ291bnRl
cnModHJ1ZSk7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLkNvdW50ZXJVSUJhc2V9CisgKi8KK1dlYkluc3BlY3Rvci5ET01Db3VudGVyVUkgPSBm
dW5jdGlvbihtZW1vcnlDb3VudGVyc1BhbmUsIHRpdGxlLCBjdXJyZW50VmFsdWVMYWJlbCwgcmdi
LCB2YWx1ZUdldHRlcikKK3sKKyAgICB2YXIgc3dhdGNoQ29sb3IgPSAicmdiKCIgKyByZ2Iuam9p
bigiLCIpICsgIikiOworICAgIFdlYkluc3BlY3Rvci5Db3VudGVyVUlCYXNlLmNhbGwodGhpcywg
bWVtb3J5Q291bnRlcnNQYW5lLCB0aXRsZSwgc3dhdGNoQ29sb3IsIHZhbHVlR2V0dGVyKQorICAg
IHRoaXMuX3JhbmdlID0gdGhpcy5fc3dhdGNoLmVsZW1lbnQuY3JlYXRlQ2hpbGQoInNwYW4iKTsK
KworICAgIHRoaXMuX3ZhbHVlID0gbWVtb3J5Q291bnRlcnNQYW5lLl9jdXJyZW50VmFsdWVzQmFy
LmNyZWF0ZUNoaWxkKCJzcGFuIiwgIm1lbW9yeS1jb3VudGVyLXZhbHVlIik7CisgICAgdGhpcy5f
dmFsdWUuc3R5bGUuY29sb3IgPSBzd2F0Y2hDb2xvcjsKKyAgICB0aGlzLl9jdXJyZW50VmFsdWVM
YWJlbCA9IGN1cnJlbnRWYWx1ZUxhYmVsOworCisgICAgdGhpcy5ncmFwaENvbG9yID0gInJnYmEo
IiArIHJnYi5qb2luKCIsIikgKyAiLDAuOCkiOworICAgIHRoaXMuZ3JhcGhZVmFsdWVzID0gW107
Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk1l
bW9yeVN0YXRpc3RpY3MuQ291bnRlcn0KKyAqLworV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3Jh
cGguQ291bnRlciA9IGZ1bmN0aW9uKHRpbWUsIGRvY3VtZW50Q291bnQsIG5vZGVDb3VudCwgbGlz
dGVuZXJDb3VudCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5Db3VudGVy
LmNhbGwodGhpcywgdGltZSk7CisgICAgdGhpcy5kb2N1bWVudENvdW50ID0gZG9jdW1lbnRDb3Vu
dDsKKyAgICB0aGlzLm5vZGVDb3VudCA9IG5vZGVDb3VudDsKKyAgICB0aGlzLmxpc3RlbmVyQ291
bnQgPSBsaXN0ZW5lckNvdW50OworfQorCitXZWJJbnNwZWN0b3IuRE9NQ291bnRlclVJLnByb3Rv
dHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluVmFsdWUKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gbWF4VmFsdWUKKyAgICAgKi8KKyAgICBzZXRSYW5nZTogZnVuY3Rp
b24obWluVmFsdWUsIG1heFZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmFuZ2UudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlsgJWQgLSAlZCBdIiwgbWluVmFsdWUsIG1h
eFZhbHVlKTsKKyAgICB9LAorCisgICAgdXBkYXRlQ3VycmVudFZhbHVlOiBmdW5jdGlvbihjb3Vu
dGVyc0VudHJ5KQorICAgIHsKKyAgICAgICAgdGhpcy5fdmFsdWUudGV4dENvbnRlbnQgPSAgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKHRoaXMuX2N1cnJlbnRWYWx1ZUxhYmVsLCB0aGlzLnZhbHVlR2V0
dGVyKGNvdW50ZXJzRW50cnkpKTsKKyAgICB9LAorCisgICAgY2xlYXJDdXJyZW50VmFsdWVBbmRN
YXJrZXI6IGZ1bmN0aW9uKGN0eCkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVlLnRleHRDb250
ZW50ID0gIiI7CisgICAgICAgIHRoaXMucmVzdG9yZUltYWdlVW5kZXJNYXJrZXIoY3R4KTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9
IGN0eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHkK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaXVzCisgICAgICovCisgICAgc2F2ZUltYWdlVW5k
ZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCwgeCwgeSwgcmFkaXVzKQorICAgIHsKKyAgICAgICAgY29u
c3QgdyA9IHJhZGl1cyArIDE7CisgICAgICAgIHZhciBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VE
YXRhKHggLSB3LCB5IC0gdywgMiAqIHcsIDIgKiB3KTsKKyAgICAgICAgdGhpcy5faW1hZ2VVbmRl
ck1hcmtlciA9IHsKKyAgICAgICAgICAgIHg6IHggLSB3LAorICAgICAgICAgICAgeTogeSAtIHcs
CisgICAgICAgICAgICBpbWFnZURhdGE6IGltYWdlRGF0YQorICAgICAgICB9OworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY3R4Cisg
ICAgICovCisgICAgcmVzdG9yZUltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAodGhpcy5faW1hZ2VVbmRlck1hcmtlcikKKyAgICAgICAgICAgIGN0eC5wdXRJbWFnZURh
dGEodGhpcy5faW1hZ2VVbmRlck1hcmtlci5pbWFnZURhdGEsIHRoaXMuX2ltYWdlVW5kZXJNYXJr
ZXIueCwgdGhpcy5faW1hZ2VVbmRlck1hcmtlci55KTsKKyAgICAgICAgdGhpcy5kaXNjYXJkSW1h
Z2VVbmRlck1hcmtlcigpOworICAgIH0sCisKKyAgICBkaXNjYXJkSW1hZ2VVbmRlck1hcmtlcjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXI7
CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvdW50ZXJVSUJhc2UucHJv
dG90eXBlCit9CisKKworV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgucHJvdG90eXBlID0g
eworICAgIF9jcmVhdGVDdXJyZW50VmFsdWVzQmFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLl9jdXJyZW50VmFsdWVzQmFyID0gdGhpcy5fY2FudmFzQ29udGFpbmVyLmNyZWF0ZUNo
aWxkKCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlc0Jhci5pZCA9ICJjb3VudGVy
LXZhbHVlcy1iYXIiOworICAgICAgICB0aGlzLl9jYW52YXNDb250YWluZXIuYWRkU3R5bGVDbGFz
cygiZG9tLWNvdW50ZXJzIik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxXZWJJbnNwZWN0b3IuRE9NQ291bnRlclVJPn0KKyAgICAgKi8KKyAgICBfY3JlYXRlQ291
bnRlclVJTGlzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZ2V0RG9jdW1l
bnRDb3VudChlbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRvY3Vt
ZW50Q291bnQ7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gZ2V0Tm9kZUNvdW50KGVudHJ5
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZW50cnkubm9kZUNvdW50OworICAgICAg
ICB9CisgICAgICAgIGZ1bmN0aW9uIGdldExpc3RlbmVyQ291bnQoZW50cnkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlbnRyeS5saXN0ZW5lckNvdW50OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBbCisgICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSSh0
aGlzLCAiRG9jdW1lbnQgQ291bnQiLCAiRG9jdW1lbnRzOiAlZCIsIFsxMDAsMCwwXSwgZ2V0RG9j
dW1lbnRDb3VudCksCisgICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSSh0
aGlzLCAiRE9NIE5vZGUgQ291bnQiLCAiTm9kZXM6ICVkIiwgWzAsMTAwLDBdLCBnZXROb2RlQ291
bnQpLAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5ET01Db3VudGVyVUkodGhpcywgIkV2
ZW50IExpc3RlbmVyIENvdW50IiwgIkxpc3RlbmVyczogJWQiLCBbMCwwLDEwMF0sIGdldExpc3Rl
bmVyQ291bnQpCisgICAgICAgIF07CisgICAgfSwKKworICAgIF9jYW52YXNIZWlnaHQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYW52YXNDb250YWluZXIub2Zmc2V0
SGVpZ2h0IC0gdGhpcy5fY3VycmVudFZhbHVlc0Jhci5vZmZzZXRIZWlnaHQ7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAq
LworICAgIF9vblJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGZ1
bmN0aW9uIGFkZFN0YXRpc3RpY3MocmVjb3JkKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
Y291bnRlcnMgPSByZWNvcmRbImNvdW50ZXJzIl07CisgICAgICAgICAgICBpZiAoIWNvdW50ZXJz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRoaXMuX2NvdW50ZXJzLnB1
c2gobmV3IFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoLkNvdW50ZXIoCisgICAgICAgICAg
ICAgICAgcmVjb3JkLmVuZFRpbWUgfHwgcmVjb3JkLnN0YXJ0VGltZSwKKyAgICAgICAgICAgICAg
ICBjb3VudGVyc1siZG9jdW1lbnRzIl0sCisgICAgICAgICAgICAgICAgY291bnRlcnNbIm5vZGVz
Il0sCisgICAgICAgICAgICAgICAgY291bnRlcnNbImpzRXZlbnRMaXN0ZW5lcnMiXQorICAgICAg
ICAgICAgKSk7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuZm9yQWxsUmVjb3JkcyhbZXZlbnQuZGF0YV0sIG51bGwsIGFkZFN0YXRpc3Rp
Y3MuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXcuY2Fs
bCh0aGlzKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb3VudGVyVUkubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICB0aGlzLl9kcmF3R3JhcGgodGhpcy5fY291bnRlclVJW2ld
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkR9IGN0eAorICAgICAqLworICAgIF9yZXN0b3JlSW1hZ2VVbmRlck1hcmtlcjogZnVuY3Rp
b24oY3R4KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb3VudGVy
VUkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBjb3VudGVyVUkgPSB0aGlzLl9jb3Vu
dGVyVUlbaV07CisgICAgICAgICAgICBpZiAoIWNvdW50ZXJVSS52aXNpYmxlKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY291bnRlclVJLnJlc3RvcmVJbWFnZVVuZGVy
TWFya2VyKGN0eCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICovCisgICAgX3NhdmVJbWFnZVVu
ZGVyTWFya2VyOiBmdW5jdGlvbihjdHgsIHgsIGluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3Qg
cmFkaXVzID0gMjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb3VudGVyVUku
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBjb3VudGVyVUkgPSB0aGlzLl9jb3VudGVy
VUlbaV07CisgICAgICAgICAgICBpZiAoIWNvdW50ZXJVSS52aXNpYmxlKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdmFyIHkgPSBjb3VudGVyVUkuZ3JhcGhZVmFsdWVz
W2luZGV4XTsKKyAgICAgICAgICAgIGNvdW50ZXJVSS5zYXZlSW1hZ2VVbmRlck1hcmtlcihjdHgs
IHgsIHksIHJhZGl1cyk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB4CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICovCisgICAgX2RyYXdNYXJr
ZXI6IGZ1bmN0aW9uKGN0eCwgeCwgaW5kZXgpCisgICAgeworICAgICAgICB0aGlzLl9zYXZlSW1h
Z2VVbmRlck1hcmtlcihjdHgsIHgsIGluZGV4KTsKKyAgICAgICAgY29uc3QgcmFkaXVzID0gMjsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb3VudGVyVUkubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIHZhciBjb3VudGVyVUkgPSB0aGlzLl9jb3VudGVyVUlbaV07CisgICAg
ICAgICAgICBpZiAoIWNvdW50ZXJVSS52aXNpYmxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgdmFyIHkgPSBjb3VudGVyVUkuZ3JhcGhZVmFsdWVzW2luZGV4XTsKKyAg
ICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIGN0eC5hcmMoeCwgeSwgcmFk
aXVzLCAwLCBNYXRoLlBJKjIsIHRydWUpOworICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7
CisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY291bnRlclVJLmdyYXBoQ29sb3I7CisgICAg
ICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb3VudGVyVUkuZ3JhcGhDb2xvcjsKKyAgICAgICAg
ICAgIGN0eC5maWxsKCk7CisgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CisgICAgICAgICAgICBj
dHguY2xvc2VQYXRoKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZX0gY291bnRlclVJCisgICAgICovCisgICAg
X2RyYXdHcmFwaDogZnVuY3Rpb24oY291bnRlclVJKQorICAgIHsKKyAgICAgICAgdmFyIGNhbnZh
cyA9IHRoaXMuX2NhbnZhczsKKyAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIy
ZCIpOworICAgICAgICB2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7CisgICAgICAgIHZhciBoZWln
aHQgPSB0aGlzLl9jbGlwcGVkSGVpZ2h0OworICAgICAgICB2YXIgb3JpZ2luWSA9IHRoaXMuX29y
aWdpblk7CisgICAgICAgIHZhciB2YWx1ZUdldHRlciA9IGNvdW50ZXJVSS52YWx1ZUdldHRlcjsK
KworICAgICAgICBpZiAoIXRoaXMuX2NvdW50ZXJzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgbWF4VmFsdWU7CisgICAgICAgIHZhciBtaW5WYWx1ZTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IHRoaXMuX21pbmltdW1JbmRleDsgaSA8PSB0aGlzLl9tYXhpbXVtSW5k
ZXg7IGkrKykgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gdmFsdWVHZXR0ZXIodGhpcy5fY291
bnRlcnNbaV0pOworICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFs
dWUgPCBtaW5WYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IHZhbHVlOworICAgICAg
ICAgICAgaWYgKG1heFZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPiBtYXhWYWx1ZSkKKyAg
ICAgICAgICAgICAgICBtYXhWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgY291
bnRlclVJLnNldFJhbmdlKG1pblZhbHVlLCBtYXhWYWx1ZSk7CisKKyAgICAgICAgaWYgKCFjb3Vu
dGVyVUkudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgeVZhbHVl
cyA9IGNvdW50ZXJVSS5ncmFwaFlWYWx1ZXM7CisgICAgICAgIHlWYWx1ZXMubGVuZ3RoID0gdGhp
cy5fY291bnRlcnMubGVuZ3RoOworCisgICAgICAgIHZhciBtYXhZUmFuZ2UgPSBtYXhWYWx1ZSAt
IG1pblZhbHVlOworICAgICAgICB2YXIgeUZhY3RvciA9IG1heFlSYW5nZSA/IGhlaWdodCAvICht
YXhZUmFuZ2UpIDogMTsKKworICAgICAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBj
dXJyZW50WSA9IG9yaWdpblkgKyAoaGVpZ2h0IC0gKHZhbHVlR2V0dGVyKHRoaXMuX2NvdW50ZXJz
W3RoaXMuX21pbmltdW1JbmRleF0pLSBtaW5WYWx1ZSkgKiB5RmFjdG9yKTsKKyAgICAgICAgY3R4
Lm1vdmVUbygwLCBjdXJyZW50WSk7CisgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9taW5pbXVt
SW5kZXg7IGkgPD0gdGhpcy5fbWF4aW11bUluZGV4OyBpKyspIHsKKyAgICAgICAgICAgICB2YXIg
eCA9IHRoaXMuX2NvdW50ZXJzW2ldLng7CisgICAgICAgICAgICAgY3R4LmxpbmVUbyh4LCBjdXJy
ZW50WSk7CisgICAgICAgICAgICAgY3VycmVudFkgPSBvcmlnaW5ZICsgKGhlaWdodCAtICh2YWx1
ZUdldHRlcih0aGlzLl9jb3VudGVyc1tpXSktIG1pblZhbHVlKSAqIHlGYWN0b3IpOworICAgICAg
ICAgICAgIGN0eC5saW5lVG8oeCwgY3VycmVudFkpOworCisgICAgICAgICAgICAgeVZhbHVlc1tp
XSA9IGN1cnJlbnRZOworICAgICAgICB9CisgICAgICAgIGN0eC5saW5lVG8od2lkdGgsIGN1cnJl
bnRZKTsKKyAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CisgICAgICAgIGN0eC5zdHJva2VTdHls
ZSA9IGNvdW50ZXJVSS5ncmFwaENvbG9yOworICAgICAgICBjdHguc3Ryb2tlKCk7CisgICAgICAg
IGN0eC5jbG9zZVBhdGgoKTsKKyAgICB9LAorCisgICAgX2Rpc2NhcmRJbWFnZVVuZGVyTWFya2Vy
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Nv
dW50ZXJVSS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRoaXMuX2NvdW50ZXJVSVtpXS5kaXNj
YXJkSW1hZ2VVbmRlck1hcmtlcigpOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKaW5kZXggMmY1
MmFhNS4uMGM2ZjVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwpAQCAtNjcsOCArNjcsMTQgQEAgV2ViSW5zcGVj
dG9yLk1lbW9yeVN0YXRpc3RpY3MgPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwgc2lk
ZWJhcldpZHRoKQogICAgIC8vIFBvcHVsYXRlIHNpZGViYXIKICAgICB0aGlzLl9tZW1vcnlTaWRl
YmFyVmlldy5zaWRlYmFyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNpZGViYXItdHJlZSBz
aWRlYmFyLXRyZWUtc2VjdGlvbiIpLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDT1VOVEVSUyIpOwogICAgIHRoaXMuX2NvdW50ZXJVSSA9IHRoaXMuX2NyZWF0ZUNvdW50ZXJV
SUxpc3QoKTsKK30KIAotICAgIFRpbWVsaW5lQWdlbnQuc2V0SW5jbHVkZURvbUNvdW50ZXJzKHRy
dWUpOworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRp
c3RpY3MuQ291bnRlciA9IGZ1bmN0aW9uKHRpbWUpCit7CisgICAgdGhpcy50aW1lID0gdGltZTsK
IH0KIAogLyoqCkBAIC0xNTksOTYgKzE2NSwxNSBAQCBXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFz
ZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIH0KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZX0KLSAqLwotV2ViSW5zcGVjdG9yLkRP
TUNvdW50ZXJVSSA9IGZ1bmN0aW9uKG1lbW9yeUNvdW50ZXJzUGFuZSwgdGl0bGUsIGN1cnJlbnRW
YWx1ZUxhYmVsLCByZ2IsIHZhbHVlR2V0dGVyKQotewotICAgIHZhciBzd2F0Y2hDb2xvciA9ICJy
Z2IoIiArIHJnYi5qb2luKCIsIikgKyAiKSI7Ci0gICAgV2ViSW5zcGVjdG9yLkNvdW50ZXJVSUJh
c2UuY2FsbCh0aGlzLCBtZW1vcnlDb3VudGVyc1BhbmUsIHRpdGxlLCBzd2F0Y2hDb2xvciwgdmFs
dWVHZXR0ZXIpCi0gICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9zd2F0Y2guZWxlbWVudC5jcmVhdGVD
aGlsZCgic3BhbiIpOwotCi0gICAgdGhpcy5fdmFsdWUgPSBtZW1vcnlDb3VudGVyc1BhbmUuX2N1
cnJlbnRWYWx1ZXNCYXIuY3JlYXRlQ2hpbGQoInNwYW4iLCAibWVtb3J5LWNvdW50ZXItdmFsdWUi
KTsKLSAgICB0aGlzLl92YWx1ZS5zdHlsZS5jb2xvciA9IHN3YXRjaENvbG9yOwotICAgIHRoaXMu
X2N1cnJlbnRWYWx1ZUxhYmVsID0gY3VycmVudFZhbHVlTGFiZWw7Ci0KLSAgICB0aGlzLmdyYXBo
Q29sb3IgPSAicmdiYSgiICsgcmdiLmpvaW4oIiwiKSArICIsMC44KSI7Ci0gICAgdGhpcy5ncmFw
aFlWYWx1ZXMgPSBbXTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUg
PSB7Ci0gICAgc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblZhbHVlLCBtYXhWYWx1ZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX3JhbmdlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJb
ICVkIC0gJWQgXSIsIG1pblZhbHVlLCBtYXhWYWx1ZSk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUN1
cnJlbnRWYWx1ZTogZnVuY3Rpb24oY291bnRlcnNFbnRyeSkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3ZhbHVlLnRleHRDb250ZW50ID0gIFdlYkluc3BlY3Rvci5VSVN0cmluZyh0aGlzLl9jdXJyZW50
VmFsdWVMYWJlbCwgdGhpcy52YWx1ZUdldHRlcihjb3VudGVyc0VudHJ5KSk7Ci0gICAgfSwKLQot
ICAgIGNsZWFyQ3VycmVudFZhbHVlQW5kTWFya2VyOiBmdW5jdGlvbihjdHgpCi0gICAgewotICAg
ICAgICB0aGlzLl92YWx1ZS50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICB0aGlzLnJlc3RvcmVJ
bWFnZVVuZGVyTWFya2VyKGN0eCk7Ci0gICAgfSwKLQotICAgIHNhdmVJbWFnZVVuZGVyTWFya2Vy
OiBmdW5jdGlvbihjdHgsIHgsIHksIHJhZGl1cykKLSAgICB7Ci0gICAgICAgIGNvbnN0IHcgPSBy
YWRpdXMgKyAxOwotICAgICAgICB2YXIgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSh4IC0g
dywgeSAtIHcsIDIgKiB3LCAyICogdyk7Ci0gICAgICAgIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIg
PSB7Ci0gICAgICAgICAgICB4OiB4IC0gdywKLSAgICAgICAgICAgIHk6IHkgLSB3LAotICAgICAg
ICAgICAgaW1hZ2VEYXRhOiBpbWFnZURhdGEgfTsKLSAgICB9LAotCi0gICAgcmVzdG9yZUltYWdl
VW5kZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy52aXNp
YmxlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodGhpcy5faW1hZ2VVbmRlck1h
cmtlcikKLSAgICAgICAgICAgIGN0eC5wdXRJbWFnZURhdGEodGhpcy5faW1hZ2VVbmRlck1hcmtl
ci5pbWFnZURhdGEsIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIueCwgdGhpcy5faW1hZ2VVbmRlck1h
cmtlci55KTsKLSAgICAgICAgdGhpcy5kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcigpOwotICAgIH0s
Ci0KLSAgICBkaXNjYXJkSW1hZ2VVbmRlck1hcmtlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgZGVsZXRlIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXI7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLkNvdW50ZXJVSUJhc2UucHJvdG90eXBlCi19Ci0KLQogV2ViSW5zcGVj
dG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVDdXJyZW50VmFs
dWVzQmFyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVzQmFy
ID0gdGhpcy5fY2FudmFzQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJkaXYiKTsKLSAgICAgICAgdGhp
cy5fY3VycmVudFZhbHVlc0Jhci5pZCA9ICJjb3VudGVyLXZhbHVlcy1iYXIiOwotICAgICAgICB0
aGlzLl9jYW52YXNDb250YWluZXIuYWRkU3R5bGVDbGFzcygiZG9tLWNvdW50ZXJzIik7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIik7CiAgICAgfSwKIAogICAgIF9j
cmVhdGVDb3VudGVyVUlMaXN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBn
ZXREb2N1bWVudENvdW50KGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW50
cnkuZG9jdW1lbnRDb3VudDsKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBnZXROb2RlQ291
bnQoZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5ub2RlQ291bnQ7
Ci0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gZ2V0TGlzdGVuZXJDb3VudChlbnRyeSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lmxpc3RlbmVyQ291bnQ7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJKHRoaXMsICJEb2N1bWVudCBDb3VudCIsICJEb2N1bWVudHM6ICVkIiwgWzEwMCwwLDBd
LCBnZXREb2N1bWVudENvdW50KSwKLSAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJKHRoaXMsICJET00gTm9kZSBDb3VudCIsICJOb2RlczogJWQiLCBbMCwxMDAsMF0sIGdl
dE5vZGVDb3VudCksCi0gICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSSh0
aGlzLCAiRXZlbnQgTGlzdGVuZXIgQ291bnQiLCAiTGlzdGVuZXJzOiAlZCIsIFswLDAsMTAwXSwg
Z2V0TGlzdGVuZXJDb3VudCkKLSAgICAgICAgXTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJO
b3QgaW1wbGVtZW50ZWQiKTsKICAgICB9LAogCiAgICAgX29uUmVjb3Jkc0NsZWFyZWQ6IGZ1bmN0
aW9uKCkKQEAgLTI1NiwxNyArMTgxLDI2IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY291bnRlcnMgPSBbXTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkfSB0aW1lbGlu
ZUdyaWQKKyAgICAgKi8KICAgICBzZXRNYWluVGltZWxpbmVHcmlkOiBmdW5jdGlvbih0aW1lbGlu
ZUdyaWQpCiAgICAgewogICAgICAgICB0aGlzLl9tYWluVGltZWxpbmVHcmlkID0gdGltZWxpbmVH
cmlkOwogICAgIH0sCiAKLSAgICBzZXRUb3BQb3NpdGlvbjogZnVuY3Rpb24odG9wKQorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3AKKyAgICAgKi8KKyAgICAgc2V0VG9wUG9zaXRp
b246IGZ1bmN0aW9uKHRvcCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3
LmVsZW1lbnQuc3R5bGUudG9wID0gdG9wICsgInB4IjsKICAgICAgICAgdGhpcy5fdXBkYXRlU2l6
ZSgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAg
ICAgKi8KICAgICBzZXRTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2lnbm9yZVNpZGViYXJSZXNpemUpCkBAIC0yNzYsNiArMjEwLDkgQEAgV2Vi
SW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9p
Z25vcmVTaWRlYmFyUmVzaXplID0gZmFsc2U7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwogICAgIF9zaWRlYmFyUmVz
aXplZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faWdub3JlU2lk
ZWJhclJlc2l6ZSkKQEAgLTI4Nyw3ICsyMjQsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUgPSB7CiAKICAgICBfY2FudmFzSGVpZ2h0OiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fY2FudmFzQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIHRo
aXMuX2N1cnJlbnRWYWx1ZXNCYXIub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBfdXBkYXRlU2l6ZTogZnVuY3Rp
b24oKQpAQCAtMzAwLDIyICsyMzcsMTIgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3Mu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQK
KyAgICAgKi8KICAgICBfb25SZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICB2YXIgc3RhdGlzdGljcyA9IHRoaXMuX2NvdW50ZXJzOwotICAgICAgICBmdW5jdGlvbiBh
ZGRTdGF0aXN0aWNzKHJlY29yZCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJz
ID0gcmVjb3JkWyJjb3VudGVycyJdOwotICAgICAgICAgICAgaWYgKCFjb3VudGVycykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzdGF0aXN0aWNzLnB1c2goewotICAgICAg
ICAgICAgICAgIHRpbWU6IHJlY29yZC5lbmRUaW1lIHx8IHJlY29yZC5zdGFydFRpbWUsCi0gICAg
ICAgICAgICAgICAgZG9jdW1lbnRDb3VudDogY291bnRlcnNbImRvY3VtZW50cyJdLAotICAgICAg
ICAgICAgICAgIG5vZGVDb3VudDogY291bnRlcnNbIm5vZGVzIl0sCi0gICAgICAgICAgICAgICAg
bGlzdGVuZXJDb3VudDogY291bnRlcnNbImpzRXZlbnRMaXN0ZW5lcnMiXQotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuZm9yQWxsUmVjb3JkcyhbZXZlbnQuZGF0YV0sIG51bGwsIGFkZFN0YXRpc3RpY3MpOwor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAg
ICBfZHJhdzogZnVuY3Rpb24oKQpAQCAtMzI1LDggKzI1Miw2IEBAIFdlYkluc3BlY3Rvci5NZW1v
cnlTdGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2xlYXIoKTsKIAogICAg
ICAgICB0aGlzLl9zZXRWZXJ0aWNhbENsaXAoMTAsIHRoaXMuX2NhbnZhcy5oZWlnaHQgLSAyMCk7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsr
KQotICAgICAgICAgICAgdGhpcy5fZHJhd0dyYXBoKHRoaXMuX2NvdW50ZXJVSVtpXSk7CiAgICAg
fSwKIAogICAgIF9jYWxjdWxhdGVWaXNpYmxlSW5kZXhlczogZnVuY3Rpb24oKQpAQCAtMzU3LDcg
KzI4MiwxMCBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX21heFRpbWUgPSBlbmQ7CiAgICAgfSwKIAotICAgIF9vbkNsaWNrOiBmdW5j
dGlvbihldmVudCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgIF9vbkNsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciB4ID0gZXZlbnQueCAtIGV2ZW50LnRhcmdldC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKICAg
ICAgICAgdmFyIGkgPSB0aGlzLl9yZWNvcmRJbmRleEF0KHgpOwpAQCAtMzY2LDcgKzI5NCwxMCBA
QCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl90aW1lbGluZVBhbmVsLnJldmVhbFJlY29yZEF0KGNvdW50ZXIudGltZSAvIDEwMDAp
OwogICAgIH0sCiAKLSAgICBfb25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudAorICAgICAqLworICAgICBfb25Nb3VzZU91
dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fbWFya2VyWFBv
c2l0aW9uOwogCkBAIC0zNzQsMTggKzMwNSwyNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlz
dGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NsZWFyQ3VycmVudFZhbHVlQW5kTWFy
a2VyKGN0eCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEfSBjdHgKKyAgICAgKi8KICAgICBfY2xlYXJDdXJyZW50VmFsdWVBbmRNYXJr
ZXI6IGZ1bmN0aW9uKGN0eCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5fY291bnRlclVJLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgdGhpcy5fY291bnRlclVJW2ld
LmNsZWFyQ3VycmVudFZhbHVlQW5kTWFya2VyKGN0eCk7CiAgICAgfSwKIAotICAgIF9vbk1vdXNl
T3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtNb3VzZUV2ZW50
fSBldmVudAorICAgICAqLworICAgICBfb25Nb3VzZU92ZXI6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5fb25Nb3VzZU1vdmUoZXZlbnQpOwogICAgIH0sCiAKLSAgICBfb25N
b3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7TW91c2VF
dmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICAgX29uTW91c2VNb3ZlOiBmdW5jdGlvbihldmVudCkK
ICAgICB7CiAgICAgICAgIHZhciB4ID0gZXZlbnQueCAtIGV2ZW50LnRhcmdldC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdAogICAgICAgICB0aGlzLl9tYXJrZXJYUG9zaXRpb24gPSB4OwpAQCAtNDMy
LDQ0ICszNzIsMTIgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0g
ewogCiAgICAgX3Jlc3RvcmVJbWFnZVVuZGVyTWFya2VyOiBmdW5jdGlvbihjdHgpCiAgICAgewot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2NvdW50ZXJVSVtpXTsKLSAgICAg
ICAgICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBjb3VudGVyVUkucmVzdG9yZUltYWdlVW5kZXJNYXJrZXIoY3R4KTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBfc2F2ZUltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKGN0
eCwgeCwgaW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCByYWRpdXMgPSAyOwotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2NvdW50ZXJVSVtpXTsKLSAgICAgICAgICAgIGlm
ICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB2YXIgeSA9IGNvdW50ZXJVSS5ncmFwaFlWYWx1ZXNbaW5kZXhdOwotICAgICAgICAgICAg
Y291bnRlclVJLnNhdmVJbWFnZVVuZGVyTWFya2VyKGN0eCwgeCwgeSwgcmFkaXVzKTsKLSAgICAg
ICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0s
CiAKICAgICBfZHJhd01hcmtlcjogZnVuY3Rpb24oY3R4LCB4LCBpbmRleCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX3NhdmVJbWFnZVVuZGVyTWFya2VyKGN0eCwgeCwgaW5kZXgpOwotICAgICAgICBj
b25zdCByYWRpdXMgPSAyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50
ZXJVSS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2Nv
dW50ZXJVSVtpXTsKLSAgICAgICAgICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIgeSA9IGNvdW50ZXJVSS5ncmFwaFlW
YWx1ZXNbaW5kZXhdOwotICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAg
Y3R4LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkqMiwgdHJ1ZSk7Ci0gICAgICAgICAgICBj
dHgubGluZVdpZHRoID0gMTsKLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb3VudGVyVUku
Z3JhcGhDb2xvcjsKLSAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvdW50ZXJVSS5ncmFw
aENvbG9yOwotICAgICAgICAgICAgY3R4LmZpbGwoKTsKLSAgICAgICAgICAgIGN0eC5zdHJva2Uo
KTsKLSAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgICAgfQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICB2aXNpYmxlOiBm
dW5jdGlvbigpCkBAIC01MjQsNTcgKzQzMiw2IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0
aWNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY291bnRlcnNbdGhpcy5fbWF4aW11bUlu
ZGV4XS54ID0gd2lkdGg7CiAgICAgfSwKIAotICAgIF9kcmF3R3JhcGg6IGZ1bmN0aW9uKGNvdW50
ZXJVSSkKLSAgICB7Ci0gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLl9jYW52YXM7Ci0gICAgICAg
IHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgdmFyIHdpZHRoID0g
Y2FudmFzLndpZHRoOwotICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY2xpcHBlZEhlaWdodDsK
LSAgICAgICAgdmFyIG9yaWdpblkgPSB0aGlzLl9vcmlnaW5ZOwotICAgICAgICB2YXIgdmFsdWVH
ZXR0ZXIgPSBjb3VudGVyVUkudmFsdWVHZXR0ZXI7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9jb3Vu
dGVycy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIG1heFZhbHVl
OwotICAgICAgICB2YXIgbWluVmFsdWU7Ci0gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9taW5p
bXVtSW5kZXg7IGkgPD0gdGhpcy5fbWF4aW11bUluZGV4OyBpKyspIHsKLSAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IHZhbHVlR2V0dGVyKHRoaXMuX2NvdW50ZXJzW2ldKTsKLSAgICAgICAgICAgIGlm
IChtaW5WYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlIDwgbWluVmFsdWUpCi0gICAgICAgICAg
ICAgICAgbWluVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgIGlmIChtYXhWYWx1ZSA9PT0gdW5k
ZWZpbmVkIHx8IHZhbHVlID4gbWF4VmFsdWUpCi0gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSB2
YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvdW50ZXJVSS5zZXRSYW5nZShtaW5WYWx1ZSwg
bWF4VmFsdWUpOwotCi0gICAgICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHlWYWx1ZXMgPSBjb3VudGVyVUkuZ3JhcGhZVmFsdWVz
OwotICAgICAgICB5VmFsdWVzLmxlbmd0aCA9IHRoaXMuX2NvdW50ZXJzLmxlbmd0aDsKLQotICAg
ICAgICB2YXIgbWF4WVJhbmdlID0gbWF4VmFsdWUgLSBtaW5WYWx1ZTsKLSAgICAgICAgdmFyIHlG
YWN0b3IgPSBtYXhZUmFuZ2UgPyBoZWlnaHQgLyAobWF4WVJhbmdlKSA6IDE7Ci0KLSAgICAgICAg
Y3R4LmJlZ2luUGF0aCgpOwotICAgICAgICB2YXIgY3VycmVudFkgPSBvcmlnaW5ZICsgKGhlaWdo
dCAtICh2YWx1ZUdldHRlcih0aGlzLl9jb3VudGVyc1t0aGlzLl9taW5pbXVtSW5kZXhdKS0gbWlu
VmFsdWUpICogeUZhY3Rvcik7Ci0gICAgICAgIGN0eC5tb3ZlVG8oMCwgY3VycmVudFkpOwotICAg
ICAgICBmb3IgKHZhciBpID0gdGhpcy5fbWluaW11bUluZGV4OyBpIDw9IHRoaXMuX21heGltdW1J
bmRleDsgaSsrKSB7Ci0gICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9jb3VudGVyc1tpXS54Owot
ICAgICAgICAgICAgIGN0eC5saW5lVG8oeCwgY3VycmVudFkpOwotICAgICAgICAgICAgIGN1cnJl
bnRZID0gb3JpZ2luWSArIChoZWlnaHQgLSAodmFsdWVHZXR0ZXIodGhpcy5fY291bnRlcnNbaV0p
LSBtaW5WYWx1ZSkgKiB5RmFjdG9yKTsKLSAgICAgICAgICAgICBjdHgubGluZVRvKHgsIGN1cnJl
bnRZKTsKLQotICAgICAgICAgICAgIHlWYWx1ZXNbaV0gPSBjdXJyZW50WTsKLSAgICAgICAgfQot
ICAgICAgICBjdHgubGluZVRvKHdpZHRoLCBjdXJyZW50WSk7Ci0gICAgICAgIGN0eC5saW5lV2lk
dGggPSAxOwotICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb3VudGVyVUkuZ3JhcGhDb2xvcjsK
LSAgICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgfSwK
LQogICAgIF9jbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBjdHggPSB0aGlzLl9jYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2Fu
dmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CkBAIC01ODMsOCArNDQwLDcgQEAgV2ViSW5z
cGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogCiAgICAgX2Rpc2NhcmRJbWFn
ZVVuZGVyTWFya2VyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHRoaXMuX2NvdW50
ZXJVSVtpXS5kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcigpOworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlHcmFwaC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5R3JhcGguanMKaW5kZXggOWYx
MTViYS4uNmQwYTE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OYXRpdmVNZW1vcnlHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdGl2ZU1lbW9yeUdyYXBoLmpzCkBAIC00Myw2ICs0MywxNiBAQCBXZWJJbnNw
ZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwg
c2lkZWJhcldpZHRoKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLkNvdW50ZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5OYXRp
dmVNZW1vcnlHcmFwaC5Db3VudGVyID0gZnVuY3Rpb24odGltZSwgbmF0aXZlQ291bnRlcnMpCit7
CisgICAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MuQ291bnRlci5jYWxsKHRoaXMsIHRp
bWUpOworICAgIHRoaXMubmF0aXZlQ291bnRlcnMgPSBuYXRpdmVDb3VudGVyczsKK30KKworLyoq
CisgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFz
ZX0KICAqLwogV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeUNvdW50ZXJVSSA9IGZ1bmN0aW9uKG1l
bW9yeUNvdW50ZXJzUGFuZSwgdGl0bGUsIGhzbCwgdmFsdWVHZXR0ZXIpCkBAIC0xNDksMjEgKzE1
OSwxNyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGgucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbmF0aXZlQ291bnRlcnNbIk90aGVyIl0gPSBuYXRpdmVD
b3VudGVyc1siUHJpdmF0ZUJ5dGVzIl0gLSBrbm93blNpemU7CiAKLSAgICAgICAgICAgIHN0YXRp
c3RpY3MucHVzaCh7Ci0gICAgICAgICAgICAgICAgdGltZTogcmVjb3JkLmVuZFRpbWUgfHwgcmVj
b3JkLnN0YXJ0VGltZSwKLSAgICAgICAgICAgICAgICBuYXRpdmVDb3VudGVyczogbmF0aXZlQ291
bnRlcnMKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RhdGlzdGljcy5wdXNoKG5ldyBX
ZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGguQ291bnRlcigKKyAgICAgICAgICAgICAgICBy
ZWNvcmQuZW5kVGltZSB8fCByZWNvcmQuc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgIG5hdGl2
ZUNvdW50ZXJzCisgICAgICAgICAgICApKTsKICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5mb3JBbGxSZWNvcmRzKFtldmVudC5kYXRhXSwg
bnVsbCwgYWRkU3RhdGlzdGljcyk7CiAgICAgfSwKIAogICAgIF9kcmF3OiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXNpYmxlSW5kZXhlcygpOwotICAgICAgICB0
aGlzLl9jYWxjdWxhdGVYVmFsdWVzKCk7Ci0gICAgICAgIHRoaXMuX2NsZWFyKCk7Ci0KLSAgICAg
ICAgdGhpcy5fc2V0VmVydGljYWxDbGlwKDEwLCB0aGlzLl9jYW52YXMuaGVpZ2h0IC0gMjApOwor
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXcuY2Fs
bCh0aGlzKTsKIAogICAgICAgICB2YXIgbWF4VmFsdWUgPSB0aGlzLl9tYXhDb3VudGVyVmFsdWUo
KTsKICAgICAgICAgdGhpcy5fcmVzZXRUb3RhbFZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDc0YTA0ZDIu
LmM1YTYyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanMKQEAgLTMwLDYgKzMwLDcgQEAKICAqLwogCiBpbXBvcnRTY3JpcHQo
Ik1lbW9yeVN0YXRpc3RpY3MuanMiKTsKK2ltcG9ydFNjcmlwdCgiRE9NQ291bnRlcnNHcmFwaC5q
cyIpOwogaW1wb3J0U2NyaXB0KCJOYXRpdmVNZW1vcnlHcmFwaC5qcyIpOwogaW1wb3J0U2NyaXB0
KCJUaW1lbGluZU1vZGVsLmpzIik7CiBpbXBvcnRTY3JpcHQoIlRpbWVsaW5lT3ZlcnZpZXdQYW5l
LmpzIik7CkBAIC03OSw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVu
Y3Rpb24oKQogICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5uYXRpdmVN
ZW1vcnlUaW1lbGluZS5pc0VuYWJsZWQoKSkKICAgICAgICAgdGhpcy5fbWVtb3J5U3RhdGlzdGlj
cyA9IG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGgodGhpcywgdGhpcy5fbW9kZWws
IHRoaXMuc3BsaXRWaWV3LnNpZGViYXJXaWR0aCgpKTsKICAgICBlbHNlCi0gICAgICAgIHRoaXMu
X21lbW9yeVN0YXRpc3RpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3ModGhp
cywgdGhpcy5fbW9kZWwsIHRoaXMuc3BsaXRWaWV3LnNpZGViYXJXaWR0aCgpKTsKKyAgICAgICAg
dGhpcy5fbWVtb3J5U3RhdGlzdGljcyA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNHcmFw
aCh0aGlzLCB0aGlzLl9tb2RlbCwgdGhpcy5zcGxpdFZpZXcuc2lkZWJhcldpZHRoKCkpOwogICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tZW1vcnlDb3VudGVyR3JhcGhzSGVpZ2h0ID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoIm1lbW9yeUNvdW50ZXJHcmFwaHNIZWlnaHQi
LCAxNTApOwogCiAgICAgdmFyIGl0ZW1zVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNp
ZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSRUNPUkRTIiks
IHt9LCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwppbmRleCA5MTY1NjJjLi42MmZiNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01NCw2ICs1NCw3IEBACiAgICAgPGZpbGU+RGly
ZWN0b3J5Q29udGVudFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NQWdlbnQuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qczwvZmlsZT4KKyAgICA8Zmls
ZT5ET01Db3VudGVyc0dyYXBoLmpzPC9maWxlPgogICAgIDxmaWxlPkRPTUV4dGVuc2lvbi5qczwv
ZmlsZT4KICAgICA8ZmlsZT5ET01QcmVzZW50YXRpb25VdGlscy5qczwvZmlsZT4KICAgICA8Zmls
ZT5ET01TdG9yYWdlLmpzPC9maWxlPgo=
</data>
<flag name="review"
          id="208366"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188294</attachid>
            <date>2013-02-14 02:16:53 -0800</date>
            <delta_ts>2013-02-14 02:16:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>dom-counters-extract.patch</filename>
            <type>text/plain</type>
            <size>31860</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZWUzM2EyLi44NjRjMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQg
QEAKKzIwMTMtMDItMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBET00gY291bnRlcnMgZ3JhcGggaW1wbGVt
ZW50YXRpb24gaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgRE9NIGNvdW50ZXJzIGdyYXBoIGltcGxlbWVu
dGF0aW9uIGludG8gRE9NQ291bnRlcnNHcmFwaC5qcyBsZWF2aW5nCisgICAgICAgIGluIE1lbW9y
eVN0YXRpc3RpY3MuanMgb25seSBjb21tb24gcGFydHMgc2hhcmVkIHdpdGggTmF0aXZlTWVtb3J5
R3JhcGguanMKKyAgICAgICAgQWRkZWQgc29tZSBjbG9zdXJlIGFubm90YXRpb25zIGFuZCBjb252
ZXJ0ZWQgb2JqZWN0IGxpdGVyYWxzIGludG8gY2xhc3NlcworICAgICAgICB3aXRoIG5hbWVkIGNv
bnN0cnVjdG9ycy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01Db3VudGVyc0dyYXBo
LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyVUkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTUNvdW50ZXJzR3JhcGguQ291bnRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJLnByb3RvdHlwZS5zZXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJLnByb3RvdHlwZS51cGRhdGVDdXJyZW50VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUuY2xlYXJDdXJyZW50VmFsdWVBbmRNYXJrZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUuc2F2ZUltYWdlVW5k
ZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUu
cmVzdG9yZUltYWdlVW5kZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUNvdW50
ZXJVSS5wcm90b3R5cGUuZGlzY2FyZEltYWdlVW5kZXJNYXJrZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgucHJvdG90eXBlLl9jcmVhdGVDdXJyZW50VmFsdWVzQmFy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fY3Jl
YXRlQ291bnRlclVJTGlzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNHcmFw
aC5wcm90b3R5cGUuX2NyZWF0ZUNvdW50ZXJVSUxpc3QuZ2V0Tm9kZUNvdW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fY3JlYXRlQ291bnRlclVJ
TGlzdC5nZXRMaXN0ZW5lckNvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBoLnByb3RvdHlwZS5fY2FudmFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01Db3VudGVyc0dyYXBoLnByb3RvdHlwZS5fb25SZWNvcmRBZGRlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgucHJvdG90eXBlLl9yZXN0b3JlSW1hZ2VVbmRlck1h
cmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUu
X3NhdmVJbWFnZVVuZGVyTWFya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBoLnByb3RvdHlwZS5fZHJhd01hcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
Q291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2RyYXdHcmFwaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQ291bnRlcnNHcmFwaC5wcm90b3R5cGUuX2Rpc2NhcmRJbWFnZVVuZGVyTWFya2VyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljcy5Db3VudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1v
cnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fY3JlYXRlQ3VycmVudFZhbHVlc0Jhcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2NyZWF0ZUNvdW50ZXJV
SUxpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBl
LnNldFRvcFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
LnByb3RvdHlwZS5fY2FudmFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlT
dGF0aXN0aWNzLnByb3RvdHlwZS5fb25SZWNvcmRBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9vbkNsaWNrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fb25Nb3VzZU91dCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUuX29uTW91c2VPdmVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5fb25Nb3Vz
ZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBl
Ll9yZXN0b3JlSW1hZ2VVbmRlck1hcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWVtb3J5
U3RhdGlzdGljcy5wcm90b3R5cGUuX2RyYXdNYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlLl9kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlHcmFwaC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlHcmFwaC5Db3VudGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXRpdmVNZW1vcnlHcmFwaC5wcm90b3R5cGUuX29uUmVjb3JkQWRkZWQuYWRk
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5R3JhcGgucHJv
dG90eXBlLl9vblJlY29yZEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1v
cnlHcmFwaC5wcm90b3R5cGUuX2RyYXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmM6CisKIDIwMTMtMDItMTMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtTaGFkb3cgRE9NXSBJbXBsZW1lbnRzIGEgJzo6ZGlzdHJpYnV0ZWQoKScgcHNldWRv
IGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWQ1NjI4ZC4uZWI3YTFjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNTE4MCw2ICs1MTgwLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0RpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUNv
dW50ZXJzR3JhcGguanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRE9NRXh0
ZW5zaW9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRh
dGlvblV0aWxzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3Jh
Z2UuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCA2NTE5ODU5Li45YTU1MDg1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNzcxOTAsNiArNzcxOTAsMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcRE9NQ291bnRlcnNHcmFwaC5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRE9NRXh0ZW5zaW9uLmpz
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CmluZGV4IDdiNDBlMzYuLmI1YWYyOWEgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTI3Nyw2ICsyNzcsNyBAQCBt
b2R1bGVzID0gWwogICAgICAgICAibmFtZSI6ICJ0aW1lbGluZSIsCiAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiBbImNvbXBvbmVudHMiXSwKICAgICAgICAgInNvdXJjZXMiOiBbCisgICAgICAgICAg
ICAiRE9NQ291bnRlcnNHcmFwaC5qcyIsCiAgICAgICAgICAgICAiTWVtb3J5U3RhdGlzdGljcy5q
cyIsCiAgICAgICAgICAgICAiTmF0aXZlTWVtb3J5R3JhcGguanMiLAogICAgICAgICAgICAgIlRp
bWVsaW5lTW9kZWwuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01Db3VudGVyc0dyYXBoLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01Db3VudGVyc0dyYXBoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRjYzk2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUNvdW50ZXJzR3JhcGguanMKQEAgLTAsMCArMSwzMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbH0gdGltZWxpbmVQYW5lbAor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbH0gbW9kZWwKKyAqIEBwYXJhbSB7
bnVtYmVyfSBzaWRlYmFyV2lkdGgKKyAqLworV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgg
PSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwgc2lkZWJhcldpZHRoKQoreworICAgIFdl
Ykluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLmNhbGwodGhpcywgdGltZWxpbmVQYW5lbCwgbW9k
ZWwsIHNpZGViYXJXaWR0aCk7CisgICAgVGltZWxpbmVBZ2VudC5zZXRJbmNsdWRlRG9tQ291bnRl
cnModHJ1ZSk7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLkNvdW50ZXJVSUJhc2V9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBofSBtZW1vcnlDb3VudGVyc1BhbmUKKyAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZQorICog
QHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRWYWx1ZUxhYmVsCisgKiBAcGFyYW0ge0FycmF5LjxudW1i
ZXI+fSByZ2IKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3Jh
cGguQ291bnRlcik6bnVtYmVyfSB2YWx1ZUdldHRlcgorICovCitXZWJJbnNwZWN0b3IuRE9NQ291
bnRlclVJID0gZnVuY3Rpb24obWVtb3J5Q291bnRlcnNQYW5lLCB0aXRsZSwgY3VycmVudFZhbHVl
TGFiZWwsIHJnYiwgdmFsdWVHZXR0ZXIpCit7CisgICAgdmFyIHN3YXRjaENvbG9yID0gInJnYigi
ICsgcmdiLmpvaW4oIiwiKSArICIpIjsKKyAgICBXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZS5j
YWxsKHRoaXMsIG1lbW9yeUNvdW50ZXJzUGFuZSwgdGl0bGUsIHN3YXRjaENvbG9yLCB2YWx1ZUdl
dHRlcikKKyAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3N3YXRjaC5lbGVtZW50LmNyZWF0ZUNoaWxk
KCJzcGFuIik7CisKKyAgICB0aGlzLl92YWx1ZSA9IG1lbW9yeUNvdW50ZXJzUGFuZS5fY3VycmVu
dFZhbHVlc0Jhci5jcmVhdGVDaGlsZCgic3BhbiIsICJtZW1vcnktY291bnRlci12YWx1ZSIpOwor
ICAgIHRoaXMuX3ZhbHVlLnN0eWxlLmNvbG9yID0gc3dhdGNoQ29sb3I7CisgICAgdGhpcy5fY3Vy
cmVudFZhbHVlTGFiZWwgPSBjdXJyZW50VmFsdWVMYWJlbDsKKworICAgIHRoaXMuZ3JhcGhDb2xv
ciA9ICJyZ2JhKCIgKyByZ2Iuam9pbigiLCIpICsgIiwwLjgpIjsKKyAgICB0aGlzLmdyYXBoWVZh
bHVlcyA9IFtdOworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLkNvdW50ZXJ9CisgKiBAcGFyYW0ge251bWJlcn0gdGlt
ZQorICogQHBhcmFtIHtudW1iZXJ9IGRvY3VtZW50Q291bnQKKyAqIEBwYXJhbSB7bnVtYmVyfSBu
b2RlQ291bnQKKyAqIEBwYXJhbSB7bnVtYmVyfSBsaXN0ZW5lckNvdW50CisgKi8KK1dlYkluc3Bl
Y3Rvci5ET01Db3VudGVyc0dyYXBoLkNvdW50ZXIgPSBmdW5jdGlvbih0aW1lLCBkb2N1bWVudENv
dW50LCBub2RlQ291bnQsIGxpc3RlbmVyQ291bnQpCit7CisgICAgV2ViSW5zcGVjdG9yLk1lbW9y
eVN0YXRpc3RpY3MuQ291bnRlci5jYWxsKHRoaXMsIHRpbWUpOworICAgIHRoaXMuZG9jdW1lbnRD
b3VudCA9IGRvY3VtZW50Q291bnQ7CisgICAgdGhpcy5ub2RlQ291bnQgPSBub2RlQ291bnQ7Cisg
ICAgdGhpcy5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDsKK30KKworV2ViSW5zcGVjdG9y
LkRPTUNvdW50ZXJVSS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IG1pblZhbHVlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1heFZhbHVlCisgICAgICovCisg
ICAgc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblZhbHVlLCBtYXhWYWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX3JhbmdlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJbICVkIC0g
JWQgXSIsIG1pblZhbHVlLCBtYXhWYWx1ZSk7CisgICAgfSwKKworICAgIHVwZGF0ZUN1cnJlbnRW
YWx1ZTogZnVuY3Rpb24oY291bnRlcnNFbnRyeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVl
LnRleHRDb250ZW50ID0gIFdlYkluc3BlY3Rvci5VSVN0cmluZyh0aGlzLl9jdXJyZW50VmFsdWVM
YWJlbCwgdGhpcy52YWx1ZUdldHRlcihjb3VudGVyc0VudHJ5KSk7CisgICAgfSwKKworICAgIGNs
ZWFyQ3VycmVudFZhbHVlQW5kTWFya2VyOiBmdW5jdGlvbihjdHgpCisgICAgeworICAgICAgICB0
aGlzLl92YWx1ZS50ZXh0Q29udGVudCA9ICIiOworICAgICAgICB0aGlzLnJlc3RvcmVJbWFnZVVu
ZGVyTWFya2VyKGN0eCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEfSBjdHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB5CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGl1cworICAgICAq
LworICAgIHNhdmVJbWFnZVVuZGVyTWFya2VyOiBmdW5jdGlvbihjdHgsIHgsIHksIHJhZGl1cykK
KyAgICB7CisgICAgICAgIGNvbnN0IHcgPSByYWRpdXMgKyAxOworICAgICAgICB2YXIgaW1hZ2VE
YXRhID0gY3R4LmdldEltYWdlRGF0YSh4IC0gdywgeSAtIHcsIDIgKiB3LCAyICogdyk7CisgICAg
ICAgIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIgPSB7CisgICAgICAgICAgICB4OiB4IC0gdywKKyAg
ICAgICAgICAgIHk6IHkgLSB3LAorICAgICAgICAgICAgaW1hZ2VEYXRhOiBpbWFnZURhdGEKKyAg
ICAgICAgfTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkR9IGN0eAorICAgICAqLworICAgIHJlc3RvcmVJbWFnZVVuZGVyTWFya2VyOiBm
dW5jdGlvbihjdHgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIpCisgICAgICAg
ICAgICBjdHgucHV0SW1hZ2VEYXRhKHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIuaW1hZ2VEYXRhLCB0
aGlzLl9pbWFnZVVuZGVyTWFya2VyLngsIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIueSk7CisgICAg
ICAgIHRoaXMuZGlzY2FyZEltYWdlVW5kZXJNYXJrZXIoKTsKKyAgICB9LAorCisgICAgZGlzY2Fy
ZEltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9pbWFnZVVuZGVyTWFya2VyOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5Db3VudGVyVUlCYXNlLnByb3RvdHlwZQorfQorCisKK1dlYkluc3BlY3Rvci5ET01Db3VudGVy
c0dyYXBoLnByb3RvdHlwZSA9IHsKKyAgICBfY3JlYXRlQ3VycmVudFZhbHVlc0JhcjogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlc0JhciA9IHRoaXMuX2NhbnZh
c0NvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1
ZXNCYXIuaWQgPSAiY291bnRlci12YWx1ZXMtYmFyIjsKKyAgICAgICAgdGhpcy5fY2FudmFzQ29u
dGFpbmVyLmFkZFN0eWxlQ2xhc3MoImRvbS1jb3VudGVycyIpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVST59CisgICAg
ICovCisgICAgX2NyZWF0ZUNvdW50ZXJVSUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGZ1bmN0aW9uIGdldERvY3VtZW50Q291bnQoZW50cnkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlbnRyeS5kb2N1bWVudENvdW50OworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9u
IGdldE5vZGVDb3VudChlbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVudHJ5
Lm5vZGVDb3VudDsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiBnZXRMaXN0ZW5lckNvdW50
KGVudHJ5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZW50cnkubGlzdGVuZXJDb3Vu
dDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgbmV3IFdlYkluc3Bl
Y3Rvci5ET01Db3VudGVyVUkodGhpcywgIkRvY3VtZW50IENvdW50IiwgIkRvY3VtZW50czogJWQi
LCBbMTAwLCAwLCAwXSwgZ2V0RG9jdW1lbnRDb3VudCksCisgICAgICAgICAgICBuZXcgV2ViSW5z
cGVjdG9yLkRPTUNvdW50ZXJVSSh0aGlzLCAiRE9NIE5vZGUgQ291bnQiLCAiTm9kZXM6ICVkIiwg
WzAsIDEwMCwgMF0sIGdldE5vZGVDb3VudCksCisgICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9y
LkRPTUNvdW50ZXJVSSh0aGlzLCAiRXZlbnQgTGlzdGVuZXIgQ291bnQiLCAiTGlzdGVuZXJzOiAl
ZCIsIFswLCAwLCAxMDBdLCBnZXRMaXN0ZW5lckNvdW50KQorICAgICAgICBdOworICAgIH0sCisK
KyAgICBfY2FudmFzSGVpZ2h0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY2FudmFzQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIHRoaXMuX2N1cnJlbnRWYWx1ZXNCYXIu
b2Zmc2V0SGVpZ2h0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfb25SZWNvcmRBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBhZGRTdGF0aXN0aWNzKHJlY29yZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGNvdW50ZXJzID0gcmVjb3JkWyJjb3VudGVycyJdOwor
ICAgICAgICAgICAgaWYgKCFjb3VudGVycykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB0aGlzLl9jb3VudGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291bnRlcnNH
cmFwaC5Db3VudGVyKAorICAgICAgICAgICAgICAgIHJlY29yZC5lbmRUaW1lIHx8IHJlY29yZC5z
dGFydFRpbWUsCisgICAgICAgICAgICAgICAgY291bnRlcnNbImRvY3VtZW50cyJdLAorICAgICAg
ICAgICAgICAgIGNvdW50ZXJzWyJub2RlcyJdLAorICAgICAgICAgICAgICAgIGNvdW50ZXJzWyJq
c0V2ZW50TGlzdGVuZXJzIl0KKyAgICAgICAgICAgICkpOworICAgICAgICB9CisgICAgICAgIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmZvckFsbFJlY29yZHMoW2V2ZW50
LmRhdGFdLCBudWxsLCBhZGRTdGF0aXN0aWNzLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBf
ZHJhdzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRp
c3RpY3MucHJvdG90eXBlLl9kcmF3LmNhbGwodGhpcyk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgdGhpcy5fZHJh
d0dyYXBoKHRoaXMuX2NvdW50ZXJVSVtpXSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjdHgKKyAgICAgKi8KKyAgICBfcmVzdG9y
ZUltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2
YXIgY291bnRlclVJID0gdGhpcy5fY291bnRlclVJW2ldOworICAgICAgICAgICAgaWYgKCFjb3Vu
dGVyVUkudmlzaWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNv
dW50ZXJVSS5yZXN0b3JlSW1hZ2VVbmRlck1hcmtlcihjdHgpOworICAgICAgICB9CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjdHgK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAor
ICAgICAqLworICAgIF9zYXZlSW1hZ2VVbmRlck1hcmtlcjogZnVuY3Rpb24oY3R4LCB4LCBpbmRl
eCkKKyAgICB7CisgICAgICAgIGNvbnN0IHJhZGl1cyA9IDI7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIg
Y291bnRlclVJID0gdGhpcy5fY291bnRlclVJW2ldOworICAgICAgICAgICAgaWYgKCFjb3VudGVy
VUkudmlzaWJsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZhciB5
ID0gY291bnRlclVJLmdyYXBoWVZhbHVlc1tpbmRleF07CisgICAgICAgICAgICBjb3VudGVyVUku
c2F2ZUltYWdlVW5kZXJNYXJrZXIoY3R4LCB4LCB5LCByYWRpdXMpOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBj
dHgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0geAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eAorICAgICAqLworICAgIF9kcmF3TWFya2VyOiBmdW5jdGlvbihjdHgsIHgsIGluZGV4KQorICAg
IHsKKyAgICAgICAgdGhpcy5fc2F2ZUltYWdlVW5kZXJNYXJrZXIoY3R4LCB4LCBpbmRleCk7Cisg
ICAgICAgIGNvbnN0IHJhZGl1cyA9IDI7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5fY291bnRlclVJLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgY291bnRlclVJID0g
dGhpcy5fY291bnRlclVJW2ldOworICAgICAgICAgICAgaWYgKCFjb3VudGVyVUkudmlzaWJsZSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHZhciB5ID0gY291bnRlclVJ
LmdyYXBoWVZhbHVlc1tpbmRleF07CisgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
ICAgICAgICBjdHguYXJjKHgsIHksIHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAg
ICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0g
Y291bnRlclVJLmdyYXBoQ29sb3I7CisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb3Vu
dGVyVUkuZ3JhcGhDb2xvcjsKKyAgICAgICAgICAgIGN0eC5maWxsKCk7CisgICAgICAgICAgICBj
dHguc3Ryb2tlKCk7CisgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CisgICAgICAgIH0KKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFz
ZX0gY291bnRlclVJCisgICAgICovCisgICAgX2RyYXdHcmFwaDogZnVuY3Rpb24oY291bnRlclVJ
KQorICAgIHsKKyAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuX2NhbnZhczsKKyAgICAgICAgdmFy
IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICB2YXIgd2lkdGggPSBjYW52
YXMud2lkdGg7CisgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLl9jbGlwcGVkSGVpZ2h0OworICAg
ICAgICB2YXIgb3JpZ2luWSA9IHRoaXMuX29yaWdpblk7CisgICAgICAgIHZhciB2YWx1ZUdldHRl
ciA9IGNvdW50ZXJVSS52YWx1ZUdldHRlcjsKKworICAgICAgICBpZiAoIXRoaXMuX2NvdW50ZXJz
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgbWF4VmFsdWU7Cisg
ICAgICAgIHZhciBtaW5WYWx1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX21pbmltdW1J
bmRleDsgaSA8PSB0aGlzLl9tYXhpbXVtSW5kZXg7IGkrKykgeworICAgICAgICAgICAgdmFyIHZh
bHVlID0gdmFsdWVHZXR0ZXIodGhpcy5fY291bnRlcnNbaV0pOworICAgICAgICAgICAgaWYgKG1p
blZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPCBtaW5WYWx1ZSkKKyAgICAgICAgICAgICAg
ICBtaW5WYWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKG1heFZhbHVlID09PSB1bmRlZmlu
ZWQgfHwgdmFsdWUgPiBtYXhWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IHZhbHVl
OworICAgICAgICB9CisKKyAgICAgICAgY291bnRlclVJLnNldFJhbmdlKG1pblZhbHVlLCBtYXhW
YWx1ZSk7CisKKyAgICAgICAgaWYgKCFjb3VudGVyVUkudmlzaWJsZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgeVZhbHVlcyA9IGNvdW50ZXJVSS5ncmFwaFlWYWx1ZXM7Cisg
ICAgICAgIHlWYWx1ZXMubGVuZ3RoID0gdGhpcy5fY291bnRlcnMubGVuZ3RoOworCisgICAgICAg
IHZhciBtYXhZUmFuZ2UgPSBtYXhWYWx1ZSAtIG1pblZhbHVlOworICAgICAgICB2YXIgeUZhY3Rv
ciA9IG1heFlSYW5nZSA/IGhlaWdodCAvIChtYXhZUmFuZ2UpIDogMTsKKworICAgICAgICBjdHgu
YmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBjdXJyZW50WSA9IG9yaWdpblkgKyAoaGVpZ2h0IC0g
KHZhbHVlR2V0dGVyKHRoaXMuX2NvdW50ZXJzW3RoaXMuX21pbmltdW1JbmRleF0pIC0gbWluVmFs
dWUpICogeUZhY3Rvcik7CisgICAgICAgIGN0eC5tb3ZlVG8oMCwgY3VycmVudFkpOworICAgICAg
ICBmb3IgKHZhciBpID0gdGhpcy5fbWluaW11bUluZGV4OyBpIDw9IHRoaXMuX21heGltdW1JbmRl
eDsgaSsrKSB7CisgICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9jb3VudGVyc1tpXS54OworICAg
ICAgICAgICAgIGN0eC5saW5lVG8oeCwgY3VycmVudFkpOworICAgICAgICAgICAgIGN1cnJlbnRZ
ID0gb3JpZ2luWSArIChoZWlnaHQgLSAodmFsdWVHZXR0ZXIodGhpcy5fY291bnRlcnNbaV0pIC0g
bWluVmFsdWUpICogeUZhY3Rvcik7CisgICAgICAgICAgICAgY3R4LmxpbmVUbyh4LCBjdXJyZW50
WSk7CisKKyAgICAgICAgICAgICB5VmFsdWVzW2ldID0gY3VycmVudFk7CisgICAgICAgIH0KKyAg
ICAgICAgY3R4LmxpbmVUbyh3aWR0aCwgY3VycmVudFkpOworICAgICAgICBjdHgubGluZVdpZHRo
ID0gMTsKKyAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gY291bnRlclVJLmdyYXBoQ29sb3I7Cisg
ICAgICAgIGN0eC5zdHJva2UoKTsKKyAgICAgICAgY3R4LmNsb3NlUGF0aCgpOworICAgIH0sCisK
KyAgICBfZGlzY2FyZEltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgdGhpcy5fY291bnRlclVJW2ldLmRpc2NhcmRJbWFnZVVuZGVyTWFya2VyKCk7CisgICAg
fSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90
eXBlCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TWVtb3J5U3RhdGlzdGljcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TWVtb3J5U3RhdGlzdGljcy5qcwppbmRleCAyZjUyYWE1Li44NjI3YjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpz
CkBAIC02Nyw4ICs2NywxNSBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcyA9IGZ1bmN0
aW9uKHRpbWVsaW5lUGFuZWwsIG1vZGVsLCBzaWRlYmFyV2lkdGgpCiAgICAgLy8gUG9wdWxhdGUg
c2lkZWJhcgogICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LnNpZGViYXJFbGVtZW50LmNyZWF0
ZUNoaWxkKCJkaXYiLCAic2lkZWJhci10cmVlIHNpZGViYXItdHJlZS1zZWN0aW9uIikudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNPVU5URVJTIik7CiAgICAgdGhpcy5fY291
bnRlclVJID0gdGhpcy5fY3JlYXRlQ291bnRlclVJTGlzdCgpOworfQogCi0gICAgVGltZWxpbmVB
Z2VudC5zZXRJbmNsdWRlRG9tQ291bnRlcnModHJ1ZSk7CisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQHBhcmFtIHtudW1iZXJ9IHRpbWUKKyAqLworV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3Rp
Y3MuQ291bnRlciA9IGZ1bmN0aW9uKHRpbWUpCit7CisgICAgdGhpcy50aW1lID0gdGltZTsKIH0K
IAogLyoqCkBAIC0xNTksOTYgKzE2NiwxNSBAQCBXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZS5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIH0KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZX0KLSAqLwotV2ViSW5zcGVjdG9yLkRPTUNv
dW50ZXJVSSA9IGZ1bmN0aW9uKG1lbW9yeUNvdW50ZXJzUGFuZSwgdGl0bGUsIGN1cnJlbnRWYWx1
ZUxhYmVsLCByZ2IsIHZhbHVlR2V0dGVyKQotewotICAgIHZhciBzd2F0Y2hDb2xvciA9ICJyZ2Io
IiArIHJnYi5qb2luKCIsIikgKyAiKSI7Ci0gICAgV2ViSW5zcGVjdG9yLkNvdW50ZXJVSUJhc2Uu
Y2FsbCh0aGlzLCBtZW1vcnlDb3VudGVyc1BhbmUsIHRpdGxlLCBzd2F0Y2hDb2xvciwgdmFsdWVH
ZXR0ZXIpCi0gICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9zd2F0Y2guZWxlbWVudC5jcmVhdGVDaGls
ZCgic3BhbiIpOwotCi0gICAgdGhpcy5fdmFsdWUgPSBtZW1vcnlDb3VudGVyc1BhbmUuX2N1cnJl
bnRWYWx1ZXNCYXIuY3JlYXRlQ2hpbGQoInNwYW4iLCAibWVtb3J5LWNvdW50ZXItdmFsdWUiKTsK
LSAgICB0aGlzLl92YWx1ZS5zdHlsZS5jb2xvciA9IHN3YXRjaENvbG9yOwotICAgIHRoaXMuX2N1
cnJlbnRWYWx1ZUxhYmVsID0gY3VycmVudFZhbHVlTGFiZWw7Ci0KLSAgICB0aGlzLmdyYXBoQ29s
b3IgPSAicmdiYSgiICsgcmdiLmpvaW4oIiwiKSArICIsMC44KSI7Ci0gICAgdGhpcy5ncmFwaFlW
YWx1ZXMgPSBbXTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSS5wcm90b3R5cGUgPSB7
Ci0gICAgc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblZhbHVlLCBtYXhWYWx1ZSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3JhbmdlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJbICVk
IC0gJWQgXSIsIG1pblZhbHVlLCBtYXhWYWx1ZSk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUN1cnJl
bnRWYWx1ZTogZnVuY3Rpb24oY291bnRlcnNFbnRyeSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Zh
bHVlLnRleHRDb250ZW50ID0gIFdlYkluc3BlY3Rvci5VSVN0cmluZyh0aGlzLl9jdXJyZW50VmFs
dWVMYWJlbCwgdGhpcy52YWx1ZUdldHRlcihjb3VudGVyc0VudHJ5KSk7Ci0gICAgfSwKLQotICAg
IGNsZWFyQ3VycmVudFZhbHVlQW5kTWFya2VyOiBmdW5jdGlvbihjdHgpCi0gICAgewotICAgICAg
ICB0aGlzLl92YWx1ZS50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICB0aGlzLnJlc3RvcmVJbWFn
ZVVuZGVyTWFya2VyKGN0eCk7Ci0gICAgfSwKLQotICAgIHNhdmVJbWFnZVVuZGVyTWFya2VyOiBm
dW5jdGlvbihjdHgsIHgsIHksIHJhZGl1cykKLSAgICB7Ci0gICAgICAgIGNvbnN0IHcgPSByYWRp
dXMgKyAxOwotICAgICAgICB2YXIgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSh4IC0gdywg
eSAtIHcsIDIgKiB3LCAyICogdyk7Ci0gICAgICAgIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIgPSB7
Ci0gICAgICAgICAgICB4OiB4IC0gdywKLSAgICAgICAgICAgIHk6IHkgLSB3LAotICAgICAgICAg
ICAgaW1hZ2VEYXRhOiBpbWFnZURhdGEgfTsKLSAgICB9LAotCi0gICAgcmVzdG9yZUltYWdlVW5k
ZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy52aXNpYmxl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodGhpcy5faW1hZ2VVbmRlck1hcmtl
cikKLSAgICAgICAgICAgIGN0eC5wdXRJbWFnZURhdGEodGhpcy5faW1hZ2VVbmRlck1hcmtlci5p
bWFnZURhdGEsIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXIueCwgdGhpcy5faW1hZ2VVbmRlck1hcmtl
ci55KTsKLSAgICAgICAgdGhpcy5kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcigpOwotICAgIH0sCi0K
LSAgICBkaXNjYXJkSW1hZ2VVbmRlck1hcmtlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
ZGVsZXRlIHRoaXMuX2ltYWdlVW5kZXJNYXJrZXI7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLkNvdW50ZXJVSUJhc2UucHJvdG90eXBlCi19Ci0KLQogV2ViSW5zcGVjdG9y
Lk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVDdXJyZW50VmFsdWVz
QmFyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVzQmFyID0g
dGhpcy5fY2FudmFzQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJkaXYiKTsKLSAgICAgICAgdGhpcy5f
Y3VycmVudFZhbHVlc0Jhci5pZCA9ICJjb3VudGVyLXZhbHVlcy1iYXIiOwotICAgICAgICB0aGlz
Ll9jYW52YXNDb250YWluZXIuYWRkU3R5bGVDbGFzcygiZG9tLWNvdW50ZXJzIik7CisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIik7CiAgICAgfSwKIAogICAgIF9jcmVh
dGVDb3VudGVyVUlMaXN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBnZXRE
b2N1bWVudENvdW50KGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW50cnku
ZG9jdW1lbnRDb3VudDsKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBnZXROb2RlQ291bnQo
ZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeS5ub2RlQ291bnQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gZ2V0TGlzdGVuZXJDb3VudChlbnRyeSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lmxpc3RlbmVyQ291bnQ7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291bnRl
clVJKHRoaXMsICJEb2N1bWVudCBDb3VudCIsICJEb2N1bWVudHM6ICVkIiwgWzEwMCwwLDBdLCBn
ZXREb2N1bWVudENvdW50KSwKLSAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRE9NQ291bnRl
clVJKHRoaXMsICJET00gTm9kZSBDb3VudCIsICJOb2RlczogJWQiLCBbMCwxMDAsMF0sIGdldE5v
ZGVDb3VudCksCi0gICAgICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJVSSh0aGlz
LCAiRXZlbnQgTGlzdGVuZXIgQ291bnQiLCAiTGlzdGVuZXJzOiAlZCIsIFswLDAsMTAwXSwgZ2V0
TGlzdGVuZXJDb3VudCkKLSAgICAgICAgXTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3Qg
aW1wbGVtZW50ZWQiKTsKICAgICB9LAogCiAgICAgX29uUmVjb3Jkc0NsZWFyZWQ6IGZ1bmN0aW9u
KCkKQEAgLTI1NiwxNyArMTgyLDI2IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY291bnRlcnMgPSBbXTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVHcmlkfSB0aW1lbGluZUdy
aWQKKyAgICAgKi8KICAgICBzZXRNYWluVGltZWxpbmVHcmlkOiBmdW5jdGlvbih0aW1lbGluZUdy
aWQpCiAgICAgewogICAgICAgICB0aGlzLl9tYWluVGltZWxpbmVHcmlkID0gdGltZWxpbmVHcmlk
OwogICAgIH0sCiAKLSAgICBzZXRUb3BQb3NpdGlvbjogZnVuY3Rpb24odG9wKQorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3AKKyAgICAgKi8KKyAgICAgc2V0VG9wUG9zaXRpb246
IGZ1bmN0aW9uKHRvcCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lbW9yeVNpZGViYXJWaWV3LmVs
ZW1lbnQuc3R5bGUudG9wID0gdG9wICsgInB4IjsKICAgICAgICAgdGhpcy5fdXBkYXRlU2l6ZSgp
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGgKKyAgICAg
Ki8KICAgICBzZXRTaWRlYmFyV2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX2lnbm9yZVNpZGViYXJSZXNpemUpCkBAIC0yNzYsNiArMjExLDkgQEAgV2ViSW5z
cGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pZ25v
cmVTaWRlYmFyUmVzaXplID0gZmFsc2U7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwogICAgIF9zaWRlYmFyUmVzaXpl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faWdub3JlU2lkZWJh
clJlc2l6ZSkKQEAgLTI4Nyw3ICsyMjUsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGlj
cy5wcm90b3R5cGUgPSB7CiAKICAgICBfY2FudmFzSGVpZ2h0OiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fY2FudmFzQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIHRoaXMu
X2N1cnJlbnRWYWx1ZXNCYXIub2Zmc2V0SGVpZ2h0OworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBfdXBkYXRlU2l6ZTogZnVuY3Rpb24o
KQpAQCAtMzAwLDIyICsyMzgsMTIgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAg
ICAgKi8KICAgICBfb25SZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgc3RhdGlzdGljcyA9IHRoaXMuX2NvdW50ZXJzOwotICAgICAgICBmdW5jdGlvbiBhZGRT
dGF0aXN0aWNzKHJlY29yZCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJzID0g
cmVjb3JkWyJjb3VudGVycyJdOwotICAgICAgICAgICAgaWYgKCFjb3VudGVycykKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzdGF0aXN0aWNzLnB1c2goewotICAgICAgICAg
ICAgICAgIHRpbWU6IHJlY29yZC5lbmRUaW1lIHx8IHJlY29yZC5zdGFydFRpbWUsCi0gICAgICAg
ICAgICAgICAgZG9jdW1lbnRDb3VudDogY291bnRlcnNbImRvY3VtZW50cyJdLAotICAgICAgICAg
ICAgICAgIG5vZGVDb3VudDogY291bnRlcnNbIm5vZGVzIl0sCi0gICAgICAgICAgICAgICAgbGlz
dGVuZXJDb3VudDogY291bnRlcnNbImpzRXZlbnRMaXN0ZW5lcnMiXQotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuZm9yQWxsUmVjb3JkcyhbZXZlbnQuZGF0YV0sIG51bGwsIGFkZFN0YXRpc3RpY3MpOworICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBf
ZHJhdzogZnVuY3Rpb24oKQpAQCAtMzI1LDggKzI1Myw2IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlT
dGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2xlYXIoKTsKIAogICAgICAg
ICB0aGlzLl9zZXRWZXJ0aWNhbENsaXAoMTAsIHRoaXMuX2NhbnZhcy5oZWlnaHQgLSAyMCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY291bnRlclVJLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgdGhpcy5fZHJhd0dyYXBoKHRoaXMuX2NvdW50ZXJVSVtpXSk7CiAgICAgfSwK
IAogICAgIF9jYWxjdWxhdGVWaXNpYmxlSW5kZXhlczogZnVuY3Rpb24oKQpAQCAtMzU3LDcgKzI4
MywxMCBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX21heFRpbWUgPSBlbmQ7CiAgICAgfSwKIAotICAgIF9vbkNsaWNrOiBmdW5jdGlv
bihldmVudCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGV2ZW50CisgICAg
ICovCisgICAgIF9vbkNsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB4
ID0gZXZlbnQueCAtIGV2ZW50LnRhcmdldC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKICAgICAg
ICAgdmFyIGkgPSB0aGlzLl9yZWNvcmRJbmRleEF0KHgpOwpAQCAtMzY2LDcgKzI5NSwxMCBAQCBX
ZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGljcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl90aW1lbGluZVBhbmVsLnJldmVhbFJlY29yZEF0KGNvdW50ZXIudGltZSAvIDEwMDApOwog
ICAgIH0sCiAKLSAgICBfb25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudAorICAgICAqLworICAgICBfb25Nb3VzZU91dDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fbWFya2VyWFBvc2l0
aW9uOwogCkBAIC0zNzQsMTggKzMwNiwyNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5U3RhdGlzdGlj
cy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NsZWFyQ3VycmVudFZhbHVlQW5kTWFya2Vy
KGN0eCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEfSBjdHgKKyAgICAgKi8KICAgICBfY2xlYXJDdXJyZW50VmFsdWVBbmRNYXJrZXI6
IGZ1bmN0aW9uKGN0eCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
Y291bnRlclVJLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgdGhpcy5fY291bnRlclVJW2ldLmNs
ZWFyQ3VycmVudFZhbHVlQW5kTWFya2VyKGN0eCk7CiAgICAgfSwKIAotICAgIF9vbk1vdXNlT3Zl
cjogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBl
dmVudAorICAgICAqLworICAgICBfb25Nb3VzZU92ZXI6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fb25Nb3VzZU1vdmUoZXZlbnQpOwogICAgIH0sCiAKLSAgICBfb25Nb3Vz
ZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7TW91c2VFdmVu
dH0gZXZlbnQKKyAgICAgKi8KKyAgICAgX29uTW91c2VNb3ZlOiBmdW5jdGlvbihldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciB4ID0gZXZlbnQueCAtIGV2ZW50LnRhcmdldC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdAogICAgICAgICB0aGlzLl9tYXJrZXJYUG9zaXRpb24gPSB4OwpAQCAtNDMyLDQ0
ICszNzMsMTIgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewog
CiAgICAgX3Jlc3RvcmVJbWFnZVVuZGVyTWFya2VyOiBmdW5jdGlvbihjdHgpCiAgICAgewotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2NvdW50ZXJVSVtpXTsKLSAgICAgICAg
ICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBjb3VudGVyVUkucmVzdG9yZUltYWdlVW5kZXJNYXJrZXIoY3R4KTsKLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBfc2F2ZUltYWdlVW5kZXJNYXJrZXI6IGZ1bmN0aW9uKGN0eCwg
eCwgaW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCByYWRpdXMgPSAyOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2NvdW50ZXJVSVtpXTsKLSAgICAgICAgICAgIGlmICgh
Y291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB2YXIgeSA9IGNvdW50ZXJVSS5ncmFwaFlWYWx1ZXNbaW5kZXhdOwotICAgICAgICAgICAgY291
bnRlclVJLnNhdmVJbWFnZVVuZGVyTWFya2VyKGN0eCwgeCwgeSwgcmFkaXVzKTsKLSAgICAgICAg
fQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAK
ICAgICBfZHJhd01hcmtlcjogZnVuY3Rpb24oY3R4LCB4LCBpbmRleCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3NhdmVJbWFnZVVuZGVyTWFya2VyKGN0eCwgeCwgaW5kZXgpOwotICAgICAgICBjb25z
dCByYWRpdXMgPSAyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvdW50ZXJV
SS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGNvdW50ZXJVSSA9IHRoaXMuX2NvdW50
ZXJVSVtpXTsKLSAgICAgICAgICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIgeSA9IGNvdW50ZXJVSS5ncmFwaFlWYWx1
ZXNbaW5kZXhdOwotICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAgY3R4
LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkqMiwgdHJ1ZSk7Ci0gICAgICAgICAgICBjdHgu
bGluZVdpZHRoID0gMTsKLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb3VudGVyVUkuZ3Jh
cGhDb2xvcjsKLSAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvdW50ZXJVSS5ncmFwaENv
bG9yOwotICAgICAgICAgICAgY3R4LmZpbGwoKTsKLSAgICAgICAgICAgIGN0eC5zdHJva2UoKTsK
LSAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgICAgfQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICB2aXNpYmxlOiBmdW5j
dGlvbigpCkBAIC01MjQsNTcgKzQzMyw2IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNz
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY291bnRlcnNbdGhpcy5fbWF4aW11bUluZGV4
XS54ID0gd2lkdGg7CiAgICAgfSwKIAotICAgIF9kcmF3R3JhcGg6IGZ1bmN0aW9uKGNvdW50ZXJV
SSkKLSAgICB7Ci0gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLl9jYW52YXM7Ci0gICAgICAgIHZh
ciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgdmFyIHdpZHRoID0gY2Fu
dmFzLndpZHRoOwotICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5fY2xpcHBlZEhlaWdodDsKLSAg
ICAgICAgdmFyIG9yaWdpblkgPSB0aGlzLl9vcmlnaW5ZOwotICAgICAgICB2YXIgdmFsdWVHZXR0
ZXIgPSBjb3VudGVyVUkudmFsdWVHZXR0ZXI7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9jb3VudGVy
cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIG1heFZhbHVlOwot
ICAgICAgICB2YXIgbWluVmFsdWU7Ci0gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9taW5pbXVt
SW5kZXg7IGkgPD0gdGhpcy5fbWF4aW11bUluZGV4OyBpKyspIHsKLSAgICAgICAgICAgIHZhciB2
YWx1ZSA9IHZhbHVlR2V0dGVyKHRoaXMuX2NvdW50ZXJzW2ldKTsKLSAgICAgICAgICAgIGlmICht
aW5WYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlIDwgbWluVmFsdWUpCi0gICAgICAgICAgICAg
ICAgbWluVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgIGlmIChtYXhWYWx1ZSA9PT0gdW5kZWZp
bmVkIHx8IHZhbHVlID4gbWF4VmFsdWUpCi0gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSB2YWx1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvdW50ZXJVSS5zZXRSYW5nZShtaW5WYWx1ZSwgbWF4
VmFsdWUpOwotCi0gICAgICAgIGlmICghY291bnRlclVJLnZpc2libGUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdmFyIHlWYWx1ZXMgPSBjb3VudGVyVUkuZ3JhcGhZVmFsdWVzOwot
ICAgICAgICB5VmFsdWVzLmxlbmd0aCA9IHRoaXMuX2NvdW50ZXJzLmxlbmd0aDsKLQotICAgICAg
ICB2YXIgbWF4WVJhbmdlID0gbWF4VmFsdWUgLSBtaW5WYWx1ZTsKLSAgICAgICAgdmFyIHlGYWN0
b3IgPSBtYXhZUmFuZ2UgPyBoZWlnaHQgLyAobWF4WVJhbmdlKSA6IDE7Ci0KLSAgICAgICAgY3R4
LmJlZ2luUGF0aCgpOwotICAgICAgICB2YXIgY3VycmVudFkgPSBvcmlnaW5ZICsgKGhlaWdodCAt
ICh2YWx1ZUdldHRlcih0aGlzLl9jb3VudGVyc1t0aGlzLl9taW5pbXVtSW5kZXhdKS0gbWluVmFs
dWUpICogeUZhY3Rvcik7Ci0gICAgICAgIGN0eC5tb3ZlVG8oMCwgY3VycmVudFkpOwotICAgICAg
ICBmb3IgKHZhciBpID0gdGhpcy5fbWluaW11bUluZGV4OyBpIDw9IHRoaXMuX21heGltdW1JbmRl
eDsgaSsrKSB7Ci0gICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9jb3VudGVyc1tpXS54OwotICAg
ICAgICAgICAgIGN0eC5saW5lVG8oeCwgY3VycmVudFkpOwotICAgICAgICAgICAgIGN1cnJlbnRZ
ID0gb3JpZ2luWSArIChoZWlnaHQgLSAodmFsdWVHZXR0ZXIodGhpcy5fY291bnRlcnNbaV0pLSBt
aW5WYWx1ZSkgKiB5RmFjdG9yKTsKLSAgICAgICAgICAgICBjdHgubGluZVRvKHgsIGN1cnJlbnRZ
KTsKLQotICAgICAgICAgICAgIHlWYWx1ZXNbaV0gPSBjdXJyZW50WTsKLSAgICAgICAgfQotICAg
ICAgICBjdHgubGluZVRvKHdpZHRoLCBjdXJyZW50WSk7Ci0gICAgICAgIGN0eC5saW5lV2lkdGgg
PSAxOwotICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb3VudGVyVUkuZ3JhcGhDb2xvcjsKLSAg
ICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgfSwKLQog
ICAgIF9jbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBjdHggPSB0aGlzLl9jYW52YXMu
Z2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFz
LndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CkBAIC01ODMsOCArNDQxLDcgQEAgV2ViSW5zcGVj
dG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0gewogCiAgICAgX2Rpc2NhcmRJbWFnZVVu
ZGVyTWFya2VyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX2NvdW50ZXJVSS5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHRoaXMuX2NvdW50ZXJV
SVtpXS5kaXNjYXJkSW1hZ2VVbmRlck1hcmtlcigpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlHcmFwaC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5R3JhcGguanMKaW5kZXggOWYxMTVi
YS4uOTNlNDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OYXRpdmVNZW1vcnlHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05hdGl2ZU1lbW9yeUdyYXBoLmpzCkBAIC00Myw3ICs0MywyMSBAQCBXZWJJbnNwZWN0
b3IuTmF0aXZlTWVtb3J5R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZVBhbmVsLCBtb2RlbCwgc2lk
ZWJhcldpZHRoKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5NZW1vcnlTdGF0aXN0aWNzLkNvdW50ZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5OYXRpdmVN
ZW1vcnlHcmFwaC5Db3VudGVyID0gZnVuY3Rpb24odGltZSwgbmF0aXZlQ291bnRlcnMpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MuQ291bnRlci5jYWxsKHRoaXMsIHRpbWUp
OworICAgIHRoaXMubmF0aXZlQ291bnRlcnMgPSBuYXRpdmVDb3VudGVyczsKK30KKworLyoqCisg
KiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQ291bnRlclVJQmFzZX0K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeUdyYXBofSBtZW1vcnlDb3VudGVy
c1BhbmUKKyAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZQorICogQHBhcmFtIHtBcnJheS48bnVtYmVy
Pn0gaHNsCisgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlHcmFw
aC5Db3VudGVyKTpudW1iZXJ9IHZhbHVlR2V0dGVyCiAgKi8KIFdlYkluc3BlY3Rvci5OYXRpdmVN
ZW1vcnlDb3VudGVyVUkgPSBmdW5jdGlvbihtZW1vcnlDb3VudGVyc1BhbmUsIHRpdGxlLCBoc2ws
IHZhbHVlR2V0dGVyKQogewpAQCAtMTQ5LDIxICsxNjMsMTcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeUdyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5h
dGl2ZUNvdW50ZXJzWyJPdGhlciJdID0gbmF0aXZlQ291bnRlcnNbIlByaXZhdGVCeXRlcyJdIC0g
a25vd25TaXplOwogCi0gICAgICAgICAgICBzdGF0aXN0aWNzLnB1c2goewotICAgICAgICAgICAg
ICAgIHRpbWU6IHJlY29yZC5lbmRUaW1lIHx8IHJlY29yZC5zdGFydFRpbWUsCi0gICAgICAgICAg
ICAgICAgbmF0aXZlQ291bnRlcnM6IG5hdGl2ZUNvdW50ZXJzCi0gICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIHN0YXRpc3RpY3MucHVzaChuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeUdy
YXBoLkNvdW50ZXIoCisgICAgICAgICAgICAgICAgcmVjb3JkLmVuZFRpbWUgfHwgcmVjb3JkLnN0
YXJ0VGltZSwKKyAgICAgICAgICAgICAgICBuYXRpdmVDb3VudGVycworICAgICAgICAgICAgKSk7
CiAgICAgICAgIH0KICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuZm9yQWxsUmVjb3JkcyhbZXZlbnQuZGF0YV0sIG51bGwsIGFkZFN0YXRpc3RpY3MpOwogICAg
IH0sCiAKICAgICBfZHJhdzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fY2FsY3Vs
YXRlVmlzaWJsZUluZGV4ZXMoKTsKLSAgICAgICAgdGhpcy5fY2FsY3VsYXRlWFZhbHVlcygpOwot
ICAgICAgICB0aGlzLl9jbGVhcigpOwotCi0gICAgICAgIHRoaXMuX3NldFZlcnRpY2FsQ2xpcCgx
MCwgdGhpcy5fY2FudmFzLmhlaWdodCAtIDIwKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9y
eVN0YXRpc3RpY3MucHJvdG90eXBlLl9kcmF3LmNhbGwodGhpcyk7CiAKICAgICAgICAgdmFyIG1h
eFZhbHVlID0gdGhpcy5fbWF4Q291bnRlclZhbHVlKCk7CiAgICAgICAgIHRoaXMuX3Jlc2V0VG90
YWxWYWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwppbmRleCA3NGEwNGQyLi5jNWE2MmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC0zMCw2
ICszMCw3IEBACiAgKi8KIAogaW1wb3J0U2NyaXB0KCJNZW1vcnlTdGF0aXN0aWNzLmpzIik7Citp
bXBvcnRTY3JpcHQoIkRPTUNvdW50ZXJzR3JhcGguanMiKTsKIGltcG9ydFNjcmlwdCgiTmF0aXZl
TWVtb3J5R3JhcGguanMiKTsKIGltcG9ydFNjcmlwdCgiVGltZWxpbmVNb2RlbC5qcyIpOwogaW1w
b3J0U2NyaXB0KCJUaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyIpOwpAQCAtNzksNyArODAsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICBpZiAoV2ViSW5zcGVj
dG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0aXZlTWVtb3J5VGltZWxpbmUuaXNFbmFibGVkKCkp
CiAgICAgICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2
ZU1lbW9yeUdyYXBoKHRoaXMsIHRoaXMuX21vZGVsLCB0aGlzLnNwbGl0Vmlldy5zaWRlYmFyV2lk
dGgoKSk7CiAgICAgZWxzZQotICAgICAgICB0aGlzLl9tZW1vcnlTdGF0aXN0aWNzID0gbmV3IFdl
Ykluc3BlY3Rvci5NZW1vcnlTdGF0aXN0aWNzKHRoaXMsIHRoaXMuX21vZGVsLCB0aGlzLnNwbGl0
Vmlldy5zaWRlYmFyV2lkdGgoKSk7CisgICAgICAgIHRoaXMuX21lbW9yeVN0YXRpc3RpY3MgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRPTUNvdW50ZXJzR3JhcGgodGhpcywgdGhpcy5fbW9kZWwsIHRoaXMu
c3BsaXRWaWV3LnNpZGViYXJXaWR0aCgpKTsKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubWVt
b3J5Q291bnRlckdyYXBoc0hlaWdodCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0
aW5nKCJtZW1vcnlDb3VudGVyR3JhcGhzSGVpZ2h0IiwgMTUwKTsKIAogICAgIHZhciBpdGVtc1Ry
ZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUkVDT1JEUyIpLCB7fSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggOTE2NTYyYy4uNjJmYjc5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpA
QCAtNTQsNiArNTQsNyBAQAogICAgIDxmaWxlPkRpcmVjdG9yeUNvbnRlbnRWaWV3LmpzPC9maWxl
PgogICAgIDxmaWxlPkRPTUFnZW50LmpzPC9maWxlPgogICAgIDxmaWxlPkRPTUJyZWFrcG9pbnRz
U2lkZWJhclBhbmUuanM8L2ZpbGU+CisgICAgPGZpbGU+RE9NQ291bnRlcnNHcmFwaC5qczwvZmls
ZT4KICAgICA8ZmlsZT5ET01FeHRlbnNpb24uanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NUHJlc2Vu
dGF0aW9uVXRpbHMuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NU3RvcmFnZS5qczwvZmlsZT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>