<?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>52292</bug_id>
          
          <creation_ts>2011-01-12 04:33:37 -0800</creation_ts>
          <short_desc>Web Inspector: redirected resources not handled properly in Network panel</short_desc>
          <delta_ts>2011-01-14 05:14:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333031</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-12 04:33:37 -0800</bug_when>
    <thetext>There&apos;s a number of problems with handling redirected resources in network panel:
- redirected main resource is not shown (or shown improperly) in Network panel
- redirected resources are not present in HAR
- when page navigates away to a new main resource that returns redirect, the main resource is not updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333108</commentid>
    <comment_count>1</comment_count>
      <attachid>78696</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-12 09:02:56 -0800</bug_when>
    <thetext>Created attachment 78696
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333632</commentid>
    <comment_count>2</comment_count>
      <attachid>78696</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-13 03:42:48 -0800</bug_when>
    <thetext>Comment on attachment 78696
patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:386
&gt; +                                                   ic-&gt;isMainResourceLoader(loader, request.url()) &amp;&amp; request.targetType() == ResourceRequestBase::TargetIsMainFrame);

Nit: please extract isMainResource.

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:35
&gt; +    this._lastIdentifier = 0;

_lastIdentifierForCachedResource ?

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:282
&gt; +        if (typeof identifier === &quot;number&quot;)

This is a very dirty hack, please remove.

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:770
&gt; +    resourceById: function(id)

id does not make sense for resources loaded before front-end opening. Hence WebInspector.resourceById or NetworkManager::resourceById should not exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333655</commentid>
    <comment_count>3</comment_count>
      <attachid>78803</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-13 06:14:20 -0800</bug_when>
    <thetext>Created attachment 78803
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333657</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 06:16:35 -0800</bug_when>
    <thetext>Attachment 78803 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorController.h:313:  The parameter name &quot;loader&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorController.h:313:  The parameter name &quot;request&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333660</commentid>
    <comment_count>5</comment_count>
      <attachid>78803</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-13 06:38:31 -0800</bug_when>
    <thetext>Comment on attachment 78803
patch

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:671
&gt; +                var resource = this._requestId &amp;&amp; WebInspector.panels.network.resourceById(this._requestId);

WebInspector.networkResourcesById()

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:291
&gt; +        resource = WebInspector.panels.network.resourceById(id) || WebInspector.resourceForURL(id);

I like the way it was more.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:321
&gt; +        var resource = WebInspector.panels.network.resourceById(message.id);

ditto.

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:100
&gt; +            WebInspector.panels.network.mainResourceChanged();

Updating main resource here and resetting network panel can&apos;t be done here.

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:220
&gt; +        var resource = WebInspector.panels.network.resourceById(identifier);

ditto

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:305
&gt; +        this._resourceTreeModel.bindResourceURL(resource);

You should be careful with bindResourceURL since unbind is automated and is only called for frame&apos;s resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333755</commentid>
    <comment_count>6</comment_count>
      <attachid>78821</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-13 10:06:44 -0800</bug_when>
    <thetext>Created attachment 78821
patch

- Moved main resource detection from identifierForInitialRequest() back to didCommitLoad()
- Automatically bind resource to URL in ResourceTreeModel.createResource()
- Got rid of NetworkManager._createResource()
- Unbind redirected resources

Re WebInspector.networkResourcesById() and WebInspector.networkResources: the idea is that most consumers need a list and do not (or should not) care about resource ids, so I&apos;m splitting the old WebInspector.networkResources &quot;map&quot; into an array and a method to retrieve specific resource by id. The latter is deprecated, sort of (it is currently used by extension server, which ultimately should maintain its own ids, and ConsoleView, which uses it to provide additional info for network errors).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333756</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 10:08:25 -0800</bug_when>
    <thetext>Attachment 78821 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InspectorController.h:313:  The parameter name &quot;loader&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorController.h:313:  The parameter name &quot;request&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333760</commentid>
    <comment_count>8</comment_count>
      <attachid>78823</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-13 10:14:12 -0800</bug_when>
    <thetext>Created attachment 78823
patch

Removed InspectorController::isMainResource()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334203</commentid>
    <comment_count>9</comment_count>
      <attachid>78823</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-14 02:21:07 -0800</bug_when>
    <thetext>Comment on attachment 78823
patch

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:671
&gt; +                var resource = this._requestId &amp;&amp; WebInspector.panels.network.resourceById(this._requestId);

Please fix this usage as well.

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:93
&gt; +        this._resourcesById[identifier] = resource;

Nit: _resourcesById -&gt; _resourcesBeingLoadedById (in flight)

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:294
&gt; +        this._resourceTreeModel.unbindResourceURL(originalResource);

Nit: add FIXME: we should bind upon adding to the tree only (encapsulated into ResourceTreeModel), Script debugger should do explicit late binding on its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334240</commentid>
    <comment_count>10</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-01-14 04:50:06 -0800</bug_when>
    <thetext>Manually committed r75786: http://trac.webkit.org/changeset/75786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334250</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 05:14:30 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75786 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
http/tests/inspector/extensions-resources-redirect.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78696</attachid>
            <date>2011-01-12 09:02:56 -0800</date>
            <delta_ts>2011-01-13 06:14:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>redirect-har.diff</filename>
            <type>text/plain</type>
            <size>23982</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMjZlMDA0Li44ZWJiNDNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEt
MTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRpcmVj
dGVkIHJlc291cmNlcyBub3QgaGFuZGxlZCBwcm9wZXJseSBpbiBOZXR3b3JrIHBhbmVsCisgICAg
ICAgIEFkZGVkIHRlc3QgZm9yIHJlZGlyZWN0ZWQgcmVzb3VyY2UgcHJlc2VuY2UgaW4gSEFSCisg
ICAgICAgIENoYW5nZWQgdGVzdCB0byByZXF1ZXN0IGVudGlyZSBIQVIgbG9nLCBub3QgbXVsdGlw
bGUgSEFSIGVudHJpZXMuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIyOTIKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWw6CisKIDIwMTAtMTItMjkg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGly
ZWN0LWV4cGVjdGVkLnR4dAppbmRleCBlOGM3YjM1Li4xNmRmNDkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVj
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0
ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsMTMgQEAg
U3RhcnRlZCBleHRlbnNpb24uCiAKIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcgVEVTVDogZXh0
ZW5zaW9uX3Rlc3RHZXRSZWRpcmVjdFJlc291cmNlQ29udGVudAotY29udGVudDogLCBlbmNvZGlu
ZzogYmFzZTY0Citjb250ZW50OiB1bmRlZmluZWQsIGVuY29kaW5nOiB1bmRlZmluZWQKK1JVTk5J
TkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RSZWRpcmVjdFJlc291cmNlc0luSEFSCitSZXNvdXJjZXMg
aW4gSEFSOgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291
cmNlcy10ZXN0LmpzCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
dGVzdC5qcworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIu
anMKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIKIEFs
bCB0ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRtbAppbmRl
eCBjM2I5NDc5Li4xNzg5NTRhIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0
bWwKQEAgLTUsNiArNSwyMCBAQAogPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKK2Z1bmN0aW9uIGV4dGVu
c2lvbl9kb1JlcXVlc3QoY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVy
KCkKKyAgICB7CisgICAgICAgIHdlYkluc3BlY3Rvci5yZXNvdXJjZXMub25GaW5pc2hlZC5yZW1v
dmVMaXN0ZW5lcihjYWxsYmFja1dyYXBwZXIpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0K
KyAgICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIoY2FsbGJh
Y2tXcmFwcGVyKTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImRvUmVx
dWVzdCgpIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICAgICBjYWxsYmFja1dyYXBwZXIoKTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gZXh0ZW5zaW9u
X3Rlc3RHZXRSZWRpcmVjdFJlc291cmNlQ29udGVudChuZXh0VGVzdCkKIHsKICAgICBmdW5jdGlv
biBvbkZpbmlzaGVkKCkKQEAgLTE4LDE3ICszMiw0MiBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVz
dEdldFJlZGlyZWN0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQogICAgICAgICBvdXRwdXQoImNv
bnRlbnQ6ICIgKyBjb250ZW50ICsgIiwgZW5jb2Rpbmc6ICIgKyBlbmNvZGluZyk7CiAgICAgICAg
IG5leHRUZXN0KCk7CiAgICAgfQorICAgIGV4dGVuc2lvbl9kb1JlcXVlc3Qob25GaW5pc2hlZCk7
Cit9CiAKLSAgICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIo
b25GaW5pc2hlZCk7Ci0gICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJkb1Jl
cXVlc3QoKSIpOworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RSZWRpcmVjdFJlc291cmNlc0luSEFS
KG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uRmluaXNoZWQoKQorICAgIHsKKyAgICAgICAg
d2ViSW5zcGVjdG9yLnJlc291cmNlcy5nZXRIQVIob25IQVIpOworICAgIH0KKyAgICBmdW5jdGlv
biBvbkhBUihoYXIpCisgICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5lbnRyaWVzOwor
ICAgICAgICB2YXIgdXJscyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJp
ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB1cmxzLnB1c2goZW50cmllc1tpXS5yZXF1ZXN0
LnVybCk7CisgICAgICAgIHVybHMuc29ydCgpOworICAgICAgICBvdXRwdXQoIlJlc291cmNlcyBp
biBIQVI6XG4iICsgdXJscy5qb2luKCJcbiIpKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9
CisgICAgZXh0ZW5zaW9uX2RvUmVxdWVzdChvbkZpbmlzaGVkKTsKIH0KIAordmFyIHJlcXVlc3RE
b25lID0gZmFsc2U7CisKIGZ1bmN0aW9uIGRvUmVxdWVzdCgpCiB7CisgICAgLy8gT25seSBkbyBy
ZXF1ZXN0IG9uY2UgcGVyIHRlc3Qgc3VpdGUsIHRvIG1ha2UgdGVzdHMgaW5kZXBlbmRlbnQgb24g
ZWFjaCBvdGhlci4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWZmIHJlcXVlc3QgaXMgYWxyZWR5IGRv
bmUgKHNvIHRoZSBjYWxsZXIgc2hvdWxkbid0IHdhaXQgZm9yIG9uRmluaXNoZWQpLgorICAgIGlm
IChyZXF1ZXN0RG9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmVxdWVzdERvbmUgPSB0
cnVlOwogICAgIC8vIFdlIGNhbid0IHVzZSBYSFIgaGVyZSAtLSB0aGUgY29udGVudCBmb3IgWEhS
cyBpcyBwdXNoZWQgZnJvbSBiYWNrLWVuZC4KICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CiAgICAgaWZyYW1lLnNyYyA9ICIvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIiOwogICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2UtaGFyLWNvbnZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKaW5kZXggNGRiNTE4ZS4uNTFjNzg5NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNv
bnZlcnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZS1oYXItY29udmVyc2lvbi5odG1sCkBAIC03LDExICs3LDYgQEAKIAogdmFyIHRlc3QgPSBm
dW5jdGlvbigpCiB7Ci0gICAgZnVuY3Rpb24gZ2V0SEFSKGlkKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJj
ZXNbaWRdKS5idWlsZCgpOwotICAgIH0KLQogICAgIGZ1bmN0aW9uIGFkZENvb2tpZUhlYWRlcnNU
b1Jlc291cmNlKHJlc291cmNlKQogICAgIHsKICAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRl
cnMgPSB7CkBAIC0zMyw4ICsyOCw5IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgIEluc3Bl
Y3RvclRlc3QucmVsb2FkUGFnZUlmTmVlZGVkKGZ1bmN0aW9uKCkgewogICAgICAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoImRvWEhSKCkiLCAiY29uc29sZSIs
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYWRkQ29va2llSGVhZGVyc1RvUmVzb3VyY2UoZmlu
ZFJlc291cmNlQnlVUkwoL2luc3BlY3Rvci10ZXN0MlwuanMkLykpOwotICAgICAgICAgICAgdmFy
IHJlc291cmNlcyA9IE9iamVjdC5rZXlzKFdlYkluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VzKS5t
YXAoZ2V0SEFSKS5zb3J0KEluc3BlY3RvclRlc3QucmVzb3VyY2VVUkxDb21wYXJlcik7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE9iamVjdChyZXNvdXJjZXMsIEluc3BlY3RvclRlc3Qu
SEFSTm9uZGV0ZXJtaW5pc3RpY1Byb3BlcnRpZXNXaXRoU2l6ZSk7CisgICAgICAgICAgICB2YXIg
ZW50cmllcyA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxvZygpKS5idWlsZCgpLmVudHJpZXM7Cisg
ICAgICAgICAgICBlbnRyaWVzLnNvcnQoSW5zcGVjdG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVy
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkT2JqZWN0KGVudHJpZXMsIEluc3BlY3Rv
clRlc3QuSEFSTm9uZGV0ZXJtaW5pc3RpY1Byb3BlcnRpZXNXaXRoU2l6ZSk7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwKaW5kZXgg
MGI1MGQxYS4uMmYwZjczYyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMtcmVzb3VyY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLmh0bWwKQEAgLTM3LDcgKzM3LDcgQEAgZnVuY3Rpb24gZXh0ZW5zaW9uX3Rl
c3RHZXRIQVIobmV4dFRlc3QpCiBmdW5jdGlvbiBkb1hIUigpCiB7CiAgICAgdmFyIHhociA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJHRVQiLCBsb2NhdGlvbi5ocmVmLCBm
YWxzZSk7CisgICAgeGhyLm9wZW4oIkdFVCIsICIiLCBmYWxzZSk7CiAgICAgeGhyLnNlbmQobnVs
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmYxMDczLi41OTM5MTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDEgQEAKKzIwMTEtMDEtMTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZWRpcmVjdGVkIHJlc291cmNlcyBub3QgaGFuZGxlZCBwcm9wZXJseSBp
biBOZXR3b3JrIHBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjI5MgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKTogRml4IG1haW4gcmVzb3VyY2UgZGV0ZWN0
aW9uLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6IFdlYklu
c3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VzIG5vdyByZXR1cm5zIGFycmF5LCBub3QgbWFwLgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6IFVzZXIgV2ViSW5zcGVj
dG9yLnJlc291cmNlQnlJZCgpIHRvIGdldCByZXNvdXJjZQorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6IERpdHRvLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uUmV2ZWFsQW5kU2VsZWN0UmVz
b3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUu
X29uR2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hB
UkVudHJ5LmpzOiBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlcyBub3cgcmV0dXJucyBhcnJh
eSwgbm90IG1hcAorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuYnVpbGQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuX2NvbnZlcnRSZXNvdXJj
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlcik6IFVzZSBhcHBlbmRSZXNvdXJjZSwg
bm90IHJlZnJlc2hSZXNvdXJjZSwgd2hlbiBhZGRpbmcgYSBuZXcgcmVzb3VyY2UuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIucHJvdG90eXBlLmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnNldEluaXRpYWxDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkQ29tbWl0
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90
b3R5cGUuZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKTogYWx3YXlzIHJlZ2lzdGVyIHJlc291
cmNlIFVSTCB3aXRoIFJlc291cmNlVHJlZU1vZGVsIAorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fYXBwZW5kUmVkaXJlY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZS5nZXQgcmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJv
dG90eXBlLnJlc291cmNlQnlJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVs
LnByb3RvdHlwZS5hcHBlbmRSZXNvdXJjZSk6IEFkZCByZXNvdXJjZSBhcyBuZXcgaWZmIGFwcGVu
ZFJlc291cmNlIHdhcyBhZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlLnJlZnJlc2hSZXNvdXJjZSk6IGRpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtQYW5lbC5wcm90b3R5cGUubWFpblJlc291cmNlQ2hhbmdlZCk6IENsZWFyIGNvbnNv
bGUgdXBvbiBhcnJpdmFsIG9mIG5ldyBtYWluIHJlc291cmNlLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnJlc291cmNl
QnlJZCk6CisKIDIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXgg
OTM5NWRkNS4uZjNiYmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM4Miw3ICszODIsOCBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJ
bnNwZWN0b3JDb250cm9sbAogICAgIGljLT5lbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwogCiAgICAg
aWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291
cmNlQWdlbnQoaWMpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9hZGVyLCBpYy0+aXNNYWluUmVz
b3VyY2VMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnVybCgpKSk7CisgICAgICAgIHJlc291cmNlQWdl
bnQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgp
LCBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpYy0+aXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnVybCgpKSAmJiBy
ZXF1ZXN0LnRhcmdldFR5cGUoKSA9PSBSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc01haW5G
cmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQXVkaXRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1
ZGl0c1BhbmVsLmpzCmluZGV4IGM0MjA3N2YuLmM2MzlmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTI5LDkgKzEyOSw3IEBA
IFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZXhlY3V0ZUF1
ZGl0OiBmdW5jdGlvbihjYXRlZ29yaWVzLCByZXN1bHRDYWxsYmFjaykKICAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaWQgaW4gV2ViSW5zcGVjdG9y
Lm5ldHdvcmtSZXNvdXJjZXMpCi0gICAgICAgICAgICByZXNvdXJjZXMucHVzaChXZWJJbnNwZWN0
b3IubmV0d29ya1Jlc291cmNlc1tpZF0pOworICAgICAgICB2YXIgcmVzb3VyY2VzID0gV2ViSW5z
cGVjdG9yLm5ldHdvcmtSZXNvdXJjZXM7CiAKICAgICAgICAgdmFyIHJ1bGVzUmVtYWluaW5nID0g
MDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMK
aW5kZXggYzk4NTUyZC4uOWY5Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC02NjgsNyArNjY4LDcgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBtZXNzYWdl
VGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX21lc3NhZ2VUZXh0KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKLSAgICAgICAgICAgICAgICB2YXIgcmVz
b3VyY2UgPSB0aGlzLl9yZXF1ZXN0SWQgJiYgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
c291cmNlc1t0aGlzLl9yZXF1ZXN0SWRdOworICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IHRoaXMuX3JlcXVlc3RJZCAmJiBXZWJJbnNwZWN0b3IucmVzb3VyY2VCeUlkKHRoaXMuX3JlcXVl
c3RJZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrVHJhY2UgPSByZXNvdXJjZS5zdGFja1RyYWNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IDM3
M2M4NTUuLmJlZjkyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yODgsNyArMjg4LDcgQEAgV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpZCA9IG1lc3NhZ2Uu
aWQ7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IG51bGw7CiAKLSAgICAgICAgcmVzb3VyY2UgPSBX
ZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0gfHwgV2ViSW5zcGVjdG9yLnJlc291cmNl
Rm9yVVJMKGlkKTsKKyAgICAgICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VCeUlk
KGlkKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoaWQpOwogICAgICAgICBpZiAoIXJl
c291cmNlKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHR5cGVv
ZiBpZCArICI6ICIgKyBpZCk7CiAKQEAgLTMxOCw3ICszMTgsNyBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB0
aGlzLl9kaXNwYXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7
CiAgICAgICAgIH0KLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtS
ZXNvdXJjZXNbbWVzc2FnZS5pZF07CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUJ5SWQobWVzc2FnZS5pZCk7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS5pZCk7CiAgICAg
ICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50
cnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCmlu
ZGV4IDZkZmJkMWIuLjRkNjkwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSEFSRW50cnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IQVJFbnRyeS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjA0LDcgKzIwNCw3IEBAIFdlYkluc3BlY3Rvci5IQVJMb2cu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZlcnNpb246IHdlYktpdFZlcnNpb24gPyB3
ZWJLaXRWZXJzaW9uWzFdIDogIm4vYSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBwYWdl
czogdGhpcy5fYnVpbGRQYWdlcygpLAotICAgICAgICAgICAgZW50cmllczogT2JqZWN0LmtleXMo
V2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcCh0aGlzLl9jb252ZXJ0UmVzb3VyY2Uu
YmluZCh0aGlzKSkKKyAgICAgICAgICAgIGVudHJpZXM6IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVz
b3VyY2VzLm1hcCh0aGlzLl9jb252ZXJ0UmVzb3VyY2UuYmluZCh0aGlzKSkKICAgICAgICAgfQog
ICAgIH0sCiAKQEAgLTIyOCwxMSArMjI4LDExIEBAIFdlYkluc3BlY3Rvci5IQVJMb2cucHJvdG90
eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0
aW9uKGlkKQorICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsK
LSAgICAgICAgdmFyIGVudHJ5ID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkoV2ViSW5zcGVj
dG9yLm5ldHdvcmtSZXNvdXJjZXNbaWRdKSkuYnVpbGQoKTsKKyAgICAgICAgdmFyIGVudHJ5ID0g
KG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkocmVzb3VyY2UpKS5idWlsZCgpOwogICAgICAgICBp
ZiAodGhpcy5pbmNsdWRlUmVzb3VyY2VJZHMpCi0gICAgICAgICAgICBlbnRyeS5fcmVzb3VyY2VJ
ZCA9IGlkOworICAgICAgICAgICAgZW50cnkuX3Jlc291cmNlSWQgPSByZXNvdXJjZS5pZGVudGlm
aWVyOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggOWM5Mzgx
Yi4uZDkzMGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMiw3IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlciA9IGZ1bmN0aW9uKHJlc291cmNlVHJlZU1vZGVsKQogewogICAgIHRoaXMu
X3Jlc291cmNlc0J5SWQgPSB7fTsKICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbCA9IHJlc291
cmNlVHJlZU1vZGVsOworICAgIHRoaXMuX2xhc3RJZGVudGlmaWVyID0gMDsKICAgICBJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiTmV0d29yayIsIHRoaXMpOwogfQog
CkBAIC04OSwxNiArOTAsMTMgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHVybCwgbG9hZGVyLCBpc01haW5SZXNvdXJjZSwgY2FsbFN0YWNrKQogICAgIHsKICAgICAg
ICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgdXJsLCBs
b2FkZXIsIGNhbGxTdGFjayk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5h
cHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVk
aXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CiAgICAgICAgIGlmIChpc01haW5SZXNvdXJj
ZSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IHJlc291cmNlOwog
ICAgICAgICAgICAgcmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLm1haW5SZXNvdXJjZUNoYW5nZWQoKTsKICAgICAgICAgfQot
Ci0gICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBlYXJseSAo
YmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCi0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVs
LmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CiAgICAgfSwKIAogICAg
IHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkKQEAgLTEyMCw3ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOwog
CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2Up
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwpAQCAtMTk3LDE0ICsxOTUsMTQgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIGRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2FjaGVkUmVzb3VyY2UpCiAgICAgewot
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRS
ZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKCJjYWNoZWQ6IiArICsrdGhpcy5fbGFzdElkZW50aWZp
ZXIsIGNhY2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291
cmNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgICAgIHJlc291cmNlLmNhY2hlZCA9
IHRydWU7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKICAgICAgICAg
cmVzb3VyY2Uuc3RhcnRUaW1lID0gcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSByZXNv
dXJjZS5lbmRUaW1lID0gdGltZTsKICAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwog
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVz
b3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuYXBwZW5kUmVzb3Vy
Y2UocmVzb3VyY2UpOwogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJj
ZVN0YXJ0ZWQocmVzb3VyY2UpOwogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5y
ZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9k
ZWwuYWRkUmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7
CkBAIC0yMTcsNyArMjE1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKIAogICAgIHNldEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihpZGVudGlmaWVyLCBzb3Vy
Y2VTdHJpbmcsIHR5cGUpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW2lkZW50aWZpZXJdOworICAgICAgICB2YXIgcmVz
b3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VCeUlkKGlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzAsMTQgKzIyOCwxMyBA
QCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgIGRpZENvbW1p
dExvYWRGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxvYWRlcikKICAgICB7CiAgICAgICAgIHRo
aXMuX3Jlc291cmNlVHJlZU1vZGVsLmRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZSwgbG9hZGVy
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShX
ZWJJbnNwZWN0b3IubWFpblJlc291cmNlKTsKICAgICB9LAogCiAgICAgZGlkQ3JlYXRlV2ViU29j
a2V0OiBmdW5jdGlvbihpZGVudGlmaWVyLCByZXF1ZXN0VVJMKQogICAgIHsKICAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVxdWVzdFVSTCk7
CiAgICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJT
b2NrZXQ7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3Vy
Y2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuYXBwZW5k
UmVzb3VyY2UocmVzb3VyY2UpOwogICAgIH0sCiAKICAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlcXVlc3QpCkBAIC0yODIs
MTggKzI3OSwyMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewog
ICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNh
bGxTdGFjaykKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2Fs
bFN0YWNrKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291
cmNlOworICAgICAgICBpZiAodHlwZW9mIGlkZW50aWZpZXIgPT09ICJudW1iZXIiKQorICAgICAg
ICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOworICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwogICAg
ICAgICByZXR1cm4gcmVzb3VyY2U7CiAgICAgfSwKIAogICAgIF9hcHBlbmRSZWRpcmVjdDogZnVu
Y3Rpb24oaWRlbnRpZmllciwgcmVkaXJlY3RVUkwpCiAgICAgewogICAgICAgICB2YXIgb3JpZ2lu
YWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIHZh
ciBwcmV2aW91c1JlZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOwog
ICAgICAgICBvcmlnaW5hbFJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2lu
YWxSZXNvdXJjZS5pZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgb3JpZ2luYWxSZXNvdXJjZS5p
ZGVudGlmaWVyID0gInJlZGlyZWN0ZWQ6IiArIGlkZW50aWZpZXIgKyAiLiIgKyBwcmV2aW91c1Jl
ZGlyZWN0cy5sZW5ndGg7CiAKICAgICAgICAgdmFyIG5ld1Jlc291cmNlID0gdGhpcy5fY3JlYXRl
UmVzb3VyY2UoaWRlbnRpZmllciwgcmVkaXJlY3RVUkwsIG9yaWdpbmFsUmVzb3VyY2UubG9hZGVy
LCBvcmlnaW5hbFJlc291cmNlLnN0YWNrVHJhY2UpOwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRp
cmVjdHMgPSBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0cyB8fCBbXTsKKyAgICAgICAgbmV3UmVz
b3VyY2UucmVkaXJlY3RzID0gcHJldmlvdXNSZWRpcmVjdHM7CiAgICAgICAgIGRlbGV0ZSBvcmln
aW5hbFJlc291cmNlLnJlZGlyZWN0czsKICAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzLnB1
c2gob3JpZ2luYWxSZXNvdXJjZSk7CiAgICAgICAgIGlmIChvcmlnaW5hbFJlc291cmNlLmlzTWFp
blJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCmluZGV4IDdiNmRmOGIuLjEwMWQzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFudGhvbnkgUmljYXVk
IDxyaWtAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
Ll9yZXNvdXJjZXMgPSBbXTsKICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkID0ge307CiAgICAgdGhp
cy5fcmVzb3VyY2VzQnlVUkwgPSB7fTsKLSAgICB0aGlzLl9sYXN0SWRlbnRpZmllciA9IDA7CiAg
ICAgdGhpcy5fc3RhbGVSZXNvdXJjZXMgPSBbXTsKICAgICB0aGlzLl9yZXNvdXJjZUdyaWROb2Rl
cyA9IHt9OwogICAgIHRoaXMuX21haW5SZXNvdXJjZUxvYWRUaW1lID0gLTE7CkBAIC03MzMsMTIg
KzczMiw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkID0gIXRoaXMuX3ByZXNlcnZlTG9nVG9n
Z2xlLnRvZ2dsZWQ7CiAgICAgfSwKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQpCi0gICAgICAgICAgICB0
aGlzLl9yZXNldCgpOwotICAgIH0sCi0KICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcHVwKCk7CkBAIC03NzEsMzIgKzc2NCwz
NCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBy
ZXNvdXJjZXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0J5SWQ7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7CiAgICAgfSwKIAotICAgIHJlZnJlc2hSZXNv
dXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgcmVzb3VyY2VCeUlkOiBmdW5jdGlvbihpZCkK
ICAgICB7Ci0gICAgICAgIGlmICghcmVzb3VyY2UuaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJl
c291cmNlLmlkZW50aWZpZXIgPSAibmV0d29yazoiICsgdGhpcy5fbGFzdElkZW50aWZpZXIrKzsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRdOworICAgIH0sCiAKLSAgICAg
ICAgaWYgKCF0aGlzLl9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLmlkZW50aWZpZXJdKSB7Ci0gICAg
ICAgICAgICB0aGlzLl9yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7Ci0gICAgICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLmlkZW50aWZpZXJdID0gcmVzb3VyY2U7Ci0gICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2U7CisgICAg
YXBwZW5kUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkW3Jl
c291cmNlLmlkZW50aWZpZXJdID0gcmVzb3VyY2U7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5
VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKIAotICAgICAgICAgICAgLy8gUHVsbCBhbGwg
dGhlIHJlZGlyZWN0cyBvZiB0aGUgbWFpbiByZXNvdXJjZSB1cG9uIGNvbW1pdCBsb2FkLgotICAg
ICAgICAgICAgaWYgKHJlc291cmNlLnJlZGlyZWN0cykgewotICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UucmVkaXJlY3RzLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgICAgICAgICB0aGlzLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZS5yZWRpcmVjdHNbaV0pOwot
ICAgICAgICAgICAgfQorICAgICAgICAvLyBQdWxsIGFsbCB0aGUgcmVkaXJlY3RzIG9mIHRoZSBt
YWluIHJlc291cmNlIHVwb24gY29tbWl0IGxvYWQuCisgICAgICAgIGlmIChyZXNvdXJjZS5yZWRp
cmVjdHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UucmVkaXJl
Y3RzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFJlc291cmNlKHJl
c291cmNlLnJlZGlyZWN0c1tpXSk7CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIHJlZnJlc2hSZXNvdXJjZTogZnVuY3Rp
b24ocmVzb3VyY2UpCisgICAgewogICAgICAgICB0aGlzLl9zdGFsZVJlc291cmNlcy5wdXNoKHJl
c291cmNlKTsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7CiAKLSAgICAgICAgaWYg
KCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICB2YXIgb2xkVmlldyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJj
ZShyZXNvdXJjZSk7CiAgICAgICAgIGlmICghb2xkVmlldykKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTgwOSw2ICs4MDQsMTcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gbmV3VmlldzsKICAgICB9LAogCisg
ICAgbWFpblJlc291cmNlQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICAgICAgLy8gTm93IHJlc3VycmVjdCB0aGUgbWFpbiBy
ZXNvdXJjZSBhbG9uZyB3aXRoIGFsbCByZWRpcmVjdHMgdGhhdCBsZWFkIHRvIGl0LgorICAgICAg
ICB2YXIgcmVzb3VyY2VzVG9BcHBlbmQgPSAoV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZS5yZWRp
cmVjdHMgfHwgW10pLmNvbmNhdChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlKTsKKyAgICAgICAg
cmVzb3VyY2VzVG9BcHBlbmQuZm9yRWFjaCh0aGlzLmFwcGVuZFJlc291cmNlLCB0aGlzKTsKKyAg
ICB9LAorCiAgICAgY2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKICAgICB7
CiAgICAgICAgIHJldHVybiAhIXRoaXMuX3Jlc291cmNlc0J5VVJMW3VybF07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGIxZjBjNzgu
LmNjMzY1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCkBAIC00NDMsNiArNDQzLDExIEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLnBhbmVscy5uZXR3b3JrLnJlc291cmNlczsKICAgICB9LAogCisgICAg
cmVzb3VyY2VCeUlkOiBmdW5jdGlvbihpZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlQnlJZChpZCk7CisgICAgfSwKKwogICAgIGZvckFsbFJlc291
cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsK
</data>
<flag name="review"
          id="70054"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78803</attachid>
            <date>2011-01-13 06:14:20 -0800</date>
            <delta_ts>2011-01-13 10:06:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>redirect-har.diff</filename>
            <type>text/plain</type>
            <size>25242</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZlZWNiLi43ZjdmNWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEt
MTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRpcmVj
dGVkIHJlc291cmNlcyBub3QgaGFuZGxlZCBwcm9wZXJseSBpbiBOZXR3b3JrIHBhbmVsCisgICAg
ICAgIEFkZGVkIHRlc3QgZm9yIHJlZGlyZWN0ZWQgcmVzb3VyY2UgcHJlc2VuY2UgaW4gSEFSCisg
ICAgICAgIENoYW5nZWQgdGVzdCB0byByZXF1ZXN0IGVudGlyZSBIQVIgbG9nLCBub3QgbXVsdGlw
bGUgSEFSIGVudHJpZXMuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIyOTIKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWw6CisKIDIwMTEtMDEtMTMg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0
ZWQudHh0CmluZGV4IGU4YzdiMzUuLjE2ZGY0OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXJl
c291cmNlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQKQEAgLTQsNiArNCwxMyBAQCBTdGFydGVkIGV4
dGVuc2lvbi4KIAogUnVubmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVz
dEdldFJlZGlyZWN0UmVzb3VyY2VDb250ZW50Ci1jb250ZW50OiAsIGVuY29kaW5nOiBiYXNlNjQK
K2NvbnRlbnQ6IHVuZGVmaW5lZCwgZW5jb2Rpbmc6IHVuZGVmaW5lZAorUlVOTklORyBURVNUOiBl
eHRlbnNpb25fdGVzdFJlZGlyZWN0UmVzb3VyY2VzSW5IQVIKK1Jlc291cmNlcyBpbiBIQVI6Cito
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXRlc3Qu
anMKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCito
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcworaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocD9yZWRpcmVjdGVkPXRydWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/c3RhdHVzPTMwMgogQWxsIHRlc3RzIGRv
bmUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sCmluZGV4IGMzYjk0Nzku
LjE3ODk1NGEgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRtbApAQCAtNSw2
ICs1LDIwIEBACiA8c2NyaXB0IHNyYz0iZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAorZnVuY3Rpb24gZXh0ZW5zaW9uX2RvUmVx
dWVzdChjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFja1dyYXBwZXIoKQorICAgIHsK
KyAgICAgICAgd2ViSW5zcGVjdG9yLnJlc291cmNlcy5vbkZpbmlzaGVkLnJlbW92ZUxpc3RlbmVy
KGNhbGxiYWNrV3JhcHBlcik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorICAgIHdlYklu
c3BlY3Rvci5yZXNvdXJjZXMub25GaW5pc2hlZC5hZGRMaXN0ZW5lcihjYWxsYmFja1dyYXBwZXIp
OworICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cuZXZhbCgiZG9SZXF1ZXN0KCkiLCBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIGNhbGxi
YWNrV3JhcHBlcigpOworICAgIH0pOworfQorCiBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldFJl
ZGlyZWN0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQogewogICAgIGZ1bmN0aW9uIG9uRmluaXNo
ZWQoKQpAQCAtMTgsMTcgKzMyLDQyIEBAIGZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0R2V0UmVkaXJl
Y3RSZXNvdXJjZUNvbnRlbnQobmV4dFRlc3QpCiAgICAgICAgIG91dHB1dCgiY29udGVudDogIiAr
IGNvbnRlbnQgKyAiLCBlbmNvZGluZzogIiArIGVuY29kaW5nKTsKICAgICAgICAgbmV4dFRlc3Qo
KTsKICAgICB9CisgICAgZXh0ZW5zaW9uX2RvUmVxdWVzdChvbkZpbmlzaGVkKTsKK30KIAotICAg
IHdlYkluc3BlY3Rvci5yZXNvdXJjZXMub25GaW5pc2hlZC5hZGRMaXN0ZW5lcihvbkZpbmlzaGVk
KTsKLSAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImRvUmVxdWVzdCgpIik7
CitmdW5jdGlvbiBleHRlbnNpb25fdGVzdFJlZGlyZWN0UmVzb3VyY2VzSW5IQVIobmV4dFRlc3Qp
Cit7CisgICAgZnVuY3Rpb24gb25GaW5pc2hlZCgpCisgICAgeworICAgICAgICB3ZWJJbnNwZWN0
b3IucmVzb3VyY2VzLmdldEhBUihvbkhBUik7CisgICAgfQorICAgIGZ1bmN0aW9uIG9uSEFSKGhh
cikKKyAgICB7CisgICAgICAgIHZhciBlbnRyaWVzID0gaGFyLmVudHJpZXM7CisgICAgICAgIHZh
ciB1cmxzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIHVybHMucHVzaChlbnRyaWVzW2ldLnJlcXVlc3QudXJsKTsKKyAg
ICAgICAgdXJscy5zb3J0KCk7CisgICAgICAgIG91dHB1dCgiUmVzb3VyY2VzIGluIEhBUjpcbiIg
KyB1cmxzLmpvaW4oIlxuIikpOworICAgICAgICBuZXh0VGVzdCgpOworICAgIH0KKyAgICBleHRl
bnNpb25fZG9SZXF1ZXN0KG9uRmluaXNoZWQpOwogfQogCit2YXIgcmVxdWVzdERvbmUgPSBmYWxz
ZTsKKwogZnVuY3Rpb24gZG9SZXF1ZXN0KCkKIHsKKyAgICAvLyBPbmx5IGRvIHJlcXVlc3Qgb25j
ZSBwZXIgdGVzdCBzdWl0ZSwgdG8gbWFrZSB0ZXN0cyBpbmRlcGVuZGVudCBvbiBlYWNoIG90aGVy
LgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgcmVxdWVzdCBpcyBhbHJlZHkgZG9uZSAoc28gdGhl
IGNhbGxlciBzaG91bGRuJ3Qgd2FpdCBmb3Igb25GaW5pc2hlZCkuCisgICAgaWYgKHJlcXVlc3RE
b25lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXF1ZXN0RG9uZSA9IHRydWU7CiAgICAg
Ly8gV2UgY2FuJ3QgdXNlIFhIUiBoZXJlIC0tIHRoZSBjb250ZW50IGZvciBYSFJzIGlzIHB1c2hl
ZCBmcm9tIGJhY2stZW5kLgogICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKICAgICBpZnJhbWUuc3JjID0gIi9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLXJlc3VsdC5waHA/c3RhdHVzPTMwMiI7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWUpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29u
dmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
aGFyLWNvbnZlcnNpb24uaHRtbAppbmRleCA0ZGI1MThlLi41MWM3ODk0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1j
b252ZXJzaW9uLmh0bWwKQEAgLTcsMTEgKzcsNiBAQAogCiB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBmdW5jdGlvbiBnZXRIQVIoaWQpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IQVJFbnRyeShXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0pLmJ1
aWxkKCk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gYWRkQ29va2llSGVhZGVyc1RvUmVzb3VyY2Uo
cmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHsKQEAg
LTMzLDggKzI4LDkgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yVGVzdC5y
ZWxvYWRQYWdlSWZOZWVkZWQoZnVuY3Rpb24oKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNj
ZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZSgiZG9YSFIoKSIsICJjb25zb2xlIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICBhZGRDb29raWVIZWFkZXJzVG9SZXNvdXJjZShmaW5kUmVzb3VyY2VC
eVVSTCgvaW5zcGVjdG9yLXRlc3QyXC5qcyQvKSk7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2Vz
ID0gT2JqZWN0LmtleXMoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcChnZXRIQVIp
LnNvcnQoSW5zcGVjdG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkT2JqZWN0KHJlc291cmNlcywgSW5zcGVjdG9yVGVzdC5IQVJOb25kZXRl
cm1pbmlzdGljUHJvcGVydGllc1dpdGhTaXplKTsKKyAgICAgICAgICAgIHZhciBlbnRyaWVzID0g
KG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKCkpLmJ1aWxkKCkuZW50cmllczsKKyAgICAgICAgICAg
IGVudHJpZXMuc29ydChJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFyZXIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QoZW50cmllcywgSW5zcGVjdG9yVGVzdC5IQVJO
b25kZXRlcm1pbmlzdGljUHJvcGVydGllc1dpdGhTaXplKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAppbmRleCAwYjUwZDFhLi4y
ZjBmNzNjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNv
dXJjZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJj
ZXMuaHRtbApAQCAtMzcsNyArMzcsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldEhBUihu
ZXh0VGVzdCkKIGZ1bmN0aW9uIGRvWEhSKCkKIHsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4oIkdFVCIsIGxvY2F0aW9uLmhyZWYsIGZhbHNlKTsKKyAg
ICB4aHIub3BlbigiR0VUIiwgIiIsIGZhbHNlKTsKICAgICB4aHIuc2VuZChudWxsKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGNjNWZhMzcuLjZiZGI5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAxMS0wMS0xMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZGlyZWN0ZWQgcmVzb3VyY2VzIG5vdCBoYW5kbGVkIHByb3Blcmx5IGluIE5ldHdvcmsg
cGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUy
MjkyCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDog
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdEltcGwpOiBGaXggbWFpbiByZXNvdXJjZSBkZXRlY3Rpb24uCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qczogV2ViSW5zcGVjdG9yLm5l
dHdvcmtSZXNvdXJjZXMgbm93IHJldHVybnMgYXJyYXksIG5vdCBtYXAuCisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczogVXNlciBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VCeUlkKCkgdG8gZ2V0IHJlc291cmNlCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UucHJvdG90eXBlLl9mb3JtYXRNZXNzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25SZXZlYWxBbmRTZWxlY3RSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25HZXRSZXNv
dXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6
IFdlYkluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VzIG5vdyByZXR1cm5zIGFycmF5LCBub3QgbWFw
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSEFSTG9nLnByb3RvdHlwZS5idWlsZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSEFSTG9nLnByb3RvdHlwZS5fY29udmVydFJlc291cmNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyKTogVXNlIGFwcGVuZFJlc291cmNlLCBub3QgcmVmcmVz
aFJlc291cmNlLCB3aGVuIGFkZGluZyBhIG5ldyByZXNvdXJjZS4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUud2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5
cGUuZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuc2V0SW5pdGlhbENvbnRlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRD
cmVhdGVXZWJTb2NrZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5fY3JlYXRlUmVzb3VyY2UpOiBhbHdheXMgcmVnaXN0ZXIgcmVzb3VyY2UgVVJMIHdp
dGggUmVzb3VyY2VUcmVlTW9kZWwgCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIucHJvdG90eXBlLl9hcHBlbmRSZWRpcmVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLmdldCByZXNv
dXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUucmVz
b3VyY2VCeUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBl
LmFwcGVuZFJlc291cmNlKTogQWRkIHJlc291cmNlIGFzIG5ldyBpZmYgYXBwZW5kUmVzb3VyY2Ug
d2FzIGFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUu
cmVmcmVzaFJlc291cmNlKTogZGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsLnByb3RvdHlwZS5tYWluUmVzb3VyY2VDaGFuZ2VkKTogQ2xlYXIgY29uc29sZSB1cG9uIGFy
cml2YWwgb2YgbmV3IG1haW4gcmVzb3VyY2UuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVzb3VyY2VCeUlkKToKKwog
MjAxMS0wMS0xMyAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZWUxNTM2Zi4uMmQyYjE5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODAw
LDYgKzgwMCwxMSBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmlzTWFpblJlc291cmNlTG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUgogICAgIHJldHVybiBsb2FkZXIt
PmZyYW1lKCkgPT0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSAmJiByZXF1ZXN0VXJsID09
IGxvYWRlci0+cmVxdWVzdFVSTCgpOwogfQogCitib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omlz
TWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gaXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCBy
ZXF1ZXN0LnVybCgpKSAmJiByZXF1ZXN0LnRhcmdldFR5cGUoKSA9PSBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpUYXJnZXRJc01haW5GcmFtZTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghZW5h
YmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggZmVmMmE2ZC4uZmViNTI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMTAsNiArMzEwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+KTsKIAog
ICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVybCk7CisgICAgYm9vbCBpc01haW5SZXNvdXJjZShEb2N1bWVudExv
YWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogCiAgICAgdm9p
ZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcm
IGpzb25SZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDkzOTVkZDUuLjI3YjhjZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGwKICAgICBpYy0+
ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKIAogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKLSAgICAgICAgcmVz
b3VyY2VBZ2VudC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVl
c3QudXJsKCksIGxvYWRlciwgaWMtPmlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVz
dC51cmwoKSkpOworICAgICAgICByZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJl
cXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9hZGVyLCBpYy0+aXNNYWluUmVzb3Vy
Y2UobG9hZGVyLCByZXF1ZXN0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IGM0MjA3N2YuLmM2MzlmNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MTI5LDkgKzEyOSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAK
ICAgICBfZXhlY3V0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yaWVzLCByZXN1bHRDYWxsYmFjaykK
ICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaWQg
aW4gV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpCi0gICAgICAgICAgICByZXNvdXJjZXMu
cHVzaChXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0pOworICAgICAgICB2YXIgcmVz
b3VyY2VzID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXM7CiAKICAgICAgICAgdmFyIHJ1
bGVzUmVtYWluaW5nID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVz
Lmxlbmd0aDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKaW5kZXggYzk4NTUyZC4uYjAxMjg1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC02NjgsNyArNjY4
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX21lc3Nh
Z2VUZXh0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKLSAgICAgICAg
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXF1ZXN0SWQgJiYgV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlc291cmNlc1t0aGlzLl9yZXF1ZXN0SWRdOworICAgICAgICAgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3JlcXVlc3RJZCAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVzb3VyY2VCeUlkKHRoaXMuX3JlcXVlc3RJZCk7CiAgICAgICAgICAgICAgICAgaWYg
KHJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UgPSByZXNvdXJjZS5z
dGFja1RyYWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IDM3M2M4NTUuLmE1OWU5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yODgsNyArMjg4LDcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBpZCA9IG1lc3NhZ2UuaWQ7CiAgICAgICAgIHZhciByZXNvdXJjZSA9
IG51bGw7CiAKLSAgICAgICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNl
c1tpZF0gfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKGlkKTsKKyAgICAgICAgcmVzb3Vy
Y2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VCeUlkKGlkKSB8fCBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoaWQpOwogICAgICAgICBpZiAoIXJlc291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHR5cGVvZiBpZCArICI6ICIg
KyBpZCk7CiAKQEAgLTMxOCw3ICszMTgsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRj
aENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7CiAgICAgICAgIH0K
LSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXNbbWVz
c2FnZS5pZF07CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXNvdXJjZUJ5SWQobWVzc2FnZS5pZCk7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS5pZCk7CiAg
ICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2YWlsYWJsZS5iaW5kKHRo
aXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFS
RW50cnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5Lmpz
CmluZGV4IDZkZmJkMWIuLjRkNjkwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IQVJFbnRyeS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjA0LDcgKzIwNCw3IEBAIFdlYkluc3BlY3Rvci5IQVJM
b2cucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZlcnNpb246IHdlYktpdFZlcnNpb24g
PyB3ZWJLaXRWZXJzaW9uWzFdIDogIm4vYSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBw
YWdlczogdGhpcy5fYnVpbGRQYWdlcygpLAotICAgICAgICAgICAgZW50cmllczogT2JqZWN0Lmtl
eXMoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcCh0aGlzLl9jb252ZXJ0UmVzb3Vy
Y2UuYmluZCh0aGlzKSkKKyAgICAgICAgICAgIGVudHJpZXM6IFdlYkluc3BlY3Rvci5uZXR3b3Jr
UmVzb3VyY2VzLm1hcCh0aGlzLl9jb252ZXJ0UmVzb3VyY2UuYmluZCh0aGlzKSkKICAgICAgICAg
fQogICAgIH0sCiAKQEAgLTIyOCwxMSArMjI4LDExIEBAIFdlYkluc3BlY3Rvci5IQVJMb2cucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1
bmN0aW9uKGlkKQorICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAg
IHsKLSAgICAgICAgdmFyIGVudHJ5ID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkoV2ViSW5z
cGVjdG9yLm5ldHdvcmtSZXNvdXJjZXNbaWRdKSkuYnVpbGQoKTsKKyAgICAgICAgdmFyIGVudHJ5
ID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkocmVzb3VyY2UpKS5idWlsZCgpOwogICAgICAg
ICBpZiAodGhpcy5pbmNsdWRlUmVzb3VyY2VJZHMpCi0gICAgICAgICAgICBlbnRyeS5fcmVzb3Vy
Y2VJZCA9IGlkOworICAgICAgICAgICAgZW50cnkuX3Jlc291cmNlSWQgPSByZXNvdXJjZS5pZGVu
dGlmaWVyOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggOWM5
MzgxYi4uMzc5MWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMiw3IEBAIFdlYkluc3BlY3Rv
ci5OZXR3b3JrTWFuYWdlciA9IGZ1bmN0aW9uKHJlc291cmNlVHJlZU1vZGVsKQogewogICAgIHRo
aXMuX3Jlc291cmNlc0J5SWQgPSB7fTsKICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbCA9IHJl
c291cmNlVHJlZU1vZGVsOworICAgIHRoaXMuX2xhc3RJZGVudGlmaWVyRm9yQ2FjaGVkUmVzb3Vy
Y2UgPSAwOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJO
ZXR3b3JrIiwgdGhpcyk7CiB9CiAKQEAgLTg5LDE2ICs5MCwxNSBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGlzTWFpblJlc291cmNlLCBjYWxs
U3RhY2spCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJj
ZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOworCisgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CiAgICAgICAg
IGlmIChpc01haW5SZXNvdXJjZSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNv
dXJjZSA9IHJlc291cmNlOwogICAgICAgICAgICAgcmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0
cnVlOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IHJlc291cmNlOwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLm1haW5SZXNvdXJjZUNoYW5n
ZWQoKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJl
c291cmNlIHVybCBlYXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCi0gICAgICAgIHRoaXMu
X3Jlc291cmNlVHJlZU1vZGVsLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Ci0KLSAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJj
ZSk7CiAgICAgfSwKIAogICAgIHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwg
dGltZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5z
dGFydFRpbWUgPSB0aW1lOwogCiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShy
ZXNvdXJjZSk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJj
ZVN0YXJ0ZWQocmVzb3VyY2UpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwpAQCAtMTk3LDE0
ICsxOTcsMTQgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAog
ICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2FjaGVk
UmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNv
dXJjZShudWxsLCBjYWNoZWRSZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7Cisg
ICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKCJjYWNoZWQ6IiArICsr
dGhpcy5fbGFzdElkZW50aWZpZXJGb3JDYWNoZWRSZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UudXJs
LCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOwogICAgICAgICBXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJl
c291cmNlKTsKICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgcmVzb3Vy
Y2UucmVxdWVzdE1ldGhvZCA9ICJHRVQiOwogICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSBy
ZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwog
ICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3Vy
Y2UpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUo
cmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgc2V0SW5pdGlh
bENvbnRlbnQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdHlwZSkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNv
dXJjZXNbaWRlbnRpZmllcl07CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZXNvdXJjZUJ5SWQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghcmVz
b3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIzMCwxNCArMjMwLDE0IEBAIFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVz
b3VyY2VUcmVlTW9kZWwuZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lLCBsb2FkZXIpOwotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKFdlYkluc3Bl
Y3Rvci5tYWluUmVzb3VyY2UpOwogICAgIH0sCiAKICAgICBkaWRDcmVhdGVXZWJTb2NrZXQ6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpCiAgICAgewogICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCByZXF1ZXN0VVJMKTsKKyAgICAg
ICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOwogICAgICAgICBy
ZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0OwotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNl
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLmFwcGVuZFJlc291cmNlKHJl
c291cmNlKTsKICAgICB9LAogCiAgICAgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
OiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCByZXF1ZXN0KQpAQCAtMjc5LDIxICsyNzksMTYg
QEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAg
fSwKIAotICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2Fk
ZXIsIGNhbGxTdGFjaykKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRl
ciwgY2FsbFN0YWNrKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9
IHJlc291cmNlOwotICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAgfSwKLQogICAgIF9hcHBl
bmRSZWRpcmVjdDogZnVuY3Rpb24oaWRlbnRpZmllciwgcmVkaXJlY3RVUkwpCiAgICAgewogICAg
ICAgICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmll
cl07CisgICAgICAgIHZhciBwcmV2aW91c1JlZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2UucmVk
aXJlY3RzIHx8IFtdOwogICAgICAgICBvcmlnaW5hbFJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgb3JpZ2luYWxSZXNvdXJjZS5pZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgb3Jp
Z2luYWxSZXNvdXJjZS5pZGVudGlmaWVyID0gInJlZGlyZWN0ZWQ6IiArIGlkZW50aWZpZXIgKyAi
LiIgKyBwcmV2aW91c1JlZGlyZWN0cy5sZW5ndGg7CiAKICAgICAgICAgdmFyIG5ld1Jlc291cmNl
ID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVkaXJlY3RVUkwsIG9yaWdpbmFs
UmVzb3VyY2UubG9hZGVyLCBvcmlnaW5hbFJlc291cmNlLnN0YWNrVHJhY2UpOwotICAgICAgICBu
ZXdSZXNvdXJjZS5yZWRpcmVjdHMgPSBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0cyB8fCBbXTsK
KyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IG5ld1Jlc291cmNlOwor
ICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMgPSBwcmV2aW91c1JlZGlyZWN0czsKICAgICAg
ICAgZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzOwogICAgICAgICBuZXdSZXNvdXJj
ZS5yZWRpcmVjdHMucHVzaChvcmlnaW5hbFJlc291cmNlKTsKICAgICAgICAgaWYgKG9yaWdpbmFs
UmVzb3VyY2UuaXNNYWluUmVzb3VyY2UpIHsKQEAgLTMwMiw1ICsyOTcsMTIgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5tYWluUmVzb3VyY2UgPSBuZXdSZXNvdXJjZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bmV3UmVzb3VyY2U7CisgICAgfSwKKworICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24oaWRl
bnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKKyAgICB7CisgICAgICAgIHZhciByZXNv
dXJjZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShpZGVu
dGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VU
cmVlTW9kZWwuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIHJlc291
cmNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggN2I2ZGY4Yi4uMTAxZDNlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQW50aG9ueSBSaWNh
dWQgPHJpa0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuX3Jlc291cmNlcyA9IFtdOwogICAgIHRoaXMuX3Jlc291cmNlc0J5SWQgPSB7fTsKICAgICB0
aGlzLl9yZXNvdXJjZXNCeVVSTCA9IHt9OwotICAgIHRoaXMuX2xhc3RJZGVudGlmaWVyID0gMDsK
ICAgICB0aGlzLl9zdGFsZVJlc291cmNlcyA9IFtdOwogICAgIHRoaXMuX3Jlc291cmNlR3JpZE5v
ZGVzID0ge307CiAgICAgdGhpcy5fbWFpblJlc291cmNlTG9hZFRpbWUgPSAtMTsKQEAgLTczMywx
MiArNzMyLDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQgPSAhdGhpcy5fcHJlc2VydmVMb2dU
b2dnbGUudG9nZ2xlZDsKICAgICB9LAogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCkKLSAgICAgICAgICAg
IHRoaXMuX3Jlc2V0KCk7Ci0gICAgfSwKLQogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcG9wb3ZlckhlbHBlci5oaWRlUG9wdXAoKTsKQEAgLTc3MSwzMiArNzY0
LDM0IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgZ2V0
IHJlc291cmNlcygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQnlJZDsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlczsKICAgICB9LAogCi0gICAgcmVmcmVzaFJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICByZXNvdXJjZUJ5SWQ6IGZ1bmN0aW9uKGlk
KQogICAgIHsKLSAgICAgICAgaWYgKCFyZXNvdXJjZS5pZGVudGlmaWVyKQotICAgICAgICAgICAg
cmVzb3VyY2UuaWRlbnRpZmllciA9ICJuZXR3b3JrOiIgKyB0aGlzLl9sYXN0SWRlbnRpZmllcisr
OworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZF07CisgICAgfSwKIAotICAg
ICAgICBpZiAoIXRoaXMuX3Jlc291cmNlc0J5SWRbcmVzb3VyY2UuaWRlbnRpZmllcl0pIHsKLSAg
ICAgICAgICAgIHRoaXMuX3Jlc291cmNlcy5wdXNoKHJlc291cmNlKTsKLSAgICAgICAgICAgIHRo
aXMuX3Jlc291cmNlc0J5SWRbcmVzb3VyY2UuaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKLSAgICAg
ICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKKyAg
ICBhcHBlbmRSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB0aGlz
Ll9yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5SWRb
cmVzb3VyY2UuaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2Vz
QnlVUkxbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOwogCi0gICAgICAgICAgICAvLyBQdWxsIGFs
bCB0aGUgcmVkaXJlY3RzIG9mIHRoZSBtYWluIHJlc291cmNlIHVwb24gY29tbWl0IGxvYWQuCi0g
ICAgICAgICAgICBpZiAocmVzb3VyY2UucmVkaXJlY3RzKSB7Ci0gICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZS5yZWRpcmVjdHMubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICAgICAgICAgIHRoaXMucmVmcmVzaFJlc291cmNlKHJlc291cmNlLnJlZGlyZWN0c1tpXSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgIC8vIFB1bGwgYWxsIHRoZSByZWRpcmVjdHMgb2YgdGhl
IG1haW4gcmVzb3VyY2UgdXBvbiBjb21taXQgbG9hZC4KKyAgICAgICAgaWYgKHJlc291cmNlLnJl
ZGlyZWN0cykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZS5yZWRp
cmVjdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoUmVzb3VyY2Uo
cmVzb3VyY2UucmVkaXJlY3RzW2ldKTsKICAgICAgICAgfQogCisgICAgICAgIHRoaXMucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisgICAgcmVmcmVzaFJlc291cmNlOiBmdW5j
dGlvbihyZXNvdXJjZSkKKyAgICB7CiAgICAgICAgIHRoaXMuX3N0YWxlUmVzb3VyY2VzLnB1c2go
cmVzb3VyY2UpOwogICAgICAgICB0aGlzLl9zY2hlZHVsZVJlZnJlc2goKTsKIAotICAgICAgICBp
ZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIHZhciBvbGRWaWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291
cmNlKHJlc291cmNlKTsKICAgICAgICAgaWYgKCFvbGRWaWV3KQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtODA5LDYgKzgwNCwxNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSBuZXdWaWV3OwogICAgIH0sCiAK
KyAgICBtYWluUmVzb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9yZXNldCgpOworICAgICAgICAvLyBOb3cgcmVzdXJyZWN0IHRoZSBtYWlu
IHJlc291cmNlIGFsb25nIHdpdGggYWxsIHJlZGlyZWN0cyB0aGF0IGxlYWQgdG8gaXQuCisgICAg
ICAgIHZhciByZXNvdXJjZXNUb0FwcGVuZCA9IChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLnJl
ZGlyZWN0cyB8fCBbXSkuY29uY2F0KFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UpOworICAgICAg
ICByZXNvdXJjZXNUb0FwcGVuZC5mb3JFYWNoKHRoaXMuYXBwZW5kUmVzb3VyY2UsIHRoaXMpOwor
ICAgIH0sCisKICAgICBjYW5TaG93U291cmNlTGluZTogZnVuY3Rpb24odXJsLCBsaW5lKQogICAg
IHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fcmVzb3VyY2VzQnlVUkxbdXJsXTsK
</data>
<flag name="review"
          id="70166"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78821</attachid>
            <date>2011-01-13 10:06:44 -0800</date>
            <delta_ts>2011-01-13 10:14:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>redirect-har.diff</filename>
            <type>text/plain</type>
            <size>34400</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZlZWNiLi43ZjdmNWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEt
MTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRpcmVj
dGVkIHJlc291cmNlcyBub3QgaGFuZGxlZCBwcm9wZXJseSBpbiBOZXR3b3JrIHBhbmVsCisgICAg
ICAgIEFkZGVkIHRlc3QgZm9yIHJlZGlyZWN0ZWQgcmVzb3VyY2UgcHJlc2VuY2UgaW4gSEFSCisg
ICAgICAgIENoYW5nZWQgdGVzdCB0byByZXF1ZXN0IGVudGlyZSBIQVIgbG9nLCBub3QgbXVsdGlw
bGUgSEFSIGVudHJpZXMuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIyOTIKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWw6CisKIDIwMTEtMDEtMTMg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0
ZWQudHh0CmluZGV4IGU4YzdiMzUuLjE3YThiYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXJl
c291cmNlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxOCBAQAogVGVzdHMgV2Vi
SW5zcGVjdG9yIGV4dGVuc2lvbiBBUEkKIAorUGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5z
aW9uLgogCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0
UmVkaXJlY3RSZXNvdXJjZUNvbnRlbnQKLWNvbnRlbnQ6ICwgZW5jb2Rpbmc6IGJhc2U2NAorY29u
dGVudDogdW5kZWZpbmVkLCBlbmNvZGluZzogdW5kZWZpbmVkCitSVU5OSU5HIFRFU1Q6IGV4dGVu
c2lvbl90ZXN0UmVkaXJlY3RSZXNvdXJjZXNJbkhBUgorUmVzb3VyY2VzIGluIEhBUjoKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3Qu
aHRtbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNl
cy10ZXN0LmpzCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVz
dC5qcworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMK
K2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIKIEFsbCB0
ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRtbAppbmRleCBj
M2I5NDc5Li5iNmQ1Yjc2IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwK
QEAgLTUsNiArNSwyMCBAQAogPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKK2Z1bmN0aW9uIGV4dGVuc2lv
bl9kb1JlcXVlc3QoY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKCkK
KyAgICB7CisgICAgICAgIHdlYkluc3BlY3Rvci5yZXNvdXJjZXMub25GaW5pc2hlZC5yZW1vdmVM
aXN0ZW5lcihjYWxsYmFja1dyYXBwZXIpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KKyAg
ICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIoY2FsbGJhY2tX
cmFwcGVyKTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImRvUmVxdWVz
dCgpIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAg
ICBjYWxsYmFja1dyYXBwZXIoKTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gZXh0ZW5zaW9uX3Rl
c3RHZXRSZWRpcmVjdFJlc291cmNlQ29udGVudChuZXh0VGVzdCkKIHsKICAgICBmdW5jdGlvbiBv
bkZpbmlzaGVkKCkKQEAgLTE4LDE3ICszMiw0NyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdl
dFJlZGlyZWN0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQogICAgICAgICBvdXRwdXQoImNvbnRl
bnQ6ICIgKyBjb250ZW50ICsgIiwgZW5jb2Rpbmc6ICIgKyBlbmNvZGluZyk7CiAgICAgICAgIG5l
eHRUZXN0KCk7CiAgICAgfQorICAgIGV4dGVuc2lvbl9kb1JlcXVlc3Qob25GaW5pc2hlZCk7Cit9
CiAKLSAgICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIob25G
aW5pc2hlZCk7Ci0gICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJkb1JlcXVl
c3QoKSIpOworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RSZWRpcmVjdFJlc291cmNlc0luSEFSKG5l
eHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uRmluaXNoZWQoKQorICAgIHsKKyAgICAgICAgd2Vi
SW5zcGVjdG9yLnJlc291cmNlcy5nZXRIQVIob25IQVIpOworICAgIH0KKyAgICBmdW5jdGlvbiBv
bkhBUihoYXIpCisgICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5lbnRyaWVzOworICAg
ICAgICB2YXIgdXJscyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB1cmxzLnB1c2goZW50cmllc1tpXS5yZXF1ZXN0LnVy
bCk7CisgICAgICAgIHVybHMuc29ydCgpOworICAgICAgICBvdXRwdXQoIlJlc291cmNlcyBpbiBI
QVI6XG4iICsgdXJscy5qb2luKCJcbiIpKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9Cisg
ICAgZXh0ZW5zaW9uX2RvUmVxdWVzdChvbkZpbmlzaGVkKTsKIH0KIAordmFyIHJlcXVlc3REb25l
ID0gZmFsc2U7CisKIGZ1bmN0aW9uIGRvUmVxdWVzdCgpCiB7CisgICAgLy8gT25seSBkbyByZXF1
ZXN0IG9uY2UgcGVyIHRlc3Qgc3VpdGUsIHRvIG1ha2UgdGVzdHMgaW5kZXBlbmRlbnQgb24gZWFj
aCBvdGhlci4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWZmIHJlcXVlc3QgaXMgYWxyZWR5IGRvbmUg
KHNvIHRoZSBjYWxsZXIgc2hvdWxkbid0IHdhaXQgZm9yIG9uRmluaXNoZWQpLgorICAgIGlmIChy
ZXF1ZXN0RG9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmVxdWVzdERvbmUgPSB0cnVl
OwogICAgIC8vIFdlIGNhbid0IHVzZSBYSFIgaGVyZSAtLSB0aGUgY29udGVudCBmb3IgWEhScyBp
cyBwdXNoZWQgZnJvbSBiYWNrLWVuZC4KICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CiAgICAgaWZyYW1lLnNyYyA9ICIvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIiOwogICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciB0ZXN0
ID0gZnVuY3Rpb24oKQoreworICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJbnNwZWN0b3JU
ZXN0LnJ1bkV4dGVuc2lvblRlc3RzKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNp
b24uaHRtbAppbmRleCA0ZGI1MThlLi41MWM3ODk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0
bWwKQEAgLTcsMTEgKzcsNiBAQAogCiB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBmdW5j
dGlvbiBnZXRIQVIoaWQpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
QVJFbnRyeShXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0pLmJ1aWxkKCk7Ci0gICAg
fQotCiAgICAgZnVuY3Rpb24gYWRkQ29va2llSGVhZGVyc1RvUmVzb3VyY2UocmVzb3VyY2UpCiAg
ICAgewogICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHsKQEAgLTMzLDggKzI4LDkg
QEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlSWZO
ZWVkZWQoZnVuY3Rpb24oKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1
bHQoKS5ldmFsdWF0ZSgiZG9YSFIoKSIsICJjb25zb2xlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBhZGRDb29raWVIZWFkZXJzVG9SZXNvdXJjZShmaW5kUmVzb3VyY2VCeVVSTCgvaW5zcGVj
dG9yLXRlc3QyXC5qcyQvKSk7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2VzID0gT2JqZWN0Lmtl
eXMoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcChnZXRIQVIpLnNvcnQoSW5zcGVj
dG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkT2JqZWN0KHJlc291cmNlcywgSW5zcGVjdG9yVGVzdC5IQVJOb25kZXRlcm1pbmlzdGljUHJv
cGVydGllc1dpdGhTaXplKTsKKyAgICAgICAgICAgIHZhciBlbnRyaWVzID0gKG5ldyBXZWJJbnNw
ZWN0b3IuSEFSTG9nKCkpLmJ1aWxkKCkuZW50cmllczsKKyAgICAgICAgICAgIGVudHJpZXMuc29y
dChJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFyZXIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QoZW50cmllcywgSW5zcGVjdG9yVGVzdC5IQVJOb25kZXRlcm1pbmlz
dGljUHJvcGVydGllc1dpdGhTaXplKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAppbmRleCAwYjUwZDFhLi4yZjBmNzNjIDEwMDc1
NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApAQCAt
MzcsNyArMzcsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldEhBUihuZXh0VGVzdCkKIGZ1
bmN0aW9uIGRvWEhSKCkKIHsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0g
ICAgeGhyLm9wZW4oIkdFVCIsIGxvY2F0aW9uLmhyZWYsIGZhbHNlKTsKKyAgICB4aHIub3Blbigi
R0VUIiwgIiIsIGZhbHNlKTsKICAgICB4aHIuc2VuZChudWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGNjNWZhMzcuLmYwOTFmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMS0wMS0x
MiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZGlyZWN0
ZWQgcmVzb3VyY2VzIG5vdCBoYW5kbGVkIHByb3Blcmx5IGluIE5ldHdvcmsgcGFuZWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMjkyCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDogRG8gbm90IHBhc3MgaXNNYWluUmVzb3VyY2Ug
dG8gaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KCkgKGl0J3MgdXNlbGVzcywgYXMgd2UgbWF5
IGhpdCBwcm92aXNpb25hbCBsb2FkKQorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDogRGl0dG8u
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3RJbXBsKTogRml4IG1haW4gcmVzb3VyY2UgZGV0ZWN0aW9uLgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6IFdlYkluc3BlY3Rvci5u
ZXR3b3JrUmVzb3VyY2VzIG5vdyByZXR1cm5zIGFycmF5LCBub3QgbWFwLgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6IFVzZXIgV2ViSW5zcGVjdG9yLnJlc291
cmNlQnlJZCgpIHRvIGdldCByZXNvdXJjZQorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uUmV2ZWFsQW5kU2VsZWN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UmVz
b3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5Lmpz
OiBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlcyBub3cgcmV0dXJucyBhcnJheSwgbm90IG1h
cAorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuYnVpbGQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuX2NvbnZlcnRSZXNvdXJjZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlcik6IFVzZSBhcHBlbmRSZXNvdXJjZSwgbm90IHJlZnJl
c2hSZXNvdXJjZSwgd2hlbiBhZGRpbmcgYSBuZXcgcmVzb3VyY2UuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnNldEluaXRpYWxDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkQ29tbWl0TG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKTogYWx3YXlzIHJlZ2lzdGVyIHJlc291cmNlIFVSTCB3
aXRoIFJlc291cmNlVHJlZU1vZGVsIAorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5h
Z2VyLnByb3RvdHlwZS5fYXBwZW5kUmVkaXJlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5nZXQgcmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLnJl
c291cmNlQnlJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZS5hcHBlbmRSZXNvdXJjZSk6IEFkZCByZXNvdXJjZSBhcyBuZXcgaWZmIGFwcGVuZFJlc291cmNl
IHdhcyBhZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBl
LnJlZnJlc2hSZXNvdXJjZSk6IGRpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUubWFpblJlc291cmNlQ2hhbmdlZCk6IENsZWFyIGNvbnNvbGUgdXBvbiBh
cnJpdmFsIG9mIG5ldyBtYWluIHJlc291cmNlLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IEV4cG9zZSB1bmJpbmRSZXNvdXJjZVVSTCwgYmluZCBy
ZXNvdXJjZXMgYXV0b21hdGljYWxseSB1cG9uIGNyZWF0aW9uLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY2xlYXJSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS51bmJpbmRSZXNvdXJj
ZVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBl
Ll9hZGRGcmFtZXNSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwucHJvdG90eXBlLmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNvdXJjZUJ5
SWQpOgorCiAyMDExLTAxLTEzICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwKaW5kZXggZWQwMGNjNy4uYTQzMmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC05MSw3ICs5MSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2Rv
bWFpbj1OZXR3b3JrXSB2b2lkIHJlc291cmNlQ29udGVudChpbiB1bnNpZ25lZCBsb25nIGZyYW1l
SWQsIGluIFN0cmluZyB1cmwsIGluIGJvb2xlYW4gYmFzZTY0RW5jb2RlLCBvdXQgU3RyaW5nIGNv
bnRlbnQpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBmcmFtZURldGFj
aGVkRnJvbVBhcmVudChvdXQgdW5zaWduZWQgbG9uZyBmcmFtZUlkKTsKIAotICAgICAgICBbbm90
aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0
IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9hZGVyLCBvdXQg
Ym9vbGVhbiBpc01haW5SZXNvdXJjZUxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7CisgICAg
ICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2Fk
ZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29y
a10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBPYmplY3QgcmVkaXJlY3RSZXNwb25zZSk7CiAg
ICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVk
KG91dCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10g
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lLCBvdXQgU3RyaW5nIHJlc291cmNlVHlwZSwgb3V0IE9iamVjdCByZXNwb25zZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZWYy
YTZkLi5mZWI1MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTMxMCw2ICszMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgYm9vbCBpc01h
aW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1
ZXN0VXJsKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAKICAgICB2b2lkIGRpZEV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggOTM5NWRkNS4uODkwNTdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zODIsNyArMzgyLDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGwKICAgICBpYy0+ZW5zdXJlU2V0dGluZ3NMb2FkZWQo
KTsKIAogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0
cmlldmVSZXNvdXJjZUFnZW50KGljKSkKLSAgICAgICAgcmVzb3VyY2VBZ2VudC0+aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRlciwgaWMt
PmlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVzdC51cmwoKSkpOworICAgICAgICBy
ZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgcmVx
dWVzdC51cmwoKSwgbG9hZGVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGE0MjU3OTcuLjlmYzU2MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgS1VSTCYgdXJsLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBib29sIGlzTWFpblJlc291cmNl
KQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9hZGVyT2JqZWN0
ID0gYnVpbGRPYmplY3RGb3JEb2N1bWVudExvYWRlcihsb2FkZXIpOwogICAgIFJlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwpAQCAtMjkyLDcgKzI5Miw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllCiAgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gY2Fs
bFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpOwogICAgIGVsc2UKICAgICAgICAgY2FsbFN0
YWNrVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAgIG1fZnJvbnRlbmQtPmlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIGxvYWRlck9i
amVjdCwgaXNNYWluUmVzb3VyY2UsIGNhbGxTdGFja1ZhbHVlKTsKKyAgICBtX2Zyb250ZW5kLT5p
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBsb2Fk
ZXJPYmplY3QsIGNhbGxTdGFja1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
aAppbmRleCBmM2YzMjExLi4xZTc3ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgog
CiAgICAgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZvaWQgaWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIERv
Y3VtZW50TG9hZGVyKiwgYm9vbCBpc01haW5SZXNvdXJjZSk7CisgICAgdm9pZCBpZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiwg
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0
c1BhbmVsLmpzCmluZGV4IGM0MjA3N2YuLmM2MzlmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTI5LDkgKzEyOSw3IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZXhlY3V0ZUF1ZGl0
OiBmdW5jdGlvbihjYXRlZ29yaWVzLCByZXN1bHRDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZh
ciByZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaWQgaW4gV2ViSW5zcGVjdG9yLm5l
dHdvcmtSZXNvdXJjZXMpCi0gICAgICAgICAgICByZXNvdXJjZXMucHVzaChXZWJJbnNwZWN0b3Iu
bmV0d29ya1Jlc291cmNlc1tpZF0pOworICAgICAgICB2YXIgcmVzb3VyY2VzID0gV2ViSW5zcGVj
dG9yLm5ldHdvcmtSZXNvdXJjZXM7CiAKICAgICAgICAgdmFyIHJ1bGVzUmVtYWluaW5nID0gMDsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5k
ZXggYzk4NTUyZC4uYjAxMjg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC02NjgsNyArNjY4LDcgQEAgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4
dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX21lc3NhZ2VUZXh0KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKLSAgICAgICAgICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSB0aGlzLl9yZXF1ZXN0SWQgJiYgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291
cmNlc1t0aGlzLl9yZXF1ZXN0SWRdOworICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX3JlcXVlc3RJZCAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VCeUlk
KHRoaXMuX3JlcXVlc3RJZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UgPSByZXNvdXJjZS5zdGFja1RyYWNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVy
LmpzCmluZGV4IDM3M2M4NTUuLjEzMjBlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yODgsNyArMjg4LDcgQEAg
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBp
ZCA9IG1lc3NhZ2UuaWQ7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IG51bGw7CiAKLSAgICAgICAg
cmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0gfHwgV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKGlkKTsKKyAgICAgICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3Iu
bmV0d29ya1Jlc291cmNlQnlJZChpZCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKGlk
KTsKICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
dXMuRV9OT1RGT1VORCh0eXBlb2YgaWQgKyAiOiAiICsgaWQpOwogCkBAIC0zMTgsNyArMzE4LDcg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB9OwogICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hDYWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJ
ZCwgcG9ydCwgcmVzcG9uc2UpOwogICAgICAgICB9Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdl
Ykluc3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VzW21lc3NhZ2UuaWRdOworICAgICAgICB2YXIgcmVz
b3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlQnlJZChtZXNzYWdlLmlkKTsKICAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9O
T1RGT1VORChtZXNzYWdlLmlkKTsKICAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQob25D
b250ZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXggNmRmYmQxYi4uNGQ2OTBiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yMDQsNyArMjA0
LDcgQEAgV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
dmVyc2lvbjogd2ViS2l0VmVyc2lvbiA/IHdlYktpdFZlcnNpb25bMV0gOiAibi9hIgogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIHBhZ2VzOiB0aGlzLl9idWlsZFBhZ2VzKCksCi0gICAgICAg
ICAgICBlbnRyaWVzOiBPYmplY3Qua2V5cyhXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlcyku
bWFwKHRoaXMuX2NvbnZlcnRSZXNvdXJjZS5iaW5kKHRoaXMpKQorICAgICAgICAgICAgZW50cmll
czogV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMubWFwKHRoaXMuX2NvbnZlcnRSZXNvdXJj
ZS5iaW5kKHRoaXMpKQogICAgICAgICB9CiAgICAgfSwKIApAQCAtMjI4LDExICsyMjgsMTEgQEAg
V2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0g
ICAgX2NvbnZlcnRSZXNvdXJjZTogZnVuY3Rpb24oaWQpCisgICAgX2NvbnZlcnRSZXNvdXJjZTog
ZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgZW50cnkgPSAobmV3IFdlYklu
c3BlY3Rvci5IQVJFbnRyeShXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0pKS5idWls
ZCgpOworICAgICAgICB2YXIgZW50cnkgPSAobmV3IFdlYkluc3BlY3Rvci5IQVJFbnRyeShyZXNv
dXJjZSkpLmJ1aWxkKCk7CiAgICAgICAgIGlmICh0aGlzLmluY2x1ZGVSZXNvdXJjZUlkcykKLSAg
ICAgICAgICAgIGVudHJ5Ll9yZXNvdXJjZUlkID0gaWQ7CisgICAgICAgICAgICBlbnRyeS5fcmVz
b3VyY2VJZCA9IHJlc291cmNlLmlkZW50aWZpZXI7CiAgICAgICAgIHJldHVybiBlbnRyeTsKICAg
ICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrTWFuYWdlci5qcwppbmRleCA5YzkzODFiLi44MTJkNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMy
LDYgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyID0gZnVuY3Rpb24ocmVzb3Vy
Y2VUcmVlTW9kZWwpCiB7CiAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9OwogICAgIHRoaXMu
X3Jlc291cmNlVHJlZU1vZGVsID0gcmVzb3VyY2VUcmVlTW9kZWw7CisgICAgdGhpcy5fbGFzdElk
ZW50aWZpZXJGb3JDYWNoZWRSZXNvdXJjZSA9IDA7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3RlckRvbWFpbkRpc3BhdGNoZXIoIk5ldHdvcmsiLCB0aGlzKTsKIH0KIApAQCAtODYsMTggKzg3
LDEyIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51cGRhdGVSZXNvdXJjZVdpdGhDYWNo
ZWRSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlCiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUgPSB7Ci0gICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OiBm
dW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgaXNNYWluUmVzb3VyY2UsIGNhbGxTdGFj
aykKKyAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0
aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsK
LSAgICAgICAgaWYgKGlzTWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
bWFpblJlc291cmNlID0gcmVzb3VyY2U7Ci0gICAgICAgICAgICByZXNvdXJjZS5pc01haW5SZXNv
dXJjZSA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8g
YmluZCByZXNvdXJjZSB1cmwgZWFybHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgotICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJj
ZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOwogCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuYXBwZW5kUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOwog
ICAgIH0sCiAKQEAgLTEyMCw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
cHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOwogCiAgICAg
ICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZy
ZXNoUmVzb3VyY2UocmVzb3VyY2UpOwpAQCAtMTk3LDE0ICsxOTIsMTQgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIGRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2FjaGVkUmVzb3VyY2UpCiAgICAgewotICAgICAg
ICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRSZXNvdXJj
ZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX3Jlc291cmNlVHJlZU1vZGVsLmNyZWF0ZVJlc291cmNlKCJjYWNoZWQ6IiArICsrdGhpcy5f
bGFzdElkZW50aWZpZXJGb3JDYWNoZWRSZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UudXJsLCBjYWNo
ZWRSZXNvdXJjZS5sb2FkZXIpOwogICAgICAgICBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
dXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNl
KTsKICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgcmVzb3VyY2UucmVx
dWVzdE1ldGhvZCA9ICJHRVQiOwogICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSByZXNvdXJj
ZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwogICAgICAg
ICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5hcHBlbmRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwog
ICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUocmVzb3Vy
Y2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKQEAgLTIxNyw3ICsyMTIsNyBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgc2V0SW5pdGlhbENvbnRl
bnQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdHlwZSkKICAgICB7Ci0gICAg
ICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNb
aWRlbnRpZmllcl07CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3Jr
UmVzb3VyY2VCeUlkKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMzAsMTQgKzIyNSwyMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIucHJvdG90eXBlID0gewogICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZTogZnVuY3Rp
b24oZnJhbWUsIGxvYWRlcikKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVs
LmRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZSwgbG9hZGVyKTsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlKTsKKyAgICAgICAgaWYgKCFmcmFtZS5wYXJlbnRJZCkgeworICAgICAgICAgICAgdmFyIG1h
aW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKGZyYW1l
LnVybCk7CisgICAgICAgICAgICBpZiAobWFpblJlc291cmNlKSB7CisgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZTsKKyAgICAgICAgICAgICAg
ICBtYWluUmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5tYWluUmVzb3VyY2VDaGFuZ2VkKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9LAogCiAgICAgZGlkQ3JlYXRlV2ViU29ja2V0OiBmdW5j
dGlvbihpZGVudGlmaWVyLCByZXF1ZXN0VVJMKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNl
ID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVxdWVzdFVSTCk7CisgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmNyZWF0ZVJlc291cmNlKGlk
ZW50aWZpZXIsIHJlcXVlc3RVUkwpOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdID0gcmVzb3VyY2U7CiAgICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsuYXBwZW5kUmVzb3VyY2UocmVzb3VyY2UpOwogICAgIH0sCiAKICAgICB3aWxs
U2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUs
IHJlcXVlc3QpCkBAIC0yNzksMjggKzI4MiwyMCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVm
cmVzaFJlc291cmNlKHJlc291cmNlKTsKICAgICB9LAogCi0gICAgX2NyZWF0ZVJlc291cmNlOiBm
dW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKQotICAgIHsKLSAgICAg
ICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLmNyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spOwotICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdID0gcmVzb3VyY2U7Ci0gICAgICAgIHJldHVybiBy
ZXNvdXJjZTsKLSAgICB9LAotCiAgICAgX2FwcGVuZFJlZGlyZWN0OiBmdW5jdGlvbihpZGVudGlm
aWVyLCByZWRpcmVjdFVSTCkKICAgICB7CiAgICAgICAgIHZhciBvcmlnaW5hbFJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgdmFyIHByZXZpb3VzUmVk
aXJlY3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107CiAgICAgICAgIG9yaWdp
bmFsUmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICBvcmlnaW5hbFJlc291cmNlLmlk
ZW50aWZpZXIgPSBudWxsOwotCi0gICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2NyZWF0
ZVJlc291cmNlKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRl
ciwgb3JpZ2luYWxSZXNvdXJjZS5zdGFja1RyYWNlKTsKLSAgICAgICAgbmV3UmVzb3VyY2UucmVk
aXJlY3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107CisgICAgICAgIG9yaWdp
bmFsUmVzb3VyY2UuaWRlbnRpZmllciA9ICJyZWRpcmVjdGVkOiIgKyBpZGVudGlmaWVyICsgIi4i
ICsgcHJldmlvdXNSZWRpcmVjdHMubGVuZ3RoOwogICAgICAgICBkZWxldGUgb3JpZ2luYWxSZXNv
dXJjZS5yZWRpcmVjdHM7Ci0gICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cy5wdXNoKG9yaWdp
bmFsUmVzb3VyY2UpOwotICAgICAgICBpZiAob3JpZ2luYWxSZXNvdXJjZS5pc01haW5SZXNvdXJj
ZSkgewotICAgICAgICAgICAgZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2UuaXNNYWluUmVzb3VyY2U7
Ci0gICAgICAgICAgICBuZXdSZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7Ci0gICAgICAg
ICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gbmV3UmVzb3VyY2U7Ci0gICAgICAgIH0K
KyAgICAgICAgLy8gV2UgYm91bmQgcmVzb3VyY2UgZWFybHksIGJ1dCBpdCBoYXBwZW5lZCB0byBi
ZSBhIHJlZGlyZWN0IGFuZCB3b24ndCBtYWtlIGl0IHRocm91Z2ggdG8KKyAgICAgICAgLy8gdGhl
IHJlc291cmNlIHRyZWUgLS0gc28gdW5iaW5kIGl0LgorICAgICAgICB0aGlzLl9yZXNvdXJjZVRy
ZWVNb2RlbC51bmJpbmRSZXNvdXJjZVVSTChvcmlnaW5hbFJlc291cmNlKTsKKyAgICAgICAgCisg
ICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmNyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRlciwg
b3JpZ2luYWxSZXNvdXJjZS5zdGFja1RyYWNlKTsKKyAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJl
Y3RzID0gcHJldmlvdXNSZWRpcmVjdHMuY29uY2F0KG9yaWdpbmFsUmVzb3VyY2UpOworICAgICAg
ICB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdID0gbmV3UmVzb3VyY2U7CiAgICAgICAg
IHJldHVybiBuZXdSZXNvdXJjZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDdiNmRmOGIuLjEwMWQzZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1Bh
bmVsLmpzCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IEFudGhvbnkgUmljYXVkIDxyaWtAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLl9yZXNvdXJjZXMgPSBbXTsKICAgICB0aGlzLl9yZXNvdXJjZXNC
eUlkID0ge307CiAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkwgPSB7fTsKLSAgICB0aGlzLl9sYXN0
SWRlbnRpZmllciA9IDA7CiAgICAgdGhpcy5fc3RhbGVSZXNvdXJjZXMgPSBbXTsKICAgICB0aGlz
Ll9yZXNvdXJjZUdyaWROb2RlcyA9IHt9OwogICAgIHRoaXMuX21haW5SZXNvdXJjZUxvYWRUaW1l
ID0gLTE7CkBAIC03MzMsMTIgKzczMiw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkID0gIXRo
aXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQ7CiAgICAgfSwKIAotICAgIHJlc2V0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2ds
ZWQpCi0gICAgICAgICAgICB0aGlzLl9yZXNldCgpOwotICAgIH0sCi0KICAgICBfcmVzZXQ6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcHVwKCk7
CkBAIC03NzEsMzIgKzc2NCwzNCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgIGdldCByZXNvdXJjZXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc291cmNlc0J5SWQ7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7CiAgICAgfSwK
IAotICAgIHJlZnJlc2hSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgcmVzb3VyY2VC
eUlkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAgIGlmICghcmVzb3VyY2UuaWRlbnRpZmll
cikKLSAgICAgICAgICAgIHJlc291cmNlLmlkZW50aWZpZXIgPSAibmV0d29yazoiICsgdGhpcy5f
bGFzdElkZW50aWZpZXIrKzsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRd
OworICAgIH0sCiAKLSAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLmlk
ZW50aWZpZXJdKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7
Ci0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLmlkZW50aWZpZXJdID0g
cmVzb3VyY2U7Ci0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxd
ID0gcmVzb3VyY2U7CisgICAgYXBwZW5kUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpOworICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNCeUlkW3Jlc291cmNlLmlkZW50aWZpZXJdID0gcmVzb3VyY2U7CisgICAgICAg
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKIAotICAgICAg
ICAgICAgLy8gUHVsbCBhbGwgdGhlIHJlZGlyZWN0cyBvZiB0aGUgbWFpbiByZXNvdXJjZSB1cG9u
IGNvbW1pdCBsb2FkLgotICAgICAgICAgICAgaWYgKHJlc291cmNlLnJlZGlyZWN0cykgewotICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UucmVkaXJlY3RzLmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJj
ZS5yZWRpcmVjdHNbaV0pOwotICAgICAgICAgICAgfQorICAgICAgICAvLyBQdWxsIGFsbCB0aGUg
cmVkaXJlY3RzIG9mIHRoZSBtYWluIHJlc291cmNlIHVwb24gY29tbWl0IGxvYWQuCisgICAgICAg
IGlmIChyZXNvdXJjZS5yZWRpcmVjdHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVzb3VyY2UucmVkaXJlY3RzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMu
cmVmcmVzaFJlc291cmNlKHJlc291cmNlLnJlZGlyZWN0c1tpXSk7CiAgICAgICAgIH0KIAorICAg
ICAgICB0aGlzLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIHJlZnJl
c2hSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgewogICAgICAgICB0aGlzLl9zdGFs
ZVJlc291cmNlcy5wdXNoKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNo
KCk7CiAKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAg
ICAgICB2YXIgb2xkVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgIGlmICghb2xkVmlldykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTgwOSw2ICs4MDQsMTcgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gbmV3
VmlldzsKICAgICB9LAogCisgICAgbWFpblJlc291cmNlQ2hhbmdlZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3ByZXNlcnZlTG9nVG9nZ2xlLnRvZ2dsZWQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICAgICAgLy8gTm93IHJl
c3VycmVjdCB0aGUgbWFpbiByZXNvdXJjZSBhbG9uZyB3aXRoIGFsbCByZWRpcmVjdHMgdGhhdCBs
ZWFkIHRvIGl0LgorICAgICAgICB2YXIgcmVzb3VyY2VzVG9BcHBlbmQgPSAoV2ViSW5zcGVjdG9y
Lm1haW5SZXNvdXJjZS5yZWRpcmVjdHMgfHwgW10pLmNvbmNhdChXZWJJbnNwZWN0b3IubWFpblJl
c291cmNlKTsKKyAgICAgICAgcmVzb3VyY2VzVG9BcHBlbmQuZm9yRWFjaCh0aGlzLmFwcGVuZFJl
c291cmNlLCB0aGlzKTsKKyAgICB9LAorCiAgICAgY2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9u
KHVybCwgbGluZSkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX3Jlc291cmNlc0J5VVJM
W3VybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVHJlZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVRyZWVNb2RlbC5qcwppbmRleCA3YzdiODZkLi5lZWYyZGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTM4LDE3ICszOCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCA9IGZ1bmN0
aW9uKCkKICAgICBJbnNwZWN0b3JCYWNrZW5kLmNhY2hlZFJlc291cmNlcyh0aGlzLl9wcm9jZXNz
Q2FjaGVkUmVzb3VyY2VzLmJpbmQodGhpcykpOwogfQogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwuY3JlYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRl
ciwgc3RhY2tUcmFjZSkKLXsKLSAgICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlKGlkZW50aWZpZXIsIHVybCk7Ci0gICAgcmVzb3VyY2UubG9hZGVyID0gbG9hZGVyOwot
ICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0gbG9hZGVyLnVy
bDsKLSAgICByZXNvdXJjZS5zdGFja1RyYWNlID0gc3RhY2tUcmFjZTsKLQotICAgIHJldHVybiBy
ZXNvdXJjZTsKLX0KLQogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5jdGlvbihmcmFtZSkKICAgICB7CkBAIC0xNzUs
NyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNl
KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRoaXMuX3VuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAgICAgIHRoaXMudW5i
aW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwogICAgICAgICB9CiAKICAgICAgICAgZGVsZXRlIHRo
aXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKQEAgLTIwMSw3ICsxOTAsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfSwKIAotICAgIF91bmJpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3Vy
Y2UpCisgICAgdW5iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKICAg
ICAgICAgdmFyIHJlc291cmNlRm9yVVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2Uu
dXJsXTsKICAgICAgICAgaWYgKCFyZXNvdXJjZUZvclVSTCkKQEAgLTIyNiwxMyArMjE1LDEyIEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRk
RnJhbWVzUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lUGF5bG9hZCkKICAgICB7Ci0gICAgICAg
IHZhciBmcmFtZVJlc291cmNlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLmNyZWF0
ZVJlc291cmNlKG51bGwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9hZC5y
ZXNvdXJjZS5sb2FkZXIpOworICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMuY3JlYXRl
UmVzb3VyY2UobnVsbCwgZnJhbWVQYXlsb2FkLnJlc291cmNlLnVybCwgZnJhbWVQYXlsb2FkLnJl
c291cmNlLmxvYWRlcik7CiAgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51cGRh
dGVSZXNvdXJjZVdpdGhSZXF1ZXN0KGZyYW1lUmVzb3VyY2UsIGZyYW1lUGF5bG9hZC5yZXNvdXJj
ZS5yZXF1ZXN0KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJl
c291cmNlV2l0aFJlc3BvbnNlKGZyYW1lUmVzb3VyY2UsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5y
ZXNwb25zZSk7CiAgICAgICAgIGZyYW1lUmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlWyJEb2N1bWVudCJdOwogICAgICAgICBmcmFtZVJlc291cmNlLmZpbmlzaGVkID0g
dHJ1ZTsKIAotICAgICAgICB0aGlzLmJpbmRSZXNvdXJjZVVSTChmcmFtZVJlc291cmNlKTsKICAg
ICAgICAgdGhpcy5hZGRPclVwZGF0ZUZyYW1lKGZyYW1lUGF5bG9hZCk7CiAgICAgICAgIHRoaXMu
YWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lUGF5bG9hZC5pZCwgZnJhbWVSZXNvdXJjZSk7CiAKQEAg
LTI0NCwxMiArMjMyLDI0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZVBheWxvYWQuc3VicmVz
b3VyY2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgY2FjaGVkUmVzb3VyY2UgPSBm
cmFtZVBheWxvYWQuc3VicmVzb3VyY2VzW2ldOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLmNyZWF0ZVJlc291cmNlKG51bGwsIGNhY2hl
ZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKKyAgICAgICAgICAgIHZhciBy
ZXNvdXJjZSA9IHRoaXMuY3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBj
YWNoZWRSZXNvdXJjZS5sb2FkZXIpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlKHJlc291cmNlLCBjYWNoZWRS
ZXNvdXJjZSk7CiAgICAgICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB0aGlzLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CiAgICAgICAgICAgICB0aGlzLmFk
ZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIHJlc291cmNlKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gZnJhbWVSZXNvdXJjZTsKKyAgICB9LAorCisgICAgY3JlYXRlUmVzb3Vy
Y2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBzdGFja1RyYWNlKQorICAgIHsK
KyAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShpZGVudGlm
aWVyLCB1cmwpOworICAgICAgICByZXNvdXJjZS5sb2FkZXIgPSBsb2FkZXI7CisgICAgICAgIGlm
IChsb2FkZXIpIHsKKyAgICAgICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0gbG9hZGVyLnVy
bDsKKyAgICAgICAgICAgIHRoaXMuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAg
fQorICAgICAgICByZXNvdXJjZS5zdGFja1RyYWNlID0gc3RhY2tUcmFjZTsKKworICAgICAgICBy
ZXR1cm4gcmVzb3VyY2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBiMWYwYzc4Li4yMzIwM2U5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDQzLDYg
KzQ0MywxMSBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICByZXR1cm4gdGhpcy5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXM7CiAgICAgfSwKIAorICAgIG5ldHdvcmtSZXNvdXJjZUJ5SWQ6
IGZ1bmN0aW9uKGlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFuZWxzLm5ldHdvcmsu
cmVzb3VyY2VCeUlkKGlkKTsKKyAgICB9LAorCiAgICAgZm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2Rl
bC5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78823</attachid>
            <date>2011-01-13 10:14:12 -0800</date>
            <delta_ts>2011-01-14 02:21:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>redirect-har.diff</filename>
            <type>text/plain</type>
            <size>33822</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZlZWNiLi43ZjdmNWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEt
MTIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRpcmVj
dGVkIHJlc291cmNlcyBub3QgaGFuZGxlZCBwcm9wZXJseSBpbiBOZXR3b3JrIHBhbmVsCisgICAg
ICAgIEFkZGVkIHRlc3QgZm9yIHJlZGlyZWN0ZWQgcmVzb3VyY2UgcHJlc2VuY2UgaW4gSEFSCisg
ICAgICAgIENoYW5nZWQgdGVzdCB0byByZXF1ZXN0IGVudGlyZSBIQVIgbG9nLCBub3QgbXVsdGlw
bGUgSEFSIGVudHJpZXMuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIyOTIKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWw6CisKIDIwMTEtMDEtMTMg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QtZXhwZWN0
ZWQudHh0CmluZGV4IGU4YzdiMzUuLjE3YThiYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXJl
c291cmNlcy1yZWRpcmVjdC1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxOCBAQAogVGVzdHMgV2Vi
SW5zcGVjdG9yIGV4dGVuc2lvbiBBUEkKIAorUGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5z
aW9uLgogCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0
UmVkaXJlY3RSZXNvdXJjZUNvbnRlbnQKLWNvbnRlbnQ6ICwgZW5jb2Rpbmc6IGJhc2U2NAorY29u
dGVudDogdW5kZWZpbmVkLCBlbmNvZGluZzogdW5kZWZpbmVkCitSVU5OSU5HIFRFU1Q6IGV4dGVu
c2lvbl90ZXN0UmVkaXJlY3RSZXNvdXJjZXNJbkhBUgorUmVzb3VyY2VzIGluIEhBUjoKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3Qu
aHRtbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNl
cy10ZXN0LmpzCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVz
dC5qcworaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMK
K2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIKIEFsbCB0
ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMtcmVkaXJlY3QuaHRtbAppbmRleCBj
M2I5NDc5Li5iNmQ1Yjc2IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zLXJlc291cmNlcy1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLXJlZGlyZWN0Lmh0bWwK
QEAgLTUsNiArNSwyMCBAQAogPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKK2Z1bmN0aW9uIGV4dGVuc2lv
bl9kb1JlcXVlc3QoY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKCkK
KyAgICB7CisgICAgICAgIHdlYkluc3BlY3Rvci5yZXNvdXJjZXMub25GaW5pc2hlZC5yZW1vdmVM
aXN0ZW5lcihjYWxsYmFja1dyYXBwZXIpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KKyAg
ICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIoY2FsbGJhY2tX
cmFwcGVyKTsKKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoImRvUmVxdWVz
dCgpIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAg
ICBjYWxsYmFja1dyYXBwZXIoKTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gZXh0ZW5zaW9uX3Rl
c3RHZXRSZWRpcmVjdFJlc291cmNlQ29udGVudChuZXh0VGVzdCkKIHsKICAgICBmdW5jdGlvbiBv
bkZpbmlzaGVkKCkKQEAgLTE4LDE3ICszMiw0NyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdl
dFJlZGlyZWN0UmVzb3VyY2VDb250ZW50KG5leHRUZXN0KQogICAgICAgICBvdXRwdXQoImNvbnRl
bnQ6ICIgKyBjb250ZW50ICsgIiwgZW5jb2Rpbmc6ICIgKyBlbmNvZGluZyk7CiAgICAgICAgIG5l
eHRUZXN0KCk7CiAgICAgfQorICAgIGV4dGVuc2lvbl9kb1JlcXVlc3Qob25GaW5pc2hlZCk7Cit9
CiAKLSAgICB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzLm9uRmluaXNoZWQuYWRkTGlzdGVuZXIob25G
aW5pc2hlZCk7Ci0gICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFsKCJkb1JlcXVl
c3QoKSIpOworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RSZWRpcmVjdFJlc291cmNlc0luSEFSKG5l
eHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uRmluaXNoZWQoKQorICAgIHsKKyAgICAgICAgd2Vi
SW5zcGVjdG9yLnJlc291cmNlcy5nZXRIQVIob25IQVIpOworICAgIH0KKyAgICBmdW5jdGlvbiBv
bkhBUihoYXIpCisgICAgeworICAgICAgICB2YXIgZW50cmllcyA9IGhhci5lbnRyaWVzOworICAg
ICAgICB2YXIgdXJscyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB1cmxzLnB1c2goZW50cmllc1tpXS5yZXF1ZXN0LnVy
bCk7CisgICAgICAgIHVybHMuc29ydCgpOworICAgICAgICBvdXRwdXQoIlJlc291cmNlcyBpbiBI
QVI6XG4iICsgdXJscy5qb2luKCJcbiIpKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9Cisg
ICAgZXh0ZW5zaW9uX2RvUmVxdWVzdChvbkZpbmlzaGVkKTsKIH0KIAordmFyIHJlcXVlc3REb25l
ID0gZmFsc2U7CisKIGZ1bmN0aW9uIGRvUmVxdWVzdCgpCiB7CisgICAgLy8gT25seSBkbyByZXF1
ZXN0IG9uY2UgcGVyIHRlc3Qgc3VpdGUsIHRvIG1ha2UgdGVzdHMgaW5kZXBlbmRlbnQgb24gZWFj
aCBvdGhlci4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWZmIHJlcXVlc3QgaXMgYWxyZWR5IGRvbmUg
KHNvIHRoZSBjYWxsZXIgc2hvdWxkbid0IHdhaXQgZm9yIG9uRmluaXNoZWQpLgorICAgIGlmIChy
ZXF1ZXN0RG9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmVxdWVzdERvbmUgPSB0cnVl
OwogICAgIC8vIFdlIGNhbid0IHVzZSBYSFIgaGVyZSAtLSB0aGUgY29udGVudCBmb3IgWEhScyBp
cyBwdXNoZWQgZnJvbSBiYWNrLWVuZC4KICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CiAgICAgaWZyYW1lLnNyYyA9ICIvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3N0YXR1cz0zMDIiOwogICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciB0ZXN0
ID0gZnVuY3Rpb24oKQoreworICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJbnNwZWN0b3JU
ZXN0LnJ1bkV4dGVuc2lvblRlc3RzKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNp
b24uaHRtbAppbmRleCA0ZGI1MThlLi41MWM3ODk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0
bWwKQEAgLTcsMTEgKzcsNiBAQAogCiB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBmdW5j
dGlvbiBnZXRIQVIoaWQpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
QVJFbnRyeShXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlc1tpZF0pLmJ1aWxkKCk7Ci0gICAg
fQotCiAgICAgZnVuY3Rpb24gYWRkQ29va2llSGVhZGVyc1RvUmVzb3VyY2UocmVzb3VyY2UpCiAg
ICAgewogICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHsKQEAgLTMzLDggKzI4LDkg
QEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlSWZO
ZWVkZWQoZnVuY3Rpb24oKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1
bHQoKS5ldmFsdWF0ZSgiZG9YSFIoKSIsICJjb25zb2xlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBhZGRDb29raWVIZWFkZXJzVG9SZXNvdXJjZShmaW5kUmVzb3VyY2VCeVVSTCgvaW5zcGVj
dG9yLXRlc3QyXC5qcyQvKSk7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2VzID0gT2JqZWN0Lmtl
eXMoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcChnZXRIQVIpLnNvcnQoSW5zcGVj
dG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkT2JqZWN0KHJlc291cmNlcywgSW5zcGVjdG9yVGVzdC5IQVJOb25kZXRlcm1pbmlzdGljUHJv
cGVydGllc1dpdGhTaXplKTsKKyAgICAgICAgICAgIHZhciBlbnRyaWVzID0gKG5ldyBXZWJJbnNw
ZWN0b3IuSEFSTG9nKCkpLmJ1aWxkKCkuZW50cmllczsKKyAgICAgICAgICAgIGVudHJpZXMuc29y
dChJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFyZXIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QoZW50cmllcywgSW5zcGVjdG9yVGVzdC5IQVJOb25kZXRlcm1pbmlz
dGljUHJvcGVydGllc1dpdGhTaXplKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtcmVzb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAppbmRleCAwYjUwZDFhLi4yZjBmNzNjIDEwMDc1
NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMuaHRtbApAQCAt
MzcsNyArMzcsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEdldEhBUihuZXh0VGVzdCkKIGZ1
bmN0aW9uIGRvWEhSKCkKIHsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0g
ICAgeGhyLm9wZW4oIkdFVCIsIGxvY2F0aW9uLmhyZWYsIGZhbHNlKTsKKyAgICB4aHIub3Blbigi
R0VUIiwgIiIsIGZhbHNlKTsKICAgICB4aHIuc2VuZChudWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGNjNWZhMzcuLmYwOTFmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMS0wMS0x
MiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZGlyZWN0
ZWQgcmVzb3VyY2VzIG5vdCBoYW5kbGVkIHByb3Blcmx5IGluIE5ldHdvcmsgcGFuZWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMjkyCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDogRG8gbm90IHBhc3MgaXNNYWluUmVzb3VyY2Ug
dG8gaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KCkgKGl0J3MgdXNlbGVzcywgYXMgd2UgbWF5
IGhpdCBwcm92aXNpb25hbCBsb2FkKQorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDogRGl0dG8u
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3RJbXBsKTogRml4IG1haW4gcmVzb3VyY2UgZGV0ZWN0aW9uLgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6IFdlYkluc3BlY3Rvci5u
ZXR3b3JrUmVzb3VyY2VzIG5vdyByZXR1cm5zIGFycmF5LCBub3QgbWFwLgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6IFVzZXIgV2ViSW5zcGVjdG9yLnJlc291
cmNlQnlJZCgpIHRvIGdldCByZXNvdXJjZQorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uUmV2ZWFsQW5kU2VsZWN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uR2V0UmVz
b3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5Lmpz
OiBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNlcyBub3cgcmV0dXJucyBhcnJheSwgbm90IG1h
cAorICAgICAgICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuYnVpbGQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhBUkxvZy5wcm90b3R5cGUuX2NvbnZlcnRSZXNvdXJjZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlcik6IFVzZSBhcHBlbmRSZXNvdXJjZSwgbm90IHJlZnJl
c2hSZXNvdXJjZSwgd2hlbiBhZGRpbmcgYSBuZXcgcmVzb3VyY2UuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnNldEluaXRpYWxDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkQ29tbWl0TG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlk
Q3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKTogYWx3YXlzIHJlZ2lzdGVyIHJlc291cmNlIFVSTCB3
aXRoIFJlc291cmNlVHJlZU1vZGVsIAorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5h
Z2VyLnByb3RvdHlwZS5fYXBwZW5kUmVkaXJlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5nZXQgcmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLnJl
c291cmNlQnlJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlw
ZS5hcHBlbmRSZXNvdXJjZSk6IEFkZCByZXNvdXJjZSBhcyBuZXcgaWZmIGFwcGVuZFJlc291cmNl
IHdhcyBhZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBl
LnJlZnJlc2hSZXNvdXJjZSk6IGRpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUubWFpblJlc291cmNlQ2hhbmdlZCk6IENsZWFyIGNvbnNvbGUgdXBvbiBh
cnJpdmFsIG9mIG5ldyBtYWluIHJlc291cmNlLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IEV4cG9zZSB1bmJpbmRSZXNvdXJjZVVSTCwgYmluZCBy
ZXNvdXJjZXMgYXV0b21hdGljYWxseSB1cG9uIGNyZWF0aW9uLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY2xlYXJSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS51bmJpbmRSZXNvdXJj
ZVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBl
Ll9hZGRGcmFtZXNSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwucHJvdG90eXBlLmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNvdXJjZUJ5
SWQpOgorCiAyMDExLTAxLTEzICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwKaW5kZXggZWQwMGNjNy4uYTQzMmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC05MSw3ICs5MSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2Rv
bWFpbj1OZXR3b3JrXSB2b2lkIHJlc291cmNlQ29udGVudChpbiB1bnNpZ25lZCBsb25nIGZyYW1l
SWQsIGluIFN0cmluZyB1cmwsIGluIGJvb2xlYW4gYmFzZTY0RW5jb2RlLCBvdXQgU3RyaW5nIGNv
bnRlbnQpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBmcmFtZURldGFj
aGVkRnJvbVBhcmVudChvdXQgdW5zaWduZWQgbG9uZyBmcmFtZUlkKTsKIAotICAgICAgICBbbm90
aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0
IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9hZGVyLCBvdXQg
Ym9vbGVhbiBpc01haW5SZXNvdXJjZUxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7CisgICAg
ICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2Fk
ZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29y
a10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBPYmplY3QgcmVkaXJlY3RSZXNwb25zZSk7CiAg
ICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVk
KG91dCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10g
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lLCBvdXQgU3RyaW5nIHJlc291cmNlVHlwZSwgb3V0IE9iamVjdCByZXNwb25zZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IDkzOTVkZDUuLjg5MDU3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
KgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBs
KEluc3BlY3RvckNvbnRyb2xsCiAgICAgaWMtPmVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CiAKICAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVz
b3VyY2VBZ2VudChpYykpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLCBsb2FkZXIsIGljLT5pc01haW5S
ZXNvdXJjZUxvYWRlcihsb2FkZXIsIHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAgcmVzb3VyY2VB
Z2VudC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJs
KCksIGxvYWRlcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBhNDI1Nzk3Li45ZmM1NjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBA
IC0yODMsNyArMjgzLDcgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291
cmNlQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwm
IHVybCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgYm9vbCBpc01haW5SZXNvdXJjZSkKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvYWRlck9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yRG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IGNhbGxTdGFjay0+
YnVpbGRJbnNwZWN0b3JPYmplY3QoKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxTdGFja1ZhbHVl
ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKLSAgICBtX2Zyb250ZW5kLT5pZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBsb2FkZXJPYmplY3QsIGlz
TWFpblJlc291cmNlLCBjYWxsU3RhY2tWYWx1ZSk7CisgICAgbV9mcm9udGVuZC0+aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHVybC5zdHJpbmcoKSwgbG9hZGVyT2JqZWN0
LCBjYWxsU3RhY2tWYWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2ls
bFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXgg
ZjNmMzIxMS4uMWU3N2Q1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIH5J
bnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFs
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmLCBEb2N1bWVudExv
YWRlciosIGJvb2wgaXNNYWluUmVzb3VyY2UpOworICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIERvY3VtZW50
TG9hZGVyKik7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5q
cwppbmRleCBjNDIwNzdmLi5jNjM5ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEyOSw5ICsxMjksNyBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2V4ZWN1dGVBdWRpdDogZnVuY3Rp
b24oY2F0ZWdvcmllcywgcmVzdWx0Q2FsbGJhY2spCiAgICAgewotICAgICAgICB2YXIgcmVzb3Vy
Y2VzID0gW107Ci0gICAgICAgIGZvciAodmFyIGlkIGluIFdlYkluc3BlY3Rvci5uZXR3b3JrUmVz
b3VyY2VzKQotICAgICAgICAgICAgcmVzb3VyY2VzLnB1c2goV2ViSW5zcGVjdG9yLm5ldHdvcmtS
ZXNvdXJjZXNbaWRdKTsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5uZXR3
b3JrUmVzb3VyY2VzOwogCiAgICAgICAgIHZhciBydWxlc1JlbWFpbmluZyA9IDA7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7ICsraSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGM5ODU1
MmQuLmIwMTI4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcwpAQCAtNjY4LDcgKzY2OCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9tZXNzYWdlVGV4dCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5OZXR3b3JrRXJyb3I6Ci0gICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhp
cy5fcmVxdWVzdElkICYmIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbdGhp
cy5fcmVxdWVzdElkXTsKKyAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXF1
ZXN0SWQgJiYgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlQnlJZCh0aGlzLl9y
ZXF1ZXN0SWQpOwogICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAg
ICAgICAgICBzdGFja1RyYWNlID0gcmVzb3VyY2Uuc3RhY2tUcmFjZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwppbmRl
eCAzNzNjODU1Li4xMzIwZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjg4LDcgKzI4OCw3IEBAIFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgaWQgPSBtZXNz
YWdlLmlkOwogICAgICAgICB2YXIgcmVzb3VyY2UgPSBudWxsOwogCi0gICAgICAgIHJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXNbaWRdIHx8IFdlYkluc3BlY3Rvci5yZXNv
dXJjZUZvclVSTChpZCk7CisgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtS
ZXNvdXJjZUJ5SWQoaWQpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChpZCk7CiAgICAg
ICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9U
Rk9VTkQodHlwZW9mIGlkICsgIjogIiArIGlkKTsKIApAQCAtMzE4LDcgKzMxOCw3IEBAIFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgfTsKICAg
ICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIHBvcnQs
IHJlc3BvbnNlKTsKICAgICAgICAgfQotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IubmV0d29ya1Jlc291cmNlc1ttZXNzYWdlLmlkXTsKKyAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZUJ5SWQobWVzc2FnZS5pZCk7CiAgICAgICAgIGlm
ICghcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQo
bWVzc2FnZS5pZCk7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KG9uQ29udGVudEF2
YWlsYWJsZS5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSEFSRW50cnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hBUkVudHJ5LmpzCmluZGV4IDZkZmJkMWIuLjRkNjkwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjA0LDcgKzIwNCw3IEBAIFdl
Ykluc3BlY3Rvci5IQVJMb2cucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZlcnNpb246
IHdlYktpdFZlcnNpb24gPyB3ZWJLaXRWZXJzaW9uWzFdIDogIm4vYSIKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICBwYWdlczogdGhpcy5fYnVpbGRQYWdlcygpLAotICAgICAgICAgICAgZW50
cmllczogT2JqZWN0LmtleXMoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXMpLm1hcCh0aGlz
Ll9jb252ZXJ0UmVzb3VyY2UuYmluZCh0aGlzKSkKKyAgICAgICAgICAgIGVudHJpZXM6IFdlYklu
c3BlY3Rvci5uZXR3b3JrUmVzb3VyY2VzLm1hcCh0aGlzLl9jb252ZXJ0UmVzb3VyY2UuYmluZCh0
aGlzKSkKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTIyOCwxMSArMjI4LDExIEBAIFdlYkluc3Bl
Y3Rvci5IQVJMb2cucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9jb252
ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKGlkKQorICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9u
KHJlc291cmNlKQogICAgIHsKLSAgICAgICAgdmFyIGVudHJ5ID0gKG5ldyBXZWJJbnNwZWN0b3Iu
SEFSRW50cnkoV2ViSW5zcGVjdG9yLm5ldHdvcmtSZXNvdXJjZXNbaWRdKSkuYnVpbGQoKTsKKyAg
ICAgICAgdmFyIGVudHJ5ID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSRW50cnkocmVzb3VyY2UpKS5i
dWlsZCgpOwogICAgICAgICBpZiAodGhpcy5pbmNsdWRlUmVzb3VyY2VJZHMpCi0gICAgICAgICAg
ICBlbnRyeS5fcmVzb3VyY2VJZCA9IGlkOworICAgICAgICAgICAgZW50cnkuX3Jlc291cmNlSWQg
PSByZXNvdXJjZS5pZGVudGlmaWVyOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfSwKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFn
ZXIuanMKaW5kZXggOWM5MzgxYi4uODEyZDc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMiw3
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlciA9IGZ1bmN0aW9uKHJlc291cmNlVHJlZU1v
ZGVsKQogewogICAgIHRoaXMuX3Jlc291cmNlc0J5SWQgPSB7fTsKICAgICB0aGlzLl9yZXNvdXJj
ZVRyZWVNb2RlbCA9IHJlc291cmNlVHJlZU1vZGVsOworICAgIHRoaXMuX2xhc3RJZGVudGlmaWVy
Rm9yQ2FjaGVkUmVzb3VyY2UgPSAwOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21h
aW5EaXNwYXRjaGVyKCJOZXR3b3JrIiwgdGhpcyk7CiB9CiAKQEAgLTg2LDE4ICs4NywxMiBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3Vy
Y2UgPSBmdW5jdGlvbihyZXNvdXJjZQogfQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
cHJvdG90eXBlID0gewotICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDogZnVuY3Rpb24o
aWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGlzTWFpblJlc291cmNlLCBjYWxsU3RhY2spCisgICAg
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxv
YWRlciwgY2FsbFN0YWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3Jl
YXRlUmVzb3VyY2UoaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjayk7Ci0gICAgICAg
IGlmIChpc01haW5SZXNvdXJjZSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNv
dXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgcmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGJpbmQgcmVz
b3VyY2UgdXJsIGVhcmx5IChiZWZvcmUgc2NyaXB0cyBjb21waWxlKS4KLSAgICAgICAgdGhpcy5f
cmVzb3VyY2VUcmVlTW9kZWwuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuY3JlYXRlUmVzb3VyY2UoaWRlbnRp
ZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjayk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5
SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLmFwcGVuZFJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VTdGFydGVkKHJlc291cmNlKTsKICAgICB9LAog
CkBAIC0xMjAsNyArMTE1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gdGltZTsKIAogICAgICAgICBpZiAo
aXNSZWRpcmVjdCkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuYXBwZW5kUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VTdGFydGVkKHJlc291cmNlKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291
cmNlKHJlc291cmNlKTsKQEAgLTE5NywxNCArMTkyLDE0IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGU6IGZ1bmN0aW9uKHRpbWUsIGNhY2hlZFJlc291cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHJl
c291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBj
YWNoZWRSZXNvdXJjZS5sb2FkZXIpOworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNv
dXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZSgiY2FjaGVkOiIgKyArK3RoaXMuX2xhc3RJZGVu
dGlmaWVyRm9yQ2FjaGVkUmVzb3VyY2UsIGNhY2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3Vy
Y2UubG9hZGVyKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJl
c291cmNlV2l0aENhY2hlZFJlc291cmNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAg
ICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRo
b2QgPSAiR0VUIjsKICAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gcmVzb3VyY2UucmVzcG9u
c2VSZWNlaXZlZFRpbWUgPSByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKICAgICAgICAgcmVzb3Vy
Y2UuZmluaXNoZWQgPSB0cnVlOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsuYXBwZW5kUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKICAgICAgICAg
dGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRl
ci5mcmFtZUlkLCByZXNvdXJjZSk7CkBAIC0yMTcsNyArMjEyLDcgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIHNldEluaXRpYWxDb250ZW50OiBmdW5j
dGlvbihpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIHR5cGUpCiAgICAgewotICAgICAgICB2YXIg
cmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW2lkZW50aWZp
ZXJdOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya1Jlc291cmNl
QnlJZChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMjMwLDE0ICsyMjUsMjIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICBkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1l
LCBsb2FkZXIpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5kaWRDb21t
aXRMb2FkRm9yRnJhbWUoZnJhbWUsIGxvYWRlcik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UoV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSk7Cisg
ICAgICAgIGlmICghZnJhbWUucGFyZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBtYWluUmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTChmcmFtZS51cmwpOwor
ICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZSkgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5tYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2U7CisgICAgICAgICAgICAgICAgbWFpblJl
c291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsubWFpblJlc291cmNlQ2hhbmdlZCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgfSwKIAogICAgIGRpZENyZWF0ZVdlYlNvY2tldDogZnVuY3Rpb24oaWRl
bnRpZmllciwgcmVxdWVzdFVSTCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMu
X2NyZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOworICAgICAgICB2YXIgcmVz
b3VyY2UgPSB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVy
LCByZXF1ZXN0VVJMKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9
IHJlc291cmNlOwogICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuV2ViU29ja2V0OwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVm
cmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLmFwcGVuZFJlc291cmNlKHJlc291cmNlKTsKICAgICB9LAogCiAgICAgd2lsbFNlbmRXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCByZXF1ZXN0
KQpAQCAtMjc5LDI4ICsyODIsMjAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNv
dXJjZShyZXNvdXJjZSk7CiAgICAgfSwKIAotICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24o
aWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShp
ZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsKLSAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOwotICAgICAgICByZXR1cm4gcmVzb3VyY2U7
Ci0gICAgfSwKLQogICAgIF9hcHBlbmRSZWRpcmVjdDogZnVuY3Rpb24oaWRlbnRpZmllciwgcmVk
aXJlY3RVUkwpCiAgICAgewogICAgICAgICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jl
c291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIHZhciBwcmV2aW91c1JlZGlyZWN0cyA9
IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOwogICAgICAgICBvcmlnaW5hbFJlc291
cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luYWxSZXNvdXJjZS5pZGVudGlmaWVy
ID0gbnVsbDsKLQotICAgICAgICB2YXIgbmV3UmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJj
ZShpZGVudGlmaWVyLCByZWRpcmVjdFVSTCwgb3JpZ2luYWxSZXNvdXJjZS5sb2FkZXIsIG9yaWdp
bmFsUmVzb3VyY2Uuc3RhY2tUcmFjZSk7Ci0gICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cyA9
IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOworICAgICAgICBvcmlnaW5hbFJlc291
cmNlLmlkZW50aWZpZXIgPSAicmVkaXJlY3RlZDoiICsgaWRlbnRpZmllciArICIuIiArIHByZXZp
b3VzUmVkaXJlY3RzLmxlbmd0aDsKICAgICAgICAgZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2UucmVk
aXJlY3RzOwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMucHVzaChvcmlnaW5hbFJlc291
cmNlKTsKLSAgICAgICAgaWYgKG9yaWdpbmFsUmVzb3VyY2UuaXNNYWluUmVzb3VyY2UpIHsKLSAg
ICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFJlc291cmNlLmlzTWFpblJlc291cmNlOwotICAgICAg
ICAgICAgbmV3UmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOwotICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG5ld1Jlc291cmNlOwotICAgICAgICB9CisgICAgICAg
IC8vIFdlIGJvdW5kIHJlc291cmNlIGVhcmx5LCBidXQgaXQgaGFwcGVuZWQgdG8gYmUgYSByZWRp
cmVjdCBhbmQgd29uJ3QgbWFrZSBpdCB0aHJvdWdoIHRvCisgICAgICAgIC8vIHRoZSByZXNvdXJj
ZSB0cmVlIC0tIHNvIHVuYmluZCBpdC4KKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwu
dW5iaW5kUmVzb3VyY2VVUkwob3JpZ2luYWxSZXNvdXJjZSk7CisgICAgICAgIAorICAgICAgICB2
YXIgbmV3UmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShp
ZGVudGlmaWVyLCByZWRpcmVjdFVSTCwgb3JpZ2luYWxSZXNvdXJjZS5sb2FkZXIsIG9yaWdpbmFs
UmVzb3VyY2Uuc3RhY2tUcmFjZSk7CisgICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cyA9IHBy
ZXZpb3VzUmVkaXJlY3RzLmNvbmNhdChvcmlnaW5hbFJlc291cmNlKTsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IG5ld1Jlc291cmNlOwogICAgICAgICByZXR1cm4g
bmV3UmVzb3VyY2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA3YjZkZjhiLi4xMDFkM2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBbnRo
b255IFJpY2F1ZCA8cmlrQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOCw3ICszOCw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5fcmVzb3VyY2VzID0gW107CiAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9
OwogICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMID0ge307Ci0gICAgdGhpcy5fbGFzdElkZW50aWZp
ZXIgPSAwOwogICAgIHRoaXMuX3N0YWxlUmVzb3VyY2VzID0gW107CiAgICAgdGhpcy5fcmVzb3Vy
Y2VHcmlkTm9kZXMgPSB7fTsKICAgICB0aGlzLl9tYWluUmVzb3VyY2VMb2FkVGltZSA9IC0xOwpA
QCAtNzMzLDEyICs3MzIsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCA9ICF0aGlzLl9wcmVz
ZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkOwogICAgIH0sCiAKLSAgICByZXNldDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkKQotICAg
ICAgICAgICAgdGhpcy5fcmVzZXQoKTsKLSAgICB9LAotCiAgICAgX3Jlc2V0OiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVySGVscGVyLmhpZGVQb3B1cCgpOwpAQCAtNzcx
LDMyICs3NjQsMzQgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAK
ICAgICBnZXQgcmVzb3VyY2VzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJj
ZXNCeUlkOworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzOwogICAgIH0sCiAKLSAgICBy
ZWZyZXNoUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHJlc291cmNlQnlJZDogZnVu
Y3Rpb24oaWQpCiAgICAgewotICAgICAgICBpZiAoIXJlc291cmNlLmlkZW50aWZpZXIpCi0gICAg
ICAgICAgICByZXNvdXJjZS5pZGVudGlmaWVyID0gIm5ldHdvcms6IiArIHRoaXMuX2xhc3RJZGVu
dGlmaWVyKys7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkXTsKKyAgICB9
LAogCi0gICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2VzQnlJZFtyZXNvdXJjZS5pZGVudGlmaWVy
XSkgewotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpOwotICAgICAg
ICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtyZXNvdXJjZS5pZGVudGlmaWVyXSA9IHJlc291cmNl
OwotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IHJlc291
cmNlOworICAgIGFwcGVuZFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3Jlc291cmNlcy5wdXNoKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQnlJZFtyZXNvdXJjZS5pZGVudGlmaWVyXSA9IHJlc291cmNlOworICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2U7CiAKLSAgICAgICAgICAgIC8v
IFB1bGwgYWxsIHRoZSByZWRpcmVjdHMgb2YgdGhlIG1haW4gcmVzb3VyY2UgdXBvbiBjb21taXQg
bG9hZC4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS5yZWRpcmVjdHMpIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlLnJlZGlyZWN0cy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UucmVkaXJl
Y3RzW2ldKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gUHVsbCBhbGwgdGhlIHJlZGlyZWN0
cyBvZiB0aGUgbWFpbiByZXNvdXJjZSB1cG9uIGNvbW1pdCBsb2FkLgorICAgICAgICBpZiAocmVz
b3VyY2UucmVkaXJlY3RzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291
cmNlLnJlZGlyZWN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZS5yZWRpcmVjdHNbaV0pOwogICAgICAgICB9CiAKKyAgICAgICAgdGhp
cy5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICByZWZyZXNoUmVzb3Vy
Y2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKICAgICAgICAgdGhpcy5fc3RhbGVSZXNvdXJj
ZXMucHVzaChyZXNvdXJjZSk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpOwogCi0g
ICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgdmFy
IG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3
Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICBpZiAoIW9sZFZpZXcpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC04MDksNiArODA0LDE3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CiAg
ICAgfSwKIAorICAgIG1haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisgICAgICAgIC8vIE5vdyByZXN1cnJlY3Qg
dGhlIG1haW4gcmVzb3VyY2UgYWxvbmcgd2l0aCBhbGwgcmVkaXJlY3RzIHRoYXQgbGVhZCB0byBp
dC4KKyAgICAgICAgdmFyIHJlc291cmNlc1RvQXBwZW5kID0gKFdlYkluc3BlY3Rvci5tYWluUmVz
b3VyY2UucmVkaXJlY3RzIHx8IFtdKS5jb25jYXQoV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSk7
CisgICAgICAgIHJlc291cmNlc1RvQXBwZW5kLmZvckVhY2godGhpcy5hcHBlbmRSZXNvdXJjZSwg
dGhpcyk7CisgICAgfSwKKwogICAgIGNhblNob3dTb3VyY2VMaW5lOiBmdW5jdGlvbih1cmwsIGxp
bmUpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9yZXNvdXJjZXNCeVVSTFt1cmxdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRy
ZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VU
cmVlTW9kZWwuanMKaW5kZXggN2M3Yjg2ZC4uZWVmMmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zOCwx
NyArMzgsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbigpCiAg
ICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhpcy5fcHJvY2Vzc0NhY2hlZFJl
c291cmNlcy5iaW5kKHRoaXMpKTsKIH0KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
LmNyZWF0ZVJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIHN0YWNr
VHJhY2UpCi17Ci0gICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShp
ZGVudGlmaWVyLCB1cmwpOwotICAgIHJlc291cmNlLmxvYWRlciA9IGxvYWRlcjsKLSAgICBpZiAo
bG9hZGVyKQotICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVSTCA9IGxvYWRlci51cmw7Ci0gICAg
cmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2U7
Ci19Ci0KIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
YWRkT3JVcGRhdGVGcmFtZTogZnVuY3Rpb24oZnJhbWUpCiAgICAgewpAQCAtMTc1LDcgKzE2NCw3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUucHVzaChyZXNvdXJjZSk7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl91
bmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CisgICAgICAgICAgICB0aGlzLnVuYmluZFJlc291
cmNlVVJMKHJlc291cmNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNv
dXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CkBAIC0yMDEsNyArMTkwLDcgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0sCiAKLSAgICBfdW5iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQorICAg
IHVuYmluZFJlc291cmNlVVJMOiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHZh
ciByZXNvdXJjZUZvclVSTCA9IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07CiAg
ICAgICAgIGlmICghcmVzb3VyY2VGb3JVUkwpCkBAIC0yMjYsMTMgKzIxNSwxMiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgX2FkZEZyYW1lc1Jl
Y3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZVBheWxvYWQpCiAgICAgewotICAgICAgICB2YXIgZnJh
bWVSZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJj
ZShudWxsLCBmcmFtZVBheWxvYWQucmVzb3VyY2UudXJsLCBmcmFtZVBheWxvYWQucmVzb3VyY2Uu
bG9hZGVyKTsKKyAgICAgICAgdmFyIGZyYW1lUmVzb3VyY2UgPSB0aGlzLmNyZWF0ZVJlc291cmNl
KG51bGwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5s
b2FkZXIpOwogICAgICAgICBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRlUmVzb3Vy
Y2VXaXRoUmVxdWVzdChmcmFtZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3VyY2UucmVxdWVz
dCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51cGRhdGVSZXNvdXJjZVdp
dGhSZXNwb25zZShmcmFtZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3VyY2UucmVzcG9uc2Up
OwogICAgICAgICBmcmFtZVJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZVsiRG9jdW1lbnQiXTsKICAgICAgICAgZnJhbWVSZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CiAK
LSAgICAgICAgdGhpcy5iaW5kUmVzb3VyY2VVUkwoZnJhbWVSZXNvdXJjZSk7CiAgICAgICAgIHRo
aXMuYWRkT3JVcGRhdGVGcmFtZShmcmFtZVBheWxvYWQpOwogICAgICAgICB0aGlzLmFkZFJlc291
cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1lUmVzb3VyY2UpOwogCkBAIC0yNDQsMTIg
KzIzMiwyNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhY2hlZFJlc291cmNlID0gZnJhbWVQYXls
b2FkLnN1YnJlc291cmNlc1tpXTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRSZXNvdXJj
ZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLmNyZWF0ZVJlc291cmNlKG51bGwsIGNhY2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVz
b3VyY2UubG9hZGVyKTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51
cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2Up
OwogICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhp
cy5iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwogICAgICAgICAgICAgdGhpcy5hZGRSZXNvdXJj
ZVRvRnJhbWUoZnJhbWVQYXlsb2FkLmlkLCByZXNvdXJjZSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGZyYW1lUmVzb3VyY2U7CisgICAgfSwKKworICAgIGNyZWF0ZVJlc291cmNlOiBmdW5j
dGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgc3RhY2tUcmFjZSkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UoaWRlbnRpZmllciwgdXJs
KTsKKyAgICAgICAgcmVzb3VyY2UubG9hZGVyID0gbG9hZGVyOworICAgICAgICBpZiAobG9hZGVy
KSB7CisgICAgICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVSTCA9IGxvYWRlci51cmw7CisgICAg
ICAgICAgICB0aGlzLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7CisKKyAgICAgICAgcmV0dXJuIHJl
c291cmNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggYjFmMGM3OC4uMjMyMDNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQ0Myw2ICs0NDMsMTEg
QEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWxzLm5ldHdv
cmsucmVzb3VyY2VzOwogICAgIH0sCiAKKyAgICBuZXR3b3JrUmVzb3VyY2VCeUlkOiBmdW5jdGlv
bihpZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnBhbmVscy5uZXR3b3JrLnJlc291cmNl
QnlJZChpZCk7CisgICAgfSwKKwogICAgIGZvckFsbFJlc291cmNlczogZnVuY3Rpb24oY2FsbGJh
Y2spCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxs
UmVzb3VyY2VzKGNhbGxiYWNrKTsK
</data>
<flag name="review"
          id="70190"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>