<?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>89868</bug_id>
          
          <creation_ts>2012-06-25 04:57:33 -0700</creation_ts>
          <short_desc>Web Inspector: [Extensions API] Resource manipulations should be based on UISourceCode thus extending Sources Panel.</short_desc>
          <delta_ts>2012-07-04 01:49:13 -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>
          <dependson>89891</dependson>
    
    <dependson>90530</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</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>656494</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-25 04:57:33 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658511</commentid>
    <comment_count>1</comment_count>
      <attachid>149717</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-27 03:35:49 -0700</bug_when>
    <thetext>Created attachment 149717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660471</commentid>
    <comment_count>2</comment_count>
      <attachid>149717</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-29 07:43:16 -0700</bug_when>
    <thetext>Comment on attachment 149717
Patch

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

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:486
&gt; +        var contentProvider = WebInspector.panels.scripts.uiSourceCodeForURL(url) || WebInspector.resourceForURL(url);

This is not nice. Could we move composite provider into the WebInspector and pass it into this class?

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:509
&gt; +            else

We don&apos;t use else after return branches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661419</commentid>
    <comment_count>3</comment_count>
      <attachid>149717</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-07-02 05:43:20 -0700</bug_when>
    <thetext>Comment on attachment 149717
Patch

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

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:510
&gt; +                return this._status.E_FAILED(&quot;Resource is not editable&quot;)

I think E_NOTSUPPORTED() is more appropriate here.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:625
&gt; +        var contentProvider = resource.uiSourceCode() || resource;

Can we extract this to something like ExtensionServer.contentProviderForURL()?

&gt; Source/WebCore/inspector/front-end/StylesPanel.js:116
&gt; +    _callOrSetTimeout: function(func)

func =&gt; callback? Also, please annotate.

&gt; LayoutTests/http/tests/inspector/extensions-test.js:37
&gt; +    WebInspector.StyleSource.updateTimeout = oldStyleSheetUpdateTimeout;

Why would we need this for all extension tests?

&gt; LayoutTests/http/tests/inspector/extensions-test.js:54
&gt; +    // Extensions tests override WebInspector.StyleSource.updateTimeout because otherwise extensions don&apos;t have any control over applying changes to domain specific bindings.
&gt; +    var oldStyleSheetUpdateTimeout = WebInspector.StyleSource.updateTimeout;
&gt; +    WebInspector.StyleSource.updateTimeout = -1;

As above, this should be done in tests that actually update resource content.

&gt; LayoutTests/inspector/extensions/extensions-resources.html:36
&gt; +            const resourceURLsWhiteList = [&quot;abe.png&quot;, &quot;audits-style1.css&quot;, &quot;extensions-resources.html&quot;, &quot;extensions-test.js&quot;, &quot;inspector-test.js&quot;, &quot;test-script.js&quot;];

This looks a bit fishy -- can you please check we don&apos;t hit the case you&apos;re working around in test in real life, e.g. on reload or when we do not change renderer during navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662363</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-03 10:51:49 -0700</bug_when>
    <thetext>Committed r121792: &lt;http://trac.webkit.org/changeset/121792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149717</attachid>
            <date>2012-06-27 03:35:49 -0700</date>
            <delta_ts>2012-07-02 05:43:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89868-20120627143548.patch</filename>
            <type>text/plain</type>
            <size>25665</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk2ZmQxZmQ0NDNiMDcw
Nzk2NDM2NTg1ZDhjNzRlMmIwZmUzNmZmMi4uMDFhZDIwMmExNzU2ZjNjOGJjMzMwMmFlODNlNjU4
ZjQ1M2EyYTZkZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTI3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtFeHRlbnNpb25zIEFQSV0gUmVzb3VyY2UgbWFuaXB1bGF0aW9ucyBzaG91bGQgYmUgYmFz
ZWQgb24gVUlTb3VyY2VDb2RlIHRodXMgZXh0ZW5kaW5nIFNvdXJjZXMgUGFuZWwuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuc2lvbnMgQVBJIGlz
IG5vdyBiYXNlZCBvbiBib3RoIFNjcmlwdHNQYW5lbCBhY3RpbmcgYXMgYSBVSVNvdXJjZUNvZGVQ
cm92aWRlciBhbmQgUmVzb3VyY2VUcmVlTW9kZWwuCisgICAgICAgIEV4dGVuc2lvbnMgQVBJIHJl
c291cmNlIGNvdWxkIGJlIGZvciBhbnkgY29udGVudCBwcm92aWRlciBub3cuCisgICAgICAgIEV4
dGVuc2lvbnMgQVBJIHJlc291cmNlLnNldENvbnRlbnQgaW1wbGVtZW50YXRpb24gaXMgbm93IGJh
c2VkIG9uIFVJU291cmNlQ29kZSBlZGl0aW5nIG1ldGhvZHMuCisgICAgICAgIERyaXZlLWJ5IFN0
eWxlU291cmNlIGluc3JlbWVudGFsIGVkaXRpbmcgdGltZW91dCBmaXguCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9oYW5kbGVPcGVuVVJMKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9tYWtlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UGFn
ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3Rv
dHlwZS5fZ2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TZXRSZXNvdXJjZUNvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlm
eVJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUuX25vdGlmeVJlc291cmNlQ29udGVudENvbW1pdHRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUudWlTb3VyY2VDb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS51aVNvdXJjZUNvZGVGb3JVUkwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFVJU291cmNlQ29kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuY2FuU2hvd0FuY2hvckxvY2F0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlU291cmNlLnByb3RvdHlwZS53b3JraW5nQ29weUNvbW1p
dHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVTb3VyY2UucHJvdG90eXBlLndvcmtp
bmdDb3B5Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVTb3VyY2UucHJvdG90
eXBlLl9jYWxsT3JTZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVNvdXJj
ZS5wcm90b3R5cGUuX2NvbW1pdEluY3JlbWVudGFsRWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVTb3VyY2UucHJvdG90eXBlLl9jbGVhckluY3JlbWVudGFsVXBkYXRlVGltZXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUud29ya2luZ0NvcHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUuc2V0V29ya2luZ0Nv
cHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUuaXNEaXJ0
eSk6CisKIDIwMTItMDYtMjYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVTb3VyY2Ugc2hvdWxkIHNldCBjb250ZW50
IHVzaW5nIENTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcgZGlyZWN0bHkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmlu
ZGV4IGQ1NWMyNmYyZWQzNzViNjU5MDBlYWY5ZTg1Y2MwM2NlMjE3OTRiZjUuLjcwNGNmYjM4ZmI2
OGE0MTQxMjc0ZmZiNTE3ODkxZDQ0MDA4ZDFkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0yOTAsMTUgKzI5
MCwxNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAg
IF9oYW5kbGVPcGVuVVJMOiBmdW5jdGlvbihwb3J0LCBkZXRhaWxzKQogICAgIHsKLSAgICAgICAg
dmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKGRldGFpbHMudXJsKTsK
LSAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgdmFyIHVybCA9IC8qKiBAdHlwZSB7U3Ry
aW5nfSAqLyBkZXRhaWxzLnVybDsKKyAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IFdlYklu
c3BlY3Rvci5wYW5lbHMuc2NyaXB0cy51aVNvdXJjZUNvZGVGb3JVUkwodXJsKSB8fCBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAgICAgaWYgKCFjb250ZW50UHJvdmlkZXIp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKICAgICAgICAgdmFyIGxp
bmVOdW1iZXIgPSBkZXRhaWxzLmxpbmVOdW1iZXI7CiAgICAgICAgIGlmICh0eXBlb2YgbGluZU51
bWJlciA9PT0gIm51bWJlciIpCiAgICAgICAgICAgICBsaW5lTnVtYmVyICs9IDE7CiAgICAgICAg
IHBvcnQucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgY29tbWFuZDogIm9wZW4tcmVzb3VyY2Ui
LAotICAgICAgICAgICAgcmVzb3VyY2U6IHRoaXMuX21ha2VSZXNvdXJjZShyZXNvdXJjZSksCisg
ICAgICAgICAgICByZXNvdXJjZTogdGhpcy5fbWFrZVJlc291cmNlKGNvbnRlbnRQcm92aWRlciks
CiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyCiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTQyNCwyNiArNDI2LDM1IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gaGFyTG9nOwogICAgIH0sCiAK
LSAgICBfbWFrZVJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9IGNvbnRlbnRQcm92aWRlcgorICAg
ICAqLworICAgIF9tYWtlUmVzb3VyY2U6IGZ1bmN0aW9uKGNvbnRlbnRQcm92aWRlcikKICAgICB7
CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB1cmw6IHJlc291cmNlLnVybCwKLSAgICAg
ICAgICAgIHR5cGU6IHJlc291cmNlLnR5cGUubmFtZSgpCisgICAgICAgICAgICB1cmw6IGNvbnRl
bnRQcm92aWRlci5jb250ZW50VVJMKCksCisgICAgICAgICAgICB0eXBlOiBjb250ZW50UHJvdmlk
ZXIuY29udGVudFR5cGUoKS5uYW1lKCkKICAgICAgICAgfTsKICAgICB9LAogCiAgICAgX29uR2V0
UGFnZVJlc291cmNlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlcyA9
IFtdOwotICAgICAgICBmdW5jdGlvbiBwdXNoUmVzb3VyY2VEYXRhKHJlc291cmNlKQorICAgICAg
ICB2YXIgcmVzb3VyY2VzID0ge307CisKKyAgICAgICAgZnVuY3Rpb24gcHVzaFJlc291cmNlRGF0
YShjb250ZW50UHJvdmlkZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc291cmNlcy5wdXNo
KHRoaXMuX21ha2VSZXNvdXJjZShyZXNvdXJjZSkpOworICAgICAgICAgICAgaWYgKCFyZXNvdXJj
ZXNbY29udGVudFByb3ZpZGVyLmNvbnRlbnRVUkwoKV0pCisgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VzW2NvbnRlbnRQcm92aWRlci5jb250ZW50VVJMKCldID0gdGhpcy5fbWFrZVJlc291cmNlKGNv
bnRlbnRQcm92aWRlcik7CiAgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLnVpU291cmNlQ29kZXMoKS5mb3JFYWNoKHB1c2hSZXNvdXJjZURhdGEuYmluZCh0aGlz
KSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJj
ZXMocHVzaFJlc291cmNlRGF0YS5iaW5kKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
czsKKyAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzb3VyY2VzKTsKICAgICB9LAogCi0g
ICAgX2dldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIG1lc3NhZ2UsIHBvcnQp
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfSBj
b250ZW50UHJvdmlkZXIKKyAgICAgKi8KKyAgICBfZ2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlv
bihjb250ZW50UHJvdmlkZXIsIG1lc3NhZ2UsIHBvcnQpCiAgICAgewogICAgICAgICAvKioKICAg
ICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBjb250ZW50CkBAIC00NTgsNyArNDY5LDcgQEAgV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hDYWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJZCwgcG9y
dCwgcmVzcG9uc2UpOwogICAgICAgICB9Ci0gICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50
KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGVudFByb3ZpZGVy
LnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKICAgICB9LAog
CiAgICAgX29uR2V0UmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBvcnQpCkBAIC00
NzEsMTAgKzQ4MiwxMSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9
IHsKIAogICAgIF9vbkdldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkK
ICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5yZXNvdXJjZUZvclVSTChtZXNzYWdlLnVybCk7Ci0gICAgICAgIGlmICghcmVzb3VyY2Up
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS51cmwp
OwotICAgICAgICB0aGlzLl9nZXRSZXNvdXJjZUNvbnRlbnQocmVzb3VyY2UudWlTb3VyY2VDb2Rl
KCkgfHwgcmVzb3VyY2UsIG1lc3NhZ2UsIHBvcnQpOworICAgICAgICB2YXIgdXJsID0gLyoqIEB0
eXBlIHtTdHJpbmd9ICovIG1lc3NhZ2UudXJsOworICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnVpU291cmNlQ29kZUZvclVSTCh1cmwpIHx8
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgICAgICBpZiAoIWNvbnRlbnRQ
cm92aWRlcikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORCh1cmwp
OworICAgICAgICB0aGlzLl9nZXRSZXNvdXJjZUNvbnRlbnQoY29udGVudFByb3ZpZGVyLCBtZXNz
YWdlLCBwb3J0KTsKICAgICB9LAogCiAgICAgX29uU2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlv
bihtZXNzYWdlLCBwb3J0KQpAQCAtNDg3LDEwICs0OTksMjEgQEAgV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBlcnJv
ciA/IHRoaXMuX3N0YXR1cy5FX0ZBSUxFRChlcnJvcikgOiB0aGlzLl9zdGF0dXMuT0soKTsKICAg
ICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQs
IHJlc3BvbnNlKTsKICAgICAgICAgfQotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobWVzc2FnZS51cmwpOwotICAgICAg
ICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZP
VU5EKG1lc3NhZ2UudXJsKTsKLSAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChtZXNzYWdlLmNv
bnRlbnQsIG1lc3NhZ2UuY29tbWl0LCBjYWxsYmFja1dyYXBwZXIuYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgdmFyIHVybCA9IC8qKiBAdHlwZSB7U3RyaW5nfSAqLyBtZXNzYWdlLnVybDsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy51aVNvdXJj
ZUNvZGVGb3JVUkwodXJsKTsKKyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpIHsKKyAgICAgICAg
ICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJj
ZUZvclVSTCh1cmwpOworICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQodXJsKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRkFJTEVEKCJSZXNvdXJjZSBp
cyBub3QgZWRpdGFibGUiKQorICAgICAgICB9CisgICAgICAgIHVpU291cmNlQ29kZS5zZXRXb3Jr
aW5nQ29weShtZXNzYWdlLmNvbnRlbnQpOworICAgICAgICBpZiAobWVzc2FnZS5jb21taXQpCisg
ICAgICAgICAgICB1aVNvdXJjZUNvZGUuY29tbWl0V29ya2luZ0NvcHkoY2FsbGJhY2tXcmFwcGVy
LmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFja1dyYXBwZXIu
Y2FsbCh0aGlzKTsKICAgICB9LAogCiAgICAgX3JlcXVlc3RJZDogZnVuY3Rpb24ocmVxdWVzdCkK
QEAgLTU1MCw4ICs1NzMsOCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcmVnaXN0ZXJBdXRvc3Vic2NyaXB0aW9uSGFuZGxlcihXZWJJ
bnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5OZXR3b3JrUmVxdWVzdEZpbmlzaGVkLAogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIuRXZlbnRUeXBlcy5SZXF1ZXN0RmluaXNoZWQsIHRoaXMuX25vdGlmeVJlcXVlc3RG
aW5pc2hlZCk7CiAgICAgICAgIHRoaXMuX3JlZ2lzdGVyQXV0b3N1YnNjcmlwdGlvbkhhbmRsZXIo
V2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5FdmVudHMuUmVzb3VyY2VBZGRlZCwKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbCwKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQsCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMsCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLAogICAgICAg
ICAgICAgdGhpcy5fbm90aWZ5UmVzb3VyY2VBZGRlZCk7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzKSB7CiAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlckF1dG9zdWJz
Y3JpcHRpb25IYW5kbGVyKFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuRXZlbnRzLkVsZW1lbnRz
UGFuZWxPYmplY3RTZWxlY3RlZCwKQEAgLTU5MiwxMyArNjE1LDE1IEBAIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX25vdGlmeVJlc291cmNlQWRkZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQuZGF0
YTsKLSAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
QVBJLkV2ZW50cy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9tYWtlUmVzb3VyY2UocmVzb3VyY2UpKTsK
KyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihX
ZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9tYWtl
UmVzb3VyY2UodWlTb3VyY2VDb2RlKSk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlSZXNvdXJjZUNv
bnRlbnRDb21taXR0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fcG9z
dE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNvdXJjZUNv
bnRlbnRDb21taXR0ZWQsIHRoaXMuX21ha2VSZXNvdXJjZShldmVudC5kYXRhLnJlc291cmNlKSwg
ZXZlbnQuZGF0YS5jb250ZW50KTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgIHZh
ciBjb250ZW50UHJvdmlkZXIgPSByZXNvdXJjZS51aVNvdXJjZUNvZGUoKSB8fCByZXNvdXJjZTsK
KyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJ
LkV2ZW50cy5SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQsIHRoaXMuX21ha2VSZXNvdXJjZShjb250
ZW50UHJvdmlkZXIpLCBldmVudC5kYXRhLmNvbnRlbnQpOwogICAgIH0sCiAKICAgICBfbm90aWZ5
UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZS5qcwppbmRleCA2NDg3Y2Ji
NDAzNDNlNDU0NTMwMTEyZjEzMWRjZGQ5OGIyNTg4YjEwLi45YmNmMTdkNGJlMTkzM2QzMTg5ZjMx
NDdkYzY2NTdiNmU0NGQxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzCkBAIC04Niw2ICs4Niw3IEBAIFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0U291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZS1y
ZXF1ZXN0IGNvbnRlbnQKICAgICAgICAgdGhpcy5fY29udGVudExvYWRlZCA9IGZhbHNlOworICAg
ICAgICB0aGlzLl9jb250ZW50ID0gZmFsc2U7CiAgICAgICAgIFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUucHJvdG90eXBlLnJlcXVlc3RDb250ZW50LmNhbGwodGhpcywgZGlkR2V0Q29udGVudC5i
aW5kKHRoaXMpKTsKICAgCiAgICAgICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCAyZDY0ZTIwZjk3Y2E1MmZmMTgy
MzM2ZjhkNzliYTEyODY5NzVjNzQzLi5iMjVlZmZkZGFkOTc3YmFmZDFiMDg4ODNjOTUwMTM5NDMy
YWFkODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMjgsNiArMjgsNyBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1w
bGVtZW50cyB7V2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lckRlbGVnYXRlfQogICog
QGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Db250ZXh0TWVudS5Qcm92aWRlcn0KKyAqIEBpbXBs
ZW1lbnRzIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXJ9CiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLlBhbmVsfQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29tcG9zaXRlVUlT
b3VyY2VDb2RlUHJvdmlkZXI9fSB1aVNvdXJjZUNvZGVQcm92aWRlckZvclRlc3QKICAqLwpAQCAt
NDQsNiArNDUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24odWlTb3Vy
Y2VDb2RlUHJvdmlkZXJGb3JUZXN0KQogICAgIHZhciBwcm92aWRlcnMgPSBzY3JpcHRNYXBwaW5n
LnVpU291cmNlQ29kZVByb3ZpZGVycygpOwogICAgIHByb3ZpZGVycyA9IHByb3ZpZGVycy5jb25j
YXQobmV3IFdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlcigpKTsKICAgICB0
aGlzLl91aVNvdXJjZUNvZGVQcm92aWRlciA9IHVpU291cmNlQ29kZVByb3ZpZGVyRm9yVGVzdCB8
fCBuZXcgV2ViSW5zcGVjdG9yLkNvbXBvc2l0ZVVJU291cmNlQ29kZVByb3ZpZGVyKHByb3ZpZGVy
cyk7CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlcyA9IFtdOwogCiAgICAgbmV3IFdlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlcih0aGlzLl91aVNvdXJjZUNvZGVQcm92
aWRlcik7CiAgICAgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZyh0aGlz
Ll91aVNvdXJjZUNvZGVQcm92aWRlcik7CkBAIC0yMTEsNiArMjEzLDI4IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcGF1c2Vk
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZT59CisgICAgICovCisgICAgdWlTb3VyY2VDb2RlczogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZXM7CisgICAgfSwKKyAgICAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsCisgICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNvZGVGb3JVUkw6
IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gdGhpcy5f
dWlTb3VyY2VDb2RlUHJvdmlkZXIudWlTb3VyY2VDb2RlcygpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHVpU291cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh1
aVNvdXJjZUNvZGVzW2ldLnVybCA9PT0gdXJsKQorICAgICAgICAgICAgICAgIHJldHVybiB1aVNv
dXJjZUNvZGVzW2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisg
ICAgCiAgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5QYW5lbC5wcm90b3R5cGUud2FzU2hvd24uY2FsbCh0aGlzKTsKQEAgLTI2NCw2ICsyODgsOCBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHRoaXMuX25hdmlnYXRvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAg
dGhpcy5fZWRpdG9yQ29udGFpbmVyLnVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSk7Cisg
ICAgICAgIHRoaXMuX3VpU291cmNlQ29kZXMucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJv
dmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAK
ICAgICBfdWlTb3VyY2VDb2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0zNjMsNiArMzg5
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2RlYnVnZ2VyUmVzdW1lZCgpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50VUlT
b3VyY2VDb2RlOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVzID0gW107CiAgICAgICAgIHRo
aXMuX25hdmlnYXRvci5yZXNldCgpOwogICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIucmVz
ZXQoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlU2NyaXB0Vmlld1N0YXR1c0Jhckl0ZW1zKCk7CkBA
IC0zOTYsMTIgKzQyMywxMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlckVuYWJsZWQgJiYgYW5jaG9yLnVp
U291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlcyA9IHRoaXMuX3VpU291cmNlQ29kZVByb3ZpZGVyLnVpU291cmNlQ29kZXMoKTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAodWlTb3VyY2VDb2Rlc1tpXS51cmwgPT09IGFuY2hvci5ocmVmKSB7Ci0g
ICAgICAgICAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZXNbaV07Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSB0aGlzLnVpU291cmNlQ29kZUZvclVSTChhbmNob3IuaHJlZik7CisgICAg
ICAgIGlmICh1aVNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIGFuY2hvci51aVNvdXJjZUNvZGUg
PSB1aVNvdXJjZUNvZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1BhbmVsLmpzCmluZGV4IDVhN2FkNGE4YWZjOTk1NDhhOTkzODY1
YzMzMDNlNjVmMjcxMzBjMmQuLmJkZjM5M2U2MTI4MjhiNDc3NDFlMDI4MmFhZjc3YTBjYzQzZmQy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNQ
YW5lbC5qcwpAQCAtOTcsMjMgKzk3LDQ2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZSA9IGZ1
bmN0aW9uKHJlc291cmNlKQogICAgIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUuY2FsbCh0aGlz
LCByZXNvdXJjZS51cmwsIHJlc291cmNlLCByZXNvdXJjZSk7CiB9CiAKK1dlYkluc3BlY3Rvci5T
dHlsZVNvdXJjZS51cGRhdGVUaW1lb3V0ID0gMjAwOworCiBXZWJJbnNwZWN0b3IuU3R5bGVTb3Vy
Y2UucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmlu
Zyl9IGNhbGxiYWNrCiAgICAgICovCiAgICAgd29ya2luZ0NvcHlDb21taXR0ZWQ6IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIHsgIAotICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwucmVzb3Vy
Y2VCaW5kaW5nKCkuc2V0U3R5bGVDb250ZW50KHRoaXMsIHRoaXMud29ya2luZ0NvcHkoKSwgdHJ1
ZSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9jb21taXRJbmNyZW1lbnRhbEVkaXQodHJ1ZSwg
Y2FsbGJhY2spOwogICAgIH0sCiAKICAgICB3b3JraW5nQ29weUNoYW5nZWQ6IGZ1bmN0aW9uKCkK
LSAgICB7ICAKLSAgICAgICAgZnVuY3Rpb24gY29tbWl0SW5jcmVtZW50YWxFZGl0KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlc291cmNlQmluZGluZygp
LnNldFN0eWxlQ29udGVudCh0aGlzLCB0aGlzLndvcmtpbmdDb3B5KCksIGZhbHNlLCBmdW5jdGlv
bigpIHt9KTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCB1cGRhdGVUaW1lb3V0ID0gMjAwOwot
ICAgICAgICB0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVyID0gc2V0VGltZW91dChjb21taXRJ
bmNyZW1lbnRhbEVkaXQuYmluZCh0aGlzKSwgdXBkYXRlVGltZW91dCk7CisgICAgeworICAgICAg
ICB0aGlzLl9jYWxsT3JTZXRUaW1lb3V0KHRoaXMuX2NvbW1pdEluY3JlbWVudGFsRWRpdC5iaW5k
KHRoaXMsIGZhbHNlLCBmdW5jdGlvbigpIHt9KSk7CisgICAgfSwKKworICAgIF9jYWxsT3JTZXRU
aW1lb3V0OiBmdW5jdGlvbihmdW5jKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEV4dGVuc2lv
bnMgdGVzdHMgb3ZlcnJpZGUgdXBkYXRlVGltZW91dCBiZWNhdXNlIGV4dGVuc2lvbnMgZG9uJ3Qg
aGF2ZSBhbnkgY29udHJvbCBvdmVyIGFwcGx5aW5nIGNoYW5nZXMgdG8gZG9tYWluIHNwZWNpZmlj
IGJpbmRpbmdzLiAgIAorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlN0eWxlU291cmNlLnVwZGF0
ZVRpbWVvdXQgPj0gMCkKKyAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudGFsVXBkYXRlVGltZXIg
PSBzZXRUaW1lb3V0KGZ1bmMsIFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZS51cGRhdGVUaW1lb3V0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuYygpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1ham9yQ2hhbmdlCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/c3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBfY29tbWl0SW5jcmVtZW50YWxF
ZGl0OiBmdW5jdGlvbihtYWpvckNoYW5nZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlz
Ll9jbGVhckluY3JlbWVudGFsVXBkYXRlVGltZXIoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLnJlc291cmNlQmluZGluZygpLnNldFN0eWxlQ29udGVudCh0aGlzLCB0aGlzLndvcmtp
bmdDb3B5KCksIG1ham9yQ2hhbmdlLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIF9jbGVhcklu
Y3JlbWVudGFsVXBkYXRlVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVyKQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMu
X2luY3JlbWVudGFsVXBkYXRlVGltZXIpOworICAgICAgICBkZWxldGUgdGhpcy5faW5jcmVtZW50
YWxVcGRhdGVUaW1lcjsKICAgICB9CiB9CiAKQEAgLTE4MywxMyArMjA2LDYgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5f
aXNDb21taXR0aW5nRWRpdGluZzsKICAgICB9LAogCi0gICAgX2NsZWFySW5jcmVtZW50YWxVcGRh
dGVUaW1lcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2luY3JlbWVudGFs
VXBkYXRlVGltZXIpCi0gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faW5jcmVtZW50YWxV
cGRhdGVUaW1lcik7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVy
OwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0g
ZXZlbnQKICAgICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVUlTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9VSVNvdXJjZUNvZGUuanMKaW5kZXggNGMyYjNkYTI3MGUyYTdhMDlhM2NkOTIzOWFhY2VmYWE4
YTk5NDA0ZS4uY2UyZDMxNWRiMWY0MDIzNzJiOTE0Mzg3OTI2MDQzYjNiYTllYjg4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMK
QEAgLTEyNyw3ICsxMjcsNyBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAg
ewotICAgICAgICBpZiAodGhpcy5fY29udGVudExvYWRlZCkgeworICAgICAgICBpZiAodGhpcy5f
Y29udGVudCB8fCB0aGlzLl9jb250ZW50TG9hZGVkKSB7CiAgICAgICAgICAgICBjYWxsYmFjayh0
aGlzLl9jb250ZW50LCBmYWxzZSwgdGhpcy5fbWltZVR5cGUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDYgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgd29ya2luZ0NvcHk6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRMb2FkZWQpOwogICAgICAg
ICBpZiAodGhpcy5pc0RpcnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd29ya2luZ0Nv
cHk7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50OwpAQCAtMTgyLDcgKzE4MSw2IEBAIFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHNldFdv
cmtpbmdDb3B5OiBmdW5jdGlvbihuZXdXb3JraW5nQ29weSkKICAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRMb2FkZWQpOwogICAgICAgICB2YXIgb2xkV29ya2luZ0Nv
cHkgPSB0aGlzLl93b3JraW5nQ29weTsKICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnQgPT09IG5l
d1dvcmtpbmdDb3B5KQogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3dvcmtpbmdDb3B5OwpAQCAt
MjMwLDcgKzIyOCw3IEBAIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIGlzRGlydHk6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50TG9hZGVkICYmIHR5cGVvZiB0aGlzLl93b3JraW5nQ29weSAhPT0gInVuZGVm
aW5lZCIgJiYgdGhpcy5fd29ya2luZ0NvcHkgIT09IHRoaXMuX2NvbnRlbnQ7CisgICAgICAgIHJl
dHVybiB0eXBlb2YgdGhpcy5fd29ya2luZ0NvcHkgIT09ICJ1bmRlZmluZWQiICYmIHRoaXMuX3dv
cmtpbmdDb3B5ICE9PSB0aGlzLl9jb250ZW50OwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBl
OWQyNzY2MDExMjVlNTk5MmQwN2MzNmUxZDgyYzQ3ODI1NjdjZjE3Li5hYTAyOWU0OTdiZGQ3OTJk
Yzc2YWUwMjVkOWJmYTk1YWE4Nzc2NTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDYt
MjcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogW0V4dGVuc2lvbnMgQVBJXSBSZXNvdXJjZSBtYW5pcHVsYXRpb25zIHNob3Vs
ZCBiZSBiYXNlZCBvbiBVSVNvdXJjZUNvZGUgdGh1cyBleHRlbmRpbmcgU291cmNlcyBQYW5lbC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0V4
dGVuc2lvbnNUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRXh0ZW5zaW9uc1Rlc3QuY29tcGxl
dGVUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRXh0ZW5zaW9uc1Rlc3QuSW5zcGVjdG9yVGVz
dC5ydW5FeHRlbnNpb25UZXN0cyk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25z
L2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtaGlzdG9yeS5odG1sOgorCiAyMDEyLTA2LTI2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8
bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRl
ciByMTIwODQ1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0
ZW5zaW9ucy10ZXN0LmpzCmluZGV4IGM2NmM1Nzk3N2Y1MmU1ZDQ3NzI1MDJhNGJjNTk5ZDIxYjM1
NGE1MmMuLjE0N2I2ZmUxMGQ1MDljZTcyMzZjODdmNGU2YTgxMTc4OGVhODBjMGIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMK
QEAgLTExLDYgKzExLDcgQEAgZnVuY3Rpb24gZXh0ZW5zaW9uRnVuY3Rpb25zKCkKIAogdmFyIGlu
aXRpYWxpemVfRXh0ZW5zaW9uc1Rlc3QgPSBmdW5jdGlvbigpCiB7CisgICAgdmFyIG9sZFN0eWxl
U2hlZXRVcGRhdGVUaW1lb3V0OwogCiBJbnNwZWN0b3JUZXN0Ll9yZXBseVRvRXh0ZW5zaW9uID0g
ZnVuY3Rpb24ocG9ydCwgZGF0YSkKIHsKQEAgLTI3LDEwICsyOCwxNiBAQCBmdW5jdGlvbiBvbk1l
c3NhZ2UoZXZlbnQpCiAgICAgICAgIHZhciByZXN1bHQgPSBldmFsKGV2ZW50LmRhdGEuZXhwcmVz
c2lvbik7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmc6ICIgKyBldmVudC5kYXRhLmV4cHJlc3Npb24gKyAi
XG4iICsgKGUuc3RhY2sgfHwgZSkpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgICAgICBjb21wbGV0ZVRlc3QoKTsKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGNvbXBs
ZXRlVGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLlN0eWxlU291cmNlLnVwZGF0ZVRpbWVvdXQg
PSBvbGRTdHlsZVNoZWV0VXBkYXRlVGltZW91dDsKKyAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworfQorCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIEluc3BlY3Rv
clRlc3Quc2FmZVdyYXAob25NZXNzYWdlKSwgZmFsc2UpOwogCiBJbnNwZWN0b3JUZXN0LnNob3dQ
YW5lbCA9IGZ1bmN0aW9uKHBhbmVsSWQpCkBAIC00Miw2ICs0OSw5IEBAIEluc3BlY3RvclRlc3Qu
c2hvd1BhbmVsID0gZnVuY3Rpb24ocGFuZWxJZCkKIAogSW5zcGVjdG9yVGVzdC5ydW5FeHRlbnNp
b25UZXN0cyA9IGZ1bmN0aW9uKCkKIHsKKyAgICAvLyBFeHRlbnNpb25zIHRlc3RzIG92ZXJyaWRl
IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZS51cGRhdGVUaW1lb3V0IGJlY2F1c2Ugb3RoZXJ3aXNl
IGV4dGVuc2lvbnMgZG9uJ3QgaGF2ZSBhbnkgY29udHJvbCBvdmVyIGFwcGx5aW5nIGNoYW5nZXMg
dG8gZG9tYWluIHNwZWNpZmljIGJpbmRpbmdzLgorICAgIHZhciBvbGRTdHlsZVNoZWV0VXBkYXRl
VGltZW91dCA9IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZS51cGRhdGVUaW1lb3V0OworICAgIFdl
Ykluc3BlY3Rvci5TdHlsZVNvdXJjZS51cGRhdGVUaW1lb3V0ID0gLTE7CiAgICAgUnVudGltZUFn
ZW50LmV2YWx1YXRlKCJsb2NhdGlvbi5ocmVmIiwgImNvbnNvbGUiLCBmYWxzZSwgZnVuY3Rpb24o
ZXJyb3IsIHJlc3VsdCkgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
ZXh0ZW5zaW9uLW1haW4uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvZXh0ZW5zaW9uLW1haW4uanMKaW5kZXggOWUyZDY1ODc4MmNmZWYxNWZiZWFhNDY4MjJk
YWUyOTU1OTg4MzljYy4uZTg5YWYzOWYxNWJhOGY3ZjUxNzBmNTYzZWZmYTk2MzQ2YTFhNDA2MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2V4
dGVuc2lvbi1tYWluLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9leHRlbnNpb24tbWFpbi5qcwpAQCAtNjQsNyArNjQsNyBAQCBmdW5jdGlvbiBvbkVy
cm9yKGV2ZW50KQogewogICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsIG9u
RXJyb3IpOwogICAgIG91dHB1dCgiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGV4dGVuc2lvbiBjb250
ZXh0OiAiICsgZXZlbnQubWVzc2FnZSArICIgWyIgKyBldmVudC5maWxlbmFtZSArICI6IiArIGV2
ZW50LmxpbmVubyArICJdIik7Ci0gICAgZXZhbHVhdGVPbkZyb250ZW5kKCJJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOyIpOworICAgIGV2YWx1YXRlT25Gcm9udGVuZCgiY29tcGxldGVUZXN0
KCk7Iik7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIG9uRXJyb3IpOwpA
QCAtOTcsNyArOTcsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiBmdW5jdGlvbiBvblRlc3RzRG9u
ZSgpCiB7CiAgICAgb3V0cHV0KCJBbGwgdGVzdHMgZG9uZS4iKTsKLSAgICBldmFsdWF0ZU9uRnJv
bnRlbmQoIkluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Iik7CisgICAgZXZhbHVhdGVPbkZy
b250ZW5kKCJjb21wbGV0ZVRlc3QoKTsiKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCh0ZXN0LCBu
YW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5z
aW9ucy1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwKaW5kZXggYjg5Mjk0Y2E4NWZlMDg5OTA1YjZlOTUzNjM1
MjczNjI4NGU4ZjQzMy4uNzBkNzg0NjgzNWU0ODY0MjFmNTU3NDc0ZjE3NTJmZjhiMjFhZDczOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1y
ZXNvdXJjZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRl
bnNpb25zLXJlc291cmNlcy5odG1sCkBAIC0zMCwxMCArMzAsMjIgQEAgZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RHZXRBbGxSZXNvdXJjZXMobmV4dFRlc3QpCiB7CiAgICAgZnVuY3Rpb24gY2FsbGJh
Y2socmVzb3VyY2VzKQogICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZmlsdGVyKHJlc291cmNlKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBGb3Igc29tZSByZWFzb24gc2NyaXB0cyBmcm9tIHRl
c3RzIHByZXZpb3VzbHkgcnVuIGluIHRoZSBzYW1lIHRlc3Qgc2hlbGwgc29tZXRpbWVzIGFwcGVh
ciwgc28gd2UgbmVlZCB0byBmaWx0ZXIgdGhlbSBvdXQuCisgICAgICAgICAgICBjb25zdCByZXNv
dXJjZVVSTHNXaGl0ZUxpc3QgPSBbImFiZS5wbmciLCAiYXVkaXRzLXN0eWxlMS5jc3MiLCAiZXh0
ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbCIsICJleHRlbnNpb25zLXRlc3QuanMiLCAiaW5zcGVjdG9y
LXRlc3QuanMiLCAidGVzdC1zY3JpcHQuanMiXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVzb3VyY2VVUkxzV2hpdGVMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc291cmNlLnVybC5pbmRleE9mKHJlc291cmNlVVJMc1doaXRlTGlzdFtpXSkgIT09
IC0xKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBjb21w
YXJlUmVzb3VyY2VzKGEsIGIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0cmltVVJM
KGEudXJsKS5sb2NhbGVDb21wYXJlKHRyaW1VUkwoYi51cmwpKTsKICAgICAgICAgfQorICAgICAg
ICByZXNvdXJjZXMgPSByZXNvdXJjZXMuZmlsdGVyKGZpbHRlcik7CiAgICAgICAgIHJlc291cmNl
cy5zb3J0KGNvbXBhcmVSZXNvdXJjZXMpOwogICAgICAgICBvdXRwdXQoInBhZ2UgcmVzb3VyY2Vz
OiIpOwogICAgICAgICBkdW1wT2JqZWN0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3Vt
ZW50cyksIHsgdXJsOiAidXJsIiB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLWhpc3RvcnkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLWhpc3RvcnkuaHRtbAppbmRleCA1OWRjNWUzMjFjYjlmNTkxYWE0M2Y4YTlmZTVi
NWYxNzM4NzE4NjllLi5mOTc1OWZkZWM4ZTQ0NjI1NzNhYTFjN2Y5NmQxOWYzN2M5YTBjYjQ3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1oaXN0b3J5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtaGlzdG9yeS5odG1s
CkBAIC0xMCwzNSArMTAsMzUgQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFyIHBlbmRp
bmdDYWxsYmFja3MgPSBbXTsKICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyQ2FjaGVkUmVzb3Vy
Y2VzUHJvY2Vzc2VkKHJ1blRlc3RTdWl0ZSk7CiAKLSAgICB2YXIgc3R5bGVSZXNvdXJjZTsKLSAg
ICB2YXIgc3R5bGVTaGVldElkOworICAgIHZhciBzdHlsZVNvdXJjZTsKIAogICAgIGZ1bmN0aW9u
IHJ1blRlc3RTdWl0ZSgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0
ZShbCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0U2V0VXAobmV4dCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbiB2aXNpdFJlc291cmNlKHJlc291cmNlKQorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHZpc2l0VUlTb3VyY2VDb2Rlcyh1aVNvdXJjZUNvZGUpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmluZGV4
T2YoInN0eWxlcy1oaXN0b3J5LmNzcyIpID09PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHVpU291cmNlQ29kZS51cmwuaW5kZXhPZigic3R5bGVzLWhpc3RvcnkuY3NzIikgPT09IC0xKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBzdHls
ZVJlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlU291cmNlID0g
dWlTb3VyY2VDb2RlOwogICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JB
bGxSZXNvdXJjZXModmlzaXRSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLnVpU291cmNlQ29kZXMoKS5mb3JFYWNoKHZpc2l0VUlTb3VyY2VDb2Rl
cyk7CiAgICAgICAgICAgICB9LAogCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0U2V0UmVzb3Vy
Y2VDb250ZW50TWlub3IobmV4dCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHls
ZVJlc291cmNlLnNldENvbnRlbnQoImJvZHkge1xuICBtYXJnaW46IDE1cHg7XG4gIHBhZGRpbmc6
IDEwcHg7XG59IiwgZmFsc2UsIGR1bXBIaXN0b3J5KG5leHQpKTsKKyAgICAgICAgICAgICAgICBz
dHlsZVNvdXJjZS5zZXRXb3JraW5nQ29weSgiYm9keSB7XG4gIG1hcmdpbjogMTVweDtcbiAgcGFk
ZGluZzogMTBweDtcbn0iKTsKKyAgICAgICAgICAgICAgICBkdW1wSGlzdG9yeShuZXh0KSgpOwog
ICAgICAgICAgICAgfSwKIAogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFNldFJlc291cmNlQ29u
dGVudE1ham9yKG5leHQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3R5bGVSZXNv
dXJjZS5zZXRDb250ZW50KCJib2R5IHtcbiAgbWFyZ2luOiAyMHB4O1xuICBwYWRkaW5nOiAxMHB4
O1xufSIsIHRydWUsIGR1bXBIaXN0b3J5KG5leHQpKTsKKyAgICAgICAgICAgICAgICBzdHlsZVNv
dXJjZS5zZXRXb3JraW5nQ29weSgiYm9keSB7XG4gIG1hcmdpbjogMjBweDtcbiAgcGFkZGluZzog
MTBweDtcbn0iKTsKKyAgICAgICAgICAgICAgICBzdHlsZVNvdXJjZS5jb21taXRXb3JraW5nQ29w
eShkdW1wSGlzdG9yeShuZXh0KSk7CiAgICAgICAgICAgICB9LAogCiAgICAgICAgICAgICBmdW5j
dGlvbiB0ZXN0U2V0Q29udGVudFZpYU1vZGVsTWlub3IobmV4dCkKQEAgLTcxLDcgKzcxLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rpb24gc3R5bGVTaGVldEZvclJlc291cmNlKGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgQ1NTQWdlbnQuZ2V0QWxsU3R5bGVTaGVldHMoZGlkR2V0QWxs
U3R5bGVTaGVldHMuYmluZCh0aGlzKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZ1bmN0aW9uIGRp
ZEdldEFsbFN0eWxlU2hlZXRzKGVycm9yLCBpbmZvcykKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CkBAIC05NSwxMCArOTUsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewog
ICAgICAgICBmdW5jdGlvbiByZXN1bHQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiSGlzdG9yeSBsZW5ndGg6ICIgKyBzdHlsZVJlc291cmNlLmhpc3Rv
cnkubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVSZXNvdXJj
ZS5oaXN0b3J5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiSGlzdG9yeSBsZW5ndGg6ICIgKyBzdHlsZVNvdXJjZS5yZXNvdXJjZSgpLmhpc3Rvcnku
bGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVTb3VyY2UucmVz
b3VyY2UoKS5oaXN0b3J5Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkl0ZW0gIiArIGkgKyAiOiIpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHN0eWxlUmVzb3VyY2UuaGlzdG9yeVtpXS5jb250ZW50KTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChzdHlsZVNvdXJjZS5yZXNvdXJj
ZSgpLmhpc3RvcnlbaV0uY29udGVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="157806"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>