<?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>95752</bug_id>
          
          <creation_ts>2012-09-04 08:32:40 -0700</creation_ts>
          <short_desc>Web Inspector: Fix inconsistencies in NetworkUISourceCodeProvider implementation.</short_desc>
          <delta_ts>2012-09-06 00:40:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711146</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-04 08:32:40 -0700</bug_when>
    <thetext>NetworkUISourceCodeProvider should not receive ResourceAdded event until resource was finished.
StyleSourceMapping should listen for workspace event instead of being called directly by NetworkUISourceCodeProvider.
ProjectDidReset event should be introduced instead of setTimeout hacks in mappings.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711183</commentid>
    <comment_count>1</comment_count>
      <attachid>162053</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-04 09:39:56 -0700</bug_when>
    <thetext>Created attachment 162053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712932</commentid>
    <comment_count>2</comment_count>
      <attachid>162053</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-05 23:45:28 -0700</bug_when>
    <thetext>Comment on attachment 162053
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        NetworkUISourceCodeProvider does not receive ResourceAdded event until resource was finished anymore.

was -&gt; is (or &quot;has been&quot;)

&gt; Source/WebCore/ChangeLog:9
&gt; +        StyleSourceMapping now listens for workspace event instead of being called directly by NetworkUISourceCodeProvider.

StylesSourceMapping

&gt; Source/WebCore/ChangeLog:10
&gt; +        StyleSourceMapping is now created from inspector.js.

ditto

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:72
&gt; +            var uiSourceCode = new WebInspector.StyleSource(resource);

Duplicate &quot;var uiSourceCode&quot; declaration

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:75
&gt; +            var uiSourceCode = new WebInspector.JavaScriptSource(resource.url, resource, resource, false);

ditto

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:78
&gt; +            var uiSourceCode = new WebInspector.JavaScriptSource(resource.url, resource, resource, true);

You can unify the two cases by using &quot;resource.type === WebInspector.resourceTypes.Script&quot; as the last argument

&gt; LayoutTests/inspector/debugger/network-uisourcecode-provider.html:10
&gt; +    var lastResouceId = 0;

Let&apos;s fix the name while we are here - &quot;lastResourceId&quot;.

&gt; LayoutTests/inspector/debugger/script-snippet-model.html:8
&gt; +setTimeout(InspectorTest.completeTest.bind(InspectorTest), 1000);

???

&gt; LayoutTests/inspector/debugger/script-snippet-model.html:36
&gt; +                InspectorTest.assertEquals(workspace.uiSourceCodes().length, 1, &quot;Only one snippet uiSourceCode should be present after project navigation.&quot;);

(expected, found, message)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712937</commentid>
    <comment_count>3</comment_count>
      <attachid>162429</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-05 23:55:33 -0700</bug_when>
    <thetext>Created attachment 162429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712969</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 00:40:38 -0700</bug_when>
    <thetext>Committed r127705: &lt;http://trac.webkit.org/changeset/127705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162053</attachid>
            <date>2012-09-04 09:39:56 -0700</date>
            <delta_ts>2012-09-05 23:55:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95752-20120904203938.patch</filename>
            <type>text/plain</type>
            <size>28824</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwNjczYWExMThmNzVi
NWY2MmMzZDdlZDEwMGVlMWI2ZDAxOGFjYi4uMzNiZDE5YzJlOTNhYzU4YTI3NTRjNWFhM2JkZmRl
MDUyYjQ5YzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTA0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEZpeCBpbmNvbnNpc3RlbmNpZXMgaW4gTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgZG9lcyBub3QgcmVjZWl2ZSBSZXNvdXJj
ZUFkZGVkIGV2ZW50IHVudGlsIHJlc291cmNlIHdhcyBmaW5pc2hlZCBhbnltb3JlLgorICAgICAg
ICBTdHlsZVNvdXJjZU1hcHBpbmcgbm93IGxpc3RlbnMgZm9yIHdvcmtzcGFjZSBldmVudCBpbnN0
ZWFkIG9mIGJlaW5nIGNhbGxlZCBkaXJlY3RseSBieSBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIuCisgICAgICAgIFN0eWxlU291cmNlTWFwcGluZyBpcyBub3cgY3JlYXRlZCBmcm9tIGluc3Bl
Y3Rvci5qcy4KKyAgICAgICAgUHJvamVjdERpZFJlc2V0IGV2ZW50IGludHJvZHVjZWQgaW5zdGVh
ZCBvZiBzZXRUaW1lb3V0IGhhY2tzIGluIG1hcHBpbmdzLgorCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBlLl9yZXNvdXJjZUFkZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJv
dG90eXBlLl9wcm9qZWN0V2lsbFJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
VUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBlLl9wcm9qZWN0RGlkUmVzZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fb25SZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5fcHJvamVjdFdpbGxSZXNldCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5fcHJvamVjdERpZFJlc2V0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUFk
ZGVkVG9Xb3Jrc3BhY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBp
bmcucHJvdG90eXBlLl9hZGRVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Xb3Jrc3BhY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV29ya3NwYWNl
Q29udHJvbGxlci5wcm90b3R5cGUuX21haW5GcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvamVjdC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDEyLTA5LTA0ICBKb25hdGhhbiBMaXUgIDxuZXQx
NDdAZ21haWwuY29tPgogCiAgICAgICAgIEZpeCBJREwgZGVwZW5kZW5jeSBnZW5lcmF0aW9uIGNv
cnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcwppbmRleCAxZDUyOWUxNWM3
MmYwYjUyMWQxMjQ5OGY5MzExMjA1YzQyOGQ3Mjc5Li5iYTg0YTk4OTYzZjlmZmM2YzJlM2JlOWY5
ZTQzMjQ2YmM3NWI5NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcwpAQCAt
MzYsOCArMzYsOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0g
ZnVuY3Rpb24od29ya3NwYWNlKQogewogICAgIHRoaXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsK
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5SZXNvdXJjZUFkZGVkLCB0aGlz
Ll9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKLSAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlz
Ll9yZXNldCwgdGhpcyk7Ci0gICAgdGhpcy5fc3R5bGVzU291cmNlTWFwcGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZygpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVz
ZXQsIHRoaXMuX3Byb2plY3RXaWxsUmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3REaWRS
ZXNldCwgdGhpcy5fcHJvamVjdERpZFJlc2V0LCB0aGlzKTsKIAogICAgIHRoaXMuX3VpU291cmNl
Q29kZUZvclJlc291cmNlID0ge307CiB9CkBAIC01OSw3NiArNTksMzggQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAg
IC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQotICAg
ICAqLwotICAgIF9zdHlsZVJlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsK
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVTb3VyY2Uo
cmVzb3VyY2UpOwotICAgICAgICB0aGlzLl9zdHlsZXNTb3VyY2VNYXBwaW5nLmFkZFVJU291cmNl
Q29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9hZGRVSVNvdXJjZUNvZGUodWlTb3Vy
Y2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
UmVzb3VyY2V9IHJlc291cmNlCi0gICAgICovCi0gICAgX3NjcmlwdFJlc291cmNlQWRkZWQ6IGZ1
bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgaWYgKHJlc291cmNlLnJlcXVlc3QgJiYg
IXJlc291cmNlLnJlcXVlc3QuZmluaXNoZWQpIHsKLSAgICAgICAgICAgIHJlc291cmNlLnJlcXVl
c3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLkZp
bmlzaGVkTG9hZGluZywgcmVzb3VyY2VGaW5pc2hlZCwgdGhpcyk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fYWRkSmF2YVNjcmlwdFNvdXJjZShyZXNvdXJj
ZSk7Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiByZXNvdXJjZUZpbmlzaGVkKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdC5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCByZXNvdXJj
ZUZpbmlzaGVkLCB0aGlzKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZEphdmFTY3JpcHRTb3VyY2Uo
cmVzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQotICAgICAqLwotICAgIF9hZGRKYXZhU2Ny
aXB0U291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91
aVNvdXJjZUNvZGVGb3JSZXNvdXJjZVtyZXNvdXJjZS51cmxdKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB2YXIgaXNEb2N1bWVudCA9IHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50OwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHJlc291cmNlLnVybCwgcmVzb3VyY2UsIHJl
c291cmNlLCAhaXNEb2N1bWVudCk7Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291
cmNlW3Jlc291cmNlLnVybF0gPSB1aVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuX2FkZFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIF9h
ZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0g
ICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVu
dAogICAgICAqLwogICAgIF9yZXNvdXJjZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSAq
LyBldmVudC5kYXRhOworICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2Vb
cmVzb3VyY2UudXJsXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHVpU291cmNl
Q29kZTsKICAgICAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKSB7CiAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldDoKLSAgICAgICAgICAgIHRoaXMuX3N0
eWxlUmVzb3VyY2VBZGRlZChyZXNvdXJjZSk7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDoK
KyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRTb3VyY2UocmVzb3VyY2UudXJsLCByZXNvdXJjZSwgcmVzb3VyY2UsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNj
cmlwdDoKLSAgICAgICAgICAgIHRoaXMuX3NjcmlwdFJlc291cmNlQWRkZWQocmVzb3VyY2UpOwor
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlw
dFNvdXJjZShyZXNvdXJjZS51cmwsIHJlc291cmNlLCByZXNvdXJjZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CisgICAg
ICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JSZXNvdXJjZVtyZXNvdXJjZS51cmxdID0gdWlT
b3VyY2VDb2RlOworICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgfQogICAgIH0sCiAKLSAgICBfcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICBfcHJvamVjdFdpbGxSZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2UgPSB7fTsKLSAgICAgICAgdGhpcy5f
c3R5bGVzU291cmNlTWFwcGluZy5yZXNldCgpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBwb3B1bGF0ZSB1bnRpbCB0aGUgUHJvamVjdFdpbGxSZXNldCBldmVudCB3YXMgaGFuZGxl
ZCBieSBhbGwgbGlzdGVuZXJzLiBJbnRyb2R1Y2UgUHJvamVjdERpZFJlc2V0IGV2ZW50IGZvciB0
aGF0IG1hdHRlci4KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLl9wb3B1bGF0ZS5iaW5kKHRoaXMp
LCAwKTsKKyAgICB9LAorCisgICAgX3Byb2plY3REaWRSZXNldDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcwppbmRleCAy
MGIwZWY2MTM5MmZlYWZkMjZlOTllNjUwYTkxMjM3OWU3Mjg4YTBkLi5kNTAzZGFlNjAyNWJlYjI0
MWRjM2Y4MDU0NDI2ODA5ZTg5YzQ0YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKQEAgLTM1LDggKzM1LDcg
QEAKICAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsID0gZnVuY3Rpb24obmV0d29y
a01hbmFnZXIpCiB7Ci0gICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0VXBkYXRlZCwgdGhpcy5fb25S
ZXF1ZXN0VXBkYXRlZCwgdGhpcyk7Ci0gICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0RmluaXNoZWQs
IHRoaXMuX29uUmVxdWVzdFVwZGF0ZWQsIHRoaXMpOworICAgIG5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVxdWVz
dEZpbmlzaGVkLCB0aGlzLl9vblJlcXVlc3RGaW5pc2hlZCwgdGhpcyk7CiAgICAgbmV0d29ya01h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRU
eXBlcy5SZXF1ZXN0VXBkYXRlRHJvcHBlZCwgdGhpcy5fb25SZXF1ZXN0VXBkYXRlRHJvcHBlZCwg
dGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1l
c3NhZ2VBZGRlZCwgdGhpcyk7CkBAIC0xNzIsNyArMTcxLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5FdmVudH0gZXZlbnQKICAgICAgKi8KLSAgICBfb25SZXF1ZXN0VXBkYXRlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX29uUmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkUmVzb3VyY2VzUHJvY2Vzc2VkKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwppbmRleCAwNjA1ZjdjZDE5MTc1ZTc0ZjAyNDZm
NzM4MDE1YjQ4NDk3NzY2YjhkLi42MGE2NjcyMzM3ZmY0MjhiMDA2NzllNDc3ZTEyMGQzMTdjZmY4
NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dFNuaXBwZXRNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdFNuaXBwZXRNb2RlbC5qcwpAQCAtNDMsNyArNDMsOCBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U25pcHBldE1vZGVsID0gZnVuY3Rpb24od29ya3NwYWNlKQogICAgIHRoaXMuX3NuaXBwZXRT
dG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0U3RvcmFnZSgic2NyaXB0IiwgIlNjcmlw
dCBzbmlwcGV0ICMiKTsKICAgICB0aGlzLl9sYXN0U25pcHBldEV2YWx1YXRpb25JbmRleFNldHRp
bmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygibGFzdFNuaXBwZXRFdmFs
dWF0aW9uSW5kZXgiLCAwKTsKICAgICB0aGlzLl9zbmlwcGV0U2NyaXB0TWFwcGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBpbmcodGhpcyk7Ci0gICAgdGhpcy5fd29ya3Nw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVj
dFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVz
ZXQsIHRoaXMuX3Byb2plY3RXaWxsUmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3REaWRS
ZXNldCwgdGhpcy5fcHJvamVjdERpZFJlc2V0LCB0aGlzKTsKICAgICB0aGlzLl9sb2FkU25pcHBl
dHMoKTsKIH0KIApAQCAtMzUyLDEzICszNTMsMTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBw
ZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzbmlwcGV0SWQ7CiAgICAgfSwK
IAotICAgIF9yZXNldDogZnVuY3Rpb24oKQorICAgIF9wcm9qZWN0V2lsbFJlc2V0OiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB2YXIgcmVtb3ZlZFVJU291cmNlQ29kZXMgPSB0aGlzLl9yZWxl
YXNlZFVJU291cmNlQ29kZXMoKTsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0
SWQgPSB7fTsKICAgICAgICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgp
OwogICAgICAgICB0aGlzLl9zbmlwcGV0SmF2YVNjcmlwdFNvdXJjZUZvclNuaXBwZXRJZCA9IHt9
OwotICAgICAgICBzZXRUaW1lb3V0KHRoaXMuX2xvYWRTbmlwcGV0cy5iaW5kKHRoaXMpLCAwKTsK
KyAgICB9LAorCisgICAgX3Byb2plY3REaWRSZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbG9hZFNuaXBwZXRzKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanMKaW5k
ZXggZDcwY2NlMmIzNDQ5NDliNGRmNDZiNjllMWU1YWU3ZTk3OWMwYTQwOS4uMDc2N2U5YWUwNWVl
MTQ3ZDA5ZTM2NGUzZDkyNTVhYjg3N2FkM2IwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNlTWFwcGluZy5qcwpAQCAtMzEs
MjMgKzMxLDE5IEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1dlYklu
c3BlY3Rvci5Tb3VyY2VNYXBwaW5nfQotKi8KLVdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nID0gZnVuY3Rpb24oKQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNlfSB3b3Jr
c3BhY2UKKyAqLworV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbih3
b3Jrc3BhY2UpCiB7CisgICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlOworICAgIHRoaXMu
X3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRz
LlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Jlc2V0LCB0aGlzKTsKKyAgICB0aGlzLl93b3Jrc3Bh
Y2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZl
bnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNl
LCB0aGlzKTsKKwogICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclVSTCA9IHt9OwogfQogCiBXZWJJ
bnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAg
Ki8KLSAgICBhZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclVSTFt1aVNvdXJjZUNvZGUudXJsXSA9IHVpU291
cmNlQ29kZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFNvdXJjZU1hcHBpbmco
dWlTb3VyY2VDb2RlLnVybCwgdGhpcyk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwpAQCAtNjksNyArNjUsMjggQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NMb2NhdGlvbih1aVNvdXJjZUNvZGUuY29udGVudFVSTCgp
IHx8ICIiLCBsaW5lTnVtYmVyKTsKICAgICB9LAogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAg
ICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZTogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwgfHwg
dGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51cmxdKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgIT09IFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgX2FkZFVJU291cmNlQ29kZTogZnVuY3Rp
b24odWlTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJM
W3VpU291cmNlQ29kZS51cmxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB1aVNvdXJjZUNvZGUu
c2V0U291cmNlTWFwcGluZyh0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNl
dFNvdXJjZU1hcHBpbmcodWlTb3VyY2VDb2RlLnVybCwgdGhpcyk7CisgICAgfSwKKworICAgIF9y
ZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJM
ID0ge307CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZXNldFNvdXJjZU1hcHBpbmdz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtz
cGFjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpz
CmluZGV4IDZjY2Y0MDUwNjE0ODJhNjJjZTY3OTdiYzJiZTgyYzYwNjA3ZjY5NjIuLjA1MDg3Yzhk
NThiZDgyYTlmYzcxMDJiZmJmNjM4NDU5NjhmYzg3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC00MSw3ICs0MSw5IEBAIFdlYklu
c3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICBfbWFpbkZyYW1l
TmF2aWdhdGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuUmV2aXNp
b24uZmlsdGVyT3V0U3RhbGVSZXZpc2lvbnMoKTsKKyAgICAgICAgdGhpcy5fd29ya3NwYWNlLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9q
ZWN0V2lsbFJlc2V0LCB0aGlzLl93b3Jrc3BhY2UucHJvamVjdCgpKTsKICAgICAgICAgdGhpcy5f
d29ya3NwYWNlLnByb2plY3QoKS5yZXNldCgpOworICAgICAgICB0aGlzLl93b3Jrc3BhY2UuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2pl
Y3REaWRSZXNldCwgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKSk7CiAgICAgfQogfQogCkBAIC02
Miw3ICs2NCw2IEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0ID0gZnVuY3Rpb24od29ya3NwYWNlKQog
V2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAgIHJlc2V0OiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICB0aGlzLl93b3Jrc3BhY2UuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMpOwog
ICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVzID0gW107CiAgICAgfSwKIApAQCAtMTMxLDcgKzEz
Miw4IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2UuRXZlbnRzID0gewogICAgIFVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQ6
ICJVSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkIiwKLSAgICBQcm9qZWN0V2lsbFJlc2V0OiAi
UHJvamVjdFdpbGxSZXNldCIKKyAgICBQcm9qZWN0V2lsbFJlc2V0OiAiUHJvamVjdFdpbGxSZXNl
dCIsCisgICAgUHJvamVjdERpZFJlc2V0OiAiUHJvamVjdERpZFJlc2V0IgogfQogCiBXZWJJbnNw
ZWN0b3IuV29ya3NwYWNlLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNzgyOTY0ZjcyODJlZTU2N2UyZWQ5ODhj
ZmFhNjMzYmRkN2E0ODIwNS4uZmZjMWY3YjM1YWJhZGZjMTJiMGViZDc1Y2I4MmM2ODAyZjkxZjhm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKQEAgLTUyNCw2ICs1MjQsNyBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBh
YmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zY3JpcHRTbmlwcGV0TW9kZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbCh0aGlzLndvcmtzcGFjZSk7CiAgICAgbmV3
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcodGhpcy53b3Jrc3BhY2UpOwogICAg
IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKHRoaXMud29ya3Nw
YWNlKTsKKyAgICBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcodGhpcy53b3Jr
c3BhY2UpOwogICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zYXNzLmlz
RW5hYmxlZCgpKQogICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nKHRo
aXMud29ya3NwYWNlKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1YzIyYTQ3OWQ4MWI5YTQ1NWU5ODE5MDVkZDFmYmUy
MmQ5NTMxY2QuLjZhYzcyMGM2M2EyNGYwOTlhZjQ5NjQ4ZTkxY2U0NzFkMTI5NjJlY2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0wNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGaXggaW5jb25zaXN0ZW5jaWVz
IGluIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzUyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVz
dC1yZXZpc2lvbi1jb250ZW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29u
c29sZS11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVy
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVs
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbDoK
KwogMjAxMi0wOS0wNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1N0YWJsZV0gW0dUS10gQ3Jhc2ggaW4gV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnNlbGVjdGVkSW5kZXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LXJlcXVlc3QtcmV2aXNpb24tY29udGVudC1leHBlY3RlZC50eHQKaW5kZXggOTNhOTU0MTEzNjFi
MjY4MzJmYzcyODk4YTJkMzgzZTNmNmE1OGVjNi4uZjkxYmE0ZjQ2YjY2ZDdjYjI3OTJkZTIwMjAz
ZTUzZjU0MGRmOGFmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJl
cXVlc3QtcmV2aXNpb24tY29udGVudC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBUZXN0
cyBob3cgcmV2aXNpb24gcmVxdWVzdHMgY29udGVudCBpZiBvcmlnaW5hbCBjb250ZW50IHdhcyBu
b3QgbG9hZGVkIHlldC4KIAogQnVnIDYzNjMxCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2Uvc3R5bGUuY3NzCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlLmNzcwogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlz
aW9uLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbAppbmRleCBlN2QzOWI1OTMx
NjFlYzk3MDgwNDEyNmJkM2ExY2JiNjRmYzZhMWVkLi4xNTUzYzRhYjYyMDRkMjEzZGM4YTYyNjRj
YTBiZGZlMTczZTFhYjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3Qt
cmV2aXNpb24tY29udGVudC5odG1sCkBAIC03LDE0ICs3LDEzIEBAIGZ1bmN0aW9uIGxvYWRTdHls
ZXNoZWV0KCkKICAgICB2YXIgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOwog
ICAgIGNzcy5yZWwgPSAic3R5bGVzaGVldCI7CiAgICAgY3NzLnR5cGUgPSAidGV4dC9jc3MiOwot
ICAgIGNzcy5ocmVmID0gInJlc291cmNlL3N0eWxlLmNzcyI7CisgICAgY3NzLmhyZWYgPSAicmVz
b3VyY2VzL3N0eWxlLmNzcyI7CiAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjc3MpOwog
fQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlm
ZmVyKHN0ZXAyLCB0cnVlKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUsICJfcmVzb3VyY2VBZGRl
ZCIsIHRydWUpOworICAgIFdlYkluc3BlY3Rvci53b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVk
LCBzdGVwMik7CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZFN0eWxlc2hl
ZXQoKSIpOwogCiAgICAgdmFyIHJlc291cmNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CmluZGV4IDg0ZGQ3ZDAwNTRmNzdlMzEwNzk3ODY5OGZhMWJlOWEyNjdmNDU2
MzEuLjQ2Y2YwYmI5ZDRjNDQzZDI2NDJlYjdjYmQ1ODlmZGJlYTFkMTAzNjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdW5jYXVnaHQtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xl
LXVuY2F1Z2h0LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIENPTlNPTEUg
TUVTU0FHRTogbGluZSA2OiBFcnJvcjogRXhjZXB0aW9uIGluIHNldFRpbWVvdXQgY2FsbGJhY2su
CiBUZXN0cyB0aGF0IHVuY2F1Z2h0IGV4Y2VwdGlvbnMgYXJlIGxvZ2dlZCBpbnRvIGNvbnNvbGUu
QnVnIDQ3MjUwLgogCiAKLUVycm9yOiBFeGNlcHRpb24gaW4gaW5saW5lIHNjcmlwdC4gdW5jYXVn
aHQtaW4taWZyYW1lLmh0bWw6MTgKLUVycm9yOiBFeGNlcHRpb24gaW4gJ2xvYWQnIGV2ZW50IGxp
c3RlbmVyLiB1bmNhdWdodC1pbi1pZnJhbWUuaHRtbDoxMQorRXJyb3I6IEV4Y2VwdGlvbiBpbiBp
bmxpbmUgc2NyaXB0LiByZXNvdXJjZXMvdW5jYXVnaHQtaW4taWZyYW1lLmh0bWw6MTgKK0Vycm9y
OiBFeGNlcHRpb24gaW4gJ2xvYWQnIGV2ZW50IGxpc3RlbmVyLiByZXNvdXJjZXMvdW5jYXVnaHQt
aW4taWZyYW1lLmh0bWw6MTEKIEVycm9yOiBFeGNlcHRpb24gaW4gc2V0VGltZW91dCBjYWxsYmFj
ay4gdW5jYXVnaHQtaW4taWZyYW1lLmh0bWw6NgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2Rl
LXByb3ZpZGVyLWV4cGVjdGVkLnR4dAppbmRleCAwNDk5MWYyMTdkMmVlYjM2ZTI3ZjU3Yjk0OTgz
OThiYTFmMGY3YjViLi45ZWIxYmU1YzQ2ODRkM2I2YWU5ZGNjNDY3Yjc4YzlkYzBkMjBhMDg3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJj
ZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci1leHBlY3RlZC50eHQKQEAgLTEs
NTAgKzEsMjUgQEAKIFRlc3RzIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciBjbGFzcy4KIAog
Ci1SdW5uaW5nOiB0ZXN0RG9jdW1lbnRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdAotQ3JlYXRp
bmcgcmVxdWVzdC4KLUZpbmlzaGluZyByZXF1ZXN0LgotVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFr
ZS51cmwvMgotVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQotVUlTb3VyY2VDb2RlIGlz
IGNvbnRlbnQgc2NyaXB0OiBmYWxzZQotTWltZSB0eXBlOiB0ZXh0L2h0bWwKLVVJU291cmNlQ29k
ZSBjb250ZW50OiA8ZG9jdW1lbnQgcmVxdWVzdCBjb250ZW50PgotCiBSdW5uaW5nOiB0ZXN0RG9j
dW1lbnRSZXNvdXJjZQogQ3JlYXRpbmcgcmVzb3VyY2UuCi1VSVNvdXJjZUNvZGU6IGh0dHA6Ly9m
YWtlLnVybC8zCitVSVNvdXJjZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC8xCiBVSVNvdXJjZUNvZGUg
aXMgZWRpdGFibGU6IGZhbHNlCiBVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNl
CiBNaW1lIHR5cGU6IHRleHQvaHRtbAogVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxkb2N1bWVudCBy
ZXNvdXJjZSBjb250ZW50PgogCi1SdW5uaW5nOiB0ZXN0U2NyaXB0UmVzb3VyY2VXaXRoUGVuZGlu
Z1JlcXVlc3QKLUNyZWF0aW5nIHJlcXVlc3QuCi1GaW5pc2hpbmcgcmVxdWVzdC4KLVVJU291cmNl
Q29kZTogaHR0cDovL2Zha2UudXJsLzQKLVVJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQot
VUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQotTWltZSB0eXBlOiB0ZXh0L2ph
dmFzY3JpcHQKLVVJU291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlcXVlc3QgY29udGVudD4K
LQogUnVubmluZzogdGVzdFNjcmlwdFJlc291cmNlCiBDcmVhdGluZyByZXNvdXJjZS4KLVVJU291
cmNlQ29kZTogaHR0cDovL2Zha2UudXJsLzUKK1VJU291cmNlQ29kZTogaHR0cDovL2Zha2UudXJs
LzIKIFVJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQogVUlTb3VyY2VDb2RlIGlzIGNvbnRl
bnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKIFVJU291cmNlQ29k
ZSBjb250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CiAKLVJ1bm5pbmc6IHRlc3RTdHls
ZXNoZWV0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3QKLUNyZWF0aW5nIHJlcXVlc3QuCi1VSVNv
dXJjZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC82Ci1GaW5pc2hpbmcgcmVxdWVzdC4KLU1pbWUgdHlw
ZTogdGV4dC9jc3MKLVVJU291cmNlQ29kZSBjb250ZW50OiA8c3R5bGVzaGVldCByZXF1ZXN0IGNv
bnRlbnQ+Ci0KIFJ1bm5pbmc6IHRlc3RTdHlsZXNoZWV0UmVzb3VyY2UKIENyZWF0aW5nIHJlc291
cmNlLgotVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvNworVUlTb3VyY2VDb2RlOiBodHRw
Oi8vZmFrZS51cmwvMwogTWltZSB0eXBlOiB0ZXh0L2NzcwogVUlTb3VyY2VDb2RlIGNvbnRlbnQ6
IDxzdHlsZXNoZWV0IHJlc291cmNlIGNvbnRlbnQ+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3Zp
ZGVyLmh0bWwKaW5kZXggOWQ5MjdmNjM1ZWYyOGU1NTg1ZTY4YWU4YjIwNDYwMmE0ZTVkNGE2OS4u
YjE5ZmM3NDMyODkwNWFhNDExZmRkZGZlNzg4MmIzMTVlNzdjMGZlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3Vy
Y2Vjb2RlLXByb3ZpZGVyLmh0bWwKQEAgLTcsNyArNyw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsK
ICAgICB2YXIgbW9ja0NvbnRlbnRzTWFwID0ge307Ci0gICAgdmFyIGxhc3RSZXNvdWNlSWQgPSAx
OworICAgIHZhciBsYXN0UmVzb3VjZUlkID0gMDsKIAogICAgIE5ldHdvcmtBZ2VudC5nZXRSZXNw
b25zZUJvZHkgPSBmdW5jdGlvbihyZXF1ZXN0SWQsIGNhbGxiYWNrKQogICAgIHsKQEAgLTE5LDcg
KzE5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgbW9j
a0NvbnRlbnRzTWFwW3VybF0sIGZhbHNlKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjcmVhdGVS
ZXNvdXJjZU1vY2sodHlwZSwgd2l0aFBlbmRpbmdSZXF1ZXN0LCBjb250ZW50KQorICAgIGZ1bmN0
aW9uIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCBjb250ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGRvY3VtZW50VVJMID0gImh0dHA6Ly9mYWtlLnVybCI7CiAgICAgICAgIHZhciByZXNvdXJjZUlk
ID0gKytsYXN0UmVzb3VjZUlkICsgIiI7CkBAIC0zOSwxMyArMzksNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdpdGhQZW5k
aW5nUmVxdWVzdCkgewotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0KHJlc291cmNlSWQsIHVybCwgImh0dHA6Ly9mYWtlLnVybCIsIGZyYW1l
SWQsIGxvYWRlcklkKTsKLSAgICAgICAgICAgIHJlcXVlc3QudHlwZSA9IHR5cGU7Ci0gICAgICAg
ICAgICByZXF1ZXN0Lm1pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgICAgICAgICBtb2NrQ29udGVu
dHNNYXBbcmVzb3VyY2VJZF0gPSBjb250ZW50OwotICAgICAgICB9Ci0gICAgICAgIHZhciByZXNv
dXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UocmVxdWVzdCwgdXJsLCBkb2N1bWVudFVS
TCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIG1pbWVUeXBlKTsKKyAgICAgICAgdmFyIHJlc291
cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShudWxsLCB1cmwsIGRvY3VtZW50VVJMLCBm
cmFtZUlkLCBsb2FkZXJJZCwgdHlwZSwgbWltZVR5cGUpOwogICAgICAgICBtb2NrQ29udGVudHNN
YXBbdXJsXSA9IGNvbnRlbnQ7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2Rl
bC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
LkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgcmVzb3VyY2UpOwogCkBAIC02Nyw0NiArNjEsMTIg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3Vp
dGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJjZVdpdGhQZW5kaW5nUmVx
dWVzdChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7Ci0KLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOwotICAg
ICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLkRvY3VtZW50LCB0cnVlLCAiPGRvY3VtZW50IHJlcXVlc3QgY29udGVudD4i
KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VD
b2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVlc3QuIik7Ci0gICAgICAgICAgICBmaW5pc2hS
ZXNvdXJjZShyZXNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSwKLQogICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJjZShu
ZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3Zp
ZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2UuIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVp
U291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291
cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCwgZmFsc2UsICI8ZG9j
dW1lbnQgcmVzb3VyY2UgY29udGVudD4iKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3Vy
Y2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTY3JpcHRSZXNv
dXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIg
bmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGlu
ZyByZXF1ZXN0LiIpOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VN
b2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgdHJ1ZSwgIjxzY3JpcHQgcmVx
dWVzdCBjb250ZW50PiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaW5pc2hpbmcgcmVxdWVzdC4iKTsKLSAgICAg
ICAgICAgIGZpbmlzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVu
dCwgIjxkb2N1bWVudCByZXNvdXJjZSBjb250ZW50PiIpOwogCiAgICAgICAgICAgICBmdW5jdGlv
biB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICB7CkBAIC0xMTks
NyArNzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBuZXR3b3JrVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIgPSBjcmVhdGVOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIoKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyByZXNvdXJjZS4iKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFk
ZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgZmFs
c2UsICI8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBjcmVhdGVSZXNvdXJjZU1vY2soV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0
LCAiPHNjcmlwdCByZXNvdXJjZSBjb250ZW50PiIpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiB1
aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICB7CkBAIC0xMjcsMzYg
Kzg3LDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0g
ICAgICAgIGZ1bmN0aW9uIHRlc3RTdHlsZXNoZWV0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3Qo
bmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVuZFRlc3RDYWxsc0xlZnQgPSAyOwot
ICAgICAgICAgICAgdmFyIG5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciA9IGNyZWF0ZU5ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlcigpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVxdWVzdC4iKTsK
LSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0
b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0LCB0cnVlLCAiPHN0eWxlc2hlZXQgcmVxdWVzdCBj
b250ZW50PiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZpbmlzaGlu
ZyByZXF1ZXN0LiIpOwotICAgICAgICAgICAgZmluaXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAg
ICAgICAgICAgZW5kVGVzdCgpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVB
ZGRlZCh1aVNvdXJjZUNvZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgZW5kVGVzdCk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGVuZFRlc3QoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGlmICgtLWVuZFRlc3RDYWxsc0xlZnQpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0KICAgICAgICAgZnVuY3Rpb24gdGVzdFN0eWxlc2hlZXRSZXNvdXJjZShuZXh0KQog
ICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0g
Y3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2UuIik7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNl
Q29kZUFkZGVkKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlTW9j
ayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0LCBmYWxzZSwgIjxzdHlsZXNo
ZWV0IHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVh
dGVSZXNvdXJjZU1vY2soV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldCwgIjxz
dHlsZXNoZWV0IHJlc291cmNlIGNvbnRlbnQ+Iik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHVp
U291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0
bWwKaW5kZXggNzllOWRkMjEzNDhhNjg5ODliMDc4ZmM2NDAyNWU1NjZmOTBkODMzMi4uYmUxNDll
YTRjMjk5Y2ZiZTQwMjllZGVkYzljOWE4M2MwZmUyNTU2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKQEAg
LTUsNiArNSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7CitzZXRUaW1lb3V0KElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCksIDEwMDApOwogICAg
IGZ1bmN0aW9uIHJlc2V0U25pcHBldHNTZXR0aW5ncygpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLl9zbmlwcGV0U3RvcmFnZS5yZXNldCgpOwpAQCAtMTUs
NiArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNT
ZXR0aW5ncy5zbmlwcGV0c1N1cHBvcnQgPSB7fTsKICAgICBXZWJJbnNwZWN0b3IuZXhwZXJpbWVu
dHNTZXR0aW5ncy5zbmlwcGV0c1N1cHBvcnQuaXNFbmFibGVkID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0cnVlOyB9OwogICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFj
ZSgpOworICAgIHZhciB3b3Jrc3BhY2VDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jr
c3BhY2VDb250cm9sbGVyKHdvcmtzcGFjZSk7CiAgICAgV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBw
ZXRNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsKHdvcmtzcGFjZSk7
CiAKICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKQEAgLTI3LDExICsy
OSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRT
bmlwcGV0TW9kZWwucmVuYW1lU2NyaXB0U25pcHBldChzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZSwg
c25pcHBldE5hbWUpOwogICAgICAgICAgICAgd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwg
dWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlJlc2V0dGluZyBzbmlwcGV0IHNjcmlwdCBtYXBwaW5nLiIpOwotICAgICAgICAgICAgd29ya3Nw
YWNlLnByb2plY3QoKS5yZXNldCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKCF3b3Jrc3BhY2UudWlTb3VyY2VDb2RlcygpLmxlbmd0aCwgIlNuaXBwZXRzIHNjcmlwdCBt
YXBwaW5nIHNob3VsZCBub3QgaGF2ZSBhbnkgdWlTb3VyY2VDb2RlcyBhZnRlciByZXNldC4iKTsK
KyAgICAgICAgICAgIHdvcmtzcGFjZUNvbnRyb2xsZXIuX21haW5GcmFtZU5hdmlnYXRlZCgpOwog
CiAgICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZChldmVudCkKICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh3b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlcygpLmxlbmd0aCwgMSwgIk9ubHkgb25lIHNuaXBwZXQgdWlTb3VyY2VD
b2RlIHNob3VsZCBiZSBwcmVzZW50IGFmdGVyIHByb2plY3QgbmF2aWdhdGlvbi4iKTsKICAgICAg
ICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gZXZlbnQuZGF0YTsKICAgICAgICAgICAgICAg
ICBpZiAodWlTb3VyY2VDb2RlLnVybC5pbmRleE9mKHNuaXBwZXROYW1lKSA9PT0gLTEpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCmluZGV4IGU1YmNjMzhkNmY2N2I0NjY5MGQ3ZjlkNmM5
M2E5NDI3NDlhZDI5YjIuLjY5ZjQ0MWIxNWNmNTU4OGE2N2UyMDM3NTIxYWE0YTRkY2UyZWY3MTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVs
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwu
aHRtbApAQCAtNjQsNiArNjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24g
dGVzdFJlc2V0KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciB3b3Jrc3BhY2UgPSBu
ZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOworICAgICAgICAgICAgdmFyIHdvcmtzcGFjZUNv
bnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZUNvbnRyb2xsZXIod29ya3NwYWNl
KTsKICAgICAgICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
KHdvcmtzcGFjZSk7CiAgICAgICAgICAgICBwYW5lbC5zaG93KCk7CiAKQEAgLTc3LDcgKzc4LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlw
dHNOYXZpZ2F0b3IocGFuZWwuX25hdmlnYXRvcik7CiAKLSAgICAgICAgICAgIHdvcmtzcGFjZS5w
cm9qZWN0KCkucmVzZXQoKTsKKyAgICAgICAgICAgIHdvcmtzcGFjZUNvbnRyb2xsZXIuX21haW5G
cmFtZU5hdmlnYXRlZCgpOwogICAgICAgICAgICAgd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlQmFyKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cFNjcmlwdHNOYXZpZ2F0b3IocGFuZWwuX25hdmlnYXRvcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162429</attachid>
            <date>2012-09-05 23:55:33 -0700</date>
            <delta_ts>2012-09-06 00:11:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95752-20120906105513.patch</filename>
            <type>text/plain</type>
            <size>28786</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY5YzgwOWMyNjM3ZjI3
NThhNmZhNGNmNjRlZjZkNjJjN2FmYTg0NC4uOWJlN2MyY2E4Mjc2ZDI3NzE3M2VmODIwM2E4ZjM1
MzllNjc5YjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTA0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEZpeCBpbmNvbnNpc3RlbmNpZXMgaW4gTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgZG9lcyBub3QgcmVjZWl2ZSBSZXNvdXJj
ZUFkZGVkIGV2ZW50IHVudGlsIHJlc291cmNlIGlzIGZpbmlzaGVkIGFueW1vcmUuCisgICAgICAg
IFN0eWxlc1NvdXJjZU1hcHBpbmcgbm93IGxpc3RlbnMgZm9yIHdvcmtzcGFjZSBldmVudCBpbnN0
ZWFkIG9mIGJlaW5nIGNhbGxlZCBkaXJlY3RseSBieSBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIuCisgICAgICAgIFN0eWxlc1NvdXJjZU1hcHBpbmcgaXMgbm93IGNyZWF0ZWQgZnJvbSBpbnNw
ZWN0b3IuanMuCisgICAgICAgIFByb2plY3REaWRSZXNldCBldmVudCBpbnRyb2R1Y2VkIGluc3Rl
YWQgb2Ygc2V0VGltZW91dCBoYWNrcyBpbiBtYXBwaW5ncy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fcmVzb3VyY2VBZGRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnBy
b3RvdHlwZS5fcHJvamVjdFdpbGxSZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fcHJvamVjdERpZFJlc2V0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX29uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX3Byb2plY3RXaWxsUmVzZXQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX3Byb2plY3REaWRSZXNl
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlLl91aVNvdXJjZUNvZGVB
ZGRlZFRvV29ya3NwYWNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5fYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZXNTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV29ya3NwYWNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtzcGFj
ZUNvbnRyb2xsZXIucHJvdG90eXBlLl9tYWluRnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKwogMjAxMi0wOS0wNSAgQW5kcmVpIFBvZW5hcnUgIDxw
b2VuYXJ1QGFkb2JlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRl
bnNpb246IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNv
ZGVQcm92aWRlci5qcwppbmRleCAxZDUyOWUxNWM3MmYwYjUyMWQxMjQ5OGY5MzExMjA1YzQyOGQ3
Mjc5Li5mMTYyNWY2NGNmYWYzNmUzMTViMGZlM2NhN2YyMzRhMDAwMDdhZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQ
cm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcwpAQCAtMzYsOCArMzYsOCBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gZnVuY3Rpb24od29ya3NwYWNlKQogewogICAg
IHRoaXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsKICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
cmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwu
RXZlbnRUeXBlcy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKLSAg
ICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuV29ya3NwYWNl
LkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl9yZXNldCwgdGhpcyk7Ci0gICAgdGhpcy5f
c3R5bGVzU291cmNlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGlu
ZygpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5X
b3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Byb2plY3RXaWxsUmVzZXQs
IHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3REaWRSZXNldCwgdGhpcy5fcHJvamVjdERpZFJlc2V0
LCB0aGlzKTsKIAogICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlID0ge307CiB9CkBA
IC01OSw3NiArNTksMzggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQotICAgICAqLwotICAgIF9zdHlsZVJlc291cmNlQWRk
ZWQ6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVTb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB0aGlzLl9z
dHlsZXNTb3VyY2VNYXBwaW5nLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAg
ICB0aGlzLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCi0gICAgICov
Ci0gICAgX3NjcmlwdFJlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgaWYgKHJlc291cmNlLnJlcXVlc3QgJiYgIXJlc291cmNlLnJlcXVlc3QuZmluaXNoZWQp
IHsKLSAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLkZpbmlzaGVkTG9hZGluZywgcmVzb3VyY2VGaW5p
c2hlZCwgdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhp
cy5fYWRkSmF2YVNjcmlwdFNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIAotICAgICAgICBmdW5j
dGlvbiByZXNvdXJjZUZpbmlzaGVkKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5F
dmVudHMuRmluaXNoZWRMb2FkaW5nLCByZXNvdXJjZUZpbmlzaGVkLCB0aGlzKTsKLSAgICAgICAg
ICAgIHRoaXMuX2FkZEphdmFTY3JpcHRTb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB9Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNv
dXJjZQotICAgICAqLwotICAgIF9hZGRKYXZhU2NyaXB0U291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91aVNvdXJjZUNvZGVGb3JSZXNvdXJjZVtyZXNv
dXJjZS51cmxdKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgaXNEb2N1bWVudCA9
IHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50Owot
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291
cmNlKHJlc291cmNlLnVybCwgcmVzb3VyY2UsIHJlc291cmNlLCAhaXNEb2N1bWVudCk7Ci0gICAg
ICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlW3Jlc291cmNlLnVybF0gPSB1aVNvdXJj
ZUNvZGU7Ci0gICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIF9hZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRk
VUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAogICAgICAqLwogICAgIF9yZXNvdXJjZUFk
ZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyBldmVudC5kYXRhOworICAgICAgICBpZiAo
dGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2VbcmVzb3VyY2UudXJsXSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZTsKICAgICAgICAgc3dpdGNoIChyZXNv
dXJjZS50eXBlKSB7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5
bGVzaGVldDoKLSAgICAgICAgICAgIHRoaXMuX3N0eWxlUmVzb3VyY2VBZGRlZChyZXNvdXJjZSk7
CisgICAgICAgICAgICB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlU291cmNl
KHJlc291cmNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50OgorICAgICAgICAgICAgdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHJlc291cmNlLnVybCwgcmVzb3VyY2UsIHJl
c291cmNlLCBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQ6Ci0gICAgICAgICAgICB0aGlzLl9zY3JpcHRSZXNv
dXJjZUFkZGVkKHJlc291cmNlKTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZShyZXNvdXJjZS51cmwsIHJlc291cmNlLCByZXNvdXJj
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAodWlT
b3VyY2VDb2RlKSB7CisgICAgICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JSZXNvdXJjZVty
ZXNvdXJjZS51cmxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNl
LnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgfQogICAg
IH0sCiAKLSAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICBfcHJvamVjdFdpbGxSZXNldDogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2UgPSB7
fTsKLSAgICAgICAgdGhpcy5fc3R5bGVzU291cmNlTWFwcGluZy5yZXNldCgpOwotICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBwb3B1bGF0ZSB1bnRpbCB0aGUgUHJvamVjdFdpbGxSZXNl
dCBldmVudCB3YXMgaGFuZGxlZCBieSBhbGwgbGlzdGVuZXJzLiBJbnRyb2R1Y2UgUHJvamVjdERp
ZFJlc2V0IGV2ZW50IGZvciB0aGF0IG1hdHRlci4KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLl9w
b3B1bGF0ZS5iaW5kKHRoaXMpLCAwKTsKKyAgICB9LAorCisgICAgX3Byb2plY3REaWRSZXNldDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJl
ZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRy
ZWVNb2RlbC5qcwppbmRleCAyMGIwZWY2MTM5MmZlYWZkMjZlOTllNjUwYTkxMjM3OWU3Mjg4YTBk
Li5kNTAzZGFlNjAyNWJlYjI0MWRjM2Y4MDU0NDI2ODA5ZTg5YzQ0YjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwu
anMKQEAgLTM1LDggKzM1LDcgQEAKICAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
ID0gZnVuY3Rpb24obmV0d29ya01hbmFnZXIpCiB7Ci0gICAgbmV0d29ya01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0
VXBkYXRlZCwgdGhpcy5fb25SZXF1ZXN0VXBkYXRlZCwgdGhpcyk7Ci0gICAgbmV0d29ya01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBl
cy5SZXF1ZXN0RmluaXNoZWQsIHRoaXMuX29uUmVxdWVzdFVwZGF0ZWQsIHRoaXMpOworICAgIG5l
dHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50VHlwZXMuUmVxdWVzdEZpbmlzaGVkLCB0aGlzLl9vblJlcXVlc3RGaW5pc2hlZCwgdGhp
cyk7CiAgICAgbmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0VXBkYXRlRHJvcHBlZCwgdGhpcy5fb25SZXF1
ZXN0VXBkYXRlRHJvcHBlZCwgdGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRl
ZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CkBAIC0xNzIsNyArMTcxLDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKICAgICAgKi8KLSAgICBfb25S
ZXF1ZXN0VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uUmVxdWVzdEZpbmlzaGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkUmVzb3VyY2Vz
UHJvY2Vzc2VkKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwppbmRleCAwNjA1
ZjdjZDE5MTc1ZTc0ZjAyNDZmNzM4MDE1YjQ4NDk3NzY2YjhkLi42MGE2NjcyMzM3ZmY0MjhiMDA2
NzllNDc3ZTEyMGQzMTdjZmY4NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwpAQCAtNDMsNyArNDMsOCBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsID0gZnVuY3Rpb24od29ya3NwYWNlKQog
ICAgIHRoaXMuX3NuaXBwZXRTdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0U3RvcmFn
ZSgic2NyaXB0IiwgIlNjcmlwdCBzbmlwcGV0ICMiKTsKICAgICB0aGlzLl9sYXN0U25pcHBldEV2
YWx1YXRpb25JbmRleFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGlu
ZygibGFzdFNuaXBwZXRFdmFsdWF0aW9uSW5kZXgiLCAwKTsKICAgICB0aGlzLl9zbmlwcGV0U2Ny
aXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBpbmcodGhpcyk7
Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtz
cGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRo
aXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZl
bnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Byb2plY3RXaWxsUmVzZXQsIHRoaXMpOworICAg
IHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2Uu
RXZlbnRzLlByb2plY3REaWRSZXNldCwgdGhpcy5fcHJvamVjdERpZFJlc2V0LCB0aGlzKTsKICAg
ICB0aGlzLl9sb2FkU25pcHBldHMoKTsKIH0KIApAQCAtMzUyLDEzICszNTMsMTcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBz
bmlwcGV0SWQ7CiAgICAgfSwKIAotICAgIF9yZXNldDogZnVuY3Rpb24oKQorICAgIF9wcm9qZWN0
V2lsbFJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgcmVtb3ZlZFVJU291cmNl
Q29kZXMgPSB0aGlzLl9yZWxlYXNlZFVJU291cmNlQ29kZXMoKTsKICAgICAgICAgdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKICAgICAgICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3Vy
Y2VDb2RlID0gbmV3IE1hcCgpOwogICAgICAgICB0aGlzLl9zbmlwcGV0SmF2YVNjcmlwdFNvdXJj
ZUZvclNuaXBwZXRJZCA9IHt9OwotICAgICAgICBzZXRUaW1lb3V0KHRoaXMuX2xvYWRTbmlwcGV0
cy5iaW5kKHRoaXMpLCAwKTsKKyAgICB9LAorCisgICAgX3Byb2plY3REaWRSZXNldDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbG9hZFNuaXBwZXRzKCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJj
ZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Nv
dXJjZU1hcHBpbmcuanMKaW5kZXggZDcwY2NlMmIzNDQ5NDliNGRmNDZiNjllMWU1YWU3ZTk3OWMw
YTQwOS4uMDc2N2U5YWUwNWVlMTQ3ZDA5ZTM2NGUzZDkyNTVhYjg3N2FkM2IwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5n
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNl
TWFwcGluZy5qcwpAQCAtMzEsMjMgKzMxLDE5IEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICog
QGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nfQotKi8KLVdlYkluc3BlY3Rv
ci5TdHlsZXNTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24oKQorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuV29ya3NwYWNlfSB3b3Jrc3BhY2UKKyAqLworV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1h
cHBpbmcgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiB7CisgICAgdGhpcy5fd29ya3NwYWNlID0gd29y
a3NwYWNlOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Jlc2V0LCB0aGlzKTsK
KyAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNv
ZGVBZGRlZFRvV29ya3NwYWNlLCB0aGlzKTsKKwogICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclVS
TCA9IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUg
PSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICBhZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclVSTFt1aVNvdXJj
ZUNvZGUudXJsXSA9IHVpU291cmNlQ29kZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LnNldFNvdXJjZU1hcHBpbmcodWlTb3VyY2VDb2RlLnVybCwgdGhpcyk7Ci0gICAgfSwKLQotICAg
IC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlv
bgogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwpAQCAt
NjksNyArNjUsMjggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NMb2NhdGlvbih1aVNvdXJj
ZUNvZGUuY29udGVudFVSTCgpIHx8ICIiLCBsaW5lTnVtYmVyKTsKICAgICB9LAogCi0gICAgcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICBpZiAoIXVp
U291cmNlQ29kZS51cmwgfHwgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51
cmxdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmNvbnRl
bnRUeXBlKCkgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlU2hlZXQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgX2FkZFVJ
U291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
dWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51cmxdID0gdWlTb3VyY2VDb2RlOworICAg
ICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLnNldFNvdXJjZU1hcHBpbmcodWlTb3VyY2VDb2RlLnVybCwgdGhpcyk7
CisgICAgfSwKKworICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5f
dWlTb3VyY2VDb2RlRm9yVVJMID0ge307CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5y
ZXNldFNvdXJjZU1hcHBpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV29ya3NwYWNlLmpzCmluZGV4IDZjY2Y0MDUwNjE0ODJhNjJjZTY3OTdiYzJiZTgyYzYw
NjA3ZjY5NjIuLjA1MDg3YzhkNThiZDgyYTlmYzcxMDJiZmJmNjM4NDU5NjhmYzg3MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC00
MSw3ICs0MSw5IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVyLnByb3RvdHlwZSA9
IHsKICAgICBfbWFpbkZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuUmV2aXNpb24uZmlsdGVyT3V0U3RhbGVSZXZpc2lvbnMoKTsKKyAgICAgICAg
dGhpcy5fd29ya3NwYWNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuV29y
a3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl93b3Jrc3BhY2UucHJvamVjdCgp
KTsKICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5yZXNldCgpOworICAgICAgICB0
aGlzLl93b3Jrc3BhY2UuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jr
c3BhY2UuRXZlbnRzLlByb2plY3REaWRSZXNldCwgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKSk7
CiAgICAgfQogfQogCkBAIC02Miw3ICs2NCw2IEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0ID0gZnVu
Y3Rpb24od29ya3NwYWNlKQogV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAg
IHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl93b3Jrc3BhY2UuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RX
aWxsUmVzZXQsIHRoaXMpOwogICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVzID0gW107CiAgICAg
fSwKIApAQCAtMTMxLDcgKzEzMiw4IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UgPSBmdW5jdGlv
bigpCiAKIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzID0gewogICAgIFVJU291cmNlQ29k
ZUNvbnRlbnRDb21taXR0ZWQ6ICJVSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkIiwKLSAgICBQ
cm9qZWN0V2lsbFJlc2V0OiAiUHJvamVjdFdpbGxSZXNldCIKKyAgICBQcm9qZWN0V2lsbFJlc2V0
OiAiUHJvamVjdFdpbGxSZXNldCIsCisgICAgUHJvamVjdERpZFJlc2V0OiAiUHJvamVjdERpZFJl
c2V0IgogfQogCiBXZWJJbnNwZWN0b3IuV29ya3NwYWNlLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNzgyOTY0
ZjcyODJlZTU2N2UyZWQ5ODhjZmFhNjMzYmRkN2E0ODIwNS4uZmZjMWY3YjM1YWJhZGZjMTJiMGVi
ZDc1Y2I4MmM2ODAyZjkxZjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTUyNCw2ICs1MjQsNyBAQCBXZWJJbnNwZWN0b3IuX2Rv
TG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zY3JpcHRT
bmlwcGV0TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbCh0aGlzLndv
cmtzcGFjZSk7CiAgICAgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcodGhp
cy53b3Jrc3BhY2UpOwogICAgIG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyKHRoaXMud29ya3NwYWNlKTsKKyAgICBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJj
ZU1hcHBpbmcodGhpcy53b3Jrc3BhY2UpOwogICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVu
dHNTZXR0aW5ncy5zYXNzLmlzRW5hYmxlZCgpKQogICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNB
U1NTb3VyY2VNYXBwaW5nKHRoaXMud29ya3NwYWNlKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2Y2JhYzg1MjIwMDhm
ODNiZWFiM2JjOTBjMDk1OGNlMDJlZjk0NjIuLmUxNTI1YjI0N2JlNzMzOGQ3ZTAyYmYwODgyMTEy
OWI3YjA2ZjZiZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0wNCAgVnNldm9sb2Qg
Vmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBG
aXggaW5jb25zaXN0ZW5jaWVzIGluIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1j
b250ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2NvbnNvbGUvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRl
ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlz
b3VyY2Vjb2RlLXByb3ZpZGVyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdC1zbmlwcGV0LW1vZGVsLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtcGFuZWwuaHRtbDoKKwogMjAxMi0wOS0wNSAgQW5kcmVpIFBvZW5hcnUgIDxwb2VuYXJ1
QGFkb2JlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRlbnNpb246
IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29u
dGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4dAppbmRleCA5
M2E5NTQxMTM2MWIyNjgzMmZjNzI4OThhMmQzODNlM2Y2YTU4ZWM2Li5mOTFiYTRmNDZiNjZkN2Ni
Mjc5MmRlMjAyMDNlNTNmNTQwZGY4YWZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIFRlc3RzIGhvdyByZXZpc2lvbiByZXF1ZXN0cyBjb250ZW50IGlmIG9yaWdpbmFsIGNv
bnRlbnQgd2FzIG5vdCBsb2FkZWQgeWV0LgogCiBCdWcgNjM2MzEKLWh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS9zdHlsZS5jc3MKK2h0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc3R5bGUuY3NzCiAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJl
cXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCmluZGV4
IGU3ZDM5YjU5MzE2MWVjOTcwODA0MTI2YmQzYTFjYmI2NGZjNmExZWQuLjE1NTNjNGFiNjIwNGQy
MTNkYzhhNjI2NGNhMGJkZmUxNzNlMWFiM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWwKQEAgLTcsMTQgKzcsMTMgQEAgZnVuY3Rp
b24gbG9hZFN0eWxlc2hlZXQoKQogICAgIHZhciBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaW5rIik7CiAgICAgY3NzLnJlbCA9ICJzdHlsZXNoZWV0IjsKICAgICBjc3MudHlwZSA9ICJ0
ZXh0L2NzcyI7Ci0gICAgY3NzLmhyZWYgPSAicmVzb3VyY2Uvc3R5bGUuY3NzIjsKKyAgICBjc3Mu
aHJlZiA9ICJyZXNvdXJjZXMvc3R5bGUuY3NzIjsKICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENo
aWxkKGNzcyk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIEluc3BlY3RvclRlc3QuYWRk
Q29uc29sZVNuaWZmZXIoc3RlcDIsIHRydWUpOwotICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSwgIl9y
ZXNvdXJjZUFkZGVkIiwgdHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3Vy
Y2VDb2RlQWRkZWQsIHN0ZXAyKTsKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJs
b2FkU3R5bGVzaGVldCgpIik7CiAKICAgICB2YXIgcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXVuY2F1Z2h0LWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXVuY2F1Z2h0
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKaW5kZXggODRkZDdkMDA1NGY3N2UzMTA3OTc4Njk4ZmEx
YmU5YTI2N2Y0NTYzMS4uNDZjZjBiYjlkNGM0NDNkMjY0MmViN2NiZDU4OWZkYmVhMWQxMDM2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS11bmNhdWdo
dC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL2NvbnNvbGUtdW5jYXVnaHQtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcg
QEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IEVycm9yOiBFeGNlcHRpb24gaW4gc2V0VGltZW91
dCBjYWxsYmFjay4KIFRlc3RzIHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBhcmUgbG9nZ2VkIGlu
dG8gY29uc29sZS5CdWcgNDcyNTAuCiAKIAotRXJyb3I6IEV4Y2VwdGlvbiBpbiBpbmxpbmUgc2Ny
aXB0LiB1bmNhdWdodC1pbi1pZnJhbWUuaHRtbDoxOAotRXJyb3I6IEV4Y2VwdGlvbiBpbiAnbG9h
ZCcgZXZlbnQgbGlzdGVuZXIuIHVuY2F1Z2h0LWluLWlmcmFtZS5odG1sOjExCitFcnJvcjogRXhj
ZXB0aW9uIGluIGlubGluZSBzY3JpcHQuIHJlc291cmNlcy91bmNhdWdodC1pbi1pZnJhbWUuaHRt
bDoxOAorRXJyb3I6IEV4Y2VwdGlvbiBpbiAnbG9hZCcgZXZlbnQgbGlzdGVuZXIuIHJlc291cmNl
cy91bmNhdWdodC1pbi1pZnJhbWUuaHRtbDoxMQogRXJyb3I6IEV4Y2VwdGlvbiBpbiBzZXRUaW1l
b3V0IGNhbGxiYWNrLiB1bmNhdWdodC1pbi1pZnJhbWUuaHRtbDo2CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11
aXNvdXJjZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0CmluZGV4IDA0OTkxZjIxN2QyZWViMzZl
MjdmNTdiOTQ5ODM5OGJhMWYwZjdiNWIuLjllYjFiZTVjNDY4NGQzYjZhZTlkY2M0NjdiNzhjOWRj
MGQyMGEwODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3
b3JrLXVpc291cmNlY29kZS1wcm92aWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVyLWV4cGVjdGVk
LnR4dApAQCAtMSw1MCArMSwyNSBAQAogVGVzdHMgTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVy
IGNsYXNzLgogCiAKLVJ1bm5pbmc6IHRlc3REb2N1bWVudFJlc291cmNlV2l0aFBlbmRpbmdSZXF1
ZXN0Ci1DcmVhdGluZyByZXF1ZXN0LgotRmluaXNoaW5nIHJlcXVlc3QuCi1VSVNvdXJjZUNvZGU6
IGh0dHA6Ly9mYWtlLnVybC8yCi1VSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IGZhbHNlCi1VSVNv
dXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCi1NaW1lIHR5cGU6IHRleHQvaHRtbAot
VUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxkb2N1bWVudCByZXF1ZXN0IGNvbnRlbnQ+Ci0KIFJ1bm5p
bmc6IHRlc3REb2N1bWVudFJlc291cmNlCiBDcmVhdGluZyByZXNvdXJjZS4KLVVJU291cmNlQ29k
ZTogaHR0cDovL2Zha2UudXJsLzMKK1VJU291cmNlQ29kZTogaHR0cDovL2Zha2UudXJsLzEKIFVJ
U291cmNlQ29kZSBpcyBlZGl0YWJsZTogZmFsc2UKIFVJU291cmNlQ29kZSBpcyBjb250ZW50IHNj
cmlwdDogZmFsc2UKIE1pbWUgdHlwZTogdGV4dC9odG1sCiBVSVNvdXJjZUNvZGUgY29udGVudDog
PGRvY3VtZW50IHJlc291cmNlIGNvbnRlbnQ+CiAKLVJ1bm5pbmc6IHRlc3RTY3JpcHRSZXNvdXJj
ZVdpdGhQZW5kaW5nUmVxdWVzdAotQ3JlYXRpbmcgcmVxdWVzdC4KLUZpbmlzaGluZyByZXF1ZXN0
LgotVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvNAotVUlTb3VyY2VDb2RlIGlzIGVkaXRh
YmxlOiB0cnVlCi1VSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCi1NaW1lIHR5
cGU6IHRleHQvamF2YXNjcmlwdAotVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxzY3JpcHQgcmVxdWVz
dCBjb250ZW50PgotCiBSdW5uaW5nOiB0ZXN0U2NyaXB0UmVzb3VyY2UKIENyZWF0aW5nIHJlc291
cmNlLgotVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvNQorVUlTb3VyY2VDb2RlOiBodHRw
Oi8vZmFrZS51cmwvMgogVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiB0cnVlCiBVSVNvdXJjZUNv
ZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCiBNaW1lIHR5cGU6IHRleHQvamF2YXNjcmlwdAog
VUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxzY3JpcHQgcmVzb3VyY2UgY29udGVudD4KIAotUnVubmlu
ZzogdGVzdFN0eWxlc2hlZXRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdAotQ3JlYXRpbmcgcmVx
dWVzdC4KLVVJU291cmNlQ29kZTogaHR0cDovL2Zha2UudXJsLzYKLUZpbmlzaGluZyByZXF1ZXN0
LgotTWltZSB0eXBlOiB0ZXh0L2NzcwotVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxzdHlsZXNoZWV0
IHJlcXVlc3QgY29udGVudD4KLQogUnVubmluZzogdGVzdFN0eWxlc2hlZXRSZXNvdXJjZQogQ3Jl
YXRpbmcgcmVzb3VyY2UuCi1VSVNvdXJjZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC83CitVSVNvdXJj
ZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC8zCiBNaW1lIHR5cGU6IHRleHQvY3NzCiBVSVNvdXJjZUNv
ZGUgY29udGVudDogPHN0eWxlc2hlZXQgcmVzb3VyY2UgY29udGVudD4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3Zp
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJj
ZWNvZGUtcHJvdmlkZXIuaHRtbAppbmRleCA5ZDkyN2Y2MzVlZjI4ZTU1ODVlNjhhZThiMjA0NjAy
YTRlNWQ0YTY5Li4zYTNjMWExM2Y1NWMyNDdmMTNiOGY0YTQ5OTYzYWM0MjZjOTdmNmM3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNv
ZGUtcHJvdmlkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0
d29yay11aXNvdXJjZWNvZGUtcHJvdmlkZXIuaHRtbApAQCAtNyw3ICs3LDcgQEAKIGZ1bmN0aW9u
IHRlc3QoKQogewogICAgIHZhciBtb2NrQ29udGVudHNNYXAgPSB7fTsKLSAgICB2YXIgbGFzdFJl
c291Y2VJZCA9IDE7CisgICAgdmFyIGxhc3RSZXNvdXJjZUlkID0gMDsKIAogICAgIE5ldHdvcmtB
Z2VudC5nZXRSZXNwb25zZUJvZHkgPSBmdW5jdGlvbihyZXF1ZXN0SWQsIGNhbGxiYWNrKQogICAg
IHsKQEAgLTE5LDEwICsxOSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgY2FsbGJhY2so
dW5kZWZpbmVkLCBtb2NrQ29udGVudHNNYXBbdXJsXSwgZmFsc2UpOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCB3aXRoUGVuZGluZ1JlcXVlc3QsIGNvbnRl
bnQpCisgICAgZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VNb2NrKHR5cGUsIGNvbnRlbnQpCiAgICAg
ewogICAgICAgICB2YXIgZG9jdW1lbnRVUkwgPSAiaHR0cDovL2Zha2UudXJsIjsKLSAgICAgICAg
dmFyIHJlc291cmNlSWQgPSArK2xhc3RSZXNvdWNlSWQgKyAiIjsKKyAgICAgICAgdmFyIHJlc291
cmNlSWQgPSArK2xhc3RSZXNvdXJjZUlkICsgIiI7CiAgICAgICAgIHZhciB1cmwgPSBkb2N1bWVu
dFVSTCArICIvIiArIHJlc291cmNlSWQ7CiAgICAgICAgIHZhciBmcmFtZUlkID0gImZyYW1lLWlk
IjsKICAgICAgICAgdmFyIGxvYWRlcklkID0gImxvYWRlci1pZCI7CkBAIC0zOSwxMyArMzksNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHdpdGhQZW5kaW5nUmVxdWVzdCkgewotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBu
ZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0KHJlc291cmNlSWQsIHVybCwgImh0dHA6Ly9m
YWtlLnVybCIsIGZyYW1lSWQsIGxvYWRlcklkKTsKLSAgICAgICAgICAgIHJlcXVlc3QudHlwZSA9
IHR5cGU7Ci0gICAgICAgICAgICByZXF1ZXN0Lm1pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgICAg
ICAgICBtb2NrQ29udGVudHNNYXBbcmVzb3VyY2VJZF0gPSBjb250ZW50OwotICAgICAgICB9Ci0g
ICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UocmVxdWVzdCwg
dXJsLCBkb2N1bWVudFVSTCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIG1pbWVUeXBlKTsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShudWxsLCB1cmws
IGRvY3VtZW50VVJMLCBmcmFtZUlkLCBsb2FkZXJJZCwgdHlwZSwgbWltZVR5cGUpOwogICAgICAg
ICBtb2NrQ29udGVudHNNYXBbdXJsXSA9IGNvbnRlbnQ7CiAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVRyZWVNb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgcmVzb3VyY2UpOwogCkBA
IC02Nyw0NiArNjEsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgSW5zcGVjdG9y
VGVzdC5ydW5UZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJj
ZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbmV0
d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3Zp
ZGVyKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyBy
ZXF1ZXN0LiIpOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2Nr
KFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50LCB0cnVlLCAiPGRvY3VtZW50IHJl
cXVlc3QgY29udGVudD4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29y
a3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVlc3QuIik7Ci0gICAg
ICAgICAgICBmaW5pc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9u
IHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQogICAgICAgICBmdW5jdGlvbiB0ZXN0RG9j
dW1lbnRSZXNvdXJjZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2Uu
Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNv
ZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVu
dCwgZmFsc2UsICI8ZG9jdW1lbnQgcmVzb3VyY2UgY29udGVudD4iKTsKLQotICAgICAgICAgICAg
ZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUsIG5leHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
IHRlc3RTY3JpcHRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgdHJ1
ZSwgIjxzY3JpcHQgcmVxdWVzdCBjb250ZW50PiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFk
ZGVkKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaW5pc2hpbmcgcmVx
dWVzdC4iKTsKLSAgICAgICAgICAgIGZpbmlzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAg
ICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUeXBlcy5Eb2N1bWVudCwgIjxkb2N1bWVudCByZXNvdXJjZSBjb250ZW50PiIpOwogCiAgICAg
ICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAg
ICAgICB7CkBAIC0xMTksNyArNzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZh
ciBuZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgPSBjcmVhdGVOZXR3b3JrVUlTb3VyY2VDb2Rl
UHJvdmlkZXIoKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGlu
ZyByZXNvdXJjZS4iKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFj
ZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOwotICAgICAgICAgICAg
dmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5
cGVzLlNjcmlwdCwgZmFsc2UsICI8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZU1vY2soV2ViSW5zcGVjdG9yLnJlc291
cmNlVHlwZXMuU2NyaXB0LCAiPHNjcmlwdCByZXNvdXJjZSBjb250ZW50PiIpOwogCiAgICAgICAg
ICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAg
ICB7CkBAIC0xMjcsMzYgKzg3LDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQog
ICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTdHlsZXNoZWV0UmVzb3VyY2VXaXRo
UGVuZGluZ1JlcXVlc3QobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVuZFRlc3RD
YWxsc0xlZnQgPSAyOwotICAgICAgICAgICAgdmFyIG5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ciA9IGNyZWF0ZU5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlcigpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudCh1aVNvdXJj
ZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRp
bmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
TW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0LCB0cnVlLCAiPHN0eWxl
c2hlZXQgcmVxdWVzdCBjb250ZW50PiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkZpbmlzaGluZyByZXF1ZXN0LiIpOwotICAgICAgICAgICAgZmluaXNoUmVzb3VyY2Uo
cmVzb3VyY2UpOwotICAgICAgICAgICAgZW5kVGVzdCgpOwotCi0gICAgICAgICAgICBmdW5jdGlv
biB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgZW5k
VGVzdCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGVuZFRlc3QoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgtLWVuZFRlc3RDYWxsc0xlZnQpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0KICAgICAgICAgZnVuY3Rpb24gdGVzdFN0eWxlc2hlZXRS
ZXNvdXJjZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNl
Q29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2UuIik7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRl
ZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNy
ZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0LCBm
YWxzZSwgIjxzdHlsZXNoZWV0IHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIg
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZU1vY2soV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
U3R5bGVzaGVldCwgIjxzdHlsZXNoZWV0IHJlc291cmNlIGNvbnRlbnQ+Iik7CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25p
cHBldC1tb2RlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1z
bmlwcGV0LW1vZGVsLmh0bWwKaW5kZXggNzllOWRkMjEzNDhhNjg5ODliMDc4ZmM2NDAyNWU1NjZm
OTBkODMzMi4uZWJkODk5NmE0MTU2MmM5M2JkNjhkMWMxOTEwNDE2ZTA0OGIyM2EzZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVs
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0
LW1vZGVsLmh0bWwKQEAgLTE1LDYgKzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgV2ViSW5z
cGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0ID0ge307CiAgICAgV2Vi
SW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2YXIgd29ya3NwYWNlID0gbmV3IFdl
Ykluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICB2YXIgd29ya3NwYWNlQ29udHJvbGxlciA9IG5l
dyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlQ29udHJvbGxlcih3b3Jrc3BhY2UpOwogICAgIFdlYklu
c3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBw
ZXRNb2RlbCh3b3Jrc3BhY2UpOwogCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RT
dWl0ZShbCkBAIC0yNywxMSArMjgsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLnJlbmFtZVNjcmlwdFNuaXBwZXQoc25pcHBl
dEphdmFTY3JpcHRTb3VyY2UsIHNuaXBwZXROYW1lKTsKICAgICAgICAgICAgIHdvcmtzcGFjZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMu
VUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29kZUFkZGVkKTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJSZXNldHRpbmcgc25pcHBldCBzY3JpcHQgbWFwcGluZy4iKTsK
LSAgICAgICAgICAgIHdvcmtzcGFjZS5wcm9qZWN0KCkucmVzZXQoKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghd29ya3NwYWNlLnVpU291cmNlQ29kZXMoKS5sZW5ndGgs
ICJTbmlwcGV0cyBzY3JpcHQgbWFwcGluZyBzaG91bGQgbm90IGhhdmUgYW55IHVpU291cmNlQ29k
ZXMgYWZ0ZXIgcmVzZXQuIik7CisgICAgICAgICAgICB3b3Jrc3BhY2VDb250cm9sbGVyLl9tYWlu
RnJhbWVOYXZpZ2F0ZWQoKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRk
ZWQoZXZlbnQpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoMSwgd29ya3NwYWNlLnVpU291cmNlQ29kZXMoKS5sZW5ndGgsICJPbmx5IG9u
ZSBzbmlwcGV0IHVpU291cmNlQ29kZSBzaG91bGQgYmUgcHJlc2VudCBhZnRlciBwcm9qZWN0IG5h
dmlnYXRpb24uIik7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IGV2ZW50LmRh
dGE7CiAgICAgICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZS51cmwuaW5kZXhPZihzbmlwcGV0
TmFtZSkgPT09IC0xKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAppbmRleCBlNWJjYzM4
ZDZmNjdiNDY2OTBkN2Y5ZDZjOTNhOTQyNzQ5YWQyOWIyLi42OWY0NDFiMTVjZjU1ODhhNjdlMjAz
NzUyMWFhNGE0ZGNlMmVmNzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTY0LDYgKzY0LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZXNldChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICB2YXIgd29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICAgICAg
ICAgIHZhciB3b3Jrc3BhY2VDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VD
b250cm9sbGVyKHdvcmtzcGFjZSk7CiAgICAgICAgICAgICB2YXIgcGFuZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbCh3b3Jrc3BhY2UpOwogICAgICAgICAgICAgcGFuZWwuc2hvdygp
OwogCkBAIC03Nyw3ICs3OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogCi0gICAg
ICAgICAgICB3b3Jrc3BhY2UucHJvamVjdCgpLnJlc2V0KCk7CisgICAgICAgICAgICB3b3Jrc3Bh
Y2VDb250cm9sbGVyLl9tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICAgICAgICAgIHdvcmtzcGFj
ZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUJhcik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwog
Cg==
</data>
<flag name="review"
          id="173538"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>