<?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>96803</bug_id>
          
          <creation_ts>2012-09-14 10:10:51 -0700</creation_ts>
          <short_desc>Web Inspector: [Extensions API] explicitly manage extension audit progress</short_desc>
          <delta_ts>2012-09-18 07:54:15 -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="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720884</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-14 10:10:51 -0700</bug_when>
    <thetext>Currently we update extension audit progress implicitly, based on number of results added and an expected number of results declared when creating the category.
It&apos;s suggested to make progress indication explicit to the extension code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720899</commentid>
    <comment_count>1</comment_count>
      <attachid>164179</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-14 10:18:31 -0700</bug_when>
    <thetext>Created attachment 164179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720913</commentid>
    <comment_count>2</comment_count>
      <attachid>164179</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-14 10:27:01 -0700</bug_when>
    <thetext>Comment on attachment 164179
Patch

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

Should this new API have a test?

&gt; Source/WebCore/inspector/front-end/AuditsPanel.js:284
&gt; +                progress.done();

Thisbshould not be needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721804</commentid>
    <comment_count>3</comment_count>
      <attachid>164179</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-17 04:43:59 -0700</bug_when>
    <thetext>Comment on attachment 164179
Patch

r- per pfeldman&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722014</commentid>
    <comment_count>4</comment_count>
      <attachid>164410</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-17 09:54:09 -0700</bug_when>
    <thetext>Created attachment 164410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722538</commentid>
    <comment_count>5</comment_count>
      <attachid>164410</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-18 00:08:00 -0700</bug_when>
    <thetext>Comment on attachment 164410
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: [Extensions API] exlpicitly manage extension audit progress

Please fix this line, too

&gt; Source/WebCore/ChangeLog:12
&gt; +        - retain old magic for computing audit progress if extension specifies extension results count;

Remove trailing &apos;;&apos;

&gt; Source/WebCore/ChangeLog:34
&gt; +        (WebInspector.ProgressIndicator.prototype.done): Assure only first call to done() has effect;

Ditto

&gt; Source/WebCore/inspector/front-end/AuditsPanel.js:132
&gt; +            category.run(requests, ruleResultReadyCallback.bind(this, result), categoryDoneCallback.bind(this), subprogresses[i]);

Can you instantiate subprogresses here instead? Or do you need to always know the full amount of work up front?

&gt; Source/WebCore/inspector/front-end/ExtensionAPI.js:514
&gt; +            console.warn(&quot;Passing resultCouint to audits.addCategory() is deprecated. Use AuditResult.updateProgress() instead.&quot;);

resultCouint -&gt; resultCount</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722557</commentid>
    <comment_count>6</comment_count>
      <attachid>164410</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-18 00:38:18 -0700</bug_when>
    <thetext>Comment on attachment 164410
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        - retain old magic for computing audit progress if extension specifies extension results count;
&gt; 
&gt; Remove trailing &apos;;&apos;

replaced with &apos;.&apos;

&gt;&gt; Source/WebCore/inspector/front-end/AuditsPanel.js:132
&gt;&gt; +            category.run(requests, ruleResultReadyCallback.bind(this, result), categoryDoneCallback.bind(this), subprogresses[i]);
&gt; 
&gt; Can you instantiate subprogresses here instead? Or do you need to always know the full amount of work up front?

The reason I&apos;m doing this upfront is that when all children are marked as done, the parent progress indicator is marked as done and hence is removed from view.
So this is a guard against an audit category potentially marking its progress as done very early and hence causing the entire progress bar to disappear.
I&apos;m moving this down closer to usage, though.

&gt;&gt; Source/WebCore/inspector/front-end/ExtensionAPI.js:514
&gt;&gt; +            console.warn(&quot;Passing resultCouint to audits.addCategory() is deprecated. Use AuditResult.updateProgress() instead.&quot;);
&gt; 
&gt; resultCouint -&gt; resultCount

fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722560</commentid>
    <comment_count>7</comment_count>
      <attachid>164507</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-18 00:41:06 -0700</bug_when>
    <thetext>Created attachment 164507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722563</commentid>
    <comment_count>8</comment_count>
      <attachid>164507</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-18 00:44:06 -0700</bug_when>
    <thetext>Comment on attachment 164507
Patch

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

&gt; Source/WebCore/inspector/front-end/AuditsPanel.js:101
&gt; +        var compositeProgress = new WebInspector.CompositeProgress(this._progress);

Please move this below, somewhere around var subprogresses = [];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722662</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-18 04:43:09 -0700</bug_when>
    <thetext>Committed r128875: &lt;http://trac.webkit.org/changeset/128875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722756</commentid>
    <comment_count>10</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-18 07:17:12 -0700</bug_when>
    <thetext>I get an additional message here when running inspector/extensions/extensions-audit-api.html on EFL:

   CONSOLE MESSAGE: line 480: Passing resultCount to audits.addCategory() is deprecated. Use AuditResult.updateProgress() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722762</commentid>
    <comment_count>11</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-18 07:34:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I get an additional message here when running inspector/extensions/extensions-audit-api.html on EFL:
&gt; 
&gt;    CONSOLE MESSAGE: line 480: Passing resultCount to audits.addCategory() is deprecated. Use AuditResult.updateProgress() instead.

The console message is there by design, however, the test expectations differ in EFL because other platforms just don&apos;t dump console output coming from inspector page to test output (I remember fixing this for chromium in bug 69632). So the long term fix would be to get efl&apos;s DRT changed to skip inspector console output as well, and short term would be to add custom expectations or skip the test. It looks like this test is already skipped in LayoutTests/platform/efl/Skipped, I wonder if EFL is using both NRWT and older run-webkit-test that uses Skipped?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722772</commentid>
    <comment_count>12</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-18 07:48:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; I get an additional message here when running inspector/extensions/extensions-audit-api.html on EFL:
&gt; &gt; 
&gt; &gt;    CONSOLE MESSAGE: line 480: Passing resultCount to audits.addCategory() is deprecated. Use AuditResult.updateProgress() instead.
&gt; 
&gt; The console message is there by design, however, the test expectations differ in EFL because other platforms just don&apos;t dump console output coming from inspector page to test output (I remember fixing this for chromium in bug 69632). So the long term fix would be to get efl&apos;s DRT changed to skip inspector console output as well

Thanks for the information, I will work on that.

&gt; It looks like this test is already skipped in LayoutTests/platform/efl/Skipped, I wonder if EFL is using both NRWT and older run-webkit-test that uses Skipped?

EFL uses NRWT; Skipped has extensions-api.html and extensions-audits.html, but not extensions-audit-apis.html :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722780</commentid>
    <comment_count>13</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-18 07:54:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; EFL uses NRWT; Skipped has extensions-api.html and extensions-audits.html, but not extensions-audit-apis.html :-)

Ouch, sorry -- I missed it&apos;s extensions-audit-apis.html. Then I guess we could as well avoid using that deprecated parameter there -- it&apos;s not really required for the test and I guess it would be the must practical fix, as it would save us another Skipped test.
The problem of inspector console output, though, remains relevant for some other tests (extensions-audits.html would be one example).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164179</attachid>
            <date>2012-09-14 10:18:31 -0700</date>
            <delta_ts>2012-09-17 09:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96803-20120914211802.patch</filename>
            <type>text/plain</type>
            <size>15985</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQzMTU3NjI5MzRhOTM2
YjMzYWJkODJlYjJmMzczZWYxZjg1ZDQzZC4uMzNhOThmOTQ1MWVkMmY1NTFlNjg2YTc5MThiODIy
MDVlZjNkOGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEyLTA5LTE0ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogW0V4dGVuc2lvbnMgQVBJXSBleGxwaWNpdGx5IG1hbmFnZSBleHRlbnNpb24gYXVkaXQgcHJv
Z3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
ODAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBj
cmVhdGUgYSBzdWItcHJvZ3Jlc3MgcGVyIGF1ZGl0IGNhdGVnb3J5OworICAgICAgICAtIG1hbmFn
ZSBhdWRpdCBjYXRlZ29yeSBwcm9ncmVzcyB3aXRoaW4gdGhlIGNhdGVnb3J5LCBub3QgaW4gdGhl
IHBhbmVsIGxvZ2ljOworICAgICAgICAtIGNvbnNpZGVyIGF1ZGl0IGlzIGRvbmUgd2hlbiBhbGwg
Y2F0ZWdvcmllcyBhcmUgZG9uZSwgdXNlIHByb2dyZXNzIGluZGljYXRvciBmb3IgdGhhdDsKKyAg
ICAgICAgLSBleHBvc2UgQXVkaXRSZXN1bHRzLnVwZGF0ZVByb2dyZXNzKHdvcmtlZCwgdG90YWxX
b3JrKSBpbiB0aGUgZXh0ZW5zaW9ucyBBUEk7CisgICAgICAgIC0gcmV0YWluIG9sZCBtYWdpYyBm
b3IgY29tcHV0aW5nIGF1ZGl0IHByb2dyZXNzIGlmIGV4dGVuc2lvbiBzcGVjaWZpZXMgZXh0ZW5z
aW9uIHJlc3VsdHMgY291bnQ7CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0
c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5f
ZXhlY3V0ZUF1ZGl0LnJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1dGVBdWRpdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVuLmNhbGxiYWNrV3JhcHBlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVuKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAgICAgICAgKGRlZmlu
ZUNvbW1vbkV4dGVuc2lvblN5bWJvbHMpOgorICAgICAgICAoaW5qZWN0ZWRFeHRlbnNpb25BUEku
QXVkaXRzLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6CisgICAgICAgIChpbmplY3RlZEV4dGVuc2lv
bkFQSS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLnVwZGF0ZVByb2dyZXNzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVuKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMucHJvdG90eXBl
LmRvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1
bHRzLnByb3RvdHlwZS5fYWRkUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUudXBkYXRlUHJvZ3Jlc3MpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU2VydmVyLnByb3RvdHlwZS5fb25VcGRhdGVBdWRpdFByb2dyZXNzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vblN0b3BBdWRpdENhdGVnb3J5
UnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2dyZXNzQmFyLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2dyZXNzSW5kaWNhdG9yLnByb3RvdHlwZS5kb25lKTogQXNz
dXJlIG9ubHkgZmlyc3QgY2FsbCB0byBkb25lKCkgaGFzIGVmZmVjdDsKKworMjAxMi0wOS0xNCAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJldXNlIFdlYkluc3BlY3Rvci5Qcm9ncmVzc0luZGljYXRvciBpbiBBdWRpdHMgcGFu
ZWwKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NzU1
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVs
LmpzCmluZGV4IDk2M2EzMGQ0NzA3YmM5ODRhYmY4MWI1ODZkMGJlMTg2Y2QzZDJiOTYuLjA0MDU0
ZDA0M2I3MGMwYzU5MGIzOGU3NGJjZDExNGJlYjg2MTkyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwpAQCAtOTgsNDMgKzk4LDMz
IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZXhlY3V0
ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yaWVzLCByZXN1bHRDYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIHZhciByZXF1ZXN0cyA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLnJlcXVlc3RzOwotCi0g
ICAgICAgIHZhciBydWxlc1JlbWFpbmluZyA9IDA7CisgICAgICAgIHZhciBjb21wb3NpdGVQcm9n
cmVzcyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcG9zaXRlUHJvZ3Jlc3ModGhpcy5fcHJvZ3Jlc3Mp
OworICAgICAgICB2YXIgc3VicHJvZ3Jlc3NlcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBydWxlc1JlbWFpbmlu
ZyArPSBjYXRlZ29yaWVzW2ldLnJ1bGVDb3VudDsKKyAgICAgICAgICAgIHN1YnByb2dyZXNzZXMu
cHVzaChjb21wb3NpdGVQcm9ncmVzcy5jcmVhdGVTdWJQcm9ncmVzcygpKTsKIAotICAgICAgICB0
aGlzLl9wcm9ncmVzcy5zZXRUb3RhbFdvcmsocnVsZXNSZW1haW5pbmcpOwogICAgICAgICB0aGlz
Ll9wcm9ncmVzcy5zZXRUaXRsZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bm5pbmcgYXVkaXQi
KSk7CiAKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgdmFyIG1haW5SZXNvdXJj
ZVVSTCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMOwotCiAgICAgICAgIGZ1bmN0aW9u
IHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKGNhdGVnb3J5UmVzdWx0LCBydWxlUmVzdWx0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQgJiYgcnVs
ZVJlc3VsdC5jaGlsZHJlbikKICAgICAgICAgICAgICAgICBjYXRlZ29yeVJlc3VsdC5hZGRSdWxl
UmVzdWx0KHJ1bGVSZXN1bHQpOwogCi0gICAgICAgICAgICAtLXJ1bGVzUmVtYWluaW5nOwotICAg
ICAgICAgICAgdGhpcy5fcHJvZ3Jlc3Mud29ya2VkKCk7Ci0KLSAgICAgICAgICAgIGlmICghcnVs
ZXNSZW1haW5pbmcgfHwgdGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKQotICAgICAgICAgICAg
ICAgIHJlc3VsdENhbGxiYWNrKG1haW5SZXNvdXJjZVVSTCwgcmVzdWx0cyk7CisgICAgICAgICAg
ICBpZiAodGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKQorICAgICAgICAgICAgICAgIHRoaXMu
X3Byb2dyZXNzLmRvbmUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghcnVsZXNSZW1haW5p
bmcgfHwgdGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRD
YWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHRzID0gW107CisgICAgICAgIHZhciBtYWluUmVz
b3VyY2VVUkwgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTDsKKyAgICAgICAgdGhpcy5f
cHJvZ3Jlc3MuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvZ3Jlc3NJbmRpY2F0b3Iu
RXZlbnRzLkRvbmUsIHJlc3VsdENhbGxiYWNrLmJpbmQobnVsbCwgbWFpblJlc291cmNlVVJMLCBy
ZXN1bHRzKSkKKworICAgICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xv
Zy5yZXF1ZXN0cy5zbGljZSgpOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdv
cmllcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0gY2F0ZWdvcmll
c1tpXTsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0
ZWdvcnlSZXN1bHQoY2F0ZWdvcnkpOwogICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7
Ci0gICAgICAgICAgICBjYXRlZ29yeS5ydW4ocmVxdWVzdHMsIHJ1bGVSZXN1bHRSZWFkeUNhbGxi
YWNrLmJpbmQodGhpcywgcmVzdWx0KSwgdGhpcy5fcHJvZ3Jlc3MpOworICAgICAgICAgICAgY2F0
ZWdvcnkucnVuKHJlcXVlc3RzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKHRoaXMsIHJl
c3VsdCksIHN1YnByb2dyZXNzZXNbaV0pOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMjcwLDEy
ICsyNjAsNiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKICAgICB9LAogCi0gICAgZ2V0IHJ1bGVDb3Vu
dCgpCi0gICAgewotICAgICAgICB0aGlzLl9lbnN1cmVJbml0aWFsaXplZCgpOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fcnVsZXMubGVuZ3RoOwotICAgIH0sCi0KICAgICBhZGRSdWxlOiBmdW5jdGlv
bihydWxlLCBzZXZlcml0eSkKICAgICB7CiAgICAgICAgIHJ1bGUuc2V2ZXJpdHkgPSBzZXZlcml0
eTsKQEAgLTI5MCw4ICsyNzQsMTcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnkucHJvdG90
eXBlID0gewogICAgIHJ1bjogZnVuY3Rpb24ocmVxdWVzdHMsIGNhbGxiYWNrLCBwcm9ncmVzcykK
ICAgICB7CiAgICAgICAgIHRoaXMuX2Vuc3VyZUluaXRpYWxpemVkKCk7CisgICAgICAgIHZhciBy
ZW1haW5pbmdSdWxlc0NvdW50ID0gdGhpcy5fcnVsZXMubGVuZ3RoOworICAgICAgICBwcm9ncmVz
cy5zZXRUb3RhbFdvcmsocmVtYWluaW5nUnVsZXNDb3VudCk7CisgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrV3JhcHBlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBwcm9ncmVzcy53b3JrZWQoKTsKKyAgICAgICAg
ICAgIGlmICghLS1yZW1haW5pbmdSdWxlc0NvdW50KQorICAgICAgICAgICAgICAgIHByb2dyZXNz
LmRvbmUoKTsKKyAgICAgICAgfQogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3J1
bGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fcnVsZXNbaV0ucnVuKHJlcXVlc3Rz
LCBjYWxsYmFjaywgcHJvZ3Jlc3MpOworICAgICAgICAgICAgdGhpcy5fcnVsZXNbaV0ucnVuKHJl
cXVlc3RzLCBjYWxsYmFja1dyYXBwZXIsIHByb2dyZXNzKTsKICAgICB9LAogCiAgICAgX2Vuc3Vy
ZUluaXRpYWxpemVkOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IDRjOTdmNmQyZWRhODYzZjljNWY3NmM0
MTJkN2ExNWFhOTVlZjE3MWIuLjEwM2E4Mjk0ZDRiMzYzNzU4ZGQ4NGQ2ZjQyZjYxYWE2NWI1ZjBh
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uQVBJLmpzCkBAIC05Nyw2ICs5Nyw3IEBAIGZ1bmN0aW9uIGRlZmluZUNvbW1vbkV4dGVuc2lv
blN5bWJvbHMoYXBpUHJpdmF0ZSkKICAgICAgICAgU2hvd1BhbmVsOiAic2hvd1BhbmVsIiwKICAg
ICAgICAgU3RvcEF1ZGl0Q2F0ZWdvcnlSdW46ICJzdG9wQXVkaXRDYXRlZ29yeVJ1biIsCiAgICAg
ICAgIFVuc3Vic2NyaWJlOiAidW5zdWJzY3JpYmUiLAorICAgICAgICBVcGRhdGVBdWRpdFByb2dy
ZXNzOiAidXBkYXRlQXVkaXRQcm9ncmVzcyIsCiAgICAgICAgIFVwZGF0ZUJ1dHRvbjogInVwZGF0
ZUJ1dHRvbiIsCiAgICAgICAgIEluc3BlY3RlZFVSTENoYW5nZWQ6ICJpbnNwZWN0ZWRVUkxDaGFu
Z2VkIgogICAgIH07CkBAIC01MDksNiArNTEwLDggQEAgQXVkaXRzLnByb3RvdHlwZSA9IHsKICAg
ICBhZGRDYXRlZ29yeTogZnVuY3Rpb24oZGlzcGxheU5hbWUsIHJlc3VsdENvdW50KQogICAgIHsK
ICAgICAgICAgdmFyIGlkID0gImV4dGVuc2lvbi1hdWRpdC1jYXRlZ29yeS0iICsgZXh0ZW5zaW9u
U2VydmVyLm5leHRPYmplY3RJZCgpOworICAgICAgICBpZiAodHlwZW9mIHJlc3VsdENvdW50ICE9
PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGNvbnNvbGUud2FybigiUGFzc2luZyByZXN1bHRD
b3VpbnQgdG8gYXVkaXRzLmFkZENhdGVnb3J5KCkgaXMgZGVwcmVjYXRlZC4gVXNlIEF1ZGl0UmVz
dWx0LnVwZGF0ZVByb2dyZXNzKCkgaW5zdGVhZC4iKTsKICAgICAgICAgZXh0ZW5zaW9uU2VydmVy
LnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogY29tbWFuZHMuQWRkQXVkaXRDYXRlZ29yeSwgaWQ6IGlk
LCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIHJlc3VsdENvdW50OiByZXN1bHRDb3VudCB9KTsK
ICAgICAgICAgcmV0dXJuIG5ldyBBdWRpdENhdGVnb3J5KGlkKTsKICAgICB9CkBAIC01NzAsNiAr
NTczLDExIEBAIEF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBu
ZXcgQXVkaXRSZXN1bHROb2RlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykp
OwogICAgIH0sCiAKKyAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24od29ya2VkLCB0b3RhbFdv
cmspCisgICAgeworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5k
OiBjb21tYW5kcy5VcGRhdGVBdWRpdFByb2dyZXNzLCByZXN1bHRJZDogdGhpcy5faWQsIHByb2dy
ZXNzOiB3b3JrZWQgLyB0b3RhbFdvcmsgfSk7CisgICAgfSwKKwogICAgIGRvbmU6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6
IGNvbW1hbmRzLlN0b3BBdWRpdENhdGVnb3J5UnVuLCByZXN1bHRJZDogdGhpcy5faWQgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1
ZGl0Q2F0ZWdvcnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvbkF1ZGl0Q2F0ZWdvcnkuanMKaW5kZXggZDUyOTM3MWM1NmU1MzcxMmM1MTFiODA5ZjBhZGEw
ODIyOWYxY2MyOS4uYjIwN2RmMjcyMzg5OTI4ODI1NGY5ZmI3MTg5N2FjY2FkNTg2NDBiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRp
dENhdGVnb3J5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpAQCAtMzAsMTAgKzMwLDExIEBACiAKIC8qKgogICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnl9CiAgKiBA
cGFyYW0ge3N0cmluZ30gZXh0ZW5zaW9uT3JpZ2luCiAgKiBAcGFyYW0ge3N0cmluZ30gaWQKICAq
IEBwYXJhbSB7c3RyaW5nfSBkaXNwbGF5TmFtZQotICogQHBhcmFtIHtudW1iZXJ9IHJ1bGVDb3Vu
dAorICogQHBhcmFtIHtudW1iZXI9fSBydWxlQ291bnQKICAqLwogV2ViSW5zcGVjdG9yLkV4dGVu
c2lvbkF1ZGl0Q2F0ZWdvcnkgPSBmdW5jdGlvbihleHRlbnNpb25PcmlnaW4sIGlkLCBkaXNwbGF5
TmFtZSwgcnVsZUNvdW50KQogewpAQCAtNTUsMTQgKzU2LDE1IEBAIFdlYkluc3BlY3Rvci5FeHRl
bnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rp
c3BsYXlOYW1lOwogICAgIH0sCiAKLSAgICBnZXQgcnVsZUNvdW50KCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9ydWxlQ291bnQ7Ci0gICAgfSwKLQotICAgIHJ1bjogZnVuY3Rpb24ocmVz
b3VyY2VzLCBjYWxsYmFjaykKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3Q+fSByZXF1ZXN0cworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
KX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jl
c3MKKyAgICAgKi8KKyAgICBydW46IGZ1bmN0aW9uKHJlcXVlc3RzLCBjYWxsYmFjaywgcHJvZ3Jl
c3MpCiAgICAgewotICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnlSZXN1bHRzKHRoaXMsIGNhbGxiYWNrKTsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzKHRoaXMsIGNhbGxiYWNrLCBw
cm9ncmVzcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RhcnRBdWRp
dFJ1bih0aGlzLCByZXN1bHRzKTsKICAgICB9CiB9CiAKQEAgLTcwLDI3ICs3MiwyNSBAQCBXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7CiAgKiBAY29uc3Ry
dWN0b3IKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnl9IGNh
dGVnb3J5CiAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQp
fSBjYWxsYmFjaworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZ3Jlc3N9IHByb2dyZXNzCiAg
Ki8KLVdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyA9IGZ1bmN0aW9u
KGNhdGVnb3J5LCBjYWxsYmFjaykKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5
UmVzdWx0cyA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBjYWxsYmFjaywgcHJvZ3Jlc3MpCiB7CiAgICAg
dGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSAgICB0aGlzLl9wZW5kaW5nUnVsZXMgPSBjYXRl
Z29yeS5ydWxlQ291bnQ7CiAgICAgdGhpcy5fcnVsZUNvbXBsZXRpb25DYWxsYmFjayA9IGNhbGxi
YWNrOworICAgIHRoaXMuX3Byb2dyZXNzID0gcHJvZ3Jlc3M7CisgICAgdGhpcy5fcHJvZ3Jlc3Mu
c2V0VG90YWxXb3JrKDEpOworICAgIHRoaXMuX2V4cGVjdGVkUmVzdWx0cyA9IGNhdGVnb3J5Ll9y
dWxlQ291bnQ7CisgICAgdGhpcy5fYWN0dWFsUmVzdWx0cyA9IDA7CiAKICAgICB0aGlzLmlkID0g
Y2F0ZWdvcnkuaWQgKyAiLSIgKyArK1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5
UmVzdWx0cy5fbGFzdElkOwotICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RhcnRB
dWRpdFJ1bihjYXRlZ29yeSwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRp
dENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGNvbXBsZXRlKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhdGhpcy5fcGVuZGluZ1J1bGVzOwotICAgIH0sCi0KLSAgICBjYW5j
ZWw6IGZ1bmN0aW9uKCkKKyAgICBkb25lOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB3aGls
ZSAoIXRoaXMuY29tcGxldGUpCi0gICAgICAgICAgICB0aGlzLl9hZGRSZXN1bHQobnVsbCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RvcEF1ZGl0UnVuKHRoaXMpOwor
ICAgICAgICB0aGlzLl9wcm9ncmVzcy5kb25lKCk7CiAgICAgfSwKIAogICAgIGFkZFJlc3VsdDog
ZnVuY3Rpb24oZGlzcGxheU5hbWUsIGRlc2NyaXB0aW9uLCBzZXZlcml0eSwgZGV0YWlscykKQEAg
LTExNiw5ICsxMTYsMjAgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1
bHRzLnByb3RvdHlwZSA9IHsKICAgICBfYWRkUmVzdWx0OiBmdW5jdGlvbihyZXN1bHQpCiAgICAg
ewogICAgICAgICB0aGlzLl9ydWxlQ29tcGxldGlvbkNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
IHRoaXMuX3BlbmRpbmdSdWxlcy0tOwotICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSdWxlcykK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RvcEF1ZGl0UnVuKHRo
aXMpOworICAgICAgICArK3RoaXMuX2FjdHVhbFJlc3VsdHM7CisgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5fZXhwZWN0ZWRSZXN1bHRzID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhpcy5f
cHJvZ3Jlc3Muc2V0V29ya2VkKHRoaXMuX2FjdHVhbFJlc3VsdHMgLyB0aGlzLl9leHBlY3RlZFJl
c3VsdHMpOworICAgICAgICAgICAgaWYgKHRoaXMuX2FjdHVhbFJlc3VsdHMgPT09IHRoaXMuX2V4
cGVjdGVkUmVzdWx0cykKKyAgICAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvZ3Jlc3MKKyAgICAg
Ki8KKyAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24ocHJvZ3Jlc3MpCisgICAgeworICAgICAg
ICB0aGlzLl9wcm9ncmVzcy5zZXRXb3JrZWQocHJvZ3Jlc3MpOwogICAgIH0sCiAKICAgICAvKioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25T
ZXJ2ZXIuanMKaW5kZXggZWMzODExYjY5MTI5YzgyNmI4N2E2MjRkZWY3MzNjZDI3MGJjYWI4Ny4u
M2I2NjBkMGFiYmZlYmRmOGU5Y2VjMzFkODk3MjJjMDE2NjllOGE1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAg
LTcxLDYgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlciA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoY29tbWFuZHMuU3Vic2NyaWJlLCB0aGlzLl9vblN1
YnNjcmliZS5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoY29tbWFuZHMu
VW5zdWJzY3JpYmUsIHRoaXMuX29uVW5zdWJzY3JpYmUuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5f
cmVnaXN0ZXJIYW5kbGVyKGNvbW1hbmRzLlVwZGF0ZUJ1dHRvbiwgdGhpcy5fb25VcGRhdGVCdXR0
b24uYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKGNvbW1hbmRzLlVwZGF0
ZUF1ZGl0UHJvZ3Jlc3MsIHRoaXMuX29uVXBkYXRlQXVkaXRQcm9ncmVzcy5iaW5kKHRoaXMpKTsK
IAogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25XaW5kb3dN
ZXNzYWdlLmJpbmQodGhpcyksIGZhbHNlKTsKIH0KQEAgLTU1MCwxMiArNTUxLDIwIEBAIFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fc3RhdHVzLk9LKCk7CiAgICAgfSwKIAorICAgIF9vblVwZGF0ZUF1ZGl0UHJvZ3Jlc3M6IGZ1
bmN0aW9uKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSZXN1bHQgPSB0aGlzLl9j
bGllbnRPYmplY3RzW21lc3NhZ2UucmVzdWx0SWRdOworICAgICAgICBpZiAoIWF1ZGl0UmVzdWx0
KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2UucmVz
dWx0SWQpOworICAgICAgICBhdWRpdFJlc3VsdC51cGRhdGVQcm9ncmVzcyhNYXRoLm1pbihNYXRo
Lm1heCgwLCBtZXNzYWdlLnByb2dyZXNzKSwgMSkpOworICAgIH0sCisKICAgICBfb25TdG9wQXVk
aXRDYXRlZ29yeVJ1bjogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBhdWRp
dFJ1biA9IHRoaXMuX2NsaWVudE9iamVjdHNbbWVzc2FnZS5yZXN1bHRJZF07CiAgICAgICAgIGlm
ICghYXVkaXRSdW4pCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQo
bWVzc2FnZS5yZXN1bHRJZCk7Ci0gICAgICAgIGF1ZGl0UnVuLmNhbmNlbCgpOworICAgICAgICBh
dWRpdFJ1bi5kb25lKCk7CiAgICAgfSwKIAogICAgIF9kaXNwYXRjaENhbGxiYWNrOiBmdW5jdGlv
bihyZXF1ZXN0SWQsIHBvcnQsIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZ3Jlc3NCYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2dyZXNzQmFyLmpzCmluZGV4IDgzYThhOGQ2NDRhOTEyZGY2ZmRlY2Ji
ZThhMjlhMDVjYThlNzEyMjguLjIyYTQ1MTNmMmFkN2FmNDVmOTI5YTAxM2E5Mzc4MWZlNzcwOTAx
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZ3Jl
c3NCYXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9ncmVz
c0Jhci5qcwpAQCAtMTA1LDYgKzEwNSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9ncmVzc0luZGljYXRv
ci5wcm90b3R5cGUgPSB7CiAKICAgICBkb25lOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICBp
ZiAodGhpcy5faXNEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9pc0Rv
bmUgPSB0cnVlOwogICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2dyZXNzSW5kaWNhdG9yLkV2ZW50cy5Eb25l
KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDkxYWYzMDYwNGUyYWMzNWViYmQyYTkwNjBkNTI4MGMzMDMyYzgx
ZmQuLjBkYjk0YjY3Y2RlZDA0NDM2YTg4NTk3YmRlOWMzNDEzNzcyOWQwOGYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wOS0xNCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gZXhscGljaXRs
eSBtYW5hZ2UgZXh0ZW5zaW9uIGF1ZGl0IHByb2dyZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dDogQWRkZWQgQXVkaXRSZXN1bHRzLnVwZGF0ZVByb2dy
ZXNzKCkKKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy5o
dG1sOiBBZGRlZCBhIGNhbGwgdG8gdXBkYXRlUHJvZ3Jlc3MoKQorCiAyMDEyLTA5LTE0ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgdGltZSBpbnB1
dCBsYW5nIGF0dHJpYnV0ZSBhd2FyZSBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWFw
aS1leHBlY3RlZC50eHQKaW5kZXggODlmZGEzYzM0MWU0MDA3N2JiZTQxMDEzY2U1OTExMTNlZDAx
NzFiZS4uODUyOWY4NWQ1NDkxNjE2ZDc3MGY2ZWE0ZWJiYjYxM2Q3MGVjZTJiYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtYXBp
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRl
bnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0CkBAIC0yNiw2ICsyNiw3IEBAIGNhdGVnb3J5
Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCByZXN1bHRzIGR1bXAgZm9sbG93czoKICAgICBjcmVhdGVU
ZXh0IDogPGZ1bmN0aW9uPgogICAgIGNyZWF0ZVVSTCA6IDxmdW5jdGlvbj4KICAgICBkb25lIDog
PGZ1bmN0aW9uPgorICAgIHVwZGF0ZVByb2dyZXNzIDogPGZ1bmN0aW9uPgogfQogewogICAgIGNo
aWxkcmVuIDogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
L2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKaW5kZXggNDk0MTExNmQ3MWZiMTFlMWFkZjMyODZmZmY0
ZGNhYjc2OGIzMDI2Ny4uZjE3MDJjMGRhM2RhOTY3NzVjNGEzMGMwOGYzYTMwNzRmYjNkY2Q4MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1h
dWRpdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNp
b25zLWF1ZGl0cy5odG1sCkBAIC0zMCwxMCArMzAsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVz
dEF1ZGl0cyhuZXh0VGVzdCkKICAgICAgICAgICAgIG5lc3RlZE5vZGUuYWRkQ2hpbGQocmVzdWx0
cy5jcmVhdGVSZXNvdXJjZUxpbmsoaW5zcGVjdGVkUGFnZVVSTCwgMjApKTsKIAogICAgICAgICAg
ICAgcmVzdWx0cy5hZGRSZXN1bHQoIlJ1bGUgd2l0aCBkZXRhaWxzIHN1YnRyZWUgKDEpIiwgIlRo
aXMgcnVsZSBoYXMgYSBsb3Qgb2YgZGV0YWlscyIsIHJlc3VsdHMuU2V2ZXJpdHkuV2FybmluZywg
bm9kZSk7Ci0KLSAgICAgICAgICAgIC8vIEF1ZGl0IG5vcm1hbGx5IHRlcm1pbmF0ZXMgd2hlbiBu
dW1iZXIgb2YgYWRkZWQgcnVsZSByZXN1bHRzIGlzIGVxdWFsIHRvCi0gICAgICAgICAgICAvLyB0
aGUgcnVsZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNhdGVnb3J5LiBkb25lKCkgaXMg
b25seSBmb3IKLSAgICAgICAgICAgIC8vIGVtZXJnZW5jeSBjYXNlcywgd2hlbiB3ZSBrbm93IHdl
IHdvbid0IGJlIGFibGUgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBydWxlcy4KKyAgICAgICAgICAg
IHJlc3VsdHMudXBkYXRlUHJvZ3Jlc3MoMSwgMjApOwogICAgICAgICAgICAgcmVzdWx0cy5kb25l
KCk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTQ4LDcgKzQ1LDcgQEAgZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RBdWRpdHMobmV4dFRlc3QpCiAgICAgICAgIHJlc3VsdHMuZG9uZSgpOwogICAgIH0K
IAotICAgIHZhciBjYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4
dGVuc2lvbiBhdWRpdHMiLCAyMCk7CisgICAgdmFyIGNhdGVnb3J5ID0gd2ViSW5zcGVjdG9yLmF1
ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9uIGF1ZGl0cyIpOwogICAgIGNhdGVnb3J5Lm9uQXVk
aXRTdGFydGVkLmFkZExpc3RlbmVyKG9uU3RhcnRBdWRpdENhdGVnb3J5KTsKIAogICAgIHZhciBm
YWlsZWRDYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4dGVuc2lv
biBhdWRpdHMgdGhhdCBmYWlsIiwgMik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164410</attachid>
            <date>2012-09-17 09:54:09 -0700</date>
            <delta_ts>2012-09-18 00:41:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96803-20120917205336.patch</filename>
            <type>text/plain</type>
            <size>18668</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxMDVhOWZhMGUyZWRl
YWMzMGMyNGVhOTM5MzE0YmVhY2VkZDYyZS4uYTc3ZGQ0YmVlZWVjODExMDFhN2NiYzAwNzdkOTlj
NGVlMTNkNDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogW0V4dGVuc2lvbnMgQVBJXSBleGxwaWNpdGx5IG1hbmFnZSBleHRlbnNpb24gYXVkaXQgcHJv
Z3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
ODAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBj
cmVhdGUgYSBzdWItcHJvZ3Jlc3MgcGVyIGF1ZGl0IGNhdGVnb3J5OworICAgICAgICAtIG1hbmFn
ZSBhdWRpdCBjYXRlZ29yeSBwcm9ncmVzcyB3aXRoaW4gdGhlIGNhdGVnb3J5LCBub3QgaW4gdGhl
IHBhbmVsIGxvZ2ljOworICAgICAgICAtIGNvbnNpZGVyIGF1ZGl0IGlzIGRvbmUgd2hlbiBhbGwg
Y2F0ZWdvcmllcyBhcmUgZG9uZTsKKyAgICAgICAgLSBleHBvc2UgQXVkaXRSZXN1bHRzLnVwZGF0
ZVByb2dyZXNzKHdvcmtlZCwgdG90YWxXb3JrKSBpbiB0aGUgZXh0ZW5zaW9ucyBBUEk7CisgICAg
ICAgIC0gcmV0YWluIG9sZCBtYWdpYyBmb3IgY29tcHV0aW5nIGF1ZGl0IHByb2dyZXNzIGlmIGV4
dGVuc2lvbiBzcGVjaWZpZXMgZXh0ZW5zaW9uIHJlc3VsdHMgY291bnQ7CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fZXhlY3V0ZUF1ZGl0LnJ1bGVSZXN1bHRSZWFkeUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1
dGVBdWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUu
cnVuLmNhbGxiYWNrV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29y
eS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
bkFQSS5qczoKKyAgICAgICAgKGRlZmluZUNvbW1vbkV4dGVuc2lvblN5bWJvbHMpOgorICAgICAg
ICAoaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRzLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6Cisg
ICAgICAgIChpbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLnVw
ZGF0ZVByb2dyZXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1
ZGl0Q2F0ZWdvcnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRl
Z29yeS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRp
dENhdGVnb3J5UmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRD
YXRlZ29yeVJlc3VsdHMucHJvdG90eXBlLmRvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZS5fYWRkUmVzdWx0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUu
dXBkYXRlUHJvZ3Jlc3MpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25VcGRhdGVBdWRp
dFByb2dyZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlLl9vblN0b3BBdWRpdENhdGVnb3J5UnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2dyZXNzQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2dyZXNzSW5kaWNh
dG9yLnByb3RvdHlwZS5kb25lKTogQXNzdXJlIG9ubHkgZmlyc3QgY2FsbCB0byBkb25lKCkgaGFz
IGVmZmVjdDsKKwogMjAxMi0wOS0xNyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggTWFjIGNvbXBpbGF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKaW5kZXgg
OTYzYTMwZDQ3MDdiYzk4NGFiZjgxYjU4NmQwYmUxODZjZDNkMmI5Ni4uZWJhMmRiYWFiY2ZjYWI4
YjQ5MTQzNGUxY2Y4NjdmODk2ZTMyYWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC05OCw0MyArOTgsMzggQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9leGVjdXRlQXVkaXQ6IGZ1
bmN0aW9uKGNhdGVnb3JpZXMsIHJlc3VsdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJl
cXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHM7Ci0KLSAgICAgICAgdmFy
IHJ1bGVzUmVtYWluaW5nID0gMDsKKyAgICAgICAgdmFyIGNvbXBvc2l0ZVByb2dyZXNzID0gbmV3
IFdlYkluc3BlY3Rvci5Db21wb3NpdGVQcm9ncmVzcyh0aGlzLl9wcm9ncmVzcyk7CisgICAgICAg
IHZhciBzdWJwcm9ncmVzc2VzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0
ZWdvcmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHJ1bGVzUmVtYWluaW5nICs9IGNhdGVn
b3JpZXNbaV0ucnVsZUNvdW50OworICAgICAgICAgICAgc3VicHJvZ3Jlc3Nlcy5wdXNoKGNvbXBv
c2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCkpOwogCi0gICAgICAgIHRoaXMuX3Byb2dy
ZXNzLnNldFRvdGFsV29yayhydWxlc1JlbWFpbmluZyk7CiAgICAgICAgIHRoaXMuX3Byb2dyZXNz
LnNldFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubmluZyBhdWRpdCIpKTsKIAotICAg
ICAgICB2YXIgcmVzdWx0cyA9IFtdOwotICAgICAgICB2YXIgbWFpblJlc291cmNlVVJMID0gV2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkw7Ci0KICAgICAgICAgZnVuY3Rpb24gcnVsZVJlc3Vs
dFJlYWR5Q2FsbGJhY2soY2F0ZWdvcnlSZXN1bHQsIHJ1bGVSZXN1bHQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotCiAgICAgICAgICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxlUmVzdWx0LmNo
aWxkcmVuKQogICAgICAgICAgICAgICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVSZXN1bHQocnVs
ZVJlc3VsdCk7CiAKLSAgICAgICAgICAgIC0tcnVsZXNSZW1haW5pbmc7Ci0gICAgICAgICAgICB0
aGlzLl9wcm9ncmVzcy53b3JrZWQoKTsKLQotICAgICAgICAgICAgaWYgKCFydWxlc1JlbWFpbmlu
ZyB8fCB0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0
Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRzKTsKKyAgICAgICAgICAgIGlmICh0aGlz
Ll9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCisgICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3Mu
ZG9uZSgpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFydWxlc1JlbWFpbmluZyB8fCB0aGlz
Ll9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdENhbGxiYWNrKG1h
aW5SZXNvdXJjZVVSTCwgcmVzdWx0cyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
ciByZXN1bHRzID0gW107CisgICAgICAgIHZhciBtYWluUmVzb3VyY2VVUkwgPSBXZWJJbnNwZWN0
b3IuaW5zcGVjdGVkUGFnZVVSTDsKKyAgICAgICAgdmFyIGNhdGVnb3JpZXNEb25lID0gMDsKKyAg
ICAgICAgZnVuY3Rpb24gY2F0ZWdvcnlEb25lQ2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoKytjYXRlZ29yaWVzRG9uZSAhPT0gY2F0ZWdvcmllcy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9uZSgpOworICAg
ICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRzKQogICAgICAg
ICB9CiAKKyAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVx
dWVzdHMuc2xpY2UoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOwog
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJl
c3VsdChjYXRlZ29yeSk7CiAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsKLSAgICAg
ICAgICAgIGNhdGVnb3J5LnJ1bihyZXF1ZXN0cywgcnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2suYmlu
ZCh0aGlzLCByZXN1bHQpLCB0aGlzLl9wcm9ncmVzcyk7CisgICAgICAgICAgICBjYXRlZ29yeS5y
dW4ocmVxdWVzdHMsIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrLmJpbmQodGhpcywgcmVzdWx0KSwg
Y2F0ZWdvcnlEb25lQ2FsbGJhY2suYmluZCh0aGlzKSwgc3VicHJvZ3Jlc3Nlc1tpXSk7CiAgICAg
ICAgIH0KICAgICB9LAogCkBAIC0yNzAsMTIgKzI2NSw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdENh
dGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwog
ICAgIH0sCiAKLSAgICBnZXQgcnVsZUNvdW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Vuc3Vy
ZUluaXRpYWxpemVkKCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ydWxlcy5sZW5ndGg7Ci0gICAg
fSwKLQogICAgIGFkZFJ1bGU6IGZ1bmN0aW9uKHJ1bGUsIHNldmVyaXR5KQogICAgIHsKICAgICAg
ICAgcnVsZS5zZXZlcml0eSA9IHNldmVyaXR5OwpAQCAtMjg0LDE0ICsyNzMsMjQgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBh
cmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0Pn0gcmVxdWVzdHMKLSAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0KX0gcnVsZVJlc3VsdENhbGxiYWNrCisgICAgICog
QHBhcmFtIHtmdW5jdGlvbigpfSBjYXRlZ29yeURvbmVDYWxsYmFjawogICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlByb2dyZXNzfSBwcm9ncmVzcwogICAgICAqLwotICAgIHJ1bjogZnVuY3Rp
b24ocmVxdWVzdHMsIGNhbGxiYWNrLCBwcm9ncmVzcykKKyAgICBydW46IGZ1bmN0aW9uKHJlcXVl
c3RzLCBydWxlUmVzdWx0Q2FsbGJhY2ssIGNhdGVnb3J5RG9uZUNhbGxiYWNrLCBwcm9ncmVzcykK
ICAgICB7CiAgICAgICAgIHRoaXMuX2Vuc3VyZUluaXRpYWxpemVkKCk7CisgICAgICAgIHZhciBy
ZW1haW5pbmdSdWxlc0NvdW50ID0gdGhpcy5fcnVsZXMubGVuZ3RoOworICAgICAgICBwcm9ncmVz
cy5zZXRUb3RhbFdvcmsocmVtYWluaW5nUnVsZXNDb3VudCk7CisgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrV3JhcHBlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJ1bGVSZXN1bHRDYWxsYmFj
ay5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgcHJvZ3Jlc3Mud29ya2VkKCk7
CisgICAgICAgICAgICBpZiAoIS0tcmVtYWluaW5nUnVsZXNDb3VudCkKKyAgICAgICAgICAgICAg
ICBjYXRlZ29yeURvbmVDYWxsYmFjaygpOworICAgICAgICB9CiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5fcnVsZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9ydWxl
c1tpXS5ydW4ocmVxdWVzdHMsIGNhbGxiYWNrLCBwcm9ncmVzcyk7CisgICAgICAgICAgICB0aGlz
Ll9ydWxlc1tpXS5ydW4ocmVxdWVzdHMsIGNhbGxiYWNrV3JhcHBlciwgcHJvZ3Jlc3MpOwogICAg
IH0sCiAKICAgICBfZW5zdXJlSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKaW5kZXggNGM5N2Y2
ZDJlZGE4NjNmOWM1Zjc2YzQxMmQ3YTE1YWE5NWVmMTcxYi4uMTAzYTgyOTRkNGIzNjM3NThkZDg0
ZDZmNDJmNjFhYTY1YjVmMGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKQEAgLTk3LDYgKzk3LDcgQEAgZnVuY3Rpb24gZGVm
aW5lQ29tbW9uRXh0ZW5zaW9uU3ltYm9scyhhcGlQcml2YXRlKQogICAgICAgICBTaG93UGFuZWw6
ICJzaG93UGFuZWwiLAogICAgICAgICBTdG9wQXVkaXRDYXRlZ29yeVJ1bjogInN0b3BBdWRpdENh
dGVnb3J5UnVuIiwKICAgICAgICAgVW5zdWJzY3JpYmU6ICJ1bnN1YnNjcmliZSIsCisgICAgICAg
IFVwZGF0ZUF1ZGl0UHJvZ3Jlc3M6ICJ1cGRhdGVBdWRpdFByb2dyZXNzIiwKICAgICAgICAgVXBk
YXRlQnV0dG9uOiAidXBkYXRlQnV0dG9uIiwKICAgICAgICAgSW5zcGVjdGVkVVJMQ2hhbmdlZDog
Imluc3BlY3RlZFVSTENoYW5nZWQiCiAgICAgfTsKQEAgLTUwOSw2ICs1MTAsOCBAQCBBdWRpdHMu
cHJvdG90eXBlID0gewogICAgIGFkZENhdGVnb3J5OiBmdW5jdGlvbihkaXNwbGF5TmFtZSwgcmVz
dWx0Q291bnQpCiAgICAgewogICAgICAgICB2YXIgaWQgPSAiZXh0ZW5zaW9uLWF1ZGl0LWNhdGVn
b3J5LSIgKyBleHRlbnNpb25TZXJ2ZXIubmV4dE9iamVjdElkKCk7CisgICAgICAgIGlmICh0eXBl
b2YgcmVzdWx0Q291bnQgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgY29uc29sZS53YXJu
KCJQYXNzaW5nIHJlc3VsdENvdWludCB0byBhdWRpdHMuYWRkQ2F0ZWdvcnkoKSBpcyBkZXByZWNh
dGVkLiBVc2UgQXVkaXRSZXN1bHQudXBkYXRlUHJvZ3Jlc3MoKSBpbnN0ZWFkLiIpOwogICAgICAg
ICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiBjb21tYW5kcy5BZGRBdWRp
dENhdGVnb3J5LCBpZDogaWQsIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSwgcmVzdWx0Q291bnQ6
IHJlc3VsdENvdW50IH0pOwogICAgICAgICByZXR1cm4gbmV3IEF1ZGl0Q2F0ZWdvcnkoaWQpOwog
ICAgIH0KQEAgLTU3MCw2ICs1NzMsMTEgQEAgQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIG5ldyBBdWRpdFJlc3VsdE5vZGUoQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzKSk7CiAgICAgfSwKIAorICAgIHVwZGF0ZVByb2dyZXNzOiBmdW5jdGlv
bih3b3JrZWQsIHRvdGFsV29yaykKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5k
UmVxdWVzdCh7IGNvbW1hbmQ6IGNvbW1hbmRzLlVwZGF0ZUF1ZGl0UHJvZ3Jlc3MsIHJlc3VsdElk
OiB0aGlzLl9pZCwgcHJvZ3Jlc3M6IHdvcmtlZCAvIHRvdGFsV29yayB9KTsKKyAgICB9LAorCiAg
ICAgZG9uZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRS
ZXF1ZXN0KHsgY29tbWFuZDogY29tbWFuZHMuU3RvcEF1ZGl0Q2F0ZWdvcnlSdW4sIHJlc3VsdElk
OiB0aGlzLl9pZCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwppbmRleCBkNTI5MzcxYzU2ZTUz
NzEyYzUxMWI4MDlmMGFkYTA4MjI5ZjFjYzI5Li40YzY5MmM3NzM0NWFlZjU1NzkxMzExODZmNTg2
NjlkODI0N2M4ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzCkBAIC0zMCwxMCArMzAsMTEg
QEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQXVk
aXRDYXRlZ29yeX0KICAqIEBwYXJhbSB7c3RyaW5nfSBleHRlbnNpb25PcmlnaW4KICAqIEBwYXJh
bSB7c3RyaW5nfSBpZAogICogQHBhcmFtIHtzdHJpbmd9IGRpc3BsYXlOYW1lCi0gKiBAcGFyYW0g
e251bWJlcn0gcnVsZUNvdW50CisgKiBAcGFyYW0ge251bWJlcj19IHJ1bGVDb3VudAogICovCiBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeSA9IGZ1bmN0aW9uKGV4dGVuc2lvbk9y
aWdpbiwgaWQsIGRpc3BsYXlOYW1lLCBydWxlQ291bnQpCiB7CkBAIC01NSw0MiArNTYsNDUgQEAg
V2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CiAgICAgfSwKIAotICAgIGdldCBydWxlQ291bnQo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3J1bGVDb3VudDsKLSAgICB9LAotCi0gICAg
cnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrKQorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdD59IHJlcXVlc3RzCisgICAgICog
QHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0KX0gcnVsZVJlc3Vs
dENhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYXRlZ29yeURvbmVDYWxsYmFj
aworICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2dyZXNzfSBwcm9ncmVzcworICAgICAq
LworICAgIHJ1bjogZnVuY3Rpb24ocmVxdWVzdHMsIHJ1bGVSZXN1bHRDYWxsYmFjaywgY2F0ZWdv
cnlEb25lQ2FsbGJhY2ssIHByb2dyZXNzKQogICAgIHsKLSAgICAgICAgbmV3IFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyh0aGlzLCBjYWxsYmFjayk7CisgICAgICAg
IHZhciByZXN1bHRzID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVz
dWx0cyh0aGlzLCBydWxlUmVzdWx0Q2FsbGJhY2ssIGNhdGVnb3J5RG9uZUNhbGxiYWNrLCBwcm9n
cmVzcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RhcnRBdWRpdFJ1
bih0aGlzLCByZXN1bHRzKTsKICAgICB9CiB9CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5fSBjYXRlZ29yeQotICog
QHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0KX0gY2FsbGJhY2sK
KyAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdCl9IHJ1bGVS
ZXN1bHRDYWxsYmFjaworICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYXRlZ29yeURvbmVDYWxsYmFj
aworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZ3Jlc3N9IHByb2dyZXNzCiAgKi8KLVdlYklu
c3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyA9IGZ1bmN0aW9uKGNhdGVnb3J5
LCBjYWxsYmFjaykKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyA9
IGZ1bmN0aW9uKGNhdGVnb3J5LCBydWxlUmVzdWx0Q2FsbGJhY2ssIGNhdGVnb3J5RG9uZUNhbGxi
YWNrLCBwcm9ncmVzcykKIHsKICAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5OwotICAgIHRo
aXMuX3BlbmRpbmdSdWxlcyA9IGNhdGVnb3J5LnJ1bGVDb3VudDsKLSAgICB0aGlzLl9ydWxlQ29t
cGxldGlvbkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgdGhpcy5fcnVsZVJlc3VsdENhbGxiYWNr
ID0gcnVsZVJlc3VsdENhbGxiYWNrOworICAgIHRoaXMuX2NhdGVnb3J5RG9uZUNhbGxiYWNrID0g
Y2F0ZWdvcnlEb25lQ2FsbGJhY2s7CisgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzczsKKyAg
ICB0aGlzLl9wcm9ncmVzcy5zZXRUb3RhbFdvcmsoMSk7CisgICAgdGhpcy5fZXhwZWN0ZWRSZXN1
bHRzID0gY2F0ZWdvcnkuX3J1bGVDb3VudDsKKyAgICB0aGlzLl9hY3R1YWxSZXN1bHRzID0gMDsK
IAogICAgIHRoaXMuaWQgPSBjYXRlZ29yeS5pZCArICItIiArICsrV2ViSW5zcGVjdG9yLkV4dGVu
c2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLl9sYXN0SWQ7Ci0gICAgV2ViSW5zcGVjdG9yLmV4dGVu
c2lvblNlcnZlci5zdGFydEF1ZGl0UnVuKGNhdGVnb3J5LCB0aGlzKTsKIH0KIAogV2ViSW5zcGVj
dG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZSA9IHsKLSAgICBnZXQg
Y29tcGxldGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICF0aGlzLl9wZW5kaW5nUnVsZXM7Ci0g
ICAgfSwKLQotICAgIGNhbmNlbDogZnVuY3Rpb24oKQorICAgIGRvbmU6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHdoaWxlICghdGhpcy5jb21wbGV0ZSkKLSAgICAgICAgICAgIHRoaXMuX2Fk
ZFJlc3VsdChudWxsKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5zdG9w
QXVkaXRSdW4odGhpcyk7CisgICAgICAgIHRoaXMuX3Byb2dyZXNzLmRvbmUoKTsKKyAgICAgICAg
dGhpcy5fY2F0ZWdvcnlEb25lQ2FsbGJhY2soKTsKICAgICB9LAogCiAgICAgYWRkUmVzdWx0OiBm
dW5jdGlvbihkaXNwbGF5TmFtZSwgZGVzY3JpcHRpb24sIHNldmVyaXR5LCBkZXRhaWxzKQpAQCAt
MTE1LDEwICsxMTksMjEgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1
bHRzLnByb3RvdHlwZSA9IHsKIAogICAgIF9hZGRSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3J1bGVDb21wbGV0aW9uQ2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgdGhpcy5fcGVuZGluZ1J1bGVzLS07Ci0gICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1J1bGVz
KQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5zdG9wQXVkaXRSdW4o
dGhpcyk7CisgICAgICAgIHRoaXMuX3J1bGVSZXN1bHRDYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICArK3RoaXMuX2FjdHVhbFJlc3VsdHM7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZXhwZWN0
ZWRSZXN1bHRzID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3Muc2V0
V29ya2VkKHRoaXMuX2FjdHVhbFJlc3VsdHMgLyB0aGlzLl9leHBlY3RlZFJlc3VsdHMpOworICAg
ICAgICAgICAgaWYgKHRoaXMuX2FjdHVhbFJlc3VsdHMgPT09IHRoaXMuX2V4cGVjdGVkUmVzdWx0
cykKKyAgICAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvZ3Jlc3MKKyAgICAgKi8KKyAgICB1cGRh
dGVQcm9ncmVzczogZnVuY3Rpb24ocHJvZ3Jlc3MpCisgICAgeworICAgICAgICB0aGlzLl9wcm9n
cmVzcy5zZXRXb3JrZWQocHJvZ3Jlc3MpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5k
ZXggZWMzODExYjY5MTI5YzgyNmI4N2E2MjRkZWY3MzNjZDI3MGJjYWI4Ny4uM2I2NjBkMGFiYmZl
YmRmOGU5Y2VjMzFkODk3MjJjMDE2NjllOGE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTcxLDYgKzcxLDcg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlciA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9y
ZWdpc3RlckhhbmRsZXIoY29tbWFuZHMuU3Vic2NyaWJlLCB0aGlzLl9vblN1YnNjcmliZS5iaW5k
KHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoY29tbWFuZHMuVW5zdWJzY3JpYmUs
IHRoaXMuX29uVW5zdWJzY3JpYmUuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5k
bGVyKGNvbW1hbmRzLlVwZGF0ZUJ1dHRvbiwgdGhpcy5fb25VcGRhdGVCdXR0b24uYmluZCh0aGlz
KSk7CisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKGNvbW1hbmRzLlVwZGF0ZUF1ZGl0UHJvZ3Jl
c3MsIHRoaXMuX29uVXBkYXRlQXVkaXRQcm9ncmVzcy5iaW5kKHRoaXMpKTsKIAogICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25XaW5kb3dNZXNzYWdlLmJpbmQo
dGhpcyksIGZhbHNlKTsKIH0KQEAgLTU1MCwxMiArNTUxLDIwIEBAIFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9L
KCk7CiAgICAgfSwKIAorICAgIF9vblVwZGF0ZUF1ZGl0UHJvZ3Jlc3M6IGZ1bmN0aW9uKG1lc3Nh
Z2UpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSZXN1bHQgPSB0aGlzLl9jbGllbnRPYmplY3Rz
W21lc3NhZ2UucmVzdWx0SWRdOworICAgICAgICBpZiAoIWF1ZGl0UmVzdWx0KQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2UucmVzdWx0SWQpOworICAg
ICAgICBhdWRpdFJlc3VsdC51cGRhdGVQcm9ncmVzcyhNYXRoLm1pbihNYXRoLm1heCgwLCBtZXNz
YWdlLnByb2dyZXNzKSwgMSkpOworICAgIH0sCisKICAgICBfb25TdG9wQXVkaXRDYXRlZ29yeVJ1
bjogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBhdWRpdFJ1biA9IHRoaXMu
X2NsaWVudE9iamVjdHNbbWVzc2FnZS5yZXN1bHRJZF07CiAgICAgICAgIGlmICghYXVkaXRSdW4p
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS5yZXN1
bHRJZCk7Ci0gICAgICAgIGF1ZGl0UnVuLmNhbmNlbCgpOworICAgICAgICBhdWRpdFJ1bi5kb25l
KCk7CiAgICAgfSwKIAogICAgIF9kaXNwYXRjaENhbGxiYWNrOiBmdW5jdGlvbihyZXF1ZXN0SWQs
IHBvcnQsIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZ3Jlc3NCYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2dyZXNzQmFyLmpzCmluZGV4IDgzYThhOGQ2NDRhOTEyZGY2ZmRlY2JiZThhMjlhMDVjYThl
NzEyMjguLjIyYTQ1MTNmMmFkN2FmNDVmOTI5YTAxM2E5Mzc4MWZlNzcwOTAxYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZ3Jlc3NCYXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9ncmVzc0Jhci5qcwpAQCAt
MTA1LDYgKzEwNSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9ncmVzc0luZGljYXRvci5wcm90b3R5cGUg
PSB7CiAKICAgICBkb25lOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICBpZiAodGhpcy5faXNE
b25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9pc0RvbmUgPSB0cnVlOwog
ICAgICAgICB0aGlzLmhpZGUoKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlByb2dyZXNzSW5kaWNhdG9yLkV2ZW50cy5Eb25lKTsKICAgICB9LApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGVhMDllZmUxMzk3YzdkNjVhOGU4OTBmNTI4ZmQ5MGU2OGI1YjVhMTQuLjliN2I5Mjdk
NzY5MTgwZGVhYTc2OWE3ZWVhODdhNzBiZTJkM2FmMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMi0wOS0xNCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb25zIEFQSV0gZXhscGljaXRseSBtYW5hZ2UgZXh0
ZW5zaW9uIGF1ZGl0IHByb2dyZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtYXBp
LWV4cGVjdGVkLnR4dDogQWRkZWQgQXVkaXRSZXN1bHRzLnVwZGF0ZVByb2dyZXNzKCkKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy5odG1sOiBBZGRlZCBh
IGNhbGwgdG8gdXBkYXRlUHJvZ3Jlc3MoKQorCiAyMDEyLTA5LTE3ICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQ2xlYW4gdXAg
U2tpcHBlZCBsaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9u
cy9leHRlbnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dAppbmRleCA4
OWZkYTNjMzQxZTQwMDc3YmJlNDEwMTNjZTU5MTExM2VkMDE3MWJlLi44NTI5Zjg1ZDU0OTE2MTZk
NzcwZjZlYTRlYmJiNjEzZDcwZWNlMmJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBl
Y3RlZC50eHQKQEAgLTI2LDYgKzI2LDcgQEAgY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQs
IHJlc3VsdHMgZHVtcCBmb2xsb3dzOgogICAgIGNyZWF0ZVRleHQgOiA8ZnVuY3Rpb24+CiAgICAg
Y3JlYXRlVVJMIDogPGZ1bmN0aW9uPgogICAgIGRvbmUgOiA8ZnVuY3Rpb24+CisgICAgdXBkYXRl
UHJvZ3Jlc3MgOiA8ZnVuY3Rpb24+CiB9CiB7CiAgICAgY2hpbGRyZW4gOiB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1
ZGl0cy1leHBlY3RlZC50eHQKaW5kZXggZTIwZWE3ZWJlZmM5MDI1YzJiMmE0YWIxNTIwMmI0YjI5
ODRiMmMyMC4uZDMzNGVhMzAyMjE3MWQ0NWVlODM3ZGE0Yjc0YzllODk3ODJlYWJjOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVu
c2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDggQEAgVGVzdHMgYXVkaXRzIHN1
cHBvcnQgaW4gV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCiAgU3RhcnRlZCBleHRlbnNpb24u
CiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QXVkaXRzCitQ
cm9ncmVzczogNTAlCitQcm9ncmVzczogNzUlCiAgIEV4dGVuc2lvbiBhdWRpdHMKICAgICBGYWls
ZWQgcnVsZSAoNDIpCiAgICAgIHRoaXMgcnVsZSBhbHdheXMgZmFpbHMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVz
dHMuanMKaW5kZXggOTExNGQ4OTBkNmQyMGFhOWNhNjIxMjBkMWQyMDEyYjc0Yjg5YjU3ZS4uNzRk
NzhkNWFiOGMwMzgzODI1YWMxY2VkYjhkZTc0Mzk0MjFjYWM3NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanMKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVz
dHMuanMKQEAgLTI5LDQgKzI5LDEwIEBAIHZhciBpbml0aWFsaXplX0V4dGVuc2lvbnNBdWRpdHNU
ZXN0ID0gZnVuY3Rpb24oKQogCiAgICAgICAgIGxhdW5jaGVyVmlldy5fbGF1bmNoQnV0dG9uQ2xp
Y2tlZCgpOwogICAgIH0KKworICAgIEluc3BlY3RvclRlc3QuZHVtcEF1ZGl0UHJvZ3Jlc3MgPSBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcHJvZ3Jlc3MgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCIucGFuZWwuYXVkaXRzIHByb2dyZXNzIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJQcm9ncmVzczogIiArIE1hdGgucm91bmQoMTAwICogcHJvZ3Jlc3MudmFsdWUg
LyBwcm9ncmVzcy5tYXgpICsgIiUiKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbAppbmRleCA0OTQx
MTE2ZDcxZmIxMWUxYWRmMzI4NmZmZjRkY2FiNzY4YjMwMjY3Li4xZTg2NjUzNDAxNDQwYjM3Y2I5
YjI2ZjMxNjVjMDAxMjg5NzVhYTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKQEAgLTI5LDEyICsyOSwxMSBA
QCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEF1ZGl0cyhuZXh0VGVzdCkKICAgICAgICAgd2ViSW5z
cGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJsb2NhdGlvbi5ocmVmIiwgZnVuY3Rpb24oaW5z
cGVjdGVkUGFnZVVSTCkgewogICAgICAgICAgICAgbmVzdGVkTm9kZS5hZGRDaGlsZChyZXN1bHRz
LmNyZWF0ZVJlc291cmNlTGluayhpbnNwZWN0ZWRQYWdlVVJMLCAyMCkpOwogCi0gICAgICAgICAg
ICByZXN1bHRzLmFkZFJlc3VsdCgiUnVsZSB3aXRoIGRldGFpbHMgc3VidHJlZSAoMSkiLCAiVGhp
cyBydWxlIGhhcyBhIGxvdCBvZiBkZXRhaWxzIiwgcmVzdWx0cy5TZXZlcml0eS5XYXJuaW5nLCBu
b2RlKTsKLQotICAgICAgICAgICAgLy8gQXVkaXQgbm9ybWFsbHkgdGVybWluYXRlcyB3aGVuIG51
bWJlciBvZiBhZGRlZCBydWxlIHJlc3VsdHMgaXMgZXF1YWwgdG8KLSAgICAgICAgICAgIC8vIHRo
ZSBydWxlIGNvdW50IGRlY2xhcmVkIHdoZW4gYWRkaW5nIGEgY2F0ZWdvcnkuIGRvbmUoKSBpcyBv
bmx5IGZvcgotICAgICAgICAgICAgLy8gZW1lcmdlbmN5IGNhc2VzLCB3aGVuIHdlIGtub3cgd2Ug
d29uJ3QgYmUgYWJsZSB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHJ1bGVzLgotICAgICAgICAgICAg
cmVzdWx0cy5kb25lKCk7CisgICAgICAgICAgICBldmFsdWF0ZU9uRnJvbnRlbmQoIkluc3BlY3Rv
clRlc3QuZHVtcEF1ZGl0UHJvZ3Jlc3MoKTsgcmVwbHkoKTsiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICByZXN1bHRzLmFkZFJlc3VsdCgiUnVsZSB3aXRoIGRldGFpbHMgc3VidHJlZSAo
MSkiLCAiVGhpcyBydWxlIGhhcyBhIGxvdCBvZiBkZXRhaWxzIiwgcmVzdWx0cy5TZXZlcml0eS5X
YXJuaW5nLCBub2RlKTsKKyAgICAgICAgICAgICAgICByZXN1bHRzLnVwZGF0ZVByb2dyZXNzKDEw
LCAyMCk7CisgICAgICAgICAgICAgICAgZXZhbHVhdGVPbkZyb250ZW5kKCJJbnNwZWN0b3JUZXN0
LmR1bXBBdWRpdFByb2dyZXNzKCk7IHJlcGx5KCk7IiwgcmVzdWx0cy5kb25lLmJpbmQocmVzdWx0
cykpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBmdW5jdGlvbiBv
blN0YXJ0QXVkaXRGYWlsZWRDYXRlZ29yeSgpCkBAIC00OCw3ICs0Nyw3IEBAIGZ1bmN0aW9uIGV4
dGVuc2lvbl90ZXN0QXVkaXRzKG5leHRUZXN0KQogICAgICAgICByZXN1bHRzLmRvbmUoKTsKICAg
ICB9CiAKLSAgICB2YXIgY2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5
KCJFeHRlbnNpb24gYXVkaXRzIiwgMjApOworICAgIHZhciBjYXRlZ29yeSA9IHdlYkluc3BlY3Rv
ci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4dGVuc2lvbiBhdWRpdHMiKTsKICAgICBjYXRlZ29yeS5v
bkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXRDYXRlZ29yeSk7CiAKICAgICB2
YXIgZmFpbGVkQ2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5KCJFeHRl
bnNpb24gYXVkaXRzIHRoYXQgZmFpbCIsIDIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164507</attachid>
            <date>2012-09-18 00:41:06 -0700</date>
            <delta_ts>2012-09-18 00:44:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96803-20120918114032.patch</filename>
            <type>text/plain</type>
            <size>18720</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxMDVhOWZhMGUyZWRl
YWMzMGMyNGVhOTM5MzE0YmVhY2VkZDYyZS4uYzljZjZiZjgyZDFmZTJhNmM4NzEwZDQ4ZjkyNTEx
ODY0ODIzMWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogW0V4dGVuc2lvbnMgQVBJXSBleHBsaWNpdGx5IG1hbmFnZSBleHRlbnNpb24gYXVkaXQgcHJv
Z3Jlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
ODAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBj
cmVhdGUgYSBzdWItcHJvZ3Jlc3MgcGVyIGF1ZGl0IGNhdGVnb3J5OworICAgICAgICAtIG1hbmFn
ZSBhdWRpdCBjYXRlZ29yeSBwcm9ncmVzcyB3aXRoaW4gdGhlIGNhdGVnb3J5LCBub3QgaW4gdGhl
IHBhbmVsIGxvZ2ljOworICAgICAgICAtIGNvbnNpZGVyIGF1ZGl0IGlzIGRvbmUgd2hlbiBhbGwg
Y2F0ZWdvcmllcyBhcmUgZG9uZTsKKyAgICAgICAgLSBleHBvc2UgQXVkaXRSZXN1bHRzLnVwZGF0
ZVByb2dyZXNzKHdvcmtlZCwgdG90YWxXb3JrKSBpbiB0aGUgZXh0ZW5zaW9ucyBBUEk7CisgICAg
ICAgIC0gcmV0YWluIG9sZCBtYWdpYyBmb3IgY29tcHV0aW5nIGF1ZGl0IHByb2dyZXNzIGlmIGV4
dGVuc2lvbiBzcGVjaWZpZXMgZXh0ZW5zaW9uIHJlc3VsdHMgY291bnQuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fZXhlY3V0ZUF1ZGl0LnJ1bGVSZXN1bHRSZWFkeUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1
dGVBdWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUu
cnVuLmNhbGxiYWNrV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29y
eS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
bkFQSS5qczoKKyAgICAgICAgKGRlZmluZUNvbW1vbkV4dGVuc2lvblN5bWJvbHMpOgorICAgICAg
ICAoaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRzLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6Cisg
ICAgICAgIChpbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLnVw
ZGF0ZVByb2dyZXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1
ZGl0Q2F0ZWdvcnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRl
Z29yeS5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRp
dENhdGVnb3J5UmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRD
YXRlZ29yeVJlc3VsdHMucHJvdG90eXBlLmRvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZS5fYWRkUmVzdWx0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUu
dXBkYXRlUHJvZ3Jlc3MpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25VcGRhdGVBdWRp
dFByb2dyZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlLl9vblN0b3BBdWRpdENhdGVnb3J5UnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2dyZXNzQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2dyZXNzSW5kaWNh
dG9yLnByb3RvdHlwZS5kb25lKTogQXNzdXJlIG9ubHkgZmlyc3QgY2FsbCB0byBkb25lKCkgaGFz
IGVmZmVjdC4KKwogMjAxMi0wOS0xNyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggTWFjIGNvbXBpbGF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKaW5kZXgg
OTYzYTMwZDQ3MDdiYzk4NGFiZjgxYjU4NmQwYmUxODZjZDNkMmI5Ni4uNWFjZWI0OTRhMWIxYWZj
MWYzYzYzMjZiZjBlNjlkODcwNWYwZWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC05OCw0MyArOTgsMzcgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9leGVjdXRlQXVkaXQ6IGZ1
bmN0aW9uKGNhdGVnb3JpZXMsIHJlc3VsdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJl
cXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHM7Ci0KLSAgICAgICAgdmFy
IHJ1bGVzUmVtYWluaW5nID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29y
aWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgcnVsZXNSZW1haW5pbmcgKz0gY2F0ZWdvcmll
c1tpXS5ydWxlQ291bnQ7Ci0KLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3Muc2V0VG90YWxXb3JrKHJ1
bGVzUmVtYWluaW5nKTsKKyAgICAgICAgdmFyIGNvbXBvc2l0ZVByb2dyZXNzID0gbmV3IFdlYklu
c3BlY3Rvci5Db21wb3NpdGVQcm9ncmVzcyh0aGlzLl9wcm9ncmVzcyk7CiAgICAgICAgIHRoaXMu
X3Byb2dyZXNzLnNldFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubmluZyBhdWRpdCIp
KTsKIAotICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwotICAgICAgICB2YXIgbWFpblJlc291cmNl
VVJMID0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkw7Ci0KICAgICAgICAgZnVuY3Rpb24g
cnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2soY2F0ZWdvcnlSZXN1bHQsIHJ1bGVSZXN1bHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxl
UmVzdWx0LmNoaWxkcmVuKQogICAgICAgICAgICAgICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVS
ZXN1bHQocnVsZVJlc3VsdCk7CiAKLSAgICAgICAgICAgIC0tcnVsZXNSZW1haW5pbmc7Ci0gICAg
ICAgICAgICB0aGlzLl9wcm9ncmVzcy53b3JrZWQoKTsKLQotICAgICAgICAgICAgaWYgKCFydWxl
c1JlbWFpbmluZyB8fCB0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRzKTsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCisgICAgICAgICAgICAgICAgdGhpcy5f
cHJvZ3Jlc3MuZG9uZSgpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFydWxlc1JlbWFpbmlu
ZyB8fCB0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdENh
bGxiYWNrKG1haW5SZXNvdXJjZVVSTCwgcmVzdWx0cyk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHZhciByZXN1bHRzID0gW107CisgICAgICAgIHZhciBtYWluUmVzb3VyY2VVUkwgPSBX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTDsKKyAgICAgICAgdmFyIGNhdGVnb3JpZXNEb25l
ID0gMDsKKyAgICAgICAgZnVuY3Rpb24gY2F0ZWdvcnlEb25lQ2FsbGJhY2soKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoKytjYXRlZ29yaWVzRG9uZSAhPT0gY2F0ZWdvcmllcy5sZW5ndGgp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9u
ZSgpOworICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRz
KQogICAgICAgICB9CiAKKyAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdv
cmtMb2cucmVxdWVzdHMuc2xpY2UoKTsKKyAgICAgICAgdmFyIHN1YnByb2dyZXNzZXMgPSBbXTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgc3VicHJvZ3Jlc3Nlcy5wdXNoKGNvbXBvc2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlBy
b2dyZXNzKCkpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3JpZXMubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgIHZhciBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbaV07CiAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0
KGNhdGVnb3J5KTsKICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOwotICAgICAgICAg
ICAgY2F0ZWdvcnkucnVuKHJlcXVlc3RzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKHRo
aXMsIHJlc3VsdCksIHRoaXMuX3Byb2dyZXNzKTsKKyAgICAgICAgICAgIGNhdGVnb3J5LnJ1bihy
ZXF1ZXN0cywgcnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2suYmluZCh0aGlzLCByZXN1bHQpLCBjYXRl
Z29yeURvbmVDYWxsYmFjay5iaW5kKHRoaXMpLCBzdWJwcm9ncmVzc2VzW2ldKTsKICAgICAgICAg
fQogICAgIH0sCiAKQEAgLTI3MCwxMiArMjY0LDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdv
cnkucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CiAgICAg
fSwKIAotICAgIGdldCBydWxlQ291bnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fZW5zdXJlSW5p
dGlhbGl6ZWQoKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3J1bGVzLmxlbmd0aDsKLSAgICB9LAot
CiAgICAgYWRkUnVsZTogZnVuY3Rpb24ocnVsZSwgc2V2ZXJpdHkpCiAgICAgewogICAgICAgICBy
dWxlLnNldmVyaXR5ID0gc2V2ZXJpdHk7CkBAIC0yODQsMTQgKzI3MiwyNCBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e0FycmF5LjxXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Q+fSByZXF1ZXN0cwotICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oKX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQpfSBydWxlUmVzdWx0Q2FsbGJhY2sKKyAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKCl9IGNhdGVnb3J5RG9uZUNhbGxiYWNrCiAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUHJvZ3Jlc3N9IHByb2dyZXNzCiAgICAgICovCi0gICAgcnVuOiBmdW5jdGlvbihy
ZXF1ZXN0cywgY2FsbGJhY2ssIHByb2dyZXNzKQorICAgIHJ1bjogZnVuY3Rpb24ocmVxdWVzdHMs
IHJ1bGVSZXN1bHRDYWxsYmFjaywgY2F0ZWdvcnlEb25lQ2FsbGJhY2ssIHByb2dyZXNzKQogICAg
IHsKICAgICAgICAgdGhpcy5fZW5zdXJlSW5pdGlhbGl6ZWQoKTsKKyAgICAgICAgdmFyIHJlbWFp
bmluZ1J1bGVzQ291bnQgPSB0aGlzLl9ydWxlcy5sZW5ndGg7CisgICAgICAgIHByb2dyZXNzLnNl
dFRvdGFsV29yayhyZW1haW5pbmdSdWxlc0NvdW50KTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2tXcmFwcGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcnVsZVJlc3VsdENhbGxiYWNrLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBwcm9ncmVzcy53b3JrZWQoKTsKKyAg
ICAgICAgICAgIGlmICghLS1yZW1haW5pbmdSdWxlc0NvdW50KQorICAgICAgICAgICAgICAgIGNh
dGVnb3J5RG9uZUNhbGxiYWNrKCk7CisgICAgICAgIH0KICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9ydWxlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3J1bGVzW2ld
LnJ1bihyZXF1ZXN0cywgY2FsbGJhY2ssIHByb2dyZXNzKTsKKyAgICAgICAgICAgIHRoaXMuX3J1
bGVzW2ldLnJ1bihyZXF1ZXN0cywgY2FsbGJhY2tXcmFwcGVyLCBwcm9ncmVzcyk7CiAgICAgfSwK
IAogICAgIF9lbnN1cmVJbml0aWFsaXplZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcwppbmRleCA0Yzk3ZjZkMmVk
YTg2M2Y5YzVmNzZjNDEyZDdhMTVhYTk1ZWYxNzFiLi5hNDVkODNiYzNhMGNlMGQ0ODliOWJhZDVh
ZmZkMDUyZWUyMWJhYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvbkFQSS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvbkFQSS5qcwpAQCAtOTcsNiArOTcsNyBAQCBmdW5jdGlvbiBkZWZpbmVD
b21tb25FeHRlbnNpb25TeW1ib2xzKGFwaVByaXZhdGUpCiAgICAgICAgIFNob3dQYW5lbDogInNo
b3dQYW5lbCIsCiAgICAgICAgIFN0b3BBdWRpdENhdGVnb3J5UnVuOiAic3RvcEF1ZGl0Q2F0ZWdv
cnlSdW4iLAogICAgICAgICBVbnN1YnNjcmliZTogInVuc3Vic2NyaWJlIiwKKyAgICAgICAgVXBk
YXRlQXVkaXRQcm9ncmVzczogInVwZGF0ZUF1ZGl0UHJvZ3Jlc3MiLAogICAgICAgICBVcGRhdGVC
dXR0b246ICJ1cGRhdGVCdXR0b24iLAogICAgICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2VkOiAiaW5z
cGVjdGVkVVJMQ2hhbmdlZCIKICAgICB9OwpAQCAtNTA5LDYgKzUxMCw4IEBAIEF1ZGl0cy5wcm90
b3R5cGUgPSB7CiAgICAgYWRkQ2F0ZWdvcnk6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCByZXN1bHRD
b3VudCkKICAgICB7CiAgICAgICAgIHZhciBpZCA9ICJleHRlbnNpb24tYXVkaXQtY2F0ZWdvcnkt
IiArIGV4dGVuc2lvblNlcnZlci5uZXh0T2JqZWN0SWQoKTsKKyAgICAgICAgaWYgKHR5cGVvZiBy
ZXN1bHRDb3VudCAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjb25zb2xlLndhcm4oIlBh
c3NpbmcgcmVzdWx0Q291bnQgdG8gYXVkaXRzLmFkZENhdGVnb3J5KCkgaXMgZGVwcmVjYXRlZC4g
VXNlIEF1ZGl0UmVzdWx0LnVwZGF0ZVByb2dyZXNzKCkgaW5zdGVhZC4iKTsKICAgICAgICAgZXh0
ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogY29tbWFuZHMuQWRkQXVkaXRDYXRl
Z29yeSwgaWQ6IGlkLCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIHJlc3VsdENvdW50OiByZXN1
bHRDb3VudCB9KTsKICAgICAgICAgcmV0dXJuIG5ldyBBdWRpdENhdGVnb3J5KGlkKTsKICAgICB9
CkBAIC01NzAsNiArNTczLDExIEBAIEF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBuZXcgQXVkaXRSZXN1bHROb2RlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykpOwogICAgIH0sCiAKKyAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24od29y
a2VkLCB0b3RhbFdvcmspCisgICAgeworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVl
c3QoeyBjb21tYW5kOiBjb21tYW5kcy5VcGRhdGVBdWRpdFByb2dyZXNzLCByZXN1bHRJZDogdGhp
cy5faWQsIHByb2dyZXNzOiB3b3JrZWQgLyB0b3RhbFdvcmsgfSk7CisgICAgfSwKKwogICAgIGRv
bmU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVz
dCh7IGNvbW1hbmQ6IGNvbW1hbmRzLlN0b3BBdWRpdENhdGVnb3J5UnVuLCByZXN1bHRJZDogdGhp
cy5faWQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKaW5kZXggZDUyOTM3MWM1NmU1MzcxMmM1
MTFiODA5ZjBhZGEwODIyOWYxY2MyOS4uNGM2OTJjNzczNDVhZWY1NTc5MTMxMTg2ZjU4NjY5ZDgy
NDdjOGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BdWRpdENhdGVnb3J5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpAQCAtMzAsMTAgKzMwLDExIEBACiAK
IC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkF1ZGl0Q2F0
ZWdvcnl9CiAgKiBAcGFyYW0ge3N0cmluZ30gZXh0ZW5zaW9uT3JpZ2luCiAgKiBAcGFyYW0ge3N0
cmluZ30gaWQKICAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwbGF5TmFtZQotICogQHBhcmFtIHtudW1i
ZXJ9IHJ1bGVDb3VudAorICogQHBhcmFtIHtudW1iZXI9fSBydWxlQ291bnQKICAqLwogV2ViSW5z
cGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkgPSBmdW5jdGlvbihleHRlbnNpb25PcmlnaW4s
IGlkLCBkaXNwbGF5TmFtZSwgcnVsZUNvdW50KQogewpAQCAtNTUsNDIgKzU2LDQ1IEBAIFdlYklu
c3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwogICAgIH0sCiAKLSAgICBnZXQgcnVsZUNvdW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ydWxlQ291bnQ7Ci0gICAgfSwKLQotICAgIHJ1bjog
ZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaykKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Fy
cmF5LjxXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Q+fSByZXF1ZXN0cworICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdCl9IHJ1bGVSZXN1bHRDYWxs
YmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2F0ZWdvcnlEb25lQ2FsbGJhY2sKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKKyAgICAgKi8KKyAg
ICBydW46IGZ1bmN0aW9uKHJlcXVlc3RzLCBydWxlUmVzdWx0Q2FsbGJhY2ssIGNhdGVnb3J5RG9u
ZUNhbGxiYWNrLCBwcm9ncmVzcykKICAgICB7Ci0gICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHModGhpcywgY2FsbGJhY2spOworICAgICAgICB2YXIg
cmVzdWx0cyA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMo
dGhpcywgcnVsZVJlc3VsdENhbGxiYWNrLCBjYXRlZ29yeURvbmVDYWxsYmFjaywgcHJvZ3Jlc3Mp
OworICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLnN0YXJ0QXVkaXRSdW4odGhp
cywgcmVzdWx0cyk7CiAgICAgfQogfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeX0gY2F0ZWdvcnkKLSAqIEBwYXJh
bSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdCl9IGNhbGxiYWNrCisgKiBA
cGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQpfSBydWxlUmVzdWx0
Q2FsbGJhY2sKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2F0ZWdvcnlEb25lQ2FsbGJhY2sKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2dyZXNzfSBwcm9ncmVzcwogICovCi1XZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMgPSBmdW5jdGlvbihjYXRlZ29yeSwgY2Fs
bGJhY2spCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMgPSBmdW5j
dGlvbihjYXRlZ29yeSwgcnVsZVJlc3VsdENhbGxiYWNrLCBjYXRlZ29yeURvbmVDYWxsYmFjaywg
cHJvZ3Jlc3MpCiB7CiAgICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSAgICB0aGlzLl9w
ZW5kaW5nUnVsZXMgPSBjYXRlZ29yeS5ydWxlQ291bnQ7Ci0gICAgdGhpcy5fcnVsZUNvbXBsZXRp
b25DYWxsYmFjayA9IGNhbGxiYWNrOworICAgIHRoaXMuX3J1bGVSZXN1bHRDYWxsYmFjayA9IHJ1
bGVSZXN1bHRDYWxsYmFjazsKKyAgICB0aGlzLl9jYXRlZ29yeURvbmVDYWxsYmFjayA9IGNhdGVn
b3J5RG9uZUNhbGxiYWNrOworICAgIHRoaXMuX3Byb2dyZXNzID0gcHJvZ3Jlc3M7CisgICAgdGhp
cy5fcHJvZ3Jlc3Muc2V0VG90YWxXb3JrKDEpOworICAgIHRoaXMuX2V4cGVjdGVkUmVzdWx0cyA9
IGNhdGVnb3J5Ll9ydWxlQ291bnQ7CisgICAgdGhpcy5fYWN0dWFsUmVzdWx0cyA9IDA7CiAKICAg
ICB0aGlzLmlkID0gY2F0ZWdvcnkuaWQgKyAiLSIgKyArK1dlYkluc3BlY3Rvci5FeHRlbnNpb25B
dWRpdENhdGVnb3J5UmVzdWx0cy5fbGFzdElkOwotICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25T
ZXJ2ZXIuc3RhcnRBdWRpdFJ1bihjYXRlZ29yeSwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGNvbXBs
ZXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5fcGVuZGluZ1J1bGVzOwotICAgIH0s
Ci0KLSAgICBjYW5jZWw6IGZ1bmN0aW9uKCkKKyAgICBkb25lOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB3aGlsZSAoIXRoaXMuY29tcGxldGUpCi0gICAgICAgICAgICB0aGlzLl9hZGRSZXN1
bHQobnVsbCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RvcEF1ZGl0
UnVuKHRoaXMpOworICAgICAgICB0aGlzLl9wcm9ncmVzcy5kb25lKCk7CisgICAgICAgIHRoaXMu
X2NhdGVnb3J5RG9uZUNhbGxiYWNrKCk7CiAgICAgfSwKIAogICAgIGFkZFJlc3VsdDogZnVuY3Rp
b24oZGlzcGxheU5hbWUsIGRlc2NyaXB0aW9uLCBzZXZlcml0eSwgZGV0YWlscykKQEAgLTExNSwx
MCArMTE5LDIxIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5w
cm90b3R5cGUgPSB7CiAKICAgICBfYWRkUmVzdWx0OiBmdW5jdGlvbihyZXN1bHQpCiAgICAgewot
ICAgICAgICB0aGlzLl9ydWxlQ29tcGxldGlvbkNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgIHRo
aXMuX3BlbmRpbmdSdWxlcy0tOwotICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSdWxlcykKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuc3RvcEF1ZGl0UnVuKHRoaXMp
OworICAgICAgICB0aGlzLl9ydWxlUmVzdWx0Q2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgKyt0
aGlzLl9hY3R1YWxSZXN1bHRzOworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2V4cGVjdGVkUmVz
dWx0cyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLnNldFdvcmtl
ZCh0aGlzLl9hY3R1YWxSZXN1bHRzIC8gdGhpcy5fZXhwZWN0ZWRSZXN1bHRzKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9hY3R1YWxSZXN1bHRzID09PSB0aGlzLl9leHBlY3RlZFJlc3VsdHMpCisg
ICAgICAgICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHByb2dyZXNzCisgICAgICovCisgICAgdXBkYXRlUHJv
Z3Jlc3M6IGZ1bmN0aW9uKHByb2dyZXNzKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZ3Jlc3Mu
c2V0V29ya2VkKHByb2dyZXNzKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGVj
MzgxMWI2OTEyOWM4MjZiODdhNjI0ZGVmNzMzY2QyNzBiY2FiODcuLjNiNjYwZDBhYmJmZWJkZjhl
OWNlYzMxZDg5NzIyYzAxNjY5ZThhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC03MSw2ICs3MSw3IEBAIFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVnaXN0
ZXJIYW5kbGVyKGNvbW1hbmRzLlN1YnNjcmliZSwgdGhpcy5fb25TdWJzY3JpYmUuYmluZCh0aGlz
KSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKGNvbW1hbmRzLlVuc3Vic2NyaWJlLCB0aGlz
Ll9vblVuc3Vic2NyaWJlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcihj
b21tYW5kcy5VcGRhdGVCdXR0b24sIHRoaXMuX29uVXBkYXRlQnV0dG9uLmJpbmQodGhpcykpOwor
ICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcihjb21tYW5kcy5VcGRhdGVBdWRpdFByb2dyZXNzLCB0
aGlzLl9vblVwZGF0ZUF1ZGl0UHJvZ3Jlc3MuYmluZCh0aGlzKSk7CiAKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRoaXMuX29uV2luZG93TWVzc2FnZS5iaW5kKHRoaXMp
LCBmYWxzZSk7CiB9CkBAIC01NTAsMTIgKzU1MSwyMCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5PSygpOwog
ICAgIH0sCiAKKyAgICBfb25VcGRhdGVBdWRpdFByb2dyZXNzOiBmdW5jdGlvbihtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgdmFyIGF1ZGl0UmVzdWx0ID0gdGhpcy5fY2xpZW50T2JqZWN0c1ttZXNz
YWdlLnJlc3VsdElkXTsKKyAgICAgICAgaWYgKCFhdWRpdFJlc3VsdCkKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLnJlc3VsdElkKTsKKyAgICAgICAg
YXVkaXRSZXN1bHQudXBkYXRlUHJvZ3Jlc3MoTWF0aC5taW4oTWF0aC5tYXgoMCwgbWVzc2FnZS5w
cm9ncmVzcyksIDEpKTsKKyAgICB9LAorCiAgICAgX29uU3RvcEF1ZGl0Q2F0ZWdvcnlSdW46IGZ1
bmN0aW9uKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgYXVkaXRSdW4gPSB0aGlzLl9jbGll
bnRPYmplY3RzW21lc3NhZ2UucmVzdWx0SWRdOwogICAgICAgICBpZiAoIWF1ZGl0UnVuKQogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKG1lc3NhZ2UucmVzdWx0SWQp
OwotICAgICAgICBhdWRpdFJ1bi5jYW5jZWwoKTsKKyAgICAgICAgYXVkaXRSdW4uZG9uZSgpOwog
ICAgIH0sCiAKICAgICBfZGlzcGF0Y2hDYWxsYmFjazogZnVuY3Rpb24ocmVxdWVzdElkLCBwb3J0
LCByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2dyZXNzQmFyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9n
cmVzc0Jhci5qcwppbmRleCA4M2E4YThkNjQ0YTkxMmRmNmZkZWNiYmU4YTI5YTA1Y2E4ZTcxMjI4
Li4yMmE0NTEzZjJhZDdhZjQ1ZjkyOWEwMTNhOTM3ODFmZTc3MDkwMWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2dyZXNzQmFyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZ3Jlc3NCYXIuanMKQEAgLTEwNSw2
ICsxMDUsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3NJbmRpY2F0b3IucHJvdG90eXBlID0gewog
CiAgICAgZG9uZTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzRG9uZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5faXNEb25lID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5oaWRlKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5Qcm9ncmVzc0luZGljYXRvci5FdmVudHMuRG9uZSk7CiAgICAgfSwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlYTA5ZWZlMTM5N2M3ZDY1YThlODkwZjUyOGZkOTBlNjhiNWI1YTE0Li4xMmJiMzBjMjJlOTc3
ZjVlYzg4OGJlYjYyYjJhYWYzOTI3N2IyMWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTIt
MDktMTQgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIGV4cGxpY2l0bHkgbWFuYWdlIGV4dGVuc2lv
biBhdWRpdCBwcm9ncmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY4MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBl
Y3RlZC50eHQ6IEFkZGVkIEF1ZGl0UmVzdWx0cy51cGRhdGVQcm9ncmVzcygpCisgICAgICAgICog
aW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbDogQWRkZWQgYSBjYWxs
IHRvIHVwZGF0ZVByb2dyZXNzKCkKKwogMjAxMi0wOS0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIFNraXBw
ZWQgbGlzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQKaW5kZXggODlmZGEz
YzM0MWU0MDA3N2JiZTQxMDEzY2U1OTExMTNlZDAxNzFiZS4uODUyOWY4NWQ1NDkxNjE2ZDc3MGY2
ZWE0ZWJiYjYxM2Q3MGVjZTJiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQu
dHh0CkBAIC0yNiw2ICsyNiw3IEBAIGNhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCByZXN1
bHRzIGR1bXAgZm9sbG93czoKICAgICBjcmVhdGVUZXh0IDogPGZ1bmN0aW9uPgogICAgIGNyZWF0
ZVVSTCA6IDxmdW5jdGlvbj4KICAgICBkb25lIDogPGZ1bmN0aW9uPgorICAgIHVwZGF0ZVByb2dy
ZXNzIDogPGZ1bmN0aW9uPgogfQogewogICAgIGNoaWxkcmVuIDogewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMt
ZXhwZWN0ZWQudHh0CmluZGV4IGUyMGVhN2ViZWZjOTAyNWMyYjJhNGFiMTUyMDJiNGIyOTg0YjJj
MjAuLmQzMzRlYTMwMjIxNzFkNDVlZTgzN2RhNGI3NGM5ZTg5NzgyZWFiYzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LWF1ZGl0cy1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw4IEBAIFRlc3RzIGF1ZGl0cyBzdXBwb3J0
IGluIFdlYkluc3BlY3RvciBFeHRlbnNpb25zIEFQSQogIFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVu
bmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEF1ZGl0cworUHJvZ3Jl
c3M6IDUwJQorUHJvZ3Jlc3M6IDc1JQogICBFeHRlbnNpb24gYXVkaXRzCiAgICAgRmFpbGVkIHJ1
bGUgKDQyKQogICAgICB0aGlzIHJ1bGUgYWx3YXlzIGZhaWxzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpz
CmluZGV4IDkxMTRkODkwZDZkMjBhYTljYTYyMTIwZDFkMjAxMmI3NGI4OWI1N2UuLjc0ZDc4ZDVh
YjhjMDM4MzgyNWFjMWNlZGI4ZGU3NDM5NDIxY2FjNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpz
CkBAIC0yOSw0ICsyOSwxMCBAQCB2YXIgaW5pdGlhbGl6ZV9FeHRlbnNpb25zQXVkaXRzVGVzdCA9
IGZ1bmN0aW9uKCkKIAogICAgICAgICBsYXVuY2hlclZpZXcuX2xhdW5jaEJ1dHRvbkNsaWNrZWQo
KTsKICAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBBdWRpdFByb2dyZXNzID0gZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHByb2dyZXNzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiLnBhbmVsLmF1ZGl0cyBwcm9ncmVzcyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiUHJvZ3Jlc3M6ICIgKyBNYXRoLnJvdW5kKDEwMCAqIHByb2dyZXNzLnZhbHVlIC8gcHJv
Z3Jlc3MubWF4KSArICIlIik7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKaW5kZXggNDk0MTExNmQ3
MWZiMTFlMWFkZjMyODZmZmY0ZGNhYjc2OGIzMDI2Ny4uMWU4NjY1MzQwMTQ0MGIzN2NiOWIyNmYz
MTY1YzAwMTI4OTc1YWE5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy5odG1sCkBAIC0yOSwxMiArMjksMTEgQEAgZnVu
Y3Rpb24gZXh0ZW5zaW9uX3Rlc3RBdWRpdHMobmV4dFRlc3QpCiAgICAgICAgIHdlYkluc3BlY3Rv
ci5pbnNwZWN0ZWRXaW5kb3cuZXZhbCgibG9jYXRpb24uaHJlZiIsIGZ1bmN0aW9uKGluc3BlY3Rl
ZFBhZ2VVUkwpIHsKICAgICAgICAgICAgIG5lc3RlZE5vZGUuYWRkQ2hpbGQocmVzdWx0cy5jcmVh
dGVSZXNvdXJjZUxpbmsoaW5zcGVjdGVkUGFnZVVSTCwgMjApKTsKIAotICAgICAgICAgICAgcmVz
dWx0cy5hZGRSZXN1bHQoIlJ1bGUgd2l0aCBkZXRhaWxzIHN1YnRyZWUgKDEpIiwgIlRoaXMgcnVs
ZSBoYXMgYSBsb3Qgb2YgZGV0YWlscyIsIHJlc3VsdHMuU2V2ZXJpdHkuV2FybmluZywgbm9kZSk7
Ci0KLSAgICAgICAgICAgIC8vIEF1ZGl0IG5vcm1hbGx5IHRlcm1pbmF0ZXMgd2hlbiBudW1iZXIg
b2YgYWRkZWQgcnVsZSByZXN1bHRzIGlzIGVxdWFsIHRvCi0gICAgICAgICAgICAvLyB0aGUgcnVs
ZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNhdGVnb3J5LiBkb25lKCkgaXMgb25seSBm
b3IKLSAgICAgICAgICAgIC8vIGVtZXJnZW5jeSBjYXNlcywgd2hlbiB3ZSBrbm93IHdlIHdvbid0
IGJlIGFibGUgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBydWxlcy4KLSAgICAgICAgICAgIHJlc3Vs
dHMuZG9uZSgpOworICAgICAgICAgICAgZXZhbHVhdGVPbkZyb250ZW5kKCJJbnNwZWN0b3JUZXN0
LmR1bXBBdWRpdFByb2dyZXNzKCk7IHJlcGx5KCk7IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIlJ1bGUgd2l0aCBkZXRhaWxzIHN1YnRyZWUgKDEpIiwg
IlRoaXMgcnVsZSBoYXMgYSBsb3Qgb2YgZGV0YWlscyIsIHJlc3VsdHMuU2V2ZXJpdHkuV2Fybmlu
Zywgbm9kZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0cy51cGRhdGVQcm9ncmVzcygxMCwgMjAp
OworICAgICAgICAgICAgICAgIGV2YWx1YXRlT25Gcm9udGVuZCgiSW5zcGVjdG9yVGVzdC5kdW1w
QXVkaXRQcm9ncmVzcygpOyByZXBseSgpOyIsIHJlc3VsdHMuZG9uZS5iaW5kKHJlc3VsdHMpKTsK
KyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiAgICAgZnVuY3Rpb24gb25TdGFy
dEF1ZGl0RmFpbGVkQ2F0ZWdvcnkoKQpAQCAtNDgsNyArNDcsNyBAQCBmdW5jdGlvbiBleHRlbnNp
b25fdGVzdEF1ZGl0cyhuZXh0VGVzdCkKICAgICAgICAgcmVzdWx0cy5kb25lKCk7CiAgICAgfQog
Ci0gICAgdmFyIGNhdGVnb3J5ID0gd2ViSW5zcGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0
ZW5zaW9uIGF1ZGl0cyIsIDIwKTsKKyAgICB2YXIgY2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVk
aXRzLmFkZENhdGVnb3J5KCJFeHRlbnNpb24gYXVkaXRzIik7CiAgICAgY2F0ZWdvcnkub25BdWRp
dFN0YXJ0ZWQuYWRkTGlzdGVuZXIob25TdGFydEF1ZGl0Q2F0ZWdvcnkpOwogCiAgICAgdmFyIGZh
aWxlZENhdGVnb3J5ID0gd2ViSW5zcGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9u
IGF1ZGl0cyB0aGF0IGZhaWwiLCAyKTsK
</data>
<flag name="review"
          id="176291"
          type_id="1"
          status="+"
          setter="apavlov"
    />
    <flag name="commit-queue"
          id="176292"
          type_id="3"
          status="-"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>