<?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>160973</bug_id>
          
          <creation_ts>2016-08-18 14:25:37 -0700</creation_ts>
          <short_desc>Web Inspector: Add a button to navigation bar to toggle Control Flow Profiler</short_desc>
          <delta_ts>2016-09-08 16:16:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>160872</dependson>
          <blocked>151695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1221184</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-18 14:25:37 -0700</bug_when>
    <thetext>The backend of Control Flow Profiler was decoupled from Type Profiler (bug 160750).

Add a button to toggle Control Flow Profiler independently from Type Profiler.
The existing Type Profiler button shouldn&apos;t affect Control Flow Profiler any longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221186</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-18 14:25:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/27912606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221193</commentid>
    <comment_count>2</comment_count>
      <attachid>286397</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-18 14:33:02 -0700</bug_when>
    <thetext>Created attachment 286397
WIP

No new icon yet. The same [T] icon is temporary used for Control Flow Profiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221196</commentid>
    <comment_count>3</comment_count>
      <attachid>286397</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-08-18 14:38:49 -0700</bug_when>
    <thetext>Comment on attachment 286397
WIP

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

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:294
&gt; +    toggleDeadCodeHighlights()

This name doesn&apos;t sound right. This is showing code coverage, code that has executed or not executed. &quot;Dead Code&quot; is a term of art for unreachable code, and that isn&apos;t what we are doing here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221197</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-18 14:40:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 286397 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286397&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:294
&gt; &gt; +    toggleDeadCodeHighlights()
&gt; 
&gt; This name doesn&apos;t sound right. This is showing code coverage, code that has
&gt; executed or not executed. &quot;Dead Code&quot; is a term of art for unreachable code,
&gt; and that isn&apos;t what we are doing here, right?

You&apos;re right. I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221455</commentid>
    <comment_count>5</comment_count>
      <attachid>286472</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-19 13:30:36 -0700</bug_when>
    <thetext>Created attachment 286472
Patch

In the code we use terms:
* Control Flow Profiler
* Code Coverage Profiler
* Basic Block Annotator
* Unexecuted Code Highlights

I&apos;m open to unify some of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223307</commentid>
    <comment_count>6</comment_count>
      <attachid>286472</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-08-25 16:21:23 -0700</bug_when>
    <thetext>Comment on attachment 286472
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:35
&gt; +        Make Code Coverage profiler indepedent from Type Profiler.

Nit: independent

&gt; Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js:68
&gt; +        var toolTipControlFlow = WebInspector.UIString(&quot;Gray out unexecuted code&quot;);

Nit: use &apos;let&apos;

I don&apos;t like this wording. How about &quot;Fade unexecuted code&quot;?

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:178
&gt; +        return !!this._basicBlockAnnotator;

This is super indirect as this is set far away in _makeBasicBlockAnnotator where it&apos;s guarded by if (RuntimeAgent.getBasicBlocks) {
If we are keying off this RuntimeAgent method, it would be better to do that here and rewrite the other guard to call this method instead.

Second, this doesn&apos;t seem to take into account the value of this.enableControlFlowProfilerSetting. Is this intentional? Some text to explain the different configurations that are now possible would make this a lot easier to review. It is aggravating that this patch introduces more uses of the term &quot;control flow profiler&quot; which so far has been limited to the RuntimeAgent method. I think we should stick to BasicBlockAnnotator-like method and setting names.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:356
&gt; +                    this._setBasicBlockAnnotatorEnabledState(false);

It would be nice to fold the existence checks into _setBasicBlockAnnotatorEnabledState as early exits. It would make this code easier to follow.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1737
&gt;              console.assert(this.visible, &quot;Annotators should not be enabled if the TextEditor is not visible&quot;);

This patch doesn&apos;t apply anymore so I can&apos;t see what this is doing. Can you rebase?

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1761
&gt; +    _setBasicBlockAnnotatorEnabledState(shouldActivate)

This should be a setter. Or I can&apos;t figure out why it shouldn&apos;t be.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1877
&gt; +    _makeControlFlowScrollEventHandler()

We use &apos;create&apos; as the prefix for factory methods.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1879
&gt; +        var timeoutIdentifier = null;

Nit: let

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1881
&gt; +        {

Don&apos;t put this on its own line.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1885
&gt; +                if (this._basicBlockAnnotator)

Please make an else if {

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1889
&gt; +            timeoutIdentifier = setTimeout(function() {

Use an arrow function instead of .bind(this).

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1896
&gt; +        return scrollHandler.bind(this);

The outer function that&apos;s returned should be an arrow function too.

&gt; Source/WebInspectorUI/UserInterface/Views/TextEditor.js:162
&gt; +    canShowBasicBlockAnnotator()

This name doesn&apos;t make sense. The user doesn&apos;t see a BasicBlockAnnotator. They see code coverage/altered styles. I would name it canShowCoverageHints or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223317</commentid>
    <comment_count>7</comment_count>
      <attachid>286472</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-25 16:33:52 -0700</bug_when>
    <thetext>Comment on attachment 286472
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1761
&gt;&gt; +    _setBasicBlockAnnotatorEnabledState(shouldActivate)
&gt; 
&gt; This should be a setter. Or I can&apos;t figure out why it shouldn&apos;t be.

This was mirrored from _setTypeTokenAnnotatorEnabledState.
Should it be &quot;_basicBlockAnnotatorEnabled&quot; and &quot;_typeTokenAnnotatorEnabled&quot;?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:1877
&gt;&gt; +    _makeControlFlowScrollEventHandler()
&gt; 
&gt; We use &apos;create&apos; as the prefix for factory methods.

This was mirrored from _makeTypeTokenAnnotator. Should I use &quot;create&quot; for both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224083</commentid>
    <comment_count>8</comment_count>
      <attachid>287235</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-28 13:09:24 -0700</bug_when>
    <thetext>Created attachment 287235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224084</commentid>
    <comment_count>9</comment_count>
      <attachid>287236</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-08-28 13:18:19 -0700</bug_when>
    <thetext>Created attachment 287236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226175</commentid>
    <comment_count>10</comment_count>
      <attachid>287236</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-09-03 14:41:15 -0700</bug_when>
    <thetext>Comment on attachment 287236
Patch

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

The patch looks fine overall, but I am worried about the race condition when clicking the button quickly. Can you post a new version with that fixed?

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:167
&gt; +    this.enableControlFlowProfilerSetting = new WebInspector.Setting(&quot;enable-control-flow-profiler&quot;, false);

I think this should be on by default. Isn&apos;t the performance/deopt impact negligible? We turn it off anyway while profiling.

&gt; Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js:69
&gt; +        let activatedToolTipCodeCoverage = WebInspector.UIString(&quot;Donât fade unexecuted code&quot;);

Please do not use contractions in UIStrings.

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:302
&gt; +            this.updateFormattedState(true).then(() =&gt; {

Is it possible for this promise to race with the user clicking on the button again really quickly? What would happen? Maybe toggleUnexecutedCodeHighlights should itself return a promise in all paths, and the button can disable itself until the state update is committed (i.e., the promise resolves).

&gt; Source/WebInspectorUI/UserInterface/Views/TextContentView.js:56
&gt; +        let activatedToolTipCodeCoverage = WebInspector.UIString(&quot;Donât fade unexecuted code&quot;);

Same comment as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227802</commentid>
    <comment_count>11</comment_count>
      <attachid>287236</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-09-08 14:15:06 -0700</bug_when>
    <thetext>Comment on attachment 287236
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/TextEditor.js:142
&gt; +        return this._codeMirror.historySize().undo &gt; 0;

Pretty printing code creates a CodeMirror history item. This getter always returns `true` for pretty-printed code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227869</commentid>
    <comment_count>12</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-09-08 15:19:06 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 287236 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=287236&amp;action=review
&gt; 
&gt; The patch looks fine overall, but I am worried about the race condition when
&gt; clicking the button quickly. Can you post a new version with that fixed?
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Base/Main.js:167
&gt; &gt; +    this.enableControlFlowProfilerSetting = new WebInspector.Setting(&quot;enable-control-flow-profiler&quot;, false);
&gt; 
&gt; I think this should be on by default. Isn&apos;t the performance/deopt impact
&gt; negligible? We turn it off anyway while profiling.

Saam and I need to measure performance impact first. I think it&apos;s better to keep it disabled by default for now.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js:69
&gt; &gt; +        let activatedToolTipCodeCoverage = WebInspector.UIString(&quot;Donât fade unexecuted code&quot;);
&gt; 
&gt; Please do not use contractions in UIStrings.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:302
&gt; &gt; +            this.updateFormattedState(true).then(() =&gt; {
&gt; 
&gt; Is it possible for this promise to race with the user clicking on the button
&gt; again really quickly? What would happen? Maybe
&gt; toggleUnexecutedCodeHighlights should itself return a promise in all paths,
&gt; and the button can disable itself until the state update is committed (i.e.,
&gt; the promise resolves).

It is practically impossible to have a race condition here. A minified resource always gets
pretty printed on first open. `this.updateFormattedState`, although asynchronous, is very fast
on consequent calls.

I can disable the button to be make the code less race condition prone, if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227882</commentid>
    <comment_count>13</comment_count>
      <attachid>288340</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-09-08 15:38:46 -0700</bug_when>
    <thetext>Created attachment 288340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227885</commentid>
    <comment_count>14</comment_count>
      <attachid>288340</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-08 15:40:31 -0700</bug_when>
    <thetext>Comment on attachment 288340
Patch

Rejecting attachment 288340 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 288340, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
file without the binary data in line: &quot;Binary files a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js and b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js differ&quot;.  Be sure to use the --binary flag when invoking &quot;git diff&quot; with diffs containing binary files. at /Volumes/Data/EWS/WebKit/Tools/Scripts/VCSUtils.pm line 820, &lt;ARGV&gt; line 80.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 25 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/2037042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227886</commentid>
    <comment_count>15</comment_count>
      <attachid>288342</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2016-09-08 15:42:43 -0700</bug_when>
    <thetext>Created attachment 288342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227905</commentid>
    <comment_count>16</comment_count>
      <attachid>288342</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-08 16:15:59 -0700</bug_when>
    <thetext>Comment on attachment 288342
Patch

Clearing flags on attachment: 288342

Committed r205674: &lt;http://trac.webkit.org/changeset/205674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227906</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-08 16:16:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286397</attachid>
            <date>2016-08-18 14:33:02 -0700</date>
            <delta_ts>2016-08-19 13:30:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP.txt</filename>
            <type>text/plain</type>
            <size>21760</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDZmZjNjODQ4MGE0ZmQzNTMzZmNk
ZjZkNWJhOGRhNmY2N2I4YzRkMTAuLmQ4ODEzN2E2NTE3NzY0ZmMzOWFiZGI2N2U0ZTdmOTNjNGEy
MWRmOTggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjM3CnpjbWV4em1VWUprKSh3flE+
Kz0qTzhBPSF3N302UHY3IW55T2Z2a0xuUW17eFZMbW9wYUxqQDJnZ0dFdnFRaD42Xwp6Sz1+QSlt
PVolUWtZQHxUTig/U1FGKjQxV2R+TGUrPUpXWXtqO2NnaUszUVNDczUrNGpvcVM9cztwVXFncV8r
VjgKRCpKKER3CgpkZWx0YSAyMwpmY21kbVNmJVZILSkod35RQ3ZQb0srcX1Ic2lOanthUDIkQENv
RTsyaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcwppbmRleCA4MjBlNWJhLi4yZTc2NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xNjIsMTAgKzE2MiwxMiBAQCBXZWJJ
bnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd0phdmFTY3JpcHRUeXBl
SW5mb3JtYXRpb25TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzaG93LWphdmFz
Y3JpcHQtdHlwZS1pbmZvcm1hdGlvbiIsIGZhbHNlKTsKICAgICBpZiAodGhpcy5zaG93SmF2YVNj
cmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWUgJiYgd2luZG93LlJ1bnRpbWVBZ2VudCAm
JiBSdW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2ZpbGVyKSB7CiAgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5lbmFibGVUeXBlUHJvZmlsZXIoKTsKLSAgICAgICAgaWYgKFJ1bnRpbWVBZ2VudC5lbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyKQotICAgICAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXIoKTsKICAgICB9CiAKKyAgICB0aGlzLmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXJTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJlbmFibGUtY29udHJvbC1m
bG93LXByb2ZpbGVyIiwgZmFsc2UpOworICAgIGlmICh0aGlzLmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXJTZXR0aW5nLnZhbHVlICYmIHdpbmRvdy5SdW50aW1lQWdlbnQgJiYgUnVudGltZUFnZW50
LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpCisgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyKCk7CisKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFBh
Z2Uuc2V0U2hvd1BhaW50UmVjdHMgZGlkIG5vdCBleGlzdC4KICAgICB0aGlzLnNob3dQYWludFJl
Y3RzU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygic2hvdy1wYWludC1yZWN0cyIs
IGZhbHNlKTsKICAgICBpZiAodGhpcy5zaG93UGFpbnRSZWN0c1NldHRpbmcudmFsdWUgJiYgd2lu
ZG93LlBhZ2VBZ2VudCAmJiBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njcmlw
dENvbnRlbnRWaWV3LmpzCmluZGV4IDE1MDAyNzkuLjYzZWJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENv
bnRlbnRWaWV3LmpzCkBAIC02MywxNSArNjMsMjEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28K
ICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlw
VHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVz
LnN2ZyIsIDEzLCAxNCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucywgdGhpcyk7CiAgICAgICAg
IHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLQog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhp
cy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisK
KyAgICAgICAgdmFyIHRvb2xUaXBDb250cm9sRmxvdyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
R3JheSBvdXQgdW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIHZhciBhY3RpdmF0ZWRUb29sVGlw
Q29udHJvbEZsb3cgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbuKAmXQgZ3JheSBvdXQgdW5l
eGVjdXRlZCBjb2RlIik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImdy
YXktb3V0LXVuZXhlY3V0ZWQtY29kZSIsIHRvb2xUaXBDb250cm9sRmxvdywgYWN0aXZhdGVkVG9v
bFRpcENvbnRyb2xGbG93LCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0
KTsKKyAgICAgICAgdGhpcy5fY29udHJvbEZsb3dCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2Vk
LCB0aGlzLl90b2dnbGVEZWFkQ29kZUhpZ2hsaWdodHMsIHRoaXMpOworICAgICAgICB0aGlzLl9j
b250cm9sRmxvd0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0RlYWRD
b2RlSGlnaGxpZ2h0c1NldHRpbmdDaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0
aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbV07CisgICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0
b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRo
aXMuX2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwogICAgIH0KIAogICAgIGdldCBz
Y3JpcHQoKQpAQCAtMjAyLDggKzIwOCwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZp
ZXcgPSBjbGFzcyBTY3JpcHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5DbwogICAg
IF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJl
Rm9ybWF0dGVkKCk7CisKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd1R5cGVBbm5vdGF0aW9ucygpOwog
ICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBX
ZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlOwor
CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9
IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd0Jhc2ljQmxvY2tBbm5vdGF0b3IoKTsKKyAgICAgICAg
dGhpcy5fY29udHJvbEZsb3dCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNw
ZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWU7CiAgICAgfQogCiAg
ICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQpAQCAtMjE3LDExICsyMjcsMjEgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuQ28KICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVUeXBlQW5u
b3RhdGlvbnMoKTsKICAgICB9CiAKKyAgICBfdG9nZ2xlRGVhZENvZGVIaWdobGlnaHRzKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVEZWFkQ29kZUhpZ2hsaWdo
dHMoKTsKKyAgICB9CisKICAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5n
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmln
YXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZv
cm1hdGlvblNldHRpbmcudmFsdWU7CiAgICAgfQogCisgICAgX3Nob3dEZWFkQ29kZUhpZ2hsaWdo
dHNTZXR0aW5nQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOworICAgIH0KKwogICAgIF90ZXh0RWRpdG9yRm9y
bWF0dGluZ0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IDEzZmNhZjkuLjU1NTRl
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMDEsMTQgKzEwMSwy
MyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2Rl
VGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNo
b3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZSkgewogICAgICAgICAgICAg
aWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAgICB0aGlzLl90eXBl
VG9rZW5Bbm5vdGF0b3IucmVzdW1lKCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9j
a0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJl
c3VtZSgpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyICYm
ICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikp
CisgICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgJiYgdGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZVNjcm9sbEV2
ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5ub3Rh
dG9yKQorICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAg
ICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1By
b2ZpbGVyU2V0dGluZy52YWx1ZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tB
bm5vdGF0b3IpCisgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXN1
bWUoKTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIg
JiYgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAgICB0aGlzLl9lbmFi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAg
ICAgICAgdGhpcy5fc2V0QmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBoaWRkZW4oKQpAQCAtMTY0LDYgKzE3MywxMSBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRv
ciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICByZXR1cm4gISF0aGlzLl90eXBlVG9rZW5Bbm5v
dGF0b3I7CiAgICAgfQogCisgICAgY2FuU2hvd0Jhc2ljQmxvY2tBbm5vdGF0b3IoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEhdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcjsKKyAgICB9CisKICAg
ICBjdXN0b21QZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gc2Vh
cmNoUmVzdWx0Q2FsbGJhY2soZXJyb3IsIG1hdGNoZXMpCkBAIC0yNDksMTAgKzI2MywxNCBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVk
aXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICBmb3IgKHZhciByYW5nZSBvZiBuZXdSYW5n
ZXMpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMocmFuZ2UpOwogCi0g
ICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fu
bm90YXRvcikgeworICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikgeworICAg
ICAgICAgICAgdGhpcy5fc2V0QmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7
CisgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yID0gbnVsbDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpIHsKICAgICAgICAgICAg
IHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAg
ICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgPSBudWxsOwotICAgICAgICAgICAgdGhpcy5f
YmFzaWNCbG9ja0Fubm90YXRvciA9IG51bGw7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3Myw2
ICsyOTEsMjMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291
cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIG5ld0Fj
dGl2YXRlZFN0YXRlOwogICAgIH0KIAorICAgIHRvZ2dsZURlYWRDb2RlSGlnaGxpZ2h0cygpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIG5ld0FjdGl2YXRlZFN0YXRlID0gIXRoaXMu
X2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKTsKKyAgICAgICAgaWYgKG5ld0FjdGl2YXRl
ZFN0YXRlICYmIHRoaXMuX2lzUHJvYmFibHlNaW5pZmllZCAmJiAhdGhpcy5mb3JtYXR0ZWQpIHsK
KyAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGVkU3RhdGUodHJ1ZSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgdGhpcy5fc2V0QmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWRTdGF0
ZShuZXdBY3RpdmF0ZWRTdGF0ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFi
bGVkU3RhdGUobmV3QWN0aXZhdGVkU3RhdGUpOworICAgICAgICByZXR1cm4gbmV3QWN0aXZhdGVk
U3RhdGU7CisgICAgfQorCiAgICAgc2hvd1BvcG92ZXJGb3JUeXBlcyh0eXBlRGVzY3JpcHRpb24s
IGJvdW5kcywgdGl0bGUpCiAgICAgewogICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtMjk5LDE4ICszMzQsMjggQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWMKICAgICAgICAgLy8gVGhlIGFubm90YXRvcnMgbXVzdCBiZSBjbGVhcmVkIGJlZm9y
ZSBwcmV0dHkgcHJpbnRpbmcgdGFrZXMgcGxhY2UgYW5kIHJlc3VtZWQKICAgICAgICAgLy8gYWZ0
ZXIgc28gdGhhdCB0aGV5IGNsZWFyIHRoZWlyIGFubm90YXRpb25zIGluIGEga25vd24gc3RhdGUg
YW5kIGluc2VydCBuZXcgYW5ub3RhdGlvbnMKICAgICAgICAgLy8gaW4gdGhlIG5ldyBzdGF0ZS4K
LSAgICAgICAgdmFyIHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciA9IHRoaXMuX3R5cGVU
b2tlbkFubm90YXRvciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IuaXNBY3RpdmUoKTsKKwog
ICAgICAgICB2YXIgc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fubm90YXRvciA9IHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3IgJiYgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5pc0FjdGl2ZSgpOwot
ICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5ub3RhdG9yIHx8IHNob3VsZFJlc3Vt
ZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgIGlmIChzaG91bGRSZXN1bWVCYXNpY0Jsb2Nr
QW5ub3RhdG9yKQorICAgICAgICAgICAgdGhpcy5fc2V0QmFzaWNCbG9ja0Fubm90YXRvckVuYWJs
ZWRTdGF0ZShmYWxzZSk7CisKKyAgICAgICAgdmFyIHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90
YXRvciA9IHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0
b3IuaXNBY3RpdmUoKTsKKyAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRv
cikKICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShm
YWxzZSk7CiAKICAgICAgICAgcmV0dXJuIHN1cGVyLnByZXR0eVByaW50KHByZXR0eSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICBpZiAocHJldHR5IHx8ICF0aGlzLl9pc1Byb2JhYmx5TWluaWZp
ZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5ub3RhdG9y
IHx8IHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgaWYg
KHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUodHJ1ZSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUodHJ1ZSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwcmV0
dHkgJiYgdGhpcy5faXNQcm9iYWJseU1pbmlmaWVkKTsKLSAgICAgICAgICAgICAgICBpZiAodGhp
cy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwor
CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC00MTIsMTMgKzQ1NywxMyBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRv
ciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIHRoaXMuc3RyaW5nID0gY29udGVudDsKIAot
ICAgICAgICB0aGlzLl9tYWtlVHlwZVRva2VuQW5ub3RhdG9yKCk7CiAgICAgICAgIHRoaXMuX21h
a2VCYXNpY0Jsb2NrQW5ub3RhdG9yKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWUgJiYgdGhpcy5fYmFzaWNCbG9ja0Fubm90
YXRvcikKKyAgICAgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3Rh
dGUodHJ1ZSk7CiAKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJ
bmZvcm1hdGlvblNldHRpbmcudmFsdWUpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yIHx8IHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKLSAgICAgICAgICAgICAg
ICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUodHJ1ZSk7Ci0gICAgICAg
IH0KKyAgICAgICAgdGhpcy5fbWFrZVR5cGVUb2tlbkFubm90YXRvcigpOworICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZSAm
JiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCisgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9r
ZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUodHJ1ZSk7CiAKICAgICAgICAgdGhpcy5fY29udGVudERp
ZFBvcHVsYXRlKCk7CiAgICAgfQpAQCAtMTY5MCwxNiArMTczNSw4IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMg
V2ViSW5zcGVjCiAKICAgICAgICAgaWYgKHNob3VsZEFjdGl2YXRlKSB7CiAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnZpc2libGUsICJBbm5vdGF0b3JzIHNob3VsZCBub3QgYmUgZW5h
YmxlZCBpZiB0aGUgVGV4dEVkaXRvciBpcyBub3QgdmlzaWJsZSIpOwotCiAgICAgICAgICAgICBS
dW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2ZpbGVyKCk7Ci0gICAgICAgICAgICBpZiAoUnVudGlt
ZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpCi0gICAgICAgICAgICAgICAgUnVudGlt
ZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKLQogICAgICAgICAgICAgdGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yLnJlc2V0KCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvcikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpOwotICAgICAgICAgICAgICAgIHRoaXMuX2Jh
c2ljQmxvY2tBbm5vdGF0b3IucmVzZXQoKTsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKQogICAgICAgICAgICAgICAgIHRoaXMu
X2VuYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpOwpAQCAtMTcxMSw4ICsx
NzQ4LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNl
Q29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgICAgIC8vIHByb3ZpZGUg
YSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLgogCiAgICAgICAgICAgICB0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IuY2xlYXIoKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5u
b3RhdG9yKQotICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuY2xlYXIo
KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fZGlzYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRv
cigpOwpAQCAtMTcyMyw2ICsxNzU4LDI5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKICAgICB9CiAK
KyAgICBfc2V0QmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWRTdGF0ZShzaG91bGRBY3RpdmF0ZSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3Ip
OworICAgICAgICBpZiAoc2hvdWxkQWN0aXZhdGUpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMudmlzaWJsZSwgIkFubm90YXRvcnMgc2hvdWxkIG5vdCBiZSBlbmFibGVkIGlmIHRo
ZSBUZXh0RWRpdG9yIGlzIG5vdCB2aXNpYmxlIik7CisKKyAgICAgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpOworICAgICAgICAgICAg
dGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXNldCgpOworCisgICAgICAgICAgICBpZiAoIXRo
aXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcikKKyAgICAgICAgICAgICAgICB0aGlzLl9lbmFi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5jbGVhcigpOworCisgICAg
ICAgICAgICBpZiAodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOwor
ICAgICAgICB9CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXJTZXR0aW5nLnZhbHVlID0gc2hvdWxkQWN0aXZhdGU7CisgICAgfQorCiAgICAgX2dldEFzc29j
aWF0ZWRTY3JpcHQoKQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IG51bGw7CkBAIC0xNzY1
LDkgKzE4MjMsMTcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3Mg
U291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgLy8gUGF1c2Ug
dXBkYXRpbmcgdHlwZSB0b2tlbnMgd2hpbGUgc2Nyb2xsaW5nIHRvIHByZXZlbnQgZnJhbWUgbG9z
cy4KICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIp
OwogICAgICAgICB0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyID0gdGhpcy5fbWFrZVR5cGVU
b2tlblNjcm9sbEV2ZW50SGFuZGxlcigpOworICAgICAgICB0aGlzLl9jb250cm9sRmxvd1Njcm9s
bEhhbmRsZXIgPSB0aGlzLl9tYWtlQ29udHJvbEZsb3dTY3JvbGxFdmVudEhhbmRsZXIoKTsKICAg
ICAgICAgdGhpcy5hZGRTY3JvbGxIYW5kbGVyKHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIp
OwogICAgIH0KIAorICAgIF9lbmFibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRv
cigpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fY29udHJvbEZsb3dTY3Jv
bGxIYW5kbGVyKTsKKyAgICAgICAgdGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyID0gdGhp
cy5fbWFrZUNvbnRyb2xGbG93U2Nyb2xsRXZlbnRIYW5kbGVyKCk7CisgICAgICAgIHRoaXMuYWRk
U2Nyb2xsSGFuZGxlcih0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpOworICAgIH0KKwog
ICAgIF9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3RhdG9yKCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwpAQCAt
MTc3NSw2ICsxODQxLDEzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHRoaXMu
X3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgPSBudWxsOwogICAgIH0KIAorICAgIF9kaXNhYmxlU2Ny
b2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICAgICAgdGhpcy5y
ZW1vdmVTY3JvbGxIYW5kbGVyKHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAg
ICAgIHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlciA9IG51bGw7CisgICAgfQorCiAgICAg
X21ha2VUeXBlVG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKQogICAgIHsKICAgICAgICAgdmFyIHRp
bWVvdXRJZGVudGlmaWVyID0gbnVsbDsKQEAgLTE4MDEsNiArMTg3NCwyOCBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRl
bmRzIFdlYkluc3BlYwogICAgICAgICByZXR1cm4gc2Nyb2xsSGFuZGxlci5iaW5kKHRoaXMpOwog
ICAgIH0KIAorICAgIF9tYWtlQ29udHJvbEZsb3dTY3JvbGxFdmVudEhhbmRsZXIoKQorICAgIHsK
KyAgICAgICAgdmFyIHRpbWVvdXRJZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsSGFuZGxlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tB
bm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3Iu
cGF1c2UoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIg
PSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRpbWVvdXRJZGVudGlm
aWVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
cikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXN1bWUo
KTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZXIuYmluZCh0aGlzKTsKKyAgICB9CisK
ICAgICBfbG9nQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAgIGZvciAobGV0IGxpbmVOdW1i
ZXIgb2YgdGhpcy5faXNzdWVzTGluZU51bWJlck1hcC5rZXlzKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50
Vmlldy5qcwppbmRleCAwMTRkNTI3Li5iZWI4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3Lmpz
CkBAIC01MSw2ICs1MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3ID0gY2xhc3Mg
VGV4dENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbgogICAgICAgICB2YXIg
YWN0aXZhdGVkVG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUg
aW5mb3JtYXRpb24iKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ct
dHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZp
Z2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1
dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgdG9vbFRp
cENvbnRyb2xGbG93ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHcmF5IG91dCB1bmV4ZWN1dGVk
IGNvZGUiKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBDb250cm9sRmxvdyA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRG9u4oCZdCBncmF5IG91dCB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAg
ICAgICAgdGhpcy5fY29udHJvbEZsb3dCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZ3JheS1vdXQtdW5leGVjdXRlZC1j
b2RlIiwgdG9vbFRpcENvbnRyb2xGbG93LCBhY3RpdmF0ZWRUb29sVGlwQ29udHJvbEZsb3csICJJ
bWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9j
b250cm9sRmxvd0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBQdWJsaWMKQEAgLTYyLDcgKzY3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50
VmlldyA9IGNsYXNzIFRleHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW4K
IAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbV07CisgICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25O
YXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMu
X2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwogICAgIH0KIAogICAgIHJldmVhbFBv
c2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRF
ZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
RWRpdG9yLmpzCmluZGV4IDJjODA5MDQuLjlhYmU0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwpAQCAtMTU5
LDYgKzE1OSwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3Ig
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CisgICAgY2FuU2hvd0Jhc2ljQmxvY2tBbm5vdGF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKwogICAgIGdldCBzZWxlY3RlZFRleHRSYW5nZSgpCiAgICAgewogICAg
ICAgICB2YXIgc3RhcnQgPSB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcih0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggMmE2YzhiOS4uYjRiMGZlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTUzLDE1ICs1Mywy
MSBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVz
b3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVz
LCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhp
cy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlw
ZUFubm90YXRpb25zLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93SmF2
YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1h
dGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB2YXIgdG9vbFRpcENvbnRyb2xG
bG93ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHcmF5IG91dCB1bmV4ZWN1dGVkIGNvZGUiKTsK
KyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBDb250cm9sRmxvdyA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRG9u4oCZdCBncmF5IG91dCB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgdGhp
cy5fY29udHJvbEZsb3dCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0
aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZ3JheS1vdXQtdW5leGVjdXRlZC1jb2RlIiwgdG9v
bFRpcENvbnRyb2xGbG93LCBhY3RpdmF0ZWRUb29sVGlwQ29udHJvbEZsb3csICJJbWFnZXMvTmF2
aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb250cm9sRmxv
d0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZURlYWRDb2RlSGlnaGxp
Z2h0cywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlclNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5F
dmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93RGVhZENvZGVIaWdobGlnaHRzU2V0dGluZ0NoYW5nZWQs
IHRoaXMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVt
cygpCiAgICAgewotICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdh
dGlvbkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAg
cmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fY29udHJvbEZsb3dCdXR0b25OYXZpZ2F0
aW9uSXRlbV07CiAgICAgfQogCiAgICAgZ2V0IG1hbmFnZXNPd25Jc3N1ZXMoKQpAQCAtMTk2LDgg
KzIwMiwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBU
ZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgIF9jb250ZW50RGlkUG9wdWxh
dGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRp
b25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9ybWF0dGVkKCk7CisKICAg
ICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMu
X3RleHRFZGl0b3IuY2FuU2hvd1R5cGVBbm5vdGF0aW9ucygpOwogICAgICAgICB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0ph
dmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlOworCisgICAgICAgIHRoaXMuX2Nv
bnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3Iu
Y2FuU2hvd0Jhc2ljQmxvY2tBbm5vdGF0b3IoKTsKKyAgICAgICAgdGhpcy5fY29udHJvbEZsb3dC
dXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJv
bEZsb3dQcm9maWxlclNldHRpbmcudmFsdWU7CiAgICAgfQogCiAgICAgX3RvZ2dsZVByZXR0eVBy
aW50KGV2ZW50KQpAQCAtMjExLDExICsyMjEsMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIK
ICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKICAgICB9
CiAKKyAgICBfdG9nZ2xlRGVhZENvZGVIaWdobGlnaHRzKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci50b2dnbGVEZWFkQ29kZUhpZ2hsaWdodHMoKTsKKyAgICB9CisKICAg
ICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRl
ZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFs
dWU7CiAgICAgfQogCisgICAgX3Nob3dEZWFkQ29kZUhpZ2hsaWdodHNTZXR0aW5nQ2hhbmdlZChl
dmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0
aW5nLnZhbHVlOworICAgIH0KKwogICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Cg==
</data>
<flag name="review"
          id="309935"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="309936"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286472</attachid>
            <date>2016-08-19 13:30:36 -0700</date>
            <delta_ts>2016-08-28 13:09:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25843</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDczMzBiYjAuLmEzZTUwZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBACiAyMDE2LTA4LTE5ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBh
IGJ1dHRvbiB0byBuYXZpZ2F0aW9uIGJhciB0byB0b2dnbGUgQ29udHJvbCBGbG93IFByb2ZpbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3OTEyNjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICBBZGQgIkdyYXkgb3V0IHVuZXhlY3V0ZWQgY29kZSIg
YW5kICJEb27igJl0IGdyYXkgb3V0IHVuZXhlY3V0ZWQgY29kZSIuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgor
ICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIHJlbWVtYmVyIHdoZXRoZXIgQ29kZSBDb3ZlcmFnZSBQ
cm9maWxlciBpcyBvbiBvciBvZmYgYmV0d2VlbiBXZWIgSW5zcGVjdG9yIHJlbG9hZHMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5zaG93bik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLmNh
blNob3dCYXNpY0Jsb2NrQW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUuY29udGVudERpZENoYW5nZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRvZ2dsZVVuZXhlY3V0ZWRD
b2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IucHJvdG90eXBlLnByZXR0eVByaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Byb2NlZWRQb3B1bGF0ZVdpdGhDb250ZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3NldEJh
c2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRv
a2VuQW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuX2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rp
c2FibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9tYWtlQ29udHJvbEZsb3dT
Y3JvbGxFdmVudEhhbmRsZXIuc2Nyb2xsSGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9tYWtlQ29udHJvbEZsb3dTY3JvbGxFdmVu
dEhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5kaWFsb2dXYXNEaXNtaXNzZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5zaG93UG9wb3ZlckZvclR5cGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90
b3R5cGUuX2lzTGlrZWx5TWluaWZpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJI
aWdobGlnaHRlZE1hcmtlZEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZGlzbWlzc0VkaXRpbmdDb250cm9s
bGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmcpOiBEZWxldGVkLgor
ICAgICAgICBNYWtlIENvZGUgQ292ZXJhZ2UgcHJvZmlsZXIgaW5kZXBlZGVudCBmcm9tIFR5cGUg
UHJvZmlsZXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVt
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQg
dGV4dEVkaXRvcik6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlLmNh
blNob3dCYXNpY0Jsb2NrQW5ub3RhdG9yKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRS
ZXNvdXJjZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9jb250ZW50RGlkUG9w
dWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2VuYWJsZUNvbnRyb2xG
bG93UHJvZmlsZXJTZXR0aW5nQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9TY3JpcHRDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRDb250
ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90
eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENv
bnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2dsZVVuZXhlY3V0ZWRDb2Rl
SGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJv
dG90eXBlLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5nZWQpOgorICAgICAg
ICBBZGQgdGhlIFtDXSBpY29uIHJpZ2h0IG5leHQgdG8gdGhlIFtUXSAoVHlwZSBQcm9maWxlcikg
aWNvbi4KKworMjAxNi0wOC0xOSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNv
bT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIGFuIGljb24gZm9yIENvZGUgQ292ZXJh
Z2UgUHJvZmlsZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDg3MgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc4NTU2NTA+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAwN2UzYjBkODllYTJjMGMwMTA1NGQzNTk5YzhiZjg2
ZjBhYzM0OGUxLi4xMmYwY2U3ZDgwM2FjODZiNGNmYmFiZGExNWZmNDM3NGVmYTNmYTc3IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDI1NQp6Y21lQTwmd0FrXj54UyV0YGFBX21oN3R3XmhJ
RUReaEQzJStBUzw3dDZmOUU4a2pJZTlQeXhpclYzQWFZNnJnTX0KelAoQjRIcm88Mm48azxxVDVg
em0rajcpUTt5RzFpPFolIX1aYjQoPUhjNlZaM0tIVlhqKFF0RiZNKEokOygpQmQkCgpkZWx0YSAx
OQpiY21jYWBrK3RWTT54UyV0JjYwJiZqKz1MRzY1aj5AVD9HalIKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggODIwZTViYS4uMmU3
NjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
TWFpbi5qcwpAQCAtMTYyLDEwICsxNjIsMTIgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygic2hvdy1qYXZhc2NyaXB0LXR5cGUtaW5mb3JtYXRpb24i
LCBmYWxzZSk7CiAgICAgaWYgKHRoaXMuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0
aW5nLnZhbHVlICYmIHdpbmRvdy5SdW50aW1lQWdlbnQgJiYgUnVudGltZUFnZW50LmVuYWJsZVR5
cGVQcm9maWxlcikgewogICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2ZpbGVyKCk7
Ci0gICAgICAgIGlmIChSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcikKLSAg
ICAgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAg
fQogCisgICAgdGhpcy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygiZW5hYmxlLWNvbnRyb2wtZmxvdy1wcm9maWxlciIsIGZhbHNlKTsK
KyAgICBpZiAodGhpcy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZSAmJiB3
aW5kb3cuUnVudGltZUFnZW50ICYmIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKQorICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwor
CiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBQYWdlLnNldFNob3dQYWludFJlY3RzIGRp
ZCBub3QgZXhpc3QuCiAgICAgdGhpcy5zaG93UGFpbnRSZWN0c1NldHRpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlNldHRpbmcoInNob3ctcGFpbnQtcmVjdHMiLCBmYWxzZSk7CiAgICAgaWYgKHRoaXMu
c2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlICYmIHdpbmRvdy5QYWdlQWdlbnQgJiYgUGFnZUFn
ZW50LnNldFNob3dQYWludFJlY3RzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwppbmRleCAx
NTAwMjc5Li44NmNmOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAtNjMsMTUg
KzYzLDIxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNjcmlwdENv
bnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvCiAgICAgICAgIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5h
dmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlw
VHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOwogICAgICAg
ICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dn
bGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0KICAgICAgICAgV2ViSW5zcGVjdG9yLnNo
b3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dKYXZhU2NyaXB0VHlwZUlu
Zm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQsIHRoaXMpOworCisgICAgICAgIHZhciB0b29sVGlwQ29u
dHJvbEZsb3cgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkdyYXkgb3V0IHVuZXhlY3V0ZWQgY29k
ZSIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcENvbnRyb2xGbG93ID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEb27igJl0IGdyYXkgb3V0IHVuZXhlY3V0ZWQgY29kZSIpOworICAgICAg
ICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29kZS1jb3ZlcmFnZSIsIHRvb2xUaXBD
b250cm9sRmxvdywgYWN0aXZhdGVkVG9vbFRpcENvbnRyb2xGbG93LCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtQ29kZUNvdmVyYWdlLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRoaXMuX2NvZGVDb3Zl
cmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVVuZXhlY3V0ZWRD
b2RlSGlnaGxpZ2h0cywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5h
dmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVuYWJs
ZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNl
dHRpbmdDaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBu
YXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRl
bV07CisgICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRl
bSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvZGVDb3ZlcmFn
ZUJ1dHRvbk5hdmlnYXRpb25JdGVtXTsKICAgICB9CiAKICAgICBnZXQgc2NyaXB0KCkKQEAgLTIw
Miw4ICsyMDgsMTIgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0gY2xhc3MgU2Ny
aXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28KICAgICBfY29udGVudERpZFBv
cHVsYXRlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZp
Z2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5CZUZvcm1hdHRlZCgpOwor
CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0
aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAgICAgICAgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNo
b3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlz
Ll9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVk
aXRvci5jYW5TaG93QmFzaWNCbG9ja0Fubm90YXRvcigpOworICAgICAgICB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWU7CiAgICAgfQogCiAgICAgX3RvZ2dsZVBy
ZXR0eVByaW50KGV2ZW50KQpAQCAtMjE3LDExICsyMjcsMjEgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuQ28KICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsK
ICAgICB9CiAKKyAgICBfdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdo
dHMoKTsKKyAgICB9CisKICAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5n
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmln
YXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZv
cm1hdGlvblNldHRpbmcudmFsdWU7CiAgICAgfQogCisgICAgX2VuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXJTZXR0aW5nQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVDb3Zl
cmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5lbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZTsKKyAgICB9CisKICAgICBfdGV4dEVkaXRv
ckZvcm1hdHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9y
bWF0dGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCAxM2ZjYWY5Li45
OGFkYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtMTAxLDE0ICsx
MDEsMjMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNl
Q29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWUpIHsKICAgICAgICAg
ICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yLnJlc3VtZSgpOwotICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3IpCi0gICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
ci5yZXN1bWUoKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxl
ciAmJiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0
b3IpKQorICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyICYmIHRo
aXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVTY3Jv
bGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fu
bm90YXRvcikKKyAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNl
KTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlclNldHRpbmcudmFsdWUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3Iu
cmVzdW1lKCk7CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5k
bGVyICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgdGhpcy5f
ZW5hYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAg
ICAgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2Up
OworICAgICAgICB9CiAgICAgfQogCiAgICAgaGlkZGVuKCkKQEAgLTE2NCw2ICsxNzMsMTEgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRF
ZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuICEhdGhpcy5fdHlwZVRva2Vu
QW5ub3RhdG9yOwogICAgIH0KIAorICAgIGNhblNob3dCYXNpY0Jsb2NrQW5ub3RhdG9yKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3I7CisgICAgfQor
CiAgICAgY3VzdG9tUGVyZm9ybVNlYXJjaChxdWVyeSkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9u
IHNlYXJjaFJlc3VsdENhbGxiYWNrKGVycm9yLCBtYXRjaGVzKQpAQCAtMjQ5LDEwICsyNjMsMTQg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRl
eHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgZm9yICh2YXIgcmFuZ2Ugb2YgbmV3
UmFuZ2VzKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJzKHJhbmdlKTsK
IAotICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IpIHsKKyAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsK
KyAgICAgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFs
c2UpOworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciA9IG51bGw7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKSB7CiAgICAgICAg
ICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwogICAg
ICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbnVsbDsKLSAgICAgICAgICAgIHRo
aXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgPSBudWxsOwogICAgICAgICB9CiAgICAgfQogCkBAIC0y
NzMsNiArMjkxLDIzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNz
IFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHJldHVybiBu
ZXdBY3RpdmF0ZWRTdGF0ZTsKICAgICB9CiAKKyAgICB0b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hs
aWdodHMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBuZXdBY3RpdmF0ZWRTdGF0
ZSA9ICF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisgICAgICAgIGlmIChu
ZXdBY3RpdmF0ZWRTdGF0ZSAmJiB0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQgJiYgIXRoaXMuZm9y
bWF0dGVkKSB7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRlZFN0YXRlKHRydWUpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JF
bmFibGVkU3RhdGUobmV3QWN0aXZhdGVkU3RhdGUpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zZXRCYXNpY0Jsb2NrQW5u
b3RhdG9yRW5hYmxlZFN0YXRlKG5ld0FjdGl2YXRlZFN0YXRlKTsKKyAgICAgICAgcmV0dXJuIG5l
d0FjdGl2YXRlZFN0YXRlOworICAgIH0KKwogICAgIHNob3dQb3BvdmVyRm9yVHlwZXModHlwZURl
c2NyaXB0aW9uLCBib3VuZHMsIHRpdGxlKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTI5OSwxOCArMzM0LDI4IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9y
IGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIC8vIFRoZSBhbm5vdGF0b3JzIG11c3QgYmUgY2xl
YXJlZCBiZWZvcmUgcHJldHR5IHByaW50aW5nIHRha2VzIHBsYWNlIGFuZCByZXN1bWVkCiAgICAg
ICAgIC8vIGFmdGVyIHNvIHRoYXQgdGhleSBjbGVhciB0aGVpciBhbm5vdGF0aW9ucyBpbiBhIGtu
b3duIHN0YXRlIGFuZCBpbnNlcnQgbmV3IGFubm90YXRpb25zCiAgICAgICAgIC8vIGluIHRoZSBu
ZXcgc3RhdGUuCi0gICAgICAgIHZhciBzaG91bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IgPSB0
aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgJiYgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLmlzQWN0
aXZlKCk7CisKICAgICAgICAgdmFyIHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IgPSB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNB
Y3RpdmUoKTsKLSAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciB8fCBz
aG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICBpZiAoc2hvdWxkUmVzdW1l
QmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgIHRoaXMuX3NldEJhc2ljQmxvY2tBbm5v
dGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOworCisgICAgICAgIHZhciBzaG91bGRSZXN1bWVUeXBl
VG9rZW5Bbm5vdGF0b3IgPSB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgJiYgdGhpcy5fdHlwZVRv
a2VuQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisgICAgICAgIGlmIChzaG91bGRSZXN1bWVUeXBlVG9r
ZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFi
bGVkU3RhdGUoZmFsc2UpOwogCiAgICAgICAgIHJldHVybiBzdXBlci5wcmV0dHlQcmludChwcmV0
dHkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHByZXR0eSB8fCAhdGhpcy5faXNQcm9i
YWJseU1pbmlmaWVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tl
bkFubm90YXRvciB8fCBzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9zZXRCYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZFN0YXRlKHRydWUpOwor
CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvcikKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRl
KHRydWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCghcHJldHR5ICYmIHRoaXMuX2lzUHJvYmFibHlNaW5pZmllZCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5ub3Rh
dG9yKQorICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zZXRCYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZFN0YXRl
KGZhbHNlKTsKKworICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3Ip
CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRT
dGF0ZShmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpAQCAtNDEyLDEzICs0NTcs
MTMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29k
ZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICB0aGlzLnN0cmluZyA9IGNv
bnRlbnQ7CiAKLSAgICAgICAgdGhpcy5fbWFrZVR5cGVUb2tlbkFubm90YXRvcigpOwogICAgICAg
ICB0aGlzLl9tYWtlQmFzaWNCbG9ja0Fubm90YXRvcigpOworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlICYmIHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICB0aGlzLl9zZXRCYXNpY0Jsb2NrQW5ub3RhdG9y
RW5hYmxlZFN0YXRlKHRydWUpOwogCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hvd0phdmFT
Y3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5fYmFzaWNCbG9ja0Fubm90YXRvciB8fCB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKHRydWUp
OwotICAgICAgICB9CisgICAgICAgIHRoaXMuX21ha2VUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRp
bmcudmFsdWUgJiYgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQorICAgICAgICAgICAgdGhpcy5f
c2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKHRydWUpOwogCiAgICAgICAgIHRoaXMu
X2NvbnRlbnREaWRQb3B1bGF0ZSgpOwogICAgIH0KQEAgLTE2OTAsMTYgKzE3MzUsOCBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRv
ciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIGlmIChzaG91bGRBY3RpdmF0ZSkgewogICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy52aXNpYmxlLCAiQW5ub3RhdG9ycyBzaG91bGQg
bm90IGJlIGVuYWJsZWQgaWYgdGhlIFRleHRFZGl0b3IgaXMgbm90IHZpc2libGUiKTsKLQogICAg
ICAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZVR5cGVQcm9maWxlcigpOwotICAgICAgICAgICAg
aWYgKFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKQotICAgICAgICAgICAg
ICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7Ci0KICAgICAgICAg
ICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvci5yZXNldCgpOwotICAgICAgICAgICAgaWYgKHRo
aXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlc2V0KCk7Ci0gICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcikKICAgICAgICAgICAg
ICAgICB0aGlzLl9lbmFibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKQEAg
LTE3MTEsOCArMTc0OCw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgICAgICAv
LyBwcm92aWRlIGEgY29uZnVzaW5nIHVzZXIgZXhwZXJpZW5jZS4KIAogICAgICAgICAgICAgdGhp
cy5fdHlwZVRva2VuQW5ub3RhdG9yLmNsZWFyKCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFz
aWNCbG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3Rh
dG9yLmNsZWFyKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5k
bGVyKQogICAgICAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9r
ZW5Bbm5vdGF0b3IoKTsKQEAgLTE3MjMsNiArMTc1OCwyOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYklu
c3BlYwogICAgICAgICB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlKCk7
CiAgICAgfQogCisgICAgX3NldEJhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkU3RhdGUoc2hvdWxk
QWN0aXZhdGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9iYXNpY0Jsb2Nr
QW5ub3RhdG9yKTsKKyAgICAgICAgaWYgKHNob3VsZEFjdGl2YXRlKSB7CisgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnZpc2libGUsICJBbm5vdGF0b3JzIHNob3VsZCBub3QgYmUgZW5h
YmxlZCBpZiB0aGUgVGV4dEVkaXRvciBpcyBub3QgdmlzaWJsZSIpOworCisgICAgICAgICAgICBS
dW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOworCisgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5pc0FjdGl2ZSgpKTsKKyAg
ICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVzZXQoKTsKKworICAgICAgICAg
ICAgaWYgKCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpCisgICAgICAgICAgICAgICAg
dGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuY2xlYXIo
KTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5v
dGF0b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9s
Rmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZSA9IHNob3VsZEFjdGl2YXRlOworICAgIH0KKwogICAg
IF9nZXRBc3NvY2lhdGVkU2NyaXB0KCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSBudWxs
OwpAQCAtMTc2NSw5ICsxODIzLDE3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAg
IC8vIFBhdXNlIHVwZGF0aW5nIHR5cGUgdG9rZW5zIHdoaWxlIHNjcm9sbGluZyB0byBwcmV2ZW50
IGZyYW1lIGxvc3MuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90eXBlVG9rZW5TY3Jv
bGxIYW5kbGVyKTsKICAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IHRoaXMu
X21ha2VUeXBlVG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgdGhpcy5fY29udHJv
bEZsb3dTY3JvbGxIYW5kbGVyID0gdGhpcy5fbWFrZUNvbnRyb2xGbG93U2Nyb2xsRXZlbnRIYW5k
bGVyKCk7CiAgICAgICAgIHRoaXMuYWRkU2Nyb2xsSGFuZGxlcih0aGlzLl90eXBlVG9rZW5TY3Jv
bGxIYW5kbGVyKTsKICAgICB9CiAKKyAgICBfZW5hYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZs
b3dBbm5vdGF0b3IoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2NvbnRy
b2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFu
ZGxlciA9IHRoaXMuX21ha2VDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcigpOworICAgICAg
ICB0aGlzLmFkZFNjcm9sbEhhbmRsZXIodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsK
KyAgICB9CisKICAgICBfZGlzYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5k
bGVyKTsKQEAgLTE3NzUsNiArMTg0MSwxMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAg
ICAgICB0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyID0gbnVsbDsKICAgICB9CiAKKyAgICBf
ZGlzYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAg
ICAgIHRoaXMucmVtb3ZlU2Nyb2xsSGFuZGxlcih0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRs
ZXIpOworICAgICAgICB0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIgPSBudWxsOworICAg
IH0KKwogICAgIF9tYWtlVHlwZVRva2VuU2Nyb2xsRXZlbnRIYW5kbGVyKCkKICAgICB7CiAgICAg
ICAgIHZhciB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7CkBAIC0xODAxLDYgKzE4NzQsMjggQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRF
ZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZXIuYmlu
ZCh0aGlzKTsKICAgICB9CiAKKyAgICBfbWFrZUNvbnRyb2xGbG93U2Nyb2xsRXZlbnRIYW5kbGVy
KCkKKyAgICB7CisgICAgICAgIHZhciB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7CisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEhhbmRsZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGlt
ZW91dElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2Nr
QW5ub3RhdG9yLnBhdXNlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRpbWVvdXRJ
ZGVudGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0aW1l
b3V0SWRlbnRpZmllciA9IG51bGw7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0
b3IucmVzdW1lKCk7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5EdXJhdGlvblRvVXBkYXRlVHlwZVRva2Vuc0FmdGVyU2Nyb2xsaW5n
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzY3JvbGxIYW5kbGVyLmJpbmQodGhpcyk7
CisgICAgfQorCiAgICAgX2xvZ0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICBmb3IgKGxl
dCBsaW5lTnVtYmVyIG9mIHRoaXMuX2lzc3Vlc0xpbmVOdW1iZXJNYXAua2V5cygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
ZXh0Q29udGVudFZpZXcuanMKaW5kZXggMDE0ZDUyNy4uMWYwZTBiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250
ZW50Vmlldy5qcwpAQCAtNTEsNiArNTEsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmll
dyA9IGNsYXNzIFRleHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW4KICAg
ICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SGlkZSB0eXBlIGluZm9ybWF0aW9uIik7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5h
dmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25J
dGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJ
bWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOwogICAgICAgICB0aGlzLl9z
aG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAg
dmFyIHRvb2xUaXBDb250cm9sRmxvdyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiR3JheSBvdXQg
dW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwQ29udHJvbEZs
b3cgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbuKAmXQgZ3JheSBvdXQgdW5leGVjdXRlZCBj
b2RlIik7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb2RlLWNvdmVy
YWdlIiwgdG9vbFRpcENvbnRyb2xGbG93LCBhY3RpdmF0ZWRUb29sVGlwQ29udHJvbEZsb3csICJJ
bWFnZXMvTmF2aWdhdGlvbkl0ZW1Db2RlQ292ZXJhZ2Uuc3ZnIiwgMTMsIDE0KTsKKyAgICAgICAg
dGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNjIsNyArNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dENvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkNvbnRlbgogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewotICAgICAgICByZXR1
cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRl
bSwgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwogICAgIH0KIAogICAg
IHJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1h
dHRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UZXh0RWRpdG9yLmpzCmluZGV4IDJjODA5MDQuLjlhYmU0MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5q
cwpAQCAtMTU5LDYgKzE1OSwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRl
eHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCisgICAgY2FuU2hvd0Jhc2ljQmxvY2tBbm5vdGF0b3IoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGdldCBzZWxlY3RlZFRleHRSYW5nZSgpCiAg
ICAgewogICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcih0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggMmE2YzhiOS4u
MmU1Y2U2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTUz
LDE1ICs1MywyMSBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFz
cyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0
b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9v
bFRpcFR5cGVzLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAg
ICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5f
dG9nZ2xlVHlwZUFubm90YXRpb25zLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5
cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB2YXIgdG9vbFRp
cENvbnRyb2xGbG93ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHcmF5IG91dCB1bmV4ZWN1dGVk
IGNvZGUiKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBDb250cm9sRmxvdyA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRG9u4oCZdCBncmF5IG91dCB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAg
ICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvZGUtY292ZXJhZ2UiLCB0b29s
VGlwQ29udHJvbEZsb3csIGFjdGl2YXRlZFRvb2xUaXBDb250cm9sRmxvdywgIkltYWdlcy9OYXZp
Z2F0aW9uSXRlbUNvZGVDb3ZlcmFnZS5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb2Rl
Q292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVVbmV4ZWN1
dGVkQ29kZUhpZ2hsaWdodHMsIHRoaXMpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIFdlYkluc3BlY3Rvci5l
bmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2VuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXJTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5
UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW1dOworICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCiAgICAgZ2V0IG1hbmFnZXNPd25J
c3N1ZXMoKQpAQCAtMTk2LDggKzIwMiwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29u
dGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAg
IF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJl
Rm9ybWF0dGVkKCk7CisKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd1R5cGVBbm5vdGF0aW9ucygpOwog
ICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBX
ZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlOwor
CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQg
PSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dCYXNpY0Jsb2NrQW5ub3RhdG9yKCk7CisgICAgICAg
IHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYklu
c3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZTsKICAgICB9CiAK
ICAgICBfdG9nZ2xlUHJldHR5UHJpbnQoZXZlbnQpCkBAIC0yMTEsMTEgKzIyMSwyMSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250
ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2dsZVR5cGVB
bm5vdGF0aW9ucygpOwogICAgIH0KIAorICAgIF90b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdo
dHMoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2dsZVVuZXhlY3V0
ZWRDb2RlSGlnaGxpZ2h0cygpOworICAgIH0KKwogICAgIF9zaG93SmF2YVNjcmlwdFR5cGVJbmZv
cm1hdGlvblNldHRpbmdDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd1R5
cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dKYXZh
U2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKICAgICB9CiAKKyAgICBfZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5z
cGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOworICAgIH0KKwog
ICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5f
dGV4dEVkaXRvci5mb3JtYXR0ZWQ7Cg==
</data>
<flag name="review"
          id="310012"
          type_id="1"
          status="-"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="310013"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287235</attachid>
            <date>2016-08-28 13:09:24 -0700</date>
            <delta_ts>2016-08-28 13:18:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>28535</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY0Mjc3MmUuLmY2Y2YxMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA4LTI4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBh
IGJ1dHRvbiB0byBuYXZpZ2F0aW9uIGJhciB0byB0b2dnbGUgQ29udHJvbCBGbG93IFByb2ZpbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3OTEyNjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICBBZGQgIkZhZGUgdW5leGVjdXRlZCBjb2RlIiBhbmQg
IkRvbuKAmXQgZmFkZSB1bmV4ZWN1dGVkIGNvZGUiLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9CYXNlL01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAg
QWRkIGEgc2V0dGluZyB0byByZW1lbWJlciB3aGV0aGVyIENvZGUgQ292ZXJhZ2UgUHJvZmlsZXIg
aXMgb24gb3Igb2ZmIGJldHdlZW4gV2ViIEluc3BlY3RvciByZWxvYWRzLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5TaG93VHlw
ZUFubm90YXRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuY2FuU2hvd0NvdmVyYWdlSGludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jb250ZW50RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudG9nZ2xlVW5l
eGVjdXRlZENvZGVIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUucHJldHR5UHJpbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fcHJvY2VlZFBvcHVsYXRlV2l0aENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IF9iYXNpY0Jsb2NrQW5ub3Rh
dG9yRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlLl9lbmFibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZW5hYmxl
U2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZGlzYWJsZVNjcm9sbEV2ZW50c0Zv
ckNvbnRyb2xGbG93QW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9j
cmVhdGVDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLmNhbkJlRm9ybWF0dGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUu
ZGlhbG9nV2FzRGlzbWlzc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2hvd1BvcG92ZXJGb3JUeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9p
c0xpa2VseU1pbmlmaWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0
ZWRNYXJrZWRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlLmVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuZWRpdGluZ0NvbnRy
b2xsZXJEaWRGaW5pc2hFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2dldEFzc29jaWF0ZWRTY3JpcHQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fY3JlYXRlVHlwZVRva2VuQW5ub3RhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBDb2Rl
IENvdmVyYWdlIHByb2ZpbGVyIGluZGVwZW5kZW50IGZyb20gVHlwZSBQcm9maWxlci4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dENvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0ZXh0RWRpdG9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGhhc01vZGlmaWVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5TaG93Q292ZXJh
Z2VIaW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2dsZVVu
ZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291
cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGlu
Z0NoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2ds
ZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
Q29udGVudFZpZXcucHJvdG90eXBlLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0No
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIEFkZCB0aGUgW0NdIGlj
b24gcmlnaHQgbmV4dCB0byB0aGUgW1RdIChUeXBlIFByb2ZpbGVyKSBpY29uLgorCiAyMDE2LTA4
LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQWRkIHByb3RvY29sIHZlcnNpb24gZm9yIGlPUyAxMApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKaW5kZXggNmI4ZWMxNi4uM2NjMzM1NyAxMDA2NDQKQmluYXJ5IGZp
bGVzIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcyBhbmQgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGNmOGM5OGYuLjBjMTljM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKQEAgLTE2MiwxMCArMTYyLDEyIEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoInNob3ctamF2YXNjcmlwdC10eXBlLWluZm9ybWF0aW9uIiwgZmFs
c2UpOwogICAgIGlmICh0aGlzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52
YWx1ZSAmJiB3aW5kb3cuUnVudGltZUFnZW50ICYmIFJ1bnRpbWVBZ2VudC5lbmFibGVUeXBlUHJv
ZmlsZXIpIHsKICAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZVR5cGVQcm9maWxlcigpOwotICAg
ICAgICBpZiAoUnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpCi0gICAgICAg
ICAgICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogICAgIH0KIAor
ICAgIHRoaXMuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNldHRpbmcoImVuYWJsZS1jb250cm9sLWZsb3ctcHJvZmlsZXIiLCBmYWxzZSk7CisgICAg
aWYgKHRoaXMuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWUgJiYgd2luZG93
LlJ1bnRpbWVBZ2VudCAmJiBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcikK
KyAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKKwogICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUGFnZS5zZXRTaG93UGFpbnRSZWN0cyBkaWQgbm90
IGV4aXN0LgogICAgIHRoaXMuc2hvd1BhaW50UmVjdHNTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJzaG93LXBhaW50LXJlY3RzIiwgZmFsc2UpOwogICAgIGlmICh0aGlzLnNob3dQ
YWludFJlY3RzU2V0dGluZy52YWx1ZSAmJiB3aW5kb3cuUGFnZUFnZW50ICYmIFBhZ2VBZ2VudC5z
ZXRTaG93UGFpbnRSZWN0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKaW5kZXggMTUwMDI3
OS4uZjRkMjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKQEAgLTYzLDE1ICs2Mywy
MSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcgPSBjbGFzcyBTY3JpcHRDb250ZW50
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5DbwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVz
LCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhp
cy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlw
ZUFubm90YXRpb25zLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93SmF2
YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1h
dGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICBsZXQgdG9vbFRpcENvZGVDb3Zl
cmFnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAg
ICAgICAgbGV0IGFjdGl2YXRlZFRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkRvbuKAmXQgZmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgdGhpcy5fY29k
ZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRl
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvZGUtY292ZXJhZ2UiLCB0b29sVGlwQ29kZUNvdmVyYWdl
LCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ29k
ZUNvdmVyYWdlLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRv
bk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxp
Z2h0cywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25J
dGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xG
bG93UHJvZmlsZXJTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgdGhpcy5fZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFu
Z2VkLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9u
SXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5h
dmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbV07CisgICAg
ICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5h
dmlnYXRpb25JdGVtXTsKICAgICB9CiAKICAgICBnZXQgc2NyaXB0KCkKQEAgLTIwMiw4ICsyMDgs
MTIgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVu
dFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28KICAgICBfY29udGVudERpZFBvcHVsYXRlKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRl
bS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5CZUZvcm1hdHRlZCgpOworCiAgICAgICAg
IHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0
RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVz
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dKYXZhU2Ny
aXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5T
aG93Q292ZXJhZ2VIaW50cygpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlclNldHRpbmcudmFsdWU7CiAgICAgfQogCiAgICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50
KQpAQCAtMjE3LDExICsyMjcsMjEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0g
Y2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28KICAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKICAgICB9CiAKKyAgICBf
dG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci50b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdodHMoKTsKKyAgICB9CisK
ICAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcu
dmFsdWU7CiAgICAgfQogCisgICAgX2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nQ2hh
bmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmln
YXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyU2V0dGluZy52YWx1ZTsKKyAgICB9CisKICAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmln
YXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29k
ZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCAxNWY2ZGIwNS4uODFlYTI3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29k
ZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTEwMSwxNCArMTAxLDIyIEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9y
IGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3Jp
cHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90
YXRvci5yZXN1bWUoKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9y
KQotICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVzdW1lKCk7Ci0g
ICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgJiYgKHRoaXMuX3R5
cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKSkKKyAgICAgICAg
ICAgIGlmICghdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciAmJiB0aGlzLl90eXBlVG9rZW5B
bm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlw
ZVRva2VuQW5ub3RhdG9yKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAg
ICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRo
aXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0
aW5nLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikK
KyAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlc3VtZSgpOworCisg
ICAgICAgICAgICBpZiAoIXRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlciAmJiB0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZVNjcm9sbEV2
ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IGZhbHNlOworICAgICAgICB9
CiAgICAgfQogCiAgICAgaGlkZGVuKCkKQEAgLTE2MSw3ICsxNjksMTQgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5k
cyBXZWJJbnNwZWMKIAogICAgIGNhblNob3dUeXBlQW5ub3RhdGlvbnMoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICEhdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yOworICAgICAgICAvLyBUeXBlIGFu
bm90YXRpb25zIGZvciBtb2RpZmllZCBzY3JpcHRzIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0ZWQu
CisgICAgICAgIHJldHVybiAhIXRoaXMuX2dldEFzc29jaWF0ZWRTY3JpcHQoKSAmJiAhdGhpcy5o
YXNNb2RpZmllZDsKKyAgICB9CisKKyAgICBjYW5TaG93Q292ZXJhZ2VIaW50cygpCisgICAgewor
ICAgICAgICAvLyBDb2RlIGNvdmVyYWdlIGhpbnRzIGZvciBtb2RpZmllZCBzY3JpcHRzIGFyZSBj
dXJyZW50bHkgdW5zdXBwb3J0ZWQuCisgICAgICAgIHJldHVybiAhIXRoaXMuX2dldEFzc29jaWF0
ZWRTY3JpcHQoKSAmJiAhdGhpcy5oYXNNb2RpZmllZDsKICAgICB9CiAKICAgICBjdXN0b21QZXJm
b3JtU2VhcmNoKHF1ZXJ5KQpAQCAtMjQ5LDEwICsyNjQsMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJ
bnNwZWMKICAgICAgICAgZm9yICh2YXIgcmFuZ2Ugb2YgbmV3UmFuZ2VzKQogICAgICAgICAgICAg
dGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJzKHJhbmdlKTsKIAotICAgICAgICBpZiAodGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuX2Jh
c2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9iYXNp
Y0Jsb2NrQW5ub3RhdG9yID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl90
eXBlVG9rZW5Bbm5vdGF0b3IpIHsKICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90
YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5v
dGF0b3IgPSBudWxsOwotICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciA9IG51
bGw7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3Myw2ICsyOTIsMjQgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5k
cyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIG5ld0FjdGl2YXRlZFN0YXRlOwogICAgIH0KIAor
ICAgIHRvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cygpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgbGV0IG5ld0FjdGl2YXRlZFN0YXRlID0gIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0
b3IuaXNBY3RpdmUoKTsKKyAgICAgICAgaWYgKG5ld0FjdGl2YXRlZFN0YXRlICYmIHRoaXMuX2lz
UHJvYmFibHlNaW5pZmllZCAmJiAhdGhpcy5mb3JtYXR0ZWQpIHsKKyAgICAgICAgICAgIHRoaXMu
dXBkYXRlRm9ybWF0dGVkU3RhdGUodHJ1ZSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
dGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSBuZXdBY3RpdmF0ZWRTdGF0ZTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSBuZXdBY3RpdmF0ZWRTdGF0ZTsKKwor
ICAgICAgICByZXR1cm4gbmV3QWN0aXZhdGVkU3RhdGU7CisgICAgfQorCiAgICAgc2hvd1BvcG92
ZXJGb3JUeXBlcyh0eXBlRGVzY3JpcHRpb24sIGJvdW5kcywgdGl0bGUpCiAgICAgewogICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtMjk5LDE5
ICszMzYsMjggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291
cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgLy8gVGhlIGFubm90
YXRvcnMgbXVzdCBiZSBjbGVhcmVkIGJlZm9yZSBwcmV0dHkgcHJpbnRpbmcgdGFrZXMgcGxhY2Ug
YW5kIHJlc3VtZWQKICAgICAgICAgLy8gYWZ0ZXIgc28gdGhhdCB0aGV5IGNsZWFyIHRoZWlyIGFu
bm90YXRpb25zIGluIGEga25vd24gc3RhdGUgYW5kIGluc2VydCBuZXcgYW5ub3RhdGlvbnMKICAg
ICAgICAgLy8gaW4gdGhlIG5ldyBzdGF0ZS4KLSAgICAgICAgdmFyIHNob3VsZFJlc3VtZVR5cGVU
b2tlbkFubm90YXRvciA9IHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciAmJiB0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IuaXNBY3RpdmUoKTsKKwogICAgICAgICB2YXIgc2hvdWxkUmVzdW1lQmFzaWNC
bG9ja0Fubm90YXRvciA9IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgJiYgdGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvci5pc0FjdGl2ZSgpOwotICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRv
a2VuQW5ub3RhdG9yIHx8IHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAg
IGlmIChzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgdGhpcy5f
YmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBsZXQgc2hvdWxk
UmVzdW1lVHlwZVRva2VuQW5ub3RhdG9yID0gdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yICYmIHRo
aXMuX3R5cGVUb2tlbkFubm90YXRvci5pc0FjdGl2ZSgpOworICAgICAgICBpZiAoc2hvdWxkUmVz
dW1lVHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5u
b3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNlKTsKIAogICAgICAgICByZXR1cm4gc3VwZXIucHJldHR5
UHJpbnQocHJldHR5KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGlmIChwcmV0dHkgfHwgIXRo
aXMuX2lzUHJvYmFibHlNaW5pZmllZCkgewotICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXN1
bWVUeXBlVG9rZW5Bbm5vdGF0b3IgfHwgc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fubm90YXRvcikK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fubm90YXRvcikKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvcikK
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0
YXRlKHRydWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCghcHJldHR5ICYmIHRoaXMuX2lzUHJvYmFibHlNaW5pZmllZCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5u
b3RhdG9yKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JF
bmFibGVkU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2Nr
QW5ub3RhdG9yKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9y
RW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5u
b3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtNDEyLDEzICs0NTgsMTMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAg
ICAgICB0aGlzLnN0cmluZyA9IGNvbnRlbnQ7CiAKLSAgICAgICAgdGhpcy5fbWFrZVR5cGVUb2tl
bkFubm90YXRvcigpOwotICAgICAgICB0aGlzLl9tYWtlQmFzaWNCbG9ja0Fubm90YXRvcigpOwor
ICAgICAgICB0aGlzLl9jcmVhdGVCYXNpY0Jsb2NrQW5ub3RhdG9yKCk7CisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWUgJiYgdGhp
cy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5v
dGF0b3JFbmFibGVkID0gdHJ1ZTsKIAotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNob3dKYXZh
U2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZSkgewotICAgICAgICAgICAgaWYgKHRo
aXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgfHwgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQotICAg
ICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZSh0cnVl
KTsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9jcmVhdGVUeXBlVG9rZW5Bbm5vdGF0b3IoKTsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNl
dHRpbmcudmFsdWUpCisgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFi
bGVkU3RhdGUodHJ1ZSk7CiAKICAgICAgICAgdGhpcy5fY29udGVudERpZFBvcHVsYXRlKCk7CiAg
ICAgfQpAQCAtMTY4NSwyMiArMTczMSwxMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogCiAg
ICAgX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShzaG91bGRBY3RpdmF0ZSkKICAg
ICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcik7CiAg
ICAgICAgIGlmICghdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChzaG91bGRBY3RpdmF0ZSkgewogICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy52aXNpYmxlLCAiQW5ub3RhdG9ycyBzaG91bGQgbm90IGJlIGVuYWJsZWQgaWYg
dGhlIFRleHRFZGl0b3IgaXMgbm90IHZpc2libGUiKTsKLQogICAgICAgICAgICAgUnVudGltZUFn
ZW50LmVuYWJsZVR5cGVQcm9maWxlcigpOwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVBZ2VudC5l
bmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKQotICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5l
bmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7Ci0KICAgICAgICAgICAgIHRoaXMuX3R5cGVUb2tl
bkFubm90YXRvci5yZXNldCgpOwotICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5v
dGF0b3IpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYmFzaWNCbG9j
a0Fubm90YXRvci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2Nr
QW5ub3RhdG9yLnJlc2V0KCk7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdGhp
cy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcikKICAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVT
Y3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKQEAgLTE3MTIsOCArMTc0OSw2IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgICAgICAvLyBwcm92aWRlIGEgY29uZnVz
aW5nIHVzZXIgZXhwZXJpZW5jZS4KIAogICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3Rh
dG9yLmNsZWFyKCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikK
LSAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmNsZWFyKCk7CiAKICAg
ICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKQogICAgICAgICAgICAg
ICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKQEAg
LTE3MjQsNiArMTc1OSwzMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBj
bGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlz
Ll91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlKCk7CiAgICAgfQogCisgICAgc2V0
IF9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZChzaG91bGRBY3RpdmF0ZSkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoc2hvdWxkQWN0aXZhdGUpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMudmlzaWJsZSwgIkFubm90YXRvcnMgc2hvdWxkIG5vdCBiZSBlbmFibGVkIGlmIHRo
ZSBUZXh0RWRpdG9yIGlzIG5vdCB2aXNpYmxlIik7CisKKyAgICAgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpOworICAgICAgICAgICAg
dGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXNldCgpOworCisgICAgICAgICAgICBpZiAoIXRo
aXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcikKKyAgICAgICAgICAgICAgICB0aGlzLl9lbmFi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5jbGVhcigpOworCisgICAg
ICAgICAgICBpZiAodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOwor
ICAgICAgICB9CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXJTZXR0aW5nLnZhbHVlID0gc2hvdWxkQWN0aXZhdGU7CisgICAgfQorCiAgICAgX2dldEFzc29j
aWF0ZWRTY3JpcHQoKQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IG51bGw7CkBAIC0xNzM1
LDcgKzE3OTUsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBT
b3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICByZXR1cm4gc2Ny
aXB0OwogICAgIH0KIAotICAgIF9tYWtlVHlwZVRva2VuQW5ub3RhdG9yKCkKKyAgICBfY3JlYXRl
VHlwZVRva2VuQW5ub3RhdG9yKCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyA4KTogUnVudGltZS5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMgZGlkIG5v
dCBleGlzdCB5ZXQuCiAgICAgICAgIGlmICghUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0Zv
clZhcmlhYmxlc0F0T2Zmc2V0cykKQEAgLTE3NDgsNyArMTgwOCw3IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMg
V2ViSW5zcGVjCiAgICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yKHRoaXMsIHNjcmlwdCk7CiAgICAgfQogCi0gICAgX21h
a2VCYXNpY0Jsb2NrQW5ub3RhdG9yKCkKKyAgICBfY3JlYXRlQmFzaWNCbG9ja0Fubm90YXRvcigp
CiAgICAgewogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUuZ2V0QmFz
aWNCbG9ja3MgZGlkIG5vdCBleGlzdCB5ZXQuCiAgICAgICAgIGlmICghUnVudGltZUFnZW50Lmdl
dEJhc2ljQmxvY2tzKQpAQCAtMTc2NSwxMCArMTgyNSwxNyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYklu
c3BlYwogICAgIHsKICAgICAgICAgLy8gUGF1c2UgdXBkYXRpbmcgdHlwZSB0b2tlbnMgd2hpbGUg
c2Nyb2xsaW5nIHRvIHByZXZlbnQgZnJhbWUgbG9zcy4KICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwotICAgICAgICB0aGlzLl90eXBlVG9rZW5T
Y3JvbGxIYW5kbGVyID0gdGhpcy5fbWFrZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpOwor
ICAgICAgICB0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyID0gdGhpcy5fY3JlYXRlVHlwZVRv
a2VuU2Nyb2xsRXZlbnRIYW5kbGVyKCk7CiAgICAgICAgIHRoaXMuYWRkU2Nyb2xsSGFuZGxlcih0
aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKTsKICAgICB9CiAKKyAgICBfZW5hYmxlU2Nyb2xs
RXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAgICAgIHRoaXMuX2Nv
bnRyb2xGbG93U2Nyb2xsSGFuZGxlciA9IHRoaXMuX2NyZWF0ZUNvbnRyb2xGbG93U2Nyb2xsRXZl
bnRIYW5kbGVyKCk7CisgICAgICAgIHRoaXMuYWRkU2Nyb2xsSGFuZGxlcih0aGlzLl9jb250cm9s
Rmxvd1Njcm9sbEhhbmRsZXIpOworICAgIH0KKwogICAgIF9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9y
VHlwZVRva2VuQW5ub3RhdG9yKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwpAQCAtMTc3NiwzMCArMTg0Myw1MSBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBl
eHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyID0g
bnVsbDsKICAgICB9CiAKLSAgICBfbWFrZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpCisg
ICAgX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpCiAgICAgewot
ICAgICAgICB2YXIgdGltZW91dElkZW50aWZpZXIgPSBudWxsOwotICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxIYW5kbGVyKCkKLSAgICAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9j
b250cm9sRmxvd1Njcm9sbEhhbmRsZXIpOworICAgICAgICB0aGlzLnJlbW92ZVNjcm9sbEhhbmRs
ZXIodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICAgICAgdGhpcy5fY29udHJv
bEZsb3dTY3JvbGxIYW5kbGVyID0gbnVsbDsKKyAgICB9CisKKyAgICBfY3JlYXRlVHlwZVRva2Vu
U2Nyb2xsRXZlbnRIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIGxldCB0aW1lb3V0SWRlbnRpZmll
ciA9IG51bGw7CisgICAgICAgIGxldCBzY3JvbGxIYW5kbGVyID0gKCkgPT4gewogICAgICAgICAg
ICAgaWYgKHRpbWVvdXRJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0
aW1lb3V0SWRlbnRpZmllcik7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBp
ZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgICAgICB0aGlzLl90
eXBlVG9rZW5Bbm5vdGF0b3IucGF1c2UoKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fYmFz
aWNCbG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fu
bm90YXRvci5wYXVzZSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0aW1lb3V0SWRl
bnRpZmllciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aW1lb3V0SWRl
bnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgIHRpbWVvdXRJZGVu
dGlmaWVyID0gbnVsbDsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3Rh
dG9yKQogICAgICAgICAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IucmVzdW1l
KCk7CisgICAgICAgICAgICB9LCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVy
YXRpb25Ub1VwZGF0ZVR5cGVUb2tlbnNBZnRlclNjcm9sbGluZyk7CisgICAgICAgIH07CisKKyAg
ICAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZXI7CisgICAgfQorCisgICAgX2NyZWF0ZUNvbnRyb2xG
bG93U2Nyb2xsRXZlbnRIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIGxldCB0aW1lb3V0SWRlbnRp
ZmllciA9IG51bGw7CisgICAgICAgIGxldCBzY3JvbGxIYW5kbGVyID0gKCkgPT4geworICAgICAg
ICAgICAgaWYgKHRpbWVvdXRJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aW1lb3V0SWRlbnRpZmllcik7CisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3Iu
cGF1c2UoKTsKKworICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgp
ICA9PiB7CisgICAgICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIgPSBudWxsOwogICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQogICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlc3VtZSgpOwotICAgICAgICAgICAgfS5i
aW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub1Vw
ZGF0ZVR5cGVUb2tlbnNBZnRlclNjcm9sbGluZyk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIH0s
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5EdXJhdGlvblRvVXBkYXRlVHlwZVRv
a2Vuc0FmdGVyU2Nyb2xsaW5nKTsKKyAgICAgICAgfTsKIAotICAgICAgICByZXR1cm4gc2Nyb2xs
SGFuZGxlci5iaW5kKHRoaXMpOworICAgICAgICByZXR1cm4gc2Nyb2xsSGFuZGxlcjsKICAgICB9
CiAKICAgICBfbG9nQ2xlYXJlZChldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcwppbmRleCAw
MTRkNTI3Li4zNWNjYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzCkBAIC01MSw2ICs1MSwx
MSBAQCBXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dENvbnRlbnRWaWV3
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbgogICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRp
cFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUgaW5mb3JtYXRpb24iKTsK
ICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlw
VHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVz
LnN2ZyIsIDEzLCAxNCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25J
dGVtLmVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBsZXQgdG9vbFRpcENvZGVDb3ZlcmFnZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAg
bGV0IGFjdGl2YXRlZFRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRvbuKAmXQgZmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVy
YWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9u
TmF2aWdhdGlvbkl0ZW0oImNvZGUtY292ZXJhZ2UiLCB0b29sVGlwQ29kZUNvdmVyYWdlLCBhY3Rp
dmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ29kZUNvdmVy
YWdlLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmln
YXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTYy
LDcgKzY3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50VmlldyA9IGNsYXNzIFRleHRDb250
ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW4KIAogICAgIGdldCBuYXZpZ2F0aW9u
SXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5h
dmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbV07CisgICAg
ICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5h
dmlnYXRpb25JdGVtXTsKICAgICB9CiAKICAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4
dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwppbmRleCAzMjMy
NzMzLi40OTc2NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKQEAgLTEzNyw2ICsxMzcsMTEgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlZpZXcKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZDsKICAgICB9CiAKKyAgICBnZXQg
aGFzTW9kaWZpZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuaGlz
dG9yeVNpemUoKS51bmRvID4gMDsKKyAgICB9CisKICAgICB1cGRhdGVGb3JtYXR0ZWRTdGF0ZShm
b3JtYXR0ZWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0KGZvcm1hdHRlZCku
Y2F0Y2goaGFuZGxlUHJvbWlzZUV4Y2VwdGlvbik7CkBAIC0xNTksNiArMTY0LDExIEBAIFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5WaWV3CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBjYW5TaG93Q292ZXJh
Z2VIaW50cygpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgZ2V0
IHNlbGVjdGVkVGV4dFJhbmdlKCkKICAgICB7CiAgICAgICAgIHZhciBzdGFydCA9IHRoaXMuX2Nv
ZGVNaXJyb3IuZ2V0Q3Vyc29yKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50
Vmlldy5qcwppbmRleCAyYTZjOGI5Li5lY2Y3MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3Vy
Y2VDb250ZW50Vmlldy5qcwpAQCAtNTMsMTUgKzUzLDIxIEBAIFdlYkluc3BlY3Rvci5UZXh0UmVz
b3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViCiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdl
Ykluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9v
bFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1U
eXBlcy5zdmciLCAxMywgMTQpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0
aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMpOwogICAg
ICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7
Ci0KICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0
dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQs
IHRoaXMuX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQsIHRoaXMp
OworCisgICAgICAgIGxldCB0b29sVGlwQ29kZUNvdmVyYWdlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGYWRlIHVuZXhlY3V0ZWQgY29kZSIpOworICAgICAgICBsZXQgYWN0aXZhdGVkVG9vbFRp
cENvZGVDb3ZlcmFnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9u4oCZdCBmYWRlIHVuZXhl
Y3V0ZWQgY29kZSIpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29k
ZS1jb3ZlcmFnZSIsIHRvb2xUaXBDb2RlQ292ZXJhZ2UsIGFjdGl2YXRlZFRvb2xUaXBDb2RlQ292
ZXJhZ2UsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1Db2RlQ292ZXJhZ2Uuc3ZnIiwgMTMsIDE0KTsK
KyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5fdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAg
ICAgICBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9lbmFi
bGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewotICAgICAgICBy
ZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dU
eXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9u
SXRlbSwgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwogICAgIH0KIAog
ICAgIGdldCBtYW5hZ2VzT3duSXNzdWVzKCkKQEAgLTE5Niw4ICsyMDIsMTIgQEAgV2ViSW5zcGVj
dG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZp
ZXcgZXh0ZW5kcyBXZWIKICAgICBfY29udGVudERpZFBvcHVsYXRlKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhp
cy5fdGV4dEVkaXRvci5jYW5CZUZvcm1hdHRlZCgpOworCiAgICAgICAgIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dU
eXBlQW5ub3RhdGlvbnMoKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0
aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZp
Z2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93Q292ZXJhZ2VIaW50
cygpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3Rp
dmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFs
dWU7CiAgICAgfQogCiAgICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQpAQCAtMjExLDExICsy
MjEsMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4
dFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKICAgICB9CiAKKyAgICBfdG9nZ2xlVW5leGVjdXRl
ZENvZGVIaWdobGlnaHRzKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50
b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdodHMoKTsKKyAgICB9CisKICAgICBfc2hvd0phdmFT
Y3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3Bl
Y3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7CiAgICAgfQog
CisgICAgX2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nQ2hhbmdlZChldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1
ZTsKKyAgICB9CisKICAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287236</attachid>
            <date>2016-08-28 13:18:19 -0700</date>
            <delta_ts>2016-09-08 15:38:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>57675</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQyYWVlMjcuLjViNWY3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA4LTI4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBh
IGJ1dHRvbiB0byBuYXZpZ2F0aW9uIGJhciB0byB0b2dnbGUgQ29udHJvbCBGbG93IFByb2ZpbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3OTEyNjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICBBZGQgIkZhZGUgdW5leGVjdXRlZCBjb2RlIiBhbmQg
IkRvbuKAmXQgZmFkZSB1bmV4ZWN1dGVkIGNvZGUiLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9CYXNlL01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAg
QWRkIGEgc2V0dGluZyB0byByZW1lbWJlciB3aGV0aGVyIENvZGUgQ292ZXJhZ2UgUHJvZmlsZXIg
aXMgb24gb3Igb2ZmIGJldHdlZW4gV2ViIEluc3BlY3RvciByZWxvYWRzLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5TaG93VHlw
ZUFubm90YXRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuY2FuU2hvd0NvdmVyYWdlSGludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jb250ZW50RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudG9nZ2xlVW5l
eGVjdXRlZENvZGVIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUucHJldHR5UHJpbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fcHJvY2VlZFBvcHVsYXRlV2l0aENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IF9iYXNpY0Jsb2NrQW5ub3Rh
dG9yRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlLl9lbmFibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZW5hYmxl
U2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZGlzYWJsZVNjcm9sbEV2ZW50c0Zv
ckNvbnRyb2xGbG93QW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9j
cmVhdGVDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLmNhbkJlRm9ybWF0dGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUu
ZGlhbG9nV2FzRGlzbWlzc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuc2hvd1BvcG92ZXJGb3JUeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9p
c0xpa2VseU1pbmlmaWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0
ZWRNYXJrZWRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlLmVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuZWRpdGluZ0NvbnRy
b2xsZXJEaWRGaW5pc2hFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2dldEFzc29jaWF0ZWRTY3JpcHQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fY3JlYXRlVHlwZVRva2VuQW5ub3RhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBDb2Rl
IENvdmVyYWdlIHByb2ZpbGVyIGluZGVwZW5kZW50IGZyb20gVHlwZSBQcm9maWxlci4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dENvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlLmdldCB0ZXh0RWRpdG9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGhhc01vZGlmaWVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5TaG93Q292ZXJh
Z2VIaW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2dsZVVu
ZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291
cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGlu
Z0NoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2ds
ZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
Q29udGVudFZpZXcucHJvdG90eXBlLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0No
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIEFkZCB0aGUgW0NdIGlj
b24gcmlnaHQgbmV4dCB0byB0aGUgW1RdIChUeXBlIFByb2ZpbGVyKSBpY29uLgorCiAyMDE2LTA4
LTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogTWFrZSBsb2NhbGl6ZWRTdHJpbmcuanMgZGlmZiBhbmQgY29tbWl0IGZyaWVu
ZGx5IChVVEYxNiAtPiBVVEY4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXgg
NzhmNzEyNzgxNzMyMzdjN2FlNzM4YTNlNWIwOWRmZTM0MGMyMjUzYy4uNzg2ZDVhNjBhZjNhMjcy
ODU2YmI0NTE2OTRiZTVlMDNlM2JiOTQzYyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDk1Njk0CnpjbWRzPT41ZzV1azttYG5kNGRVJDAyYyEmYURkMiZveS1pN1MrJl8jcUhXWXwqYERR
dG1ldncyLUR5ZC1sKmdJfQp6b1NGS2E+Sm5LYiZwOW1LK2xuVTtCejFIN1NDSzNoaV5VPyh8TlFV
ZmBfMjgkPjFNbG11e3F2NmwlSFIwb15BZkwKeklvZHFoOUJrZjUmYT0meyY2Q1kqRGUrSjhfbSQt
UUFwaFVxSmxPbX1ldHN4cnskY1oxQEBLOTdle0I5bj5WMn1nCnpCYmRpaGlAKXpUQ3hZPHskQCNB
e3tHfkZgPjdfeXw7Qn52WEFpVVFVPmlrfngzITZfanp1RygmPGphbjRwQl9iZgp6RE9+MmdVfSV+
aUxIbGd0P2VgN3RAfC15MCV+P2R2aTZjR3xYP3gjanhBS3tDcXNhQlJmSmtaLT5HIyFgZkpBQigK
ej4xR3AmKUZ7JFpuTG85eHo/YkRqNW5vUG9ySWJEcEVobW9IPH1mYkpwOT5kVD5HNjZAXlBDOE9U
Q1hMfGN9XjdaCnpLUjBoaEVCczJkPUhGSyU0WCkzUnFQTWdJc0FLKEVqfTJJKU0pPjttMmxgMk9x
cVMwY0tpVlQxPDcqPDx0UEhodQp6KlNYYCF6bm9TQzVXa3QkeTttUkJIIXVHcyY4MiFWWmY7SShK
ZW5scGJDSDxPSC1BQDE0N0EmJlZ3QmNmU2VKLVYKel98TUl8TiNhPiQ7cmN7K15QUX1eRkRlYTE/
c0RuPFFPMyUrQzhQVUI9SCUmUShmbjRaRH5DJXdjcT9KT3s0UjgyCnp0JGpKUT1BbWYjcWhgO1Jg
NFJMSjhMPzlLSDckenItJVQ3K2A7bzlTS018fClTYWpRb2pOY24rQHVSfGkhPWpyagp6NntZa0BA
RT1SPno3PzUkR2VmNT82USVOMD1FV29WYjBqdXREUGBLMHZQNnUrSEw+RXNlazEqSVJjTzdJekMt
PzEKelZqZE9hMD4kK2pGJUR8MC1wZHA7VFYtTllTVmhzOXBVRW50bVZIZzdSYzRnUlojdC0/R0JH
TWghd1ZVdV9sP29YCnpeSjF2JWRZQ2goKTR1TFMxR19IS09Xfjh2YndQKT5jWkMjfUlzSiUtKGdW
Kz1BR1Z0LV4zeDBYPExBZEdufDZ0UQp6M2lwTlFXQkwxREd8SThhNTBkeTt7KG0qP1U3dDtQQ0Ml
UEN7YW0xLTtpMDZJciReOV5XZ01QS0pLanJjLWMwTWwKelIoOW1hKTlPbkxBNTdBOUpuaHhsWWox
QDw4aUBiNVhSYDVEJUdDVnE2RkpmJSl4Z2gwYkc+TnRScDxBa3BHPW5KCnpsZ1MhKlMrJSomP01G
dEFte0hHVTZyTjJJWX5HV3lYT35PJVFwNjY7YilOcC1UbCtKcW9vdDAxcl9BWF55ZDw7ZQp6cF5W
cFNgU1ZQcWo9NC08YyYpWm5EbmZ9cVctak5QZ1BxYyZYeTJjNHlXUU5BcFlVeT1KNnJnM0NIcERy
ezhRYFkKej9xcVFzNl9uWn5xNzswT3F9fCEyR1kjUEw8TEdhc3p3cndga1QkVF5ffTxic1QjfXIh
UkZ1K1hwPmlhMT5iZEJJCnpXMSt7Jil9cXhlN29+UDw4dlBjJjwlfVZrLUdmSFA/c19NIXA8T3kt
WUg4Tn5RPF48Pk40YTl9cnhzJEl0TSQ1Mwp6dTJffD5pMC0mUV4tRjZNJGBWbHVjIVRqPUtXSW81
dDc2aDN7UHRNLTIyRyU9RDtCamMpOGNVNzZyd0hFYnhoPzkKejg/OHNxKjZUI01fI3U8NFVNfCtf
I0pKR2FuN1FTQlU4KF9uWmEqP0IrbW1ZYk52VXo5bW0qYGVSeGB3dTgkdEZxCnp8MFM3SXF7SS1J
aSUoQDdJciV8VGQxKGkrRSlrYEdDZDZfJGsoczhlZFlld1dUJEl8fnNVNnQ9cilUeWB0NCp5Xgp6
UUEoVmU7bDtjXl48OWZmU3QzZnxZWihfIz5mUT40ciRTQmpjVFpwVCl7Sm5aZGgqcFk+c3p1Pz1s
NyQobEQ0NlIKeilpMW8yZSNQMmszfFQ/aCYwdTRecEtPQ0Moe0pvX0kzcn1ZbFhnYkItbG96Mncy
PGlZcTt1WV9yRVJYWStuO2pnCnp4JjdKSHtgPDF0djdnI2NpfkRLQ1RGdUBfKjl0dlIqMEllO1VS
b3NXRGFYSW5zJEg9NSZHbWx4Wkp8VXNlS0pYYQp6KkY8UGA8Ulk+JXUqPW9tVmB+Pnk9U0Z6KyRs
SntxR096Q29IOU5zcXt9NmYpdU5tQER3cjIha3paYHhje2lBdioKeiZSYnIwemcqcHctdWsySE9t
czg0YyU8aUE4MmpROXp1KU0lKV4rI0FSWCFnMTQhVj9iRlI2TDBlUjB6MmAra21FCnp3SWlJQnAz
PylGZiRhVVUrVm83Vmw9WXEoYHtKT3E3OzheJiZNJjJScWx7ayo/UTx9QlQjb3tNRmtpRXVxWjg/
TQp6XzZGRX5XOzNmXilOPnZgNjY+WT1EVzZLND8tdkBeKCl2O0djKEE0JEAxRVp9Y08wMm5zcGty
e3pBTmRKVyVvckAKeiZ6d3NNVThiSnU/ODN6bEF8c3AkO09qLX16bX5wV0FEN1Rge1pWdFlVVm5A
YCZNND17VHl5KThAaHtARmQwSnJSCno9YHBsPHBYTSZVJSg4QU41dn19d3pWWDA1byVXbUNEUEJ8
Yyk5VmxWJEBsa3E9QD9+cFRidjI5Q0xCJURSKG1zYAp6SWFlLTkmOCR4fUFZS1NnemxhcnBEKmo9
dDlQaG41YGYlMnpJdXBDTT9oflI3Rz1FcCp7dVV3Yzx8V3c1REpTLTgKeklYfnZnXmlzSnomNS1C
UEMhYUxwVXxZRlNXWHt5c1M5MzAkX3A0JDF7MEtWZE5xKCs/WHtyNTRNLXQ3PCQmTnFPCnp4aHlG
dXkmc0wkeml3K3ZqVWNoRlZ7R244eVU7emhTMSgod0cwJEApQk5Yd1JfKSZUPmN+a29CcVJXJTZB
cUpwQwp6IXNsaF97WDd1YGooJkpxQFJnQFcme1B1WFBrI2FsLSMjeWJgYzZpUGgmK3dVQElBPHh5
VSZkeFZAPX0wO2szU20Kej9lcUs1KWsxckloVWB5RykwdnNsQzNoU2Qma1MrOFNjJEMyWUl6V0Uh
OG85IShYTDBMZG82fEVsWWRVPGwlWkhXCnoxSil1bGk8MjRrMiUrV0dDeEdUdUAzaWwrdmR4RDE9
aXd+Z3F2QG94KUJASHJVIXRHRlRrITxxM3VLLTJZdjUmPgp6ODlwejlgbnNCRiNNbShWZFFxOzM8
I0k9KTtWVChhRVNHI2w+JTR3Y21CbiVnYU9GJSFIOWRsKz1OQD9QTDRJRUYKenNUUFNeVlV7MDlL
YT80QkIhQiRxIT9STSleUH1pKE9qMDlBPUJ3Rm1Fe1dXej9sIytyLUtlKzV7OCVQV1BqQnJwCnom
TWJhWipWV2UoUHhHOSNPR2haNVJJKSV5NDUxI0tsU3Y5PEM+cnh6JnY3SU9wQThtKDx3bFMjUWVm
RnVmeXo/Sgp6Nyk0dHp1LUB3NE4kWktfX29NNW5EPmxxX15LQ0o5VyFATy1jTUdXR15gbH1OdS1m
Uz0yKisyYVVpU1ZOSitHWkIKejdvfj1gVjd2WTY9XldgTig+bCEjJmFARXlSKnJ7cSo7ZztaNFhn
aWk7bH1TU1hsPFNvS19vKHJ2JXdxRWl8Ky1jCnopc31YZEkyQ2xjeDRZbjYoSmlrWil1TG16KTly
P0d4MHNANV44N2VASj1jdGA9MHAmJnk4SiE/RS1me1YjSGJ3Pwp6KT1OVDZ4I1AmI2k8fH4/ZX1z
cz9DKH5UMyYlMGA+JVFaKGhBX25ZQD48T0AkKzVLSVktfChgT2JJKkRkdUlGb3YKemE5fn51d0ht
IzVCSlk4Xit6N1NEKG8jPE09aThUOzdAQCNVbm03VVZoQT85MigrZmg7TjkqUW9UZHAoMCNqI2wx
CnpjNldMIXZeOEYyeklXJSNrNUk9TyUtdEhLWDE9RyhRWGBic3FQcGcoX3RjRFYjRiteKj0hVlFf
SnEwRCtwdz4rRAp6PHdtSGYtOzxyYSNvYUBkN3twVk5he0F4TEZDY1pzTDB7Yyp0eyM1UyF8Y145
PHt3SzZVTnRJXnlaTCVyKH49YT0Kej0/TEMjKyNrekc7X2J5LXB6KWRQJU5gVlZTSnxXUkliVTt9
QldgMGJYRWZSLWN7WFl2aEs7QDdrQ2MzbDtFaSpTCnptOWp0SDw3bmZZKHtIYil4JFJ7WnVNO21A
O05NKUEtaFB5RVBMRXwpKEtEUCs7MVI+OyFXX0NOfDBpRUdKfllOJgp6Kk12M3dGcDlhYVImZFlJ
X0xJQUN6S2s9QEVqQmpWamRLKkAwIyNPKVhXbT8kZVFgMUctREszXmNXdS0/aGtiYXYKemFuRzhH
Qzc9NmpAI1hsS3RNentFI1RuLXwqUzl2KWp3aFhlRCpjTGdqQDUkYnspO21BTzBEfV5SJWI+KmVj
MVNnCnpTU18jLXV7PSpAWjE4V3FVTEIjMiRIaEstTzdGKl5lYjdeSDIzcHhkaDt3S3dRQ3ByO1pW
YjhmKEp9VGhGUCZLcQp6QzB9WSFNMGA0aXE8YXNuMXdHZUw0VFl7Xj99QEcwcnF4cH4obVE0bS00
OyZwdFJWNCtCSV4lQyo1XjJBbW1RKDEKemw7LUdJP2clb1A2N1IxP3tqY315UWpJdFZyUHM+Rm8l
QVJnWjlwPkNKZ2BiKnNyM0ZSK2ZLVVBKdEktYEptbUhJCnp4elkxaUZESTUzTEUkNj9aQEJJc1JM
ajI9LUNvYG54LSNraXJMci1xdFJOLSNqMjVYOHE/ZnwwWVVtT3ombHlBSAp6VHQtaXQ/ZyhGTVUo
VzNUSWtoKVYqNlBLJDtxP2xZX1NaNWhJI3h0RXZHJiQmVU1AWENuWjJDKTByZ3hQWWE5IVIKemRy
ITFEb29vfTIhZlNjaDhvNzFFX15efDxgZTs+ckp2fUdkdE94a3AmOWNNbGNzSCNPTmE7S1dTaHJl
Ql9ydnJjCnoob0l+M28leTg1S2NwSyE1SXl+dSt1ckV0cXFvISFaXj5EbjglNVRZMXFtb3Uxc3c7
VUtaQFMrUkN8MFk1dXQhQQp6KDxAZmpPSHI5U2o7dTNtP2JheGc+dUUwNGkqZHVlJDFfKXNLNUsq
SmozTWZxSjg9NFQoaUwta1g+e2h3P357NVIKeiFMTlAwJSFBYiQ8d1JHTyQwQU1pXm1jUE0oXklZ
NGteMHs1ISFPa3g8cUU2VS1rOy1Eam4/anZIMzxLJFkzOCFHCnpTUithZ0Ioaj9OYkR2YTNUWit4
V2k+fkxfJTYoQjdaNlc2ZXJfJTRiPllabXhfZjA5KlYmc2lCPlcrPGheeUV4Twp6KkxEJitgbFpy
USU1NGkyRHdaPmIkYkFndHJgLUU4anxAOTZHZkwlUChtTCE+U2xSRnctPGRRI0szVmwxcW9KfD4K
elpRVjAjajx0fjBUMz9MN3g3Zk5fcH1IWSlkX01HfHR3JmxrTzgmTCpQdXVrLTdpJXNwQkJEIUlD
ZmxQZW9zI085Cno/MmI5ITNibUJLNjViaCtkZXg+aSo1YX5rbHEjITNgTGQ7cmE+fFJLOT9RdnZN
SzVgcUQkamBebz1tY1BWYD89Zwp6b3xuWE9kbz1ZOF9rN0MhU3R9aTxkfW8/M0w7ITFWYCgzMXUk
KUBqPWdZe1oqUFZOZU50d1dUYTwmQmB+JCEpdFEKeikybUsjV2Jefn1rVlFNVURiJUlubG4hTiNe
cWpJeUJoUWJjNlQ/ZF5AMWFEQC08WGxPdmRrIXpobnVnKGRSKFRHCnolMCNGeiVJeDJ7UU9kc2x2
NWJ0SjN2bExEZFBYPX4kbHRfZ21yaV97Qkl1aEc4bjJGVDY+WkMmeVl7aTt0TmVKQgp6Vj9EejlU
U15SZkRvRWB8TFFrYCVWKTxXfldGXmctVG44P2Q4PjdhI3QzX2E3M3plMzdQTygrQ3BEST1iWG15
WUkKem9FUmR6aHwrQHlvfjhHcVRAXnthRFNjc1VtLTRDNmI0MDZYM2BseE1eKjNpRG01PT42TW45
SnRyXk5kMD88KX1oCnppcyNDNUI4YzJDVXt6IyUlQ31kK3RAOSkzTlJ7cztCJVFQPDNOYj14OUw1
KSFNSGZBbXBZaTNTe1VfZkBQKVVZIQp6V3xWc1ZTYk9teFYhZlY5QDBGMjg3RDBSLVJIN3w/QVV3
aSp0S1UtSUN+OH4oNjBPV0NSbGhsLUgha3IzViV6JFkKemM8VkxlWUlwMz5SKFZVVjxjcilHYTt4
YEE+cWp7ZlpPVkk4PzFjUENga1hpLSgoQVJ9UllfNTVtTiR5Wm97eDk1CnprVSNJMEVvcWJgJDA7
NjZHblZ6dyZROTk+ckVSbk9NODVudWI9NDItVXtrYWp5NS1UTlg7aDxYK3tCQGpmeH5ucgp6allm
SlheQ0YhbWw9SCluaSlve01RajRANFVVZkFxZHBPVURCQz5BUzk9VjA8XkNSZiM5cl9ZQyZ4cyhT
fE5XaXwKenh3aDA4NjAxP0VDdj9aNj1fNj0tTHJKWiF4aT87d1UhXkApZFZpRWx5Xyh3QnJYQUM/
SW9obz0qKF50ejlVJVFsCnpFUHdRRG80JiN0KEM4KVJ2aEttclpoRnBWYn5qTkBvUz45RDxXWXBr
Mio0cXB8R0thOW9QST5VdGdzYStYWG03Ngp6cWVQfXtLZkhxWEZZP2B5UzdQZzskMjFDRGRqK3s4
M1pETHw/VzZzbk1wfmpQZj58R0I1Mi0lcEcob01DbkRwZzcKek9LY2wyZDNBMXRAM2ZZKj1TZkx4
ejVHNkAqWnNJZ0tpYWM3OXcmVW4zQUVsQiNeITlqI0JvKGRiUFF2KHBVPy1ZCnpBPXA8aTMpdVBT
YG9BPDwla3s+JURKYCRPRkN2anIrS1cxOyVUKjd8bCsofHJ6MHNqTWdEKSlEZGxoeVhGdDFDYQp6
Ynd8MHZpKkdOJVlQP0E9UGlyK305MSkjVGAjaTJucEstMmBAPHZmUF59KUombDNedX1RQXd2JmRZ
dG0xdFQ0cHkKemA/PXY7TSREdkA4bF9hfkRvLUolbSslJG5FSEFsRT1AQ0JoTHpHQ0c3REN6bk1D
SzQkTX0xOU9rcXVETmBJQ0EoCnoldG8mJGhVLVZUYCQyZiZeYnl8cE1qU2dEXiVyNFBKKTNTNGxw
T1dkPkY0NkBxXllvMCV3OVZYS0owOXVeWntPIwp6e3pKMVptKjBpRF9qaWo9YC01JXU+NU9nbD0h
ez5yV1FtcVF8Q2FhNC1kRnlXeCtVakpKSkt0RFV6aDcwZTAyR3EKenVwamxrTkVeT1A5WHNwPlA3
RTBMN245Q3BVOFdEIWBeVSY5LT1BOWE9RFN0LU5JRXY+QEJGQklvUitlR0czblI3CnpJSXFeT1F+
R2hWNyFNOG1IfmNvYlE/WVhAR2BwVHRjYGRiejQ2T0FeQTIrPXtjV3I4dUtXUiM3UTUxQXtgTkNx
fQp6R2x0d1E3cEs8blhLYTcmUj9TM2x1NTZzQHEwRXFYKCQwM3ZRZj9lc3twNzlGK3wtVjtPcT5k
OXtWVEJ1dXd6U1kKem5seEZXeEt1dCZ7bGpZMz83Ynx2QU5qR2dNTmpnKkokRnNnXlBHTX1ean1O
NlV6Oz56JHs5bm5YaC1mdUBVdW4/CnpUZVAkODNlaCMocm9tZis/bSt7VUAlV3liLUIzcWMwKmB0
b2hFMnEtbUs2MUFZWXR1QFltLVY2WWl2RCNAOz5MUgp6WGN5ZWsqNFJsRUAxUHc+RD5RQ0hxbnxr
IXJDcypZXk8xfjcoIzdRe1lIb1pDS05iaTM+TEhCe1c8KXN8Rlo7Kk8KemFYLVJrT1ZeTS00Iygj
fHFSWl9ack4zK001UHxXenltZmBlaSt6cFgoe0FDOEB8M1M3P1hmPShzezgxUFUoZlZKCnprMzc/
K2BURzBkNHFyTjZMfHlZTmUkO0gjZVFQNHh2cm1lPF9KRGNAaH13Y0g/cUtPSGF3MUxPNzRMPzxC
Yyg0OQp6ezdHKH52alUtd3tueGs0NzFWVW4/bGc5N0JAdTYmbH59YSYkNjl5Smh3aVN1cD5OfmhR
I1A1YGtAZGFPR2Rwe2MKemNIfiY+Km96e1VfX01IbmM+aDQoI1c8YTJFKz5IKE1aKiNrUEwjOHJg
ZkVHfnpWRWteXkt8O0E2anFTRkdUK2c8CnpiRF9GPlBZfVVfNl5JV0tkLW1kVi09MUB8ezBwfGt2
ZiNOUWY/RFNGUTB3PFlYJilee0pFTChmJTA2TmBTc3JaOQp6ST9uRmdeMlJadlZSMDZXMVhjPEA7
enZWIyN9TG5fMTxWe2hnTVBvYUhZe1E4LWlxNHRMUHl5QVhIQFhkdk5PV2sKek1ndnxIT0ppKD1f
QzsmPVI8bkFlMGVLO1lePj5RZkU9RFkwPDV8aE1FJTxpUTZZTSRzbiNEYzR4Xj9aO3luaVh0CnpV
TERCRXQjLVNrVzctQncxUmdIQlFob2FSRlNxcmhsQSZpOHwwclhPRWJ5dz4+Ji10R3pCYSNgbjUo
ZlgyZlNSdwp6VUk+M3I5fHZXUFR7Ky1nOGRrJk9QV3J6NVpxJWAqSXE0JEtSUEU7X2lQa1lfKSFD
ZzNiZjgpZ1o5aGBscEM8ZD0KemBfemBhRn1aSChfNTFZbyNFKzVoVH1MQ21MUG5xVl5nfiU9SHg0
KiljYGRmMmpfQUpreWVoQH1wc2B5az9aIUxuCnppciRFdEtaN2d4dS1iLW9naSNKe0FIISo+ZGEm
V3AtbXhtWjQ+bmBfYFFIIXpTbkpDM2dNNktkTTF4JERtQ0o3Wgp6dDtndX5sPHNmTzhzKU4kSj58
ISFrSHFIcnpVVzY3PDhWMj9GODUjTnl8aTJfIVU/bTVefVc9alNoeSlDajtPUUYKellpR2w+eWE9
bExfcW9IU3Y1USNVdz94OVJqN2xvWVdrO3dVM01HRmg0SmsxP21PRnlYPnUmbUg/T1pHSjUrZjlf
CnpoYHlZeE5NWiskQ2NmdXJ3YWJvRHQ/JW1ReSNfNVNGLW4wc2ZkdSRfREo3TT4pRUZndnl4Z3FB
N1QzMlQpPHpBeAp6Vjd8QD43cSpeU1liK2o+ZSpDQGshVFc1bEZnTHoyajFleGBFaUtEKVVMcjw4
VzdocnFMOGVRKnJvYGBwcFEyczEKenBRXm5PUk5pdkNIcHYzPFMoKzBeRVowRHo2a0ZyOUZaRV9H
VEhLRiZvIWlmK2pnclFyWjh5SkBhVjBKUHpIKkQyCnp6STg+PHdgKVc9UCtpNk1aP0dzP15FQT9f
VWFqeSVwXnhYdmohP1paUUFOamRvPlA3YD1HeEBfUWt0IWphZitveAp6U2VzJUpAbE11bD96eHlK
SFEhcUBgPzJTVlUoSGBqTX17dio1QnVAbDRYTUJWQDF+SyhRPn5GR1hwajFCJlRIWmUKek1nclI5
TXlTPE5scWhJazN7XkV3LUhZNT9TRCRKQnthUzZVKjBTM188Pjs2dkhzd2U3UmtebWgrJldGSzFK
IUw8CnpEOz1aRUQhTlh3VTg8TVQ3ZVdKIzc+UEZUdU1ePmRYa1glZF5ZTWRITzdCUDBtbyRpJiF3
MnNYJWU7UDZkelZrKwp6anFnc189PyFJMVd2eShLcyMhQkZEaygzOWBsOUY9XzNybzJ6QXZUYGRt
KnhPXksxYFBiTFZxb3tNbytZaWxGQ2oKejE+VFV+e1ZxY31TdH56QS1CenUtWkFMR1o3XjhxQnY1
VnlYY3F5JW5pUDAmYGpaQD1nNmxNbyZWRVgjY2Q8I29pCnomK0NrRmFVaGkwRFI3ZGMpK2deYCk3
R1VQU2d0azczRnI3fFFDPTN2VGI2OFBGSkF9M1d4S3tXMmxqcFhgN3daTQp6RCVEUjMmKTdSVHp2
cHwqOV5MMGU1Vjs1QnFwSjA3TFFSYiRyRT54TjdBaEdmdVMmQ0JHRGgpLU8yK2hFTUleNXUKek5w
R094VSVANnNoVSp2NXpLfndtRlNwZ0RNa3R7TnU/WUFeNGt4RjQ1IWQlcXFTcjFQciZgKjdzWkJC
S2s5ekNfCnpOYDVzaCFXVDc0RXVxLWE1bVhJYE1TVmpnVEpPciY5THwtQkBTSEkyMj03TlNnMWo8
dEc0cz5hbUledXM0R24rRwp6d1BLdjtUXk0jVlV4X1VGU0s9NVlgPF9jKVZtQXR4cyFefExQLWRK
Ozg4MkEzTHJkJk5BPlNvbDU+MGg3I1gqITMKej9iYDwzeHE3NEFzMkB3ZWZheUtiV3hMQ2dxWklG
b1p9anJ3Q3xaZiNDQGYyZyglM34oNHJJaVRhQ3spVmoje3BYCnpVaXc/NU44NDlwJX1HVVdjZFlS
PGhZe21hVXUjQ3N2fGVGUW5RRTJrcj1zPiV4e3M1JHZDTkMxZzMwUHkmSTNeTQp6eWIpQ015Ty1R
NXVJMHYmJWhrKHhqamRtKW1iUU5Ad35wVistR0U8aEs5Z3YocjlNJXNoNEY2SD14K31lND9EYXMK
enJMUnhMQ05VZUQ5VUQwbzFJKzV8d1BkVmpvRmZ+WGVCX0wjPHdhMEFsUVVtbyolRl5PaWtpO3A+
VGVrPlFDek9xCnolVDA2eWBeeHVJPVk9TlM9akx0d1FZMHYpX29IRllCYU8lPXZSTH4zem0lTC1p
N15Ue3JnZztic2BHc2NxVCVwbgp6QktJd3c9anIjPkFMSCljRyZpNWd6antaYD5tSldadDg3MTIp
a2ojRHsjYDtuUnBweVZuaUUwOVB2TzUlMmIhaEUKemtvPkZIaWJHbTJpcnd+WS1IRzxTeD5obm1A
bGI2NGRgXkleWTVnZWRzODNgcjlFZHo+RVJjUlJzKGhSSWxnKzxRCnpFMjtsKDhGb148ZXVPKUZy
Xm1QUk5hbTJmLXhDPWxqbC1QM3QmMWxGUGd7TGZeXzk/NVVwVUA0VWVabWBfSWp0Wgp6dGxRczRM
KzBLczkoUFdjSUVCKn1oazJ5eyVCMitiKk5Tc3VYV1k7d1k3PFcqYl4mSntxQGgxflNFRlNTcms7
d1UKempCfD9ZcUYzJEM3fXxBfC16ZTR5KlpTcld1WUdjZEtVd202NTc1aUhqV2orIVYlejZ5TUwx
I2hBWFJVZ1UqY2RDCnpUUDZBXyY/ZGd+cnJzQ1VUaT5jeWVncXhQT0dIaVVNWSUzXm82NTs7OEhN
dEVzZylaP3ckcylfPjElR3dHaVNiPAp6I0BxTGUqUSR3anIyYy1teUM8Q0wqOS1NY29kez5HeThU
P0NTQDdUS1pPTUZXdVROU2gmK0E4aEJBQ2RVX2w4fjwKej19emUqWG5zJGI8QmAqa2h+PmxTZl5U
bjFqVSV5Xj5sWVQ9bjBiQzItTEZIfUMoOH1+TnNwam1gd35yTyhKXj1BCnpDdyl+fiZ3VHpVem9+
dndVdms+NUt7SHlycEVKRS10ZSlxYld9WTVKXlBaJlpCNi1MPHNjfEhXUkxsNDB6WSlFMQp6Vkgk
eSZWPzIhTj4xKUBCYkQmPTUpKGgkXz5ocS18bHZ5SitQUiFGdD1AQiVJYjRTbDhjZjY1XlJvOX1o
VHlfXyMKej5EdlVZdWBCNzhyNlpLfVI7Y2NJKGI0UjE/TisraTUhfn1ZMUo5S21we2woK041XnU8
a2tSYigkZUo1TEpgdF4+Cno3RXlfcz1SXj1XKGVhaUZeV1JjcU5aOF9kbHZMYUxuU2t3Kz1TR2s8
UVZ+MHxZO35SIUxzVG9HKjRfOSZeMUspLQp6LX11NDtYMm5VfkFLdyQtaSomYjJeOzFHN0BtUUV3
dVV6dzVgTXYxdm45a0lLY0skQnQrcyk2ViQ1T1BWWiV2Q3sKenRIeTJ8VG9ScTVUNCUwVCtrREtg
Pip3Wkp3Myt1WHw0IXNYKUF+X31yXkhMNVp5SHx9YFFSP0dYLWpxeWBPTnY5CnpYcCF+dXowX0h+
aUFVdW1uJj44Pyo0Zj9PNSh6RSR5ZzMpS2RKJTRYQnAhNH5pNlE5TUxHVGZqSmFhbiRZZiRyZwp6
UTh9ZjVBZXtKcFd9WF5CVnVxdD5lTT4+aGIwVWNFMTx8aW44ZHNwSGFVfUkjPiRrK1BUUF9zWkpF
NkJyaiE8T2YKeiFzNXpERVRAejU8TEYqMUNEaDJpTFRsanhfQTlQV2tNWDh4c3U3OEdRYDtUaU0p
ezRjb1hVTHBHM3hZZVQ4bVcqCnp7YzcjMCZ6MHx8ailwNkgoYjZJKXR5UCoramc7UHhYOHlmYV5l
Jk4+Pml0Vyg1b0ImQ3Z9T19Hb05+cXhmN19VeQp6SWotZiQoUWkjRjRTS0tDRXIjeilMQEI3QmNq
QGpNe1owP2ZtNWZsdGhRJkxQTT44aE4kWU4+QjUpbGc2bz9kJnwKemB7WXJTKz43RlFnaHJtKms4
RSRLcjwzPkEmS0BnMy0mJHsjaSU/UyFBRnV2dk91RndHX0szTzxPISpffGozK3k+CnorUnNIeGo3
Q3slZ2lgQl9HOVF+bnR5TUJnNWxldEwzQUF6VGYzZGM7TzJzTUY9Sz19ZUAqPTJNa15hcXJhX24w
cgp6cTctZ1E1QWhBPF9RKnFfRURAen1BUXN3N3ZIT1RBWHw9JVRONzBkemBYKGtsNUFTKHk0N3Yw
KERXYXl2a1Y+bHcKeiZTRGw1cjtVdEtgeTI/KT5pa3xGWipIIzMydyMpRkl5XmhPJUV6ZGMrbUVi
WT45OC1COzFCbEx0XjVjJmRwcThwCnpyZjFTRT4hZUw/aWZwdllNNXlxa1FQJDZyX21teiVFNUJD
YGtEMy1pQCFvMU1CQSNrM3VYXyZten1OLWNKdVVhaAp6JWpJSkhAfDc9aysre0VGI2MwYkpMcm0r
cT95PnhRKD41NTVSQHFVaUZRO0JsJGpDUXU1VDQzQihzUylVTnM2OFgKej4tUjE2I1RkQEhJTXF6
d28xRV94e29aISFCbUVOR0QzJCh9dlRFWENGMH4rUUw3byNxR19ITVhRPWojRkMqWj0rCnorR0Yw
emtNUD1GNXV1eXNMPWY/bTVHN0shS0JmMWc1diNeJjI7T0FnWHF2a1pvQD5KMUl1Un5Qb3YyemVm
PFNMbAp6aT90ZSQ5a0NPM2lwU3soe21zcytvWVR5dHsrYmJ2dW0kfS0/V1hXeXNTJXs8Um5LQykm
KSlpISlQNXdTTSgteEkKenFha2xqYSNmZTtyJEFsJj1vaEVoTXtYdjBwVzRsZGVxRXhNMCR4ekdW
PW50Q3RzZSFDZ3g7RVhVU1JwMEZ+cUd7CnpMUCE7NytNZCVLLUlwNHJncUpGdm9fcCFPQzMmZng8
dzwrUWFzLUp1d2J0RlhJeG9AfFAhREJQQTU9WSs9a3owYgp6Zjh7TmE9PjhjKFg8fEFiJHsqRnd7
PUgqSFklUExvOTMjPzN4VXtjWXUmMWBPRTlOIXRFXj9rYzdkZ2ZyX0l2cUAKejdyPGhIeV85TSU+
PSFAVUl5e0VobDY9UDtvbW9uQF40S2FCcWpYdXVvVHYlYWVWaSF0azgtNExqNE1WX1omVlBpCnpw
Z09QQjE5Um5+KVFDbVp5SEotcFdhRW0rKkhaYTdien45bWl1JCEjSGB9ZXt3ZWVRVDd7ek5jaSZl
VWl0NHxCZgp6Z0pqaHVxNz84OExNN2NKPWw4am1yU3NaJGA1MU03T1B2Kj5lV3pZXilwRj89PHVy
YjFzQzZ4flJ6NjBaYjN+Z2gKellHPHtpczloPmIzOURKKG88e2UhXzB0e1VyWV5OUnI4Mmd3eyZ4
NFpYPmE5RWJhYj5eSlZvJCE9ZXstSFQza15zCnpNKHk3d2klV09TP05MdHE4MTBTcThaaSNNSEtz
UjlePEFCfE1xNFclcl9RQHljd2RNKT5aOEEwVn10fFUxI3BNcAp6MyptKVJZcms5N3pWfntgbXlK
PDlraFVgTypXTTZPeTMzX3dsKW4rV2BvPGItMkpjfj1QUCV7e3JIKD52U0BxUDMKemFZMXdgUnYp
WClDOSU9MyVmRWE5MnRQU2VmUFlFM1l8WHRgP0hGaDUpcDk+YUlzZU4xN2BwYTBROEJ0Wj45SzJq
Cno+Y3FKeXdTMjNlcTEtQUxwKytRZUROJmpoS3x4TjQ+fWIhLUdQZlRZdVdXcmZKJDVGb3dYbTEp
SH5CVjBDKn0wPQp6Y1V5Uy1nVmZWYHFObSl2K21LXz1tbD5tQz1iVjFqSmU5bW1LTllAe1g+cH0j
Ul42Nz1sLWBmVmpUcFJWQzcqZUUKejN7NUBQY3EtWSl0NSF0Zl5kJUc0aFYlX0VefSo+NDA2IVhm
UXdKYVQydlJAQ29Mc2JHcTtIRXgmdlBQKCohI1hVCno+WFlvWllNPjVeZEgmN1FRdXxCUk49RW9M
VWprb3VLYFF0VGwqS30oYWpeWDxJc350I3gzdUFCOU93TUZXaztmQwp6eXUwJTJrQG5BVnt4VnhC
TVNWVCU1a0AkaT87fj5oNSQlPyhaJTBhdkFRQVZhcnZ0Z3hXMGtQPDVqM1F0PGp4UV4Kelp4bUht
VDYrbklrdC10IVolPUVTYXUyUCE4bHhPPSpSaFVSRFhIZUFgWUNiZCM3Z1lARX5Vbml5ak1JUVY/
Kl5OCnpgWUdUP1lfRD1ZQ3gpMmM2dj8+LUd0WX5td3BNbCFFeGpMMj9fWEA/Ql5kU3I8JjNVI04w
OSReMXZ9K08oZk1YNwp6N0tFMkM8dlFnPlFFa1cyTFFRJTdzSnN0ZF9OPUEjcVRzTEtKQnFiX0Qw
M28rPHl9Ki1HJWJxYVhJK3dYTC1oRigKemJYeDJeUmJYMGI5TGJNRiFpdWF9KVdUK01haEIyfXl5
LTEjKSRlXzg9Si1DMipOPD9BWnB+KXs/Ym95amlyd2hGCnpCZVJ4UTZ6eXchQ0d2Y141byZqM29R
UGcxVn4lS3BRU3hPKnNPWG5wcEd8ZngtQDR+YW8pPG1NN1BJIzs+YFF8ZQp6Z2Q9fk9LSWRsP3Qp
RnVwMGl1KnpgK09UQXBXbHk7WEd2b2p7TWhFezVqM1FgTUFFYmYzU0t1R2p9cCEyamlQUWgKei0m
VEMpJGVLVG57QG5eWGBUZ2k8RCFndypUS1dGKUlXYWBlVChLemVYUEs3SGJyc21IRzcmMW8hbDhr
b1Y+aXdgCnpqYUdAPkQzcXJsJTsyKXVZTzN2ODVsKG8yM0A+ZlZlX1lhRUU7flo/Sz5DQDtQNHlJ
YENvUTZ8QntmRVd0eVl8cQp6eTA0WDFZfUxsWW5xb0lKOHRuUkhvcElqRkhAZSZVQXlPfmF3KXIh
e0pIcFlpXmdSMH54TUhyeFdfUE9YcXBVbksKemRBJlRacE5GTWN4TCRVSUQmQTFsRUI8QndvU0g4
KUxQZDJILWJqMyZMPnwxN3Vgb1pTb25MdGBlJEdMRXthKV93CnokfkBGflNiYXk2YjhMUkVaUDJ4
blFIdDB8eHQ9azZPJj51a1NJSGJQd25GLXZlcyEkI0JEfHMtKDdOcU5KK05DUAp6YFlCK09eMTU2
NykpWUZ7PWZ6T2YoIzM8JDg0ZlNBd09eX0daODU2Sk83NSMwO21Yenc+O1dRaDRAR2kwcWNNTEEK
ekZ9ZHQwP3BIaVRZRFBIWEhWM20qVShsRXpYS3VPOW15QShsNFE7UDVqNSs9YXBDM2J+SFRkOENU
bT83ZmozSUlzCnpWPCpKQXg1MmhrK3AlP3l0KnRTdGVZR1E7O1J8S3Y1RURAUWYxdXRmRi1DIVRq
XyY2aSFgfDNPaWFCJF4tJHNBbgp6MTwtRiZWZnAlMSFFLVopN1U3KSFLem0/K3QxcmlQcDErVmNv
THxaNUtlTnV0O0tRYk13eFhnZFFoYUZaTU1xek0KenBFTSRePFc3ZDN1I3tfKS1wNUZKYWE2U2FT
YDA9eCRDUkpHbnF3Uj48Sjk3dnI9NkQ+cWs+T3wpN0d1KklaajFWCno/I3RPOEBqfCtmQlFraGlm
MkJUJXArcT9LPz05cl97YzFUX0UqcWhXNFVZYVJkcEBPKXB4SWhAVzluVGZ1dlJiSwp6dTRuRVUm
RURGKGFBcD5pY19tTVUkMnBzYD00YEVZZ3RJQDJ7JDsoWCN+e3hjTHJreDg8ZEpVV1NTTERqPHd2
UXsKelN3MTwlUkEhWFFTQ2I0QTNzZ29MQjJfdTl2U2dIXnU3dXZCV0hlRzwxbDNOcCgldXEwT059
OT03P1d+QCRJaW8qCnpsWjR2Ny1NbXo0bD5iYGU8dC1wTGhNZUw7Pno+SztNcDJpZE98XmQjbUFZ
KDxEbXd8aENkdX14K3RleChwK2JHTQp6dT0pb008WSNXLW1VUU15I1ZEeUtmKyFuJV8xWDR6U2Rg
ZXB5bktLWj5mVE1RKXNgPWRvXy1fY0BOQTZaP1RoPXoKelhMaHg1K1BZKUEjXz5FeGdpRnFoYik5
Mk8ofklrZShvXk52KThKXm17QkcyRlNOKk02PVhmRW8zbDQ9bGUrUkQzCnojYXo4enhHN15uXnJt
MzBaQXomeGQjNDlzN1leeCpvRjhVRVV5bSktP0J8R20pWUhtM052WnV2OGs2biYpNik3Owp6XnAz
N2F2OXc7NCs9dVZpbmxkTVhoLTZeNSpLWjdnVElSLSlAZlVGaWxmRm1HVllsMHhJTFVyVXczZj5F
UWBafW4KemMobjM5PU5yKChLV1RhZE8rRUp8bVppcCN4Y0FBT0phayhkKXQ4Nyt6O3s0MlhOakJB
TjZeWF9pUiN6YkAtSi05CnpsXiYmUihWSXc1ZENwYlJ0Oz4jM0VvWWVqZFV5O0dlUFE9aF5eTVlk
R0RoNWlzSztvalkoR2BxeSZ+PE5MWV9XPwp6UjxBVnJHNjVkOWBzQ3c0KHk7c0Jxby16c0JWc3ZE
MTsxPXhOe14lQUxGNUZ4ZWExaio2dW5oJG9MYXNYd185V00KemU4fnQhXkpIc1dZNVFGTytCYVdy
ajJhT3w+PGlQbSFmVmxaYEluNSE3QUZwUj5XKj42OGRKVzAjR1FwKyZVKSpRCnphOTMtJEclQWBt
aWR5UkF4dGBiaykzciQhU1NkQjhaaysxJU5qTGNTcEtAN0tkYTJhemx1RigwZHl4NSF3JGtYQAp6
YWNjaGN5NDtwMj5HX2k1Nnp8RSpzYjlSU2AhWCpWcXhRSmNyIVR+ST4tU3RKRk9ObHN3KVdxeCsk
ZXdQdGdARDAKej1wTT8tOG55M2AxQGBTJnJWa2hPfDlyVmZKTTt4Mz9CY1F3ZENuTGpKd054TkM7
Z3UmKUZtU25AI1V5M2I0Z1pXCnplJHJkM15kTTVJX1k8eTYpPDZDRk49bnRNXihhYj1RKy0+WT59
ejcpKnZyU0huXzlGK1V2bCliLXNrbzZuNyVDTQp6ZENiI0MoM1drcGdrRzIxMmVyMVo/X2s+Wipt
dnx5SzZJN0lZczVJZjY2QjFQYHxIP2Y8cUFNc1RWKjB0anMqZFUKejtuWUs7RGY0KFBKPlRWfCZG
MDAwMXtZJShGKXEya2QxMn59bzY7TSNqY2hrRiVRQTUpbSFeNE0lQjxjWHdZKlZPCnp6TXg+PVIj
ZHJRZTYyLTNRWDg0ZHNqazxKYjlHbG45dTNGYipaRlQ7JkdFOGFCaEpCcncyP2d6UTRqNHRfYSkq
Swp6UkJ1flVVN31YY0NoaEh8QF5Se0JSaistIUd1T0VgPyE5JSN4Wjx7dWB1diNOclFiSjZBNiZH
YCM7Rm9GcSVtakEKej1IOylBQ2k/NU87KyZ3LUBET3JSc2I/cXNVbUghRiNaa3NOV2YjWS11PXYr
VFlrczN4QlY1fUY1P1YhMWs8NX4rCnpFa3UqfGJuWX0pRTVlQ0o4fksrTj41RykhazUtPyRySlg8
Jmd9WFZ9XmQ+IyhlUEtuelJ3cC1xQSVkOEFKI1Z3fQp6LTFOfHdjb29PPVJiRyNpM0gmU0Q+OG4m
a09eYHhLe3F9JjU5PCNSbVNVOExJc0lGVW4/VnlKJnkmc0w8c24/O0QKeitLK14rbnxJWG9ye31P
O3FNdzVJPmFfZ1U/R24zRFh4fXIqKlJCQFRjQ0IkdnVFLXB6SnpjflJWb2tCPDwkciFGCnp0KGNP
Izd9N1kkSCQ8fF54VDU7Jj1jIWFiQzNYaFNyJll8JFNEcnFDUiQ1MDFrRExnaU1vMyhlX0F8RV84
PUlOQQp6K35eKkhtIXMtKGFjV25FUWpPRTEqRGV7TVh4M31wVnxoK0xCR0luQTA+Zl9Ia0V6ZHpB
bVpjYStYQ259KWBqPWUKek9YeGFkZXQ5LW0/RWlBazVET1RxeSpwPkBsRDIyRHd8SDM2RXJad2Nu
fGFmWnJnXlR2QyFjT1UlNSVLJGYqKSVnCnp0M1oxITtYQ0M7UF9ZJVRxZjY7WD1gcGw2ZWArVG9n
WipnTyhtTFBtWmcxPU1ITkwkMGF3RjgobTlveVp6ZD99Rwp6WW4yP0ttXmB3JXlycClmezFKMzcp
MTJaWXNrZDdSdCtASFRyNz9eVkV8RTlpPiZlJX1FcjJVQjkhTSh3Q0dOS0EKemAqPSZXeWhOd29U
JmdvbERiYH16UDs7bExRS1pfRk1AeHk5aT48OXRLZEhGVnY8T2VzKEFUfXhfcE9wT3xBcWlrCnop
PmtMYTFeeVpLRSZWKCEqQkllfF8jbVI7QjBNYkRpRXpPPntkayUhb05BT1pTTFF+TEAkNzJFZn1n
Ynxqcm5xTQp6WUI0UzNiKmJfWkx4XipAcSs4bE92c19+ejlGK1RXPHxTaVNRPko4JEJHR0UpaSMq
SXxSIV9AYEFhWX1mOVoxPCUKekRMc1ByZXpOWExFSzd8ZXY3X0p3M3YwJCtAbyVISU9PODtxP15E
I1hTS0U7eVJpZ1N7PihBa2lxN2dmPV9OYFlXCnojSGkxZ2tNfGFTc2s8VVFkY0tNO2o1bExnVXJQ
SG5yJDFqfmowNjh3T1k7aF81LXN6d1ImTzhOdFZ0Nis9PXNRTgp6PzFLYTFgZ3BxXnBIX1NCKUk5
aClCVjZGMiQyJmhxRzNEPXFLMGxXWEtRZ05ockh7fnMlVytwcnJGej9QQ3sqO3QKejZ0bDA5K0lH
YV5kZjVvb2NnMnsxdTR6JH1iZlRHJHZFaypwYXBjPzU3ZXM1Y2t5Q0N6dllyXn0/TnxIPz5+a2Zx
Cnphe0UpaD1lN05yakplKXY8KSNjNEVIajMkKlFqUjtKPnBtTyE/UUR9VEBqLSMkb0c9KVI8ezZ1
Zld7aj9vNEQyOwp6N1FUeDc2PCV4K3dSJmwtP2l9b2xmO04lTVVSNiZvTn4tTz9DYDxrTWMjSE9g
I2I/WGg0QGdBdll0ZUhtS2N6Z2gKemQrTDFZe2dfKGNtT2Y1eUBkTGgqenNjdjFtNWgmPjZwaTB2
cigtV21RVEY1YT1LbEhMJio8UWZLYFhJI3J9d2l6CnpvISlQI3p2WTZ6UUJHQXZ3b2YraUNULV91
ZTNIalY1MSVJdyFDdnw+WVopKjZGJUtzQkdPZXp3RWdIWXN6RUpIcgp6WE03TCZmbWp5ZXlQeGBB
XigrMi16OFlyaGoqY2Z8K05XM0FsOE4/NTUzMypkekZfZ2FNJFZ4JTNRfWlXZE48JGUKemVDMjdi
a04hV2w8R2U7b3Rwc0tPPVZKSkpAUUVXfGB4cURWaXRUQE57PTlyZ01ubVZ0d1BfeD0mVzg+XnRo
cl5HCnpJRiZzNSFlJTZNMlFMVWM9SXV+aD4oXmBUaFpDJFp8SDJlSDtzTiVuJXhjez1hOTVpaG97
dkVCYD1pdWpFelduTgp6NV5yZn5EZGAhNXQhZWFyekFDazYpcmlIPXckc2ohZFZrTkBFckh9bWpo
e25WNFlkbTFoPHFSdXJicDdOUEhPI1kKeiVvMTlrKFNOa3o2bld7Mzlmb3NETi11cEM3SztBJEhh
fitqQDVqZXViZ2M5USpuM1pIMVhBODhzYD1MUGxoSGE+CnpzSENANFltfTJ4a05CflRgQj0wckNw
MUsoPnBnRmt6THQhJSVTR0ZmUTFGJCQ3VXxSb0ZKeWsxWU9ETT5efTh9fQp6Pjx6M24lNE9MUnMk
WURWKj5rUFRPTj54eF4tcno4PT5KeTk1c0dFTXc1Z1MpcUxmcmQqbjVgI1Mpe2hybmA8PjwKejk2
Uz5fXiR8b20mbj4rbD9PMVQwT2paPGtZVmdsdnR6eHRLUnhGaV5RMWZUbmhoamdHNTxAXk1gMWZn
UVpXKTxZCnpzUiQrMjFOalpUVCQtQF8pVFN+VzgqN0t2IyhISmU+cyNiMDB2TytLVEFNWXh1OGlX
JWVRTFRsZH4+JDRWeDFCIwp6UylLO2M7fiRncU5QbHpsJmM1PyFFazIhT2xBVnV6LT51Z2dWWGxg
aXlVK3Z2RXU2ZXhKfDZ2JS1ib1ZUVzVtYU0KelhqZ2tKTnp7Km54Qmd5YmorOWExeXdfeEBhaXJH
IVF3Y0hVIypuY31iZFNkPG0kcmU8XnM+WVYxKzxYQV9wWkR2CnplYW5wXzZQSEBRcF84IWx7MEtV
Q1g3cWg0KXFhPFNmMT1YekglSStDTXl4PGpvZF80QEp6PzZWWTVnZEFyXmZTWQp6WDtCb2NET1R+
Q0ZUMSZ1PWZ9fnBHVXxJaiR1RyZ5b1BJVnhZbSlrV3tXTTwyKFJ3LW1US0Z8eT5ALVZuaHY1bCoK
ekRWKll8dE05fHNKX3VnST1GRmsoYCNFMWFrPUY4bGpqakcoVGZrJFA4JCtpMz01WnNnTShASmhu
Uj4+flBWSE0wCnpYfXB6Z3E7NzwoWEpfd149Sk4tTkRMc1ByVHh4UChsKFF5JkxSTCFUYzl7cWpH
JFAqJUVjSDJqYEBEV3NfM2JrJQp6WGhtPjUtPnYqeihEZytJaXlnQTRpWno7WndjPyFRa3hSP2Ur
YSk2dWIjRy1+MztJRmlmezY2KD1BTyo3YGkreVgKek1nUjhIN34jUERZPGcwKGJQfUo9dE5wMT4m
Zk8/bEZYISQ0JHh8YXB4fj9HRWUkTk08JitBOEo2PTFaPStwRzZ2Cno0Jl55OU1DUHpZelVBe2xH
NHM1QlJEOUQhSV53bE9jbFpieGptaiRYZChuQlhvPkt5cVN5dD92PnNJYTx2TDd7JQp6T0lgJV4m
OXN1V3ppVTt+U3U1UjduZSRyblNtYFkhJmRkRWJZUUdXTG5KWDJjZ3RjMH0za3I1aD8/PlpnaVc2
UjUKekRZcVI/VEF7ejBQUno+dWVzdG9BJj9SMU9RZmRTVm9iQmVlXnh6K2FVJW5XeS1LPCN7LSVQ
RlJ0PUc/dT5Vck5QCnpPTipnISMqYXJ2VSN+ZVM9ST1MPzQ3Sk1pUSgtNlFKIzYySVR4d2JgaXZS
dX56eENKciUjSHJIQD1mNEs/YXp6YQp6e043TGREflVERU45byYqcm88NHUtY1hFKVVoLWQlOzxz
TTwtJVkpaD1BLWBKVSklVEljYmlEPmVLJT1eeSFSfW4Kem07UyRSRT4xcHRZfl49dTlMayh0TH1H
M0kzVEcrMzJ6SktpKlJuamQ3bTR8ZiMlMkVNKiR9N2VyTFRYZlI0KmtnCnoxOW4lTztCJjRJQ2Nr
bGhmVW9ASU9vIXhTKW42eWQxdClORUs2K35QYWBPR3UtPSF4YlB3aG5kNVhFSUgzRnE0RQpQeldq
LTN1XlM4MzU+RWFQTjhqWGcKCmxpdGVyYWwgNDc4OTAKemNtY2hBVTIrXnJhXzBNLUIxfnBuPEMt
PHdyYTNGZ2ozY2NVMWpyXykyQChSKDxnflc7QXlKaERxKiM/JSVCO2RxCnpLZ31fO1d+PGpkeiNj
KEluVW09QTI9fER7RWNkN2FyJmtYIVJDcyp1QHNzaUU7bykmdF49e2VDcyU3Jl9KLV4pYQp6Tz94
eEF6anRrWT8+PTd0YjNOUHF7eGBwdyN7YlgxYT9qOEVacXNjWipZJHQ+dE4jVzNuRFRwLVchYmN+
ZHAxT2QKejd9bnM9eld3ZE95JC1WWncqXn1iMzVNU34/N01+Z0EmTHRENkxeKmI1aW8pQz5NXkRi
bkxjUU5HbnV4O0FFWUdUCnpFcSpZUUp4aWM3NkxpfldJaXJBO3VUfDN+Y0AheyNuTHg5ZVUqXj51
MD1oaUpyRF9mVjM7NlQpeDQpaEx0emAxJAp6ZzJOVShISFZqckxPeD9AVU17VDRgNXAyNSo4U3tU
fDY1SVI/JXdvJDdwcHI0aXtOa0V2JF58Ul4pMi1gUEQ0MXkKemFmWDwpdUNJVUl6V25YV3pscSEj
JHphK15GY0opZ3BDOUliT0YzT1A1QWB6VGIzIzZkKioqVklaTUo+MmRfQEFzCno1X219MXBfaDQj
V0xNUUBjM1k+K04/Mz1sQUVmXjklWXl2LXw0U2hKUiQrc0NLST5OTj9XVWVmYVlpSklYPGpkPwp6
P1EpYXhNMmZ8NytzeDs2bntmIWlWMGQjXnc7T2xUM35PSUNiMXV4X2J8TVNgYWo9aF5pREl4Jit4
K2YjODE1clcKenFMZih2K1lYRFQ3JWNPOFN2fCVTTGRid04/V1hTVXMlMW4rZzJ3UnR3NEspdlQq
VlNsZm1jPHRialFfbERkM0V0CnpHRXtCWEtDWmckOzE9Njx3ck0pfmxGemptUm03QGxBMEBmKVRa
ZVY/WDdUN1l4MyM8TzlfcW5lKlVScVNaOH0lWQp6PWROPDdqamhieiZzVD9tXkBQeFhvQW9sdWll
Vk1MP3pAfTVUMWczRlB6NyU+TF5oaXlFS3IxSExldjwpYXA2bmoKenpaVShTXlcjRm1OSShNfiYx
VXM1R31xMHQqPkY9RWxYTkVmdTBpO2J8SGYpMkRDIVBrLUtWQyR1bHQxMGlLPXtqCnp6aHtISCpl
K3trJF9OJCVYVChvdk41R2RkTSRzRnIyQ3AlbXI0JG0kTzU9NTNTNnxqMGBjfnF+WGNwVXRgYWE8
KQp6UHlqbE5KPWU4K15SVnZlIV5DUHZtY2g5alROM3F8MjFIWlRQT0slV2E+dlZSO0d2R0hSdE9k
WUV3OFUqUmtfTUgKejVtemxSTTRgSmoxNTs5KzlMaXVOaCgzbG90Q2MkMmlMcGY3YD99SVo/OEYh
JSgyY3RgKWU7OSlAVXBwKT8mRSkmCnpwY1NTenR8a0tkcGJxQWR8N2Z8P1RofGk5Xy0pblIka0dB
OE5IOFIjPDs/MUpVTWxjcEc+aCRgOT1kSWhhWWJeegp6YmN0aiFVMmVMKnh7PTw5Z29JISp7TWdR
Xz9hbDJiJnIjXzdWQWRqYUwxPmUwd01sdTZWSE11R25wVlRFbzZXWDsKelUoZW05ZjVhTT5DWUB6
aEEmQUtje25pKSVUUTJfN2MlR1VweD4tb30md3UocSZ4U3ckPkVHT0B4P2FgP0J5TXNWCnpTPWhH
ZDlvUkNYKVMoaEVMYHl4UzxqU1orTUlSdEhMM0UpdmFxPypDcncoY2BPe091bm0wJUk8LWVQdkF0
dj1SOAp6P1d8dGJ5eTgzKGJfSDt0el8kKEJsciRVOE9wK0YyNC18RCN8STQtPkBVY3ZCMzJ9KFhh
Iz5eU0EpKlNVSmlMZjAKel9vMzVJRG5DVypJZyYtezwqYVlrOHw+TW5uc3lAJjVnPGNkVD5KKlBg
cXVqPnAqRH1wYHRyN30pZnxpPiltKklDCnolVnk/VkZ4biF2ZzxPYW92ZFdEOSZ2XlEhTFdaSTR2
O0dsLU1YLUJ8Snd0NEYhWHdsfVNoMHRlM1oxYX5uNmlsYgp6V14/T1NTVVhgaChGRTxwN3NUQzNq
ZlFMPnNEZHtlUjZmXmJfLSgqT0U2JXQ4RXJPKlkxWl5+Xz9kQkhLKGpfJlMKemYhWSkyV3swZSV3
Wi0meCtScGtxVFcqWUw3OD96cCg1QH5ZLUs9WGpPfW5qbW5PRD45M3o2K2oldD8wJFNXVzF6Cnpy
bG88cVlGNj8rYSpEP0N4fCk0KSYhYVhyMXVnSlItKSZuUzFQSU14OVg+U3RSYkUmMFF3N3ooR192
Sis5ZSU1QAp6V2dTIVhLWHApdCh0Tjc9aEd1cTI4ZnhwRHM1NVNQKlkkZGRVbi0+UT1Qe3Eqdytg
RUV4PmZqO3VSSCUraG9LVXkKem87US1Pc1kpck5MbSU4KDJjM29wbTdvUV95c2hSUEAxdElLNTAx
a3M5MFNASGZPKERXY1c2RlgxaU5uR1lJSX1fCno5Oz5jTGleajY+aEpJOFZ6cGxmVkFfeSg8MkYm
Xz9BKyRsMGJVaUpyeGZxaTJVbnREWHNOWn1fNlFJUEhwZllUKQp6dVc8XiZKQEI9SmJtJC0tWkhy
JFQ8b05SM3l7aVR1PVZDfk8ocDwheSQ8SXIzVF9PZSEzfFopSHE0RyUwIzk+YDMKenFPYlp8ZFZx
KEF1bSRJZUJCYjY7IUA5KkNWWUt0M2xSTV5OT21hakVKU3wjSihXNk9FaW9RQz8pfTdQSCRVNV57
CnoocCgkMHdUe0tYRkdCYCYoRDkyT1M4RVJIVXtWZkRNd01mfjNyPDlYa0BgaUd6SnU+NDZqdEhi
IWVaYjVNPXFVJgp6M2VjWk0oNFRhdndeYXxsMHRCQl84KHptP2YxQV9QNmFjfFleNTtNT0VBNXMz
SHxeVn5hbnkzWUtfWk5KVTBnbDsKejU/bEloMjxYNk9JZHxgPyQxSjZjVnpUciNrNzM4UmZLeTA/
bDZ1Qnt6XjtVQUVgPzJhe0NiNDdLSGFqZWNtZ14wCnpLWHF2VXglVjlwR2FsJUpNWD44eVdjYVNS
QHZCJEtIY09nQitKWmpSb0JPVys7IVpjVW9NbmFkI31UI3dUMmp6Swp6Wkp2UWh2KUxCaVklODZT
RCNpdFomOUxsbFhnVDdyTXZJRypra2Qod0V1IT0xKW95XkVXUiU/ei1EViVFNjsjLXgKek9iZnxv
bnlTNz0/N05ZPXBhJCFkX1lKbjl0dD5RLXYxYGRfSGUxeD9sWSsyXkkrKm5nTDRYb2w2Z0JnbyVB
VylACnpQK353ZXhUZnQqc3VhbzxneGFgMDs9Nz5eYGMwQHtxKHchVXFzWEc1Y3s5KkxaQGtpPShv
YmFDeFQ1JkZKeElDPAp6RCspKHZgWFYqXjc+OzBLcXY1SmhBd3tBMVBBIXpxditaPj1kdldibyky
Xk8zPW4yI0lQKG1KKCNJVUM2dm4rZ3EKekRUPjlHcz1LUWw2P3lYVUB8WihKakZ6MVojPUJ8SlMp
aFgzQll4T2FlT1RkRXFEMHhydEE7Nng0SiV+Jlh4JFFACnozOUkjSHYzVzdgOVVvbjZ6JUNyQzQ8
Q3VhdiZaNlZtPUBAKEw+IWhXb1heYzB0VkdOdDZUbFFtb2hZaihBMmgoUwp6dlJnTEIociRedEwx
ZldTVEBIO1BtX3VtS0wzNVY3IT85WSV3SHMlUGBHe3VIeVF9SXRjMXt3V1FFZ1QqPCV2P3oKejI4
JTl5QyRIbE9RLUV3RHNEZ301MWZzVG15fGErckF6TnZUbUB9UWhAbC07SFFeakIoJVhMRChialdn
OXR4P0JsCnpeNHBhaDZDSE9Hcz0/YUhEdlVhbEElQiZXSF4qSEY9K2I8Z0pIbG9QTX4ma2RGemAq
fDNeQ1pgVT88JDdSSll3bQp6K0w3UDs8WWIkZmMxVjZoLUVGRitZYE87Kz5LKFM+cmtSPXN5SClr
anRoVEY+ZlRqKWVhOV9gJCg/fWJseEhKMXQKek9WPXVYSCgoNXhIblVvWHBhbil9cTJ9KXUtVDFj
dFdaM0VzOTMybGUxV3lFQWV2NnFqZ0c7YW8jc2B9b20xNUB7CnoxZFpiaUYrJiRlUGFLKzNwYTZz
PVB0WWRERXBfMEA+NCZqTE1MJSomc2ImJT1zdzQhUldkWGY1anh3b0RyT3klTQp6PzhLSHRgUXgr
VTghUis9TnJXQioheGMxVSR5UW9HYXl9MVpESjY9SCM/ejhLZ3JTdCtKPV8wMXNobyMwODN9SkgK
ek9wSENnKEc2TzM5Rnk3ISo8eX18P1c2XndLbXE5OSFxYFo8cSg9dXppUkg0IXNXQlBFb09rJjBT
Uk9hcygoaXcxCnpJR1c/Xmp8XnRBTGtyR15kamctOHlqUlQrO2pwV0lLdDhDOz9gfXkmaUM7biVs
ZmE8LXU4dGQyNWhxbE93ZVE2SQp6bDhXcEBJPCkoZXdyZ0RvPSltPE9fTUYmP3orOG4hUHgoKyZ2
ZE1nMjtTPnFrPHwmZXVxc0pXdD5fbk1ERT5hNXQKekFCQWphK1RLd2ItdEBAP1UkWGkrRF4oPCFP
anhMO0FzMCE2dW5EZ1Ffd01US2VVXmshTi1WUDxGRDVMV3FPKXdGCno1XktBU1RoejF7U2pXWjR3
YGBrX3NyP1pFU1hNeTQtZWJhbjU8eW4lLVBiVzI4NCk5IVcxTHRSeSZrJnVqYkRCegp6dEYrQFdP
X2QhV21BYFMyMks2YWJXaERjWG1AeTYqeiMlUld3Pnx5VlU/KDVYeW1sS2hwYE5RU2dFPz1ybm9M
clEKejJ2c0M+Tl54O0AhVH12UCtgNk5fN2ktb05vRml+cGhsQChyRHxhbWpFTiE2UVpjJmckLT52
LW9JZnBYJXkyM0lXCnpNck5CMU9eNExFKy02QUQ7VmYzN0J0M0tybElLR3VYeDRzaihTZjFgNEd1
OEx4RyYzXiZ2dDY8ST1Zazs0fDArJQp6VF5vPHNsem5+Q2J5OG4lWihneHxzUlkhNzM1Y0dfKWdo
cjA2b2NuQkVAaSFKPmUpO3pHVUEqRk57YHFmQjUkRz4KeiswaDxZVHtkQGZlP3xoYGdsS3h2RHRN
bkQtLUY5UyZGQztUSkBGWn5nUz43KEtAdD9PZlBKUDJDb0czYHhWTmQ3CnpZN1lTJjgxMlZUeWVZ
Vz5zJC1rTCNEZD44JXdeV0RlbWVyVztLPDFiRi11I1dhdk9+e3omXnhuSG1CK2RkVXxBJAp6O2I1
bD1SYTE/UER2ak91TyZicjhQaWgtcjMyYkRJTGQrQ1Vmejh9S2MzYlI1c317I2ghNmZlPWVyfWAy
eTA2I0UKelk4SjwmZ1ctQiY9bnlvRk5PZUxwIzk8eG9TRDNQaUl0ZEYtVl8kZn1PNloqcnpEdzhC
M09laz45YG0+eFE0JkNCCnohcT1FRGBKZypmJmAxdGRMYG1jdG4qXipuYVBXMVRXLWwoKkIoNU12
YGdMRzVJeU5xKXElT3otUlZFcDhwc2AraQp6K1h+dGFqOVJNfFROMmViV0VeV3Fubm9JZXclTEct
QlFHQitMQ0lGfVd8dD9DaV9CTkpaXj9yaUMrMGs8IzNaZVgKejhIYFNlIStwNjJjb0tmPUdVWHVm
cXtBO0FhXkhHRy1fUHxtN0JJNzA/QUlqQU57bExFODt0ZzlaMHBGMU0zIXpSCnp5WXc8VUZQSTxX
RiFPQ1QlKXFkUSMkfDc5RkY9e3hWblB6fTFQT1lVTXcxdEEhRmhkPjNWbSM9bH57fmIlaD93RAp6
VXN9SzZUJEkhd3EqNnJKTUJjTVReZHkkQU5IbS0/QVF3K2JjOEJSI05aM2BkRnEmZ1ZwaUwxQE04
dX0+cStBMmoKenRTRGwlJSlOb09FO0w+TCVZc1pWJGBDbENuUVVwYHxNUT56WiVRWHlERz1SY3pw
NVh5KyZMZEshTGw+O0QteGVVCnpwX25ZUXUzYT1ZKG9fQFVtfk9KbSUkXmwybDJvUn0wJHJVNHQy
WjFfZnFCel4hK2A+amJjcEsjcndUIWJPb3h+QQp6ZFlIamh0IWlVPkxDaFgjREc/WndMd25HYHZK
YGlCVjFmWFhFbExUTXdNcE5KUWB2KHBCfTAzajxJNzcyTUZuKXAKek5UNEUxWDdvKHo3KmEkOCVA
VGYlZkl+Nl8jVjxeYVExKn0/e18wI3tOcHVTTzNjKmg8PXBAWSZ8R3c7MD8mUyV0Cnp2c0NScz1k
bVM4cHxAbkVLYiY9Y0NWclA/VnotX3ZIO1VnY3VDRXN+JCYjfTNEVUZCfTEmMSoxJUsjUCMtZlJv
WQp6SXBgQmY0TVlZe3VuNzMmMSRIQWYtX0dXSz94LWQwPD1CXkd4MnxUU1dCIWBIXjkwXn4qfSVj
I0sofmRjdXg3Vz4Keks+R3deb1BCWCRVdz4mZkZKTX5IRlFBNWgwZCtNX1FaWnRAIVhrUCp5UU9Q
VDFLR213d3hGbDZBQ1FAQTQyQkVyCno9dzk0NGEqeV92M3M9XzUqKkoqdGtQT2doYDJ1RTVeYDco
Oyt5VWJLKihDYlVFNFA0fmduMm0pNmExdXYyMyN1bQp6QF8xLVVRfWg4eiNiTkcrWnpacHdlNkRm
VDwqdDc1eUZDUndqUHJtaismOWJSaTwhVFg4NERVbGlLZCtgeDB2RF8Kel9yYEQxc0dSKV9Jc2U5
R1VGYUtwQSkyU2klOChrQDkyKWYoZnUjMD58S3UhYERnfURCem5mTDxUe1ptb2FhUXcpCnplRkI7
VlVDZEppTlc/dz9jZz8pKzZuPmBmVlh4ZUp4eEstLXpFZ3F9dnNjNylaUktZektRSGhLWkBsfm9F
azt7Mgp6RFZnfjdXYlo0Nnc8OG5Icl82NW5sKT1FdigxSz5UUlctbkBgcnNLR2xKfDQkJHVuJn5g
d2tuZ0l4Szg8PlRkXjcKejU9Yik+KzU1Ti1ZPCpuMih3Yko0ZSpuSWFvYWAkPyZVR0Vnbl8lXnN3
cTt6djlrUUN2NmVUSXsoaEthV3FBbn5aCnpnQiVyNTVJOWxSPClTODB4e3lwZ3xFOUlvXkY5dXJQ
SEdIRDNoNlJ3e1BwZTxHSkVfdHtzdSV3d09PeUttPCZteAp6cGJoPis5IT99ejFQPXQ4cD5wNHw8
enZwM1FBQDF4WGczdDZhenJSR0stRDk5WmVhPGUwdXo/JGJXOWo1aGV3JGwKeiRKaXBNcEhlY1Vg
bUVkIV5gb0JeYSMwNHQ3RD83ZXFrMFltZzheIUZIV0pGKCV3fGtnUztAMTJvViZmQGZDLWN5Cno3
QFR2ZEZ5czteekc5azRIZEc7S2ZwSzU2YzdMZXVzJklMa3RCbEd6aU8+YSo8XzxkZkg3VHkqKmd5
NW5XVjZaQAp6MFYkYTBPaGw3MCN+VllSeFVtU2M8PnQxPil4Z2xnKGdvcUAqVE1qKT18OE4pclpP
fD5kXjR1bVlfVzx3Z0VjMlUKenRrSDAhaCNXOXZsQVIwST5IT0p9RkJCYVBgekF1V0BVM0dDUT9r
TF9TMzhVdU5uPzVvejMtQ0VYIXk0WmdQOD5eCnpheWRWNUM4Uj5oOFZeZ3wzLS00VzNqVElWd09E
RDROR3Z7Tks+M08pQjxzRmFEOGs9bWpwOF9IJG4jU0sreDVNZAp6ZHM3ZkhyNUQoI1UmUGRpJmwz
c14hRD47ZUhLWmw5QjN0bGY2NkVee21OUDF+ekJsRGQrPmdScEVid3JmSE97fiEKenMqbiRNMkQ2
KXVRQUFNeS1IYWJxUy0zMigmUn1uc14jZ3AwRmBOVWNiUX1pQmh3d2o1a1lDTEREXzxmTm9FZ3p6
Cnp5cTcjZiY3cUhPWnxOPT8rNVJXUHElbGRBPzN0K2haPzhBRlFwPFVvUWNZR0Z5bklUPSohMzNM
VlVjVENSU2ByQQp6PXpyPTchazNXMEpsU29kej9AV0lJdj91b3luRXI3VWgoc0hvX1B7dzIqRU1U
RUJFZV9qb1JNJm48e35AaHY3KHkKelBJcF44JEMyTERNNUhKS1Y7VWU3KTJKVzlSQ1RtbS18YExF
ajVtKWZpTk9MMVMxOT1+VGxqQG9WIVpnQ2VaQzQ0Cno1JXdAbERnXytuTzFYcW5pd3o3KXI2K1At
QzJ9ZGZoe34lWDN9STZfSWw+U0whe204cGUxSmtIaXBueE4zNkpPRQp6MjkqMj4kdXxoemc+LWBn
JE5AQzIjOGMzZUU4VUEyalJDfCpBXmwodjIoT2xUUEI2Nk81byRWSCV6eGlre1dVcjEKenBlcnB3
O20jZXZoJV5QSSFWI3luJDlUKW1CXyl5SVlFb34xNER9bmJjdSMxfElFbTlUWEJBTVB0TCpnI15L
P2t7CnpgfHcrWkV4VCkzcn45YDBlTVRyU3lvWXR7NDIqQnV5UWM0Z3Fxdi0zaSFYPnY5c3FKN2lL
Pz1xOWopWlBJUUUlNwp6cGFaKXRVeTF1M1pkZGQ+YWZvNV9kakN0NEwteHQoRDRIQWtsJkNYYW9y
Zj4rP2gzekROTHtWbkMwfWs1ZCp0VzsKejxDJUVCZVBfcSg7PmEzQCkyI2goNiRTPDVOTGg2NFU5
dzJndFhOYWo7Qy1lekdWRT0hNXpPVzZNNDNXcHlGM3BqCnpaKkQqcXU1c1R6eHo+M3tuS0Jfb3A+
NGVYVXleSH5ZfCRfeWc2WkdGNUF0ekM2IUpOWih1TGdNb0V2bFl2c2huPQp6cGZiUTIjeEdkRGkx
KiFoRFhoYX4/ZiRPQUZBWnt2bFhkczhtSGtvKm5xYjw4bDk3YWFvPkZJYnZZdU95S1MxMGsKengr
MEh9TUhpTjBSWjtOY3lvcjhnUGJIKjZaYCRiQjs1N1dVVkxVJHRvSVgqV3VBKCFeQEtjcFdBYXt1
P2hvTlZCCnpXQyl2WlpXQTc9JiE/eGpVXiNDe1cjYTljdkdXO3U7PEthR0c7dkJTJVY9YGlZJUhY
YEtXOHE0S1VjUDdKJjtDaAp6WVdWTkRDbFJJcUVYOStGeHR8PzhgLXJTRkZGTWd+b3VZVCp3K0A1
QzlDc3Q8RmRGUHVpRDUhNXYtPGwwKHRTQGAKejtUNXZaP0E8V0NQakRobD1qVCRINlJPUGBUYGl0
Xmh0M28lZldfKk0hTiM0OSgtdDFyUXlxa1dFX0QhfVo+S0gmCnpHKGEyalNTZH1vI2V0OXk+Uj40
VDh0R3tgbldLT0sjMU1oZmEkQ1UzaGg2ciY/bn5gJXZaY156bzBDLWVTVD1jcwp6TGRrWHRZdylU
NUc3RmRDPyFOP3dAdGpRSk9BJmhuOTQrWjc1d2JQZW02NkEoViZHSWQpWmljSm1rUWFnKT9fMW0K
elFaS3lFYThkUkJWVkFENHw0YFIhXjI7LUV1SChPJjV2UG1jdTdQbnglX2ZhNmJWVitkQ1diVXc/
PD1AJDU0aUFDCnoyU0Z6fTwzIShNU2Z6anRnbSkjOE1uNnB1SFl2RjBnJGJTO3RAcTI2NXA2fnF4
VXdZUkg0JE1HJmRxP2BKe2hwNgp6KUJ1Y3IrYn1mNTN6JkxmYyRCbEt6JXJzMip3TlJoN28hU094
c2Y2WWs/MU9XejJLJG1kLXxuQSgoZE5IeX1ObCYKensrXlAwSHc5SWh7eWBuZERoQ1J7U01oVE9F
UUwrQGh3YlYqd2lkIU8hRDdJZ2NZSmgpK29rMEFESDMoWVZaJU4tCnp4elJ2dkQrSFpFJSpvJUFW
WXZtI21NbnlgUzFmZVRaI3ZtZVhsZmV0VnY+V1JtKUF3X1FgbS0heml2T0UxUCZxRAp6T2xlMSV1
X2RDI2ghI3Z2QjRtY0EpRHA+TGloQlclcjtyWjRhY3FqZjl9USFzNUc7blg7QlBpRDIqRn53ZHxY
fDMKekdXSDw+NHFOYX49PihGN0BETWI+dlIoa3RTWXNoWmg5PiVAJWVmIXpmIT1wOXRpakp0Jikk
VH44dlorYHBiRXhpCnpqTnNLZSlZbi1HPityVCZBVHZxcmJwfF88TllQcFA4PHxoZmEwUyR1UVAx
TTUyTDZ7V2lGSj0+bTlDQmo5VyUkKwp6PEt1KjgkUikyT1FVVHREaVRXV1IlZXl6QlR9cy1MP29i
UDlKakZ3YiRYeS1lUjdGamNfQ0NAQyZwNG4xJDsmRU4KemZjTG5ubSl9UWFCfk17cHMoMVY+Vm5h
WCYhZWNUfEVAIXA+dC0+MFptVHE4PHZ+I3E1cnA0JFljeDg4SEhOeXI2Cnp4M0NPNHNwMDFnVGY3
OzM5SzRkVD9hWVlPUTtJNmFHaTsmczcwPy0zYWRRM21wUUB5ODR1PUcyKmtVflpTR3wjLQp6R1NI
aGlGVyRnO2dNOEFBcGZQLWkkRktnRTNKS21GTHRmZFZxdU5ISXg1ckArSkI9fV5BWUhjU0pSa31t
WmAkPzIKemtzZX02cilARSRyKmFQPzlgPXw7TkQ4UHhVUlFxNSpPTVBRSlpPX1cpI0YjNWJoSCNG
d0lWYEsoSCVgYSNwaWw2CnoyVFBEPG5ZPjAmMHRlISk8ZFBGfUtUVkx0TF43RGoqUnl2TnRybDYy
SEFJb0MqRCYkTypBREpxZz1WcUFESjw/aAp6P2JIVDJpX1BnS2QqPG0/JUkqRVJpYkdnfmskTXdg
Zl5XRzRiV3JYeSFENSkkJXQmSjRBKylrQjRaY00+Ki10MCsKenlKUkVudSFxe01xJCVCQ0tnUypJ
Nj5jbndCVk1HTmt1MFhARzkqXmZjX1FzKWw5aDQxbkB2fjg2aUdVNnVsViVjCnpRbGBFJmBvODxl
WjRGUTNTJmAtMj9MLSpxQF8+Y0lRbj5jV1lIPjw4KkByZHM3UFoxWmlMZUR3dDhzNldBQU5qNwp6
dykkWUkhOCRQbWsmO2l5Mko+Z3t1Xkx1YWVLM0RZSiRwQ0M1SyV3Q2xlOWEhSTZaO3xGbEllfV4p
aGB1QmlhemcKekZIZ2l+QncrKU5ZP0IqRFd2dHplRi0zP016bSNYYiszUUNTb2xQY28ofSUoYl4z
MFFlT2JNIzt2aDgkWEN5Z2oqCnpGSkBkaDlNSSYyJDlaWFl5PUZ6eWgqRHNvSnR1RWxuSSV3RW1j
PTVmTytTWDtEeSRgVW48M0xVbCVkfVM/OXE4bwp6WmZKXygwanl3R2ZFNjVgOykobzRrU2FMYj13
Ym1KKDFHR0V7M0JNOWRNMyUwRjFCQj82IUQjbiZeYnw7Ty1xZjsKemdEYmhMcXhscSU2XmFlZE5C
Pnh1aUZ1TShzSDlTKlMjbFk0dTtCMW5xI342OUZ+QWxtcE9LJE1RLVNHNGpnUzdQCno0cjx+S14m
YEE3NytacjdCP3BUIVdKYHFKQ0xEYUdyJm9rNGswPVNpVj1sNyE1WXw5YW5RLSpXTj59ZWFSJlI2
IQp6YTtJcl45dnNhRWYrfV5wJCt7Y3wzfUFMYkBeUVBkazRPLWlJKHp1N08ycWt2ITs2e25wPH5i
bnxNZGp6IXhvKEcKekR7PSNiWGRra20kLW5QTUt6JkdzLXBoSHpOQlg1ZiZoYThAUjJvWV8yZyp3
KD1YOEUqTEdvYCZLbzBCaF8qJipVCnpeZ08heSp2RHs8XktWXk5AYCMzfGw2NHIwRDApJVZHKVhH
Tj4jNTNOaENrTk9BQEZNRCZYPzZBLU1iNSlIeXIqKAp6biQzMW1TTWpZN0lXaEpXbzJCSFEoVTBn
c1A2Pyg4TSotWXJuKTUwMTk5SDQqVmt3QFokZktwPElxRG9YZHxWfjsKek9QMig5eE4jP1lQVHBg
V157aG43Z0NiZURCLSNCV1NxUVFiUl5oYVk2IXBrQzJNcGlfbSNvUU15Yzc9Sj1wc2RECnpYPCMx
cE5heVVGbXAmMnBGdnUxfTJJbGpgbm5tZUN3Qzd+OEJOO3ozWXFNVlpoYTwzKCYpd2J6eyVNcGNN
N2xQbQp6WUslflE9ZH5NOWdXJipzKHtLSHFlV0BvayZQWitLKEtfd0NqTCs/dCZoZE0yTlJ6eT81
QSokT2hpYkU0Vigle0oKemM3Y3M0SGNSd3gqbW0kbztPKnltaTV+PjBAdFV7YHhWeHRUYWRpMT5P
MCpjfHI0eiNBdyspam44R3J+Q3B4aGw5CnpzJn5jPGRSSHItWUkxQHE4KytkX1Qxe2JHNEl1LUhL
XktwZDt7dTZ6N1F5RnY2PFM7dmw5Z0NwNmd2LWUoVnJrMAp6JGNROThRV3Z5PD5zKGw1akxLWShp
M2ExeT1KcTFgdUZ5WTB5K0NXP2VIRX1pVjkyRjd4QkpxSVp+Vi12TUMtIUgKekN2KWFESVhHI3l5
KFYqZil3WTxDPW1yM2BFIWIpfU8jOFNLd1J6O091cGclOTJHPSQ0MWBJNzskZThpeF81eX1LCnpw
eH45fCZjNlhOcWVzaiNMcjBFM2o2K1duWi1HP2VNRFQpTTJCREEldD0mfEVBeCtBXkRZNnE7NUNu
Qz1IRSY+agp6eTcwOCtERnFocUlWP0hlOCRIPzBHN058PWw8Z0tvKXlmVE1MZSpLPHhDSklmX3JH
bHo5aXZRNzx+Yj9pKVN9RDYKenJpMGB9KmZkJWZfQW00anVhcURKM1A1a3A1dE1FdG99NkF7Jmol
bCRTYT4zPiM0PUpFOS09V00zXzJtN0JnSyVPCnpNJTtFP3p7IVRiMDdRKH1tYEgmT2AqNDl+JElX
QXNrJXwwQ2EkJkd+LT87V1VXWE0oMnJWdX0tOG0jYHxvbiVUNAp6d25XaWN5ZChSMFg4JjxQaFN9
ci0qO316MU9tTEZ5SGV+dXR2dDFRbUE2fF5eUChhYz8rIyV2Y1hnYVotM0xZVkoKemsje3YjRDtW
eXthR2hSd2x4REYqLUBgNiRlQiVrK01JQS10YWIrPjAxdEQkcnNGak1XVHxpbCYkUWpiblY5TUF5
CnpRV2NjJDU/cSo5MmA9SVQ4fiZGbkM7RlQ+LU9ZeTtKfT0pVHB2ayhkVjI2fH1oRW1XM2szSEBB
YW4qQjs9XyklVwp6WDFUazI4R2g/OUVheVlaeHQhNVk2WGJBYEMqfnBeJF5ATig5dDs8O3s8alNp
eVA7QGw3O2FuVjxQdE5mSDxQdVYKekBKNmM1RGomP2hfbjs0UWtjT0xEKmxmWH5eaXpDRFlLTiso
O2N4VkU2QD1lNUVPcl9nNk5FPUshbCNiNmZfO3lRCnprLTh1fW47fkQ0cDNwRXByTSN8QERIYEw7
OE1keDVMUDlUPVYpMDhJT3dfWVFpKkQjakdoMlkqKGx5Y3dZfj0ycAp6YmUhPThCfXYhfC1IazFY
cVd3I0ZhOD8obCNvT1ghUVYmSHpzMDVYa29NI0BCUU9SNlI8b1pXREN3IS1IQG1AfWsKejVZb0Vn
TnlrNko5QjlSQz1IXy1XMHxsR0FpMjBOWj88Tz1PeSt0aDIhWWF1a280K0JIZ08pdE10NHU7ZVB6
U0h6CnpeUnQ9ZHlUezlWTUFPK2F3LUp9QEwhdG5Me1ZKVChpPCsxakIyajA9Xk1Xdy1rVmxxcllW
X3prSlV2UHlCYFpNOwp6cTAhanMoelpDSkQ2SU5wbGlgcG1GPyhSVkBWSSEwaVVVPnsmQjhyOThS
Mlp7IWp8blQkTVFtaUFwaT8qb1RTSTYKelhUZ34kSXR2dThXSTJpNTk7d0JrdWpGVEtNMzNuMk5M
dlUpPFVRUjhLOHZUVTVSb1YqMytfTWdtbkp4Y04+RTNxCnooZ1cldUIqYl5tZGBlKjVpOFYhR3Fs
JF4wYzZ8XylPUE5ITjAteXxzdnckcTtPZlZWSHduPGYmWiNJMGskOD9pRAp6USRAaVNKZT9qJiVj
V301VmhmX2UlVmhBfW84PSM/RUMyMnBRQkJyQ3kqQkYwdUBod3FHNEYoT2szbzQlTkt2U0QKekEj
Xk8pTGZOOUhjU0FGSSg8b2dDKUpBO3ZiOXc4M3RGVTw2KEE9PzYxYk1IYj5jS0xFJmJiYEZAKGQ0
eWMtUks/CnpmaWN2c0xmaW81bkVRZkRLNSg8USNIfDJVa05zTjBqSXk5X2FxRFYrcTJEU0RrRFc7
JEA7X0QzaWkkI2FSaSh2ZQp6MWVITjlYRnA+dE03KnNIIVhBZH4lcGBvfUJyQSg1M09QPVRFKmhy
amVyKzBKTTRTT0MzUW4kbFZ1NEtPSzlfaEgKekxoaytYWiZrTDNOeGdERjJhLVhmY09SWlVFVjx4
Rkc/VlFseEUmdyFXa2o4a2hTISp9NUt3XyteJTkjSjJYdFVQCnpZWmVYTjtDd31je3h8cTReZTJO
cVRvVVdpZHhnUThqZG9yXmk4OUZBNmFVancxKCYoPkdUdW5lSjJCPUN3WFE9Kgp6aHZHPlRZNEAt
YyEqMnRZKXRXemxRZWpeMDZweU15bWwpRyp3czBfKmxKUl9yWGZ4N2oyXlpEI19ePUo8biNPeFIK
emVBVz9gTj9CJE5nZXxne1hQPisleXE8eEkjSUB+fjktQUxVPD1Hc15sJGVaITw7ZVYhVWJOQ2I4
KUQ/dGpabnNeCnordlRRYUh5Wnd6bypYV0g7KXVHVjV8WG50OUNiKXhsbyhTNFRAekYjT2RAT25X
SmpZKm44ZkhKbiNIMlUtYkNeKQp6S15AJCFgTTVmM2xfUSRUVzs3dmdXUlBKMU9vOExwQkg0JGFO
eUw1dUdNe2c5WDVGNTZ5aEcjZG53fjxCMyl6d0AKenw2N01lU0wpdHJuJGMoaE83e0ZCYldBaipk
bVQjcnl1P0kwTmtlci1wNTFlNzI/aC1waFZBXjtZdy1JdnFNTy0qCnpabH1nd05QZWQjRTdLJlJB
Yj1sUHFAfTwlLW5ge0pPeWw7ODNBTXVRaypZen5FQm1UVGFHI29DRUIxdXJUeVR0Pwp6aHViPT9I
VClPdztXQiptbD9ibllzO2RmYTBwdXoxUHxJVkltZGFKVlRHUjdFdlpyUmdET0cyYypKYUZ5V3hP
KkwKelp5ZkNfSXxWSXluWkZoZl9VPkMkRnFaRmVMb1RueiZgWDIjPzlaQFd1VzhkaD1rOSlXQWxP
UE0lJDZBVl5Nc252CnpDR3oqOFYxXkNfMGpYKGRjajBaJUo4VShDSjxFLWR7JGh6JW1jdUc1Jitu
Kld7MmBZMXRgJHwpU01kSU4rMVAhNAp6aSpeT2p5dWZ1YWJZSFo0ciRAUTZ4X28rZTReSEYyVnpx
VFdBQSR7Yy1XKl5yTzViPD1LeU1ScHF3dHh2R3lpbCsKelJ1PCpje3x1SyhjblhOUjIwQz4jX0BN
Nz5Ma2RFfXQwN2Iodn5ONlM7cmtyUTUzTCM8akU+dD5SPyFYYSNoYENnCnpjc052Xlp1OEglYThI
NHh0WDdiLXxEV2tSd1JqaigrTHxvdVYwb0ItVjUzYTVvT0BFU3t6Q2JCYXF6KzQ8b2x8dAp6K2wq
cWV1ITttd3l4cyMoe3laTkw/QHJWS0xlTkJsSFArbCtLaGhleT9wdkhudiQ5MU16SzZ3M0d8bVIw
NF4/M3AKeiVSaVNyaEBmO3wjamEqMT8jUnImNyk0O1gqZmRNdVBRMXchclZlXmZsazdwaHAtMEJU
UTxlajFFVTdJYHVoaEI/CnpXRisoY1VzYS0ycyZSNVlSRCExTTE1Xms2c1g1YypzRkR5fmAldzhQ
TDFYMkVTbFg1MD5eeiMmNUp5SXsoKG4qNgp6bVdBUkIkOD0kdEJDTHNDV0RrfkhRKVojc3RVSXw0
MWUrbntDKENDZCtLaUh5ajc+LXU2S1Z2V2t8dkx2UT45S0wKejM7fVcxMnA7O2EhbiZJcU9pZCVs
IWRHTE8mYy18VHQ0Pz0mM0F6KkNycVh+JEJ3WkBuS3oyQGUxJjsrQncmNSU5CnpORmdZYTtZKT5q
RCFkUGYtWmB4REZmKHBZWnd7fSokJD8qeHtkOHRLQmR4elhORDBTLTZLeG50Yn17aXBCam58KQp6
YDBlY0VuKVBDYV9Laj0pQm00QHwpVTVWK2FnNGpYfDduN2Y5bzd7QWViNH5vPC1aIUk0S2Y8fHJ2
TC1OV2BMODsKem4ycXBxcHgjfGJTYSF0JmQ2QlIjeVA9MlcoZnA/RyltLTdPKylqKXhMZTdAMmRp
K3UkSU0oNkooPVE4PnBRcUQlCnojMmh4Xm5kPyEldURwWTcyQ1pZV0ZFS2UhK0okTXRlKy1aMFVe
TmJKdGFYb31pNXw/d3Z4MTwrQzRoSHZte3ZiZQp6PGs2RTJ1YXQ0S19fMzlzMHEpQGI2M2Mtam9h
VVVUJWxMbHkyQ3A4Z2kpdnVLOG90a3V0XmNqVnpPP2s1Mmw9LVoKemE3Tkt0O0ZMNUBuTG08P1FW
T1kxdG8rXjQ0R1A0dlFAOUxnRkpEUHpAPyslOHFmOCt8SDhXdyloJm0lP0U0cDRwCno0JkIqRFJI
JTNGVVM9RiYzKmh6dFU2VSZTOypOe0FJek1gbWA9REFQcE9Rc1FfXkVAP1hYNHVjLVhSITtSNEM1
Swp6PEpHWkc5NThfMWxXcTh0SyElVkNqWlpsO0lFNkwlPWMqP28xTXp5NGYoMDs3P3VeeG9IWn0y
JkphfVFwPHRgN0AKemJucnFzN0ZoSEtyI0tzPk42UW1RWEcqckVwS1UrWXBLbyM1ND0/QDU5RiZE
c3NtKXhqUD01QTVicjZRS2tKdFo5CnpIZyhnMTwxQFhVeCpNbThMRThAPj9LQXh7QXBaSHs8OElB
MnpXX31YbD85Rm5TU3RPfUFiJCs7YG1MdXdlI2Yhagp6PkFXdkZgbFROST90PGctTHJ3ZUwxLUZl
cShrfjZkN3EwWjFSekdwfUBMJVFTP0VSIT8/PFl+bCgrYGRScEkmN0MKemk2eClgenNTYHtgaz9g
NkJqckx9Z3I2RnleWWBob0RAcXNIJDBVdSh1WEM/IUQxeEFnI3U+e3g/Z0c+cE9UXiR6Cmw4TXsl
TTVVKnRtQkA5MGBrZl5fP3FiJXNiQmItdUB3R2cqX0pOb3koYDQ4V1JSbkd0YgoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBjZjhj
OThmLi4wYzE5YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzCkBAIC0xNjIsMTAgKzE2MiwxMiBAQCBXZWJJbnNwZWN0b3IubG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzaG93LWphdmFzY3JpcHQtdHlwZS1pbmZv
cm1hdGlvbiIsIGZhbHNlKTsKICAgICBpZiAodGhpcy5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1h
dGlvblNldHRpbmcudmFsdWUgJiYgd2luZG93LlJ1bnRpbWVBZ2VudCAmJiBSdW50aW1lQWdlbnQu
ZW5hYmxlVHlwZVByb2ZpbGVyKSB7CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVUeXBlUHJv
ZmlsZXIoKTsKLSAgICAgICAgaWYgKFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKQotICAgICAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIo
KTsKICAgICB9CiAKKyAgICB0aGlzLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nID0g
bmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJlbmFibGUtY29udHJvbC1mbG93LXByb2ZpbGVyIiwg
ZmFsc2UpOworICAgIGlmICh0aGlzLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZh
bHVlICYmIHdpbmRvdy5SdW50aW1lQWdlbnQgJiYgUnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xG
bG93UHJvZmlsZXIpCisgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKCk7CisKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFBhZ2Uuc2V0U2hvd1BhaW50
UmVjdHMgZGlkIG5vdCBleGlzdC4KICAgICB0aGlzLnNob3dQYWludFJlY3RzU2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygic2hvdy1wYWludC1yZWN0cyIsIGZhbHNlKTsKICAgICBp
ZiAodGhpcy5zaG93UGFpbnRSZWN0c1NldHRpbmcudmFsdWUgJiYgd2luZG93LlBhZ2VBZ2VudCAm
JiBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3Lmpz
CmluZGV4IDE1MDAyNzkuLmY0ZDI3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzCkBA
IC02MywxNSArNjMsMjEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0gY2xhc3Mg
U2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28KICAgICAgICAgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRl
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRl
ZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7
CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucywgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLQogICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3Jp
cHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgbGV0IHRv
b2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhZGUgdW5leGVjdXRl
ZCBjb2RlIik7CisgICAgICAgIGxldCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEb27igJl0IGZhZGUgdW5leGVjdXRlZCBjb2RlIik7CisgICAg
ICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb2RlLWNvdmVyYWdlIiwgdG9vbFRp
cENvZGVDb3ZlcmFnZSwgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSwgIkltYWdlcy9OYXZp
Z2F0aW9uSXRlbUNvZGVDb3ZlcmFnZS5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb2Rl
Q292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVVbmV4ZWN1
dGVkQ29kZUhpZ2hsaWdodHMsIHRoaXMpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIFdlYkluc3BlY3Rvci5l
bmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2VuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXJTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5
UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW1dOworICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCiAgICAgZ2V0IHNjcmlwdCgpCkBA
IC0yMDIsOCArMjA4LDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNz
IFNjcmlwdENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvCiAgICAgX2NvbnRlbnRE
aWRQb3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9u
TmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQo
KTsKKwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVk
ID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93VHlwZUFubm90YXRpb25zKCk7CiAgICAgICAgIHRo
aXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rv
ci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7CisKKyAgICAgICAg
dGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3Rl
eHRFZGl0b3IuY2FuU2hvd0NvdmVyYWdlSGludHMoKTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVy
YWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmVuYWJsZUNv
bnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOwogICAgIH0KIAogICAgIF90b2dnbGVQcmV0
dHlQcmludChldmVudCkKQEAgLTIxNywxMSArMjI3LDIxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRD
b250ZW50VmlldyA9IGNsYXNzIFNjcmlwdENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkNvCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCk7CiAg
ICAgfQogCisgICAgX3RvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyhldmVudCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRz
KCk7CisgICAgfQorCiAgICAgX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0No
YW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0
aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3Jt
YXRpb25TZXR0aW5nLnZhbHVlOwogICAgIH0KIAorICAgIF9lbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyU2V0dGluZ0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlQ292ZXJh
Z2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29u
dHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWU7CisgICAgfQorCiAgICAgX3RleHRFZGl0b3JG
b3JtYXR0aW5nRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJp
bnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1h
dHRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggMTVmNmRiMDUuLjgx
ZWEyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMDEsMTQgKzEw
MSwyMiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VD
b2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZSkgewogICAgICAgICAg
ICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAgICB0aGlzLl90
eXBlVG9rZW5Bbm5vdGF0b3IucmVzdW1lKCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9y
LnJlc3VtZSgpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVy
ICYmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
cikpCisgICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgJiYgdGhp
cy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZVNjcm9s
bEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5u
b3RhdG9yKQorICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAg
ICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2Up
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxv
d1Byb2ZpbGVyU2V0dGluZy52YWx1ZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5y
ZXN1bWUoKTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRs
ZXIgJiYgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAgICB0aGlzLl9l
bmFibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSBmYWxz
ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGhpZGRlbigpCkBAIC0xNjEsNyArMTY5LDE0IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICBjYW5TaG93VHlwZUFubm90YXRpb25zKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX3R5cGVUb2tlbkFubm90YXRvcjsKKyAgICAg
ICAgLy8gVHlwZSBhbm5vdGF0aW9ucyBmb3IgbW9kaWZpZWQgc2NyaXB0cyBhcmUgY3VycmVudGx5
IHVuc3VwcG9ydGVkLgorICAgICAgICByZXR1cm4gISF0aGlzLl9nZXRBc3NvY2lhdGVkU2NyaXB0
KCkgJiYgIXRoaXMuaGFzTW9kaWZpZWQ7CisgICAgfQorCisgICAgY2FuU2hvd0NvdmVyYWdlSGlu
dHMoKQorICAgIHsKKyAgICAgICAgLy8gQ29kZSBjb3ZlcmFnZSBoaW50cyBmb3IgbW9kaWZpZWQg
c2NyaXB0cyBhcmUgY3VycmVudGx5IHVuc3VwcG9ydGVkLgorICAgICAgICByZXR1cm4gISF0aGlz
Ll9nZXRBc3NvY2lhdGVkU2NyaXB0KCkgJiYgIXRoaXMuaGFzTW9kaWZpZWQ7CiAgICAgfQogCiAg
ICAgY3VzdG9tUGVyZm9ybVNlYXJjaChxdWVyeSkKQEAgLTI0OSwxMCArMjY0LDE0IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9y
IGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIGZvciAodmFyIHJhbmdlIG9mIG5ld1JhbmdlcykK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRhYmxlTWFya2VycyhyYW5nZSk7CiAKLSAgICAg
ICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5ub3Rh
dG9yKSB7CisgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKSB7CisgICAgICAg
ICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IGZhbHNlOworICAgICAgICAg
ICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciA9IG51bGw7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKSB7CiAgICAgICAgICAgICB0aGlzLl9zZXRU
eXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgdGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tB
bm5vdGF0b3IgPSBudWxsOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzMsNiArMjkyLDI0IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHJldHVybiBuZXdBY3RpdmF0ZWRTdGF0
ZTsKICAgICB9CiAKKyAgICB0b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdodHMoKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGxldCBuZXdBY3RpdmF0ZWRTdGF0ZSA9ICF0aGlzLl9iYXNp
Y0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisgICAgICAgIGlmIChuZXdBY3RpdmF0ZWRTdGF0
ZSAmJiB0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQgJiYgIXRoaXMuZm9ybWF0dGVkKSB7CisgICAg
ICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRlZFN0YXRlKHRydWUpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0gbmV3QWN0aXZh
dGVkU3RhdGU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0gbmV3QWN0aXZh
dGVkU3RhdGU7CisKKyAgICAgICAgcmV0dXJuIG5ld0FjdGl2YXRlZFN0YXRlOworICAgIH0KKwog
ICAgIHNob3dQb3BvdmVyRm9yVHlwZXModHlwZURlc2NyaXB0aW9uLCBib3VuZHMsIHRpdGxlKQog
ICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKQEAgLTI5OSwxOSArMzM2LDI4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAg
IC8vIFRoZSBhbm5vdGF0b3JzIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgcHJldHR5IHByaW50aW5n
IHRha2VzIHBsYWNlIGFuZCByZXN1bWVkCiAgICAgICAgIC8vIGFmdGVyIHNvIHRoYXQgdGhleSBj
bGVhciB0aGVpciBhbm5vdGF0aW9ucyBpbiBhIGtub3duIHN0YXRlIGFuZCBpbnNlcnQgbmV3IGFu
bm90YXRpb25zCiAgICAgICAgIC8vIGluIHRoZSBuZXcgc3RhdGUuCi0gICAgICAgIHZhciBzaG91
bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IgPSB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgJiYg
dGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisKICAgICAgICAgdmFyIHNob3Vs
ZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IgPSB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yICYm
IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKTsKLSAgICAgICAgaWYgKHNob3Vs
ZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciB8fCBzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3Rh
dG9yKQorICAgICAgICBpZiAoc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAg
ICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0gZmFsc2U7CisKKyAgICAg
ICAgbGV0IHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciA9IHRoaXMuX3R5cGVUb2tlbkFu
bm90YXRvciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IuaXNBY3RpdmUoKTsKKyAgICAgICAg
aWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgIHRoaXMuX3Nl
dFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAKICAgICAgICAgcmV0dXJu
IHN1cGVyLnByZXR0eVByaW50KHByZXR0eSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAo
cHJldHR5IHx8ICF0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5ub3RhdG9yIHx8IHNob3VsZFJlc3VtZUJhc2ljQmxv
Y2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc3VtZUJhc2ljQmxvY2tB
bm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JF
bmFibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXN1bWVUeXBlVG9r
ZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90
YXRvckVuYWJsZWRTdGF0ZSh0cnVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXByZXR0eSAmJiB0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQp
OwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5f
YmFzaWNCbG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRv
a2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAodGhp
cy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvckVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIHRoaXMuX3Nl
dFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTQxMiwxMyArNDU4LDEzIEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2Vi
SW5zcGVjCiAKICAgICAgICAgdGhpcy5zdHJpbmcgPSBjb250ZW50OwogCi0gICAgICAgIHRoaXMu
X21ha2VUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKLSAgICAgICAgdGhpcy5fbWFrZUJhc2ljQmxvY2tB
bm5vdGF0b3IoKTsKKyAgICAgICAgdGhpcy5fY3JlYXRlQmFzaWNCbG9ja0Fubm90YXRvcigpOwor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5n
LnZhbHVlICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICB0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IHRydWU7CiAKLSAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWUpIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yIHx8IHRoaXMuX3R5cGVUb2tlbkFu
bm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFi
bGVkU3RhdGUodHJ1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fY3JlYXRlVHlwZVRva2Vu
QW5ub3RhdG9yKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBl
SW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKQorICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2Vu
QW5ub3RhdG9yRW5hYmxlZFN0YXRlKHRydWUpOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnREaWRQ
b3B1bGF0ZSgpOwogICAgIH0KQEAgLTE2ODUsMjIgKzE3MzEsMTMgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWMKIAogICAgIF9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoc2hvdWxk
QWN0aXZhdGUpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90eXBlVG9rZW5B
bm5vdGF0b3IpOwogICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc2hvdWxkQWN0aXZhdGUpIHsKICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudmlzaWJsZSwgIkFubm90YXRvcnMgc2hvdWxkIG5vdCBi
ZSBlbmFibGVkIGlmIHRoZSBUZXh0RWRpdG9yIGlzIG5vdCB2aXNpYmxlIik7Ci0KICAgICAgICAg
ICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVUeXBlUHJvZmlsZXIoKTsKLSAgICAgICAgICAgIGlmIChS
dW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcikKLSAgICAgICAgICAgICAgICBS
dW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwotCiAgICAgICAgICAgICB0
aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IucmVzZXQoKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKSk7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXNldCgpOwotICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpCiAgICAgICAgICAgICAgICAg
dGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3RhdG9yKCk7CkBAIC0xNzEy
LDggKzE3NDksNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBT
b3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICAgICAgLy8gcHJv
dmlkZSBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UuCiAKICAgICAgICAgICAgIHRoaXMuX3R5
cGVUb2tlbkFubm90YXRvci5jbGVhcigpOwotICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IpCi0gICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5j
bGVhcigpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcikK
ICAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5u
b3RhdG9yKCk7CkBAIC0xNzI0LDYgKzE3NTksMzEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMK
ICAgICAgICAgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSgpOwogICAg
IH0KIAorICAgIHNldCBfYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQoc2hvdWxkQWN0aXZhdGUp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHNob3VsZEFjdGl2YXRlKSB7CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLnZpc2libGUsICJBbm5vdGF0b3JzIHNob3VsZCBub3QgYmUg
ZW5hYmxlZCBpZiB0aGUgVGV4dEVkaXRvciBpcyBub3QgdmlzaWJsZSIpOworCisgICAgICAgICAg
ICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOworCisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5pc0FjdGl2ZSgpKTsK
KyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVzZXQoKTsKKworICAgICAg
ICAgICAgaWYgKCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpCisgICAgICAgICAgICAg
ICAgdGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuY2xl
YXIoKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcikK
KyAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dB
bm5vdGF0b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5lbmFibGVDb250
cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZSA9IHNob3VsZEFjdGl2YXRlOworICAgIH0KKwog
ICAgIF9nZXRBc3NvY2lhdGVkU2NyaXB0KCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSBu
dWxsOwpAQCAtMTczNSw3ICsxNzk1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAg
ICAgcmV0dXJuIHNjcmlwdDsKICAgICB9CiAKLSAgICBfbWFrZVR5cGVUb2tlbkFubm90YXRvcigp
CisgICAgX2NyZWF0ZVR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewogICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUuZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRP
ZmZzZXRzIGRpZCBub3QgZXhpc3QgeWV0LgogICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5nZXRS
dW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpCkBAIC0xNzQ4LDcgKzE4MDgsNyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVk
aXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3Ig
PSBuZXcgV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvcih0aGlzLCBzY3JpcHQpOwogICAg
IH0KIAotICAgIF9tYWtlQmFzaWNCbG9ja0Fubm90YXRvcigpCisgICAgX2NyZWF0ZUJhc2ljQmxv
Y2tBbm5vdGF0b3IoKQogICAgIHsKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBS
dW50aW1lLmdldEJhc2ljQmxvY2tzIGRpZCBub3QgZXhpc3QgeWV0LgogICAgICAgICBpZiAoIVJ1
bnRpbWVBZ2VudC5nZXRCYXNpY0Jsb2NrcykKQEAgLTE3NjUsMTAgKzE4MjUsMTcgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3Ig
ZXh0ZW5kcyBXZWJJbnNwZWMKICAgICB7CiAgICAgICAgIC8vIFBhdXNlIHVwZGF0aW5nIHR5cGUg
dG9rZW5zIHdoaWxlIHNjcm9sbGluZyB0byBwcmV2ZW50IGZyYW1lIGxvc3MuCiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKTsKLSAgICAgICAgdGhp
cy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IHRoaXMuX21ha2VUeXBlVG9rZW5TY3JvbGxFdmVu
dEhhbmRsZXIoKTsKKyAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IHRoaXMu
X2NyZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpOwogICAgICAgICB0aGlzLmFkZFNj
cm9sbEhhbmRsZXIodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7CiAgICAgfQogCisgICAg
X2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpOworICAg
ICAgICB0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIgPSB0aGlzLl9jcmVhdGVDb250cm9s
Rmxvd1Njcm9sbEV2ZW50SGFuZGxlcigpOworICAgICAgICB0aGlzLmFkZFNjcm9sbEhhbmRsZXIo
dGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICB9CisKICAgICBfZGlzYWJsZVNj
cm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKTsKQEAgLTE3NzYsMzAgKzE4NDMs
NTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29k
ZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Ny
b2xsSGFuZGxlciA9IG51bGw7CiAgICAgfQogCi0gICAgX21ha2VUeXBlVG9rZW5TY3JvbGxFdmVu
dEhhbmRsZXIoKQorICAgIF9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dBbm5vdGF0
b3IoKQogICAgIHsKLSAgICAgICAgdmFyIHRpbWVvdXRJZGVudGlmaWVyID0gbnVsbDsKLSAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsSGFuZGxlcigpCi0gICAgICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICAgICAgdGhpcy5yZW1v
dmVTY3JvbGxIYW5kbGVyKHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAgICAg
IHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlciA9IG51bGw7CisgICAgfQorCisgICAgX2Ny
ZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpCisgICAgeworICAgICAgICBsZXQgdGlt
ZW91dElkZW50aWZpZXIgPSBudWxsOworICAgICAgICBsZXQgc2Nyb2xsSGFuZGxlciA9ICgpID0+
IHsKICAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRpZmllcikKICAgICAgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLnBhdXNlKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
X2Jhc2ljQmxvY2tBbm5vdGF0b3IucGF1c2UoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAg
ICB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3R5
cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5u
b3RhdG9yLnJlc3VtZSgpOworICAgICAgICAgICAgfSwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcpOworICAg
ICAgICB9OworCisgICAgICAgIHJldHVybiBzY3JvbGxIYW5kbGVyOworICAgIH0KKworICAgIF9j
cmVhdGVDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcigpCisgICAgeworICAgICAgICBsZXQg
dGltZW91dElkZW50aWZpZXIgPSBudWxsOworICAgICAgICBsZXQgc2Nyb2xsSGFuZGxlciA9ICgp
ID0+IHsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRpZmllcikKKyAgICAgICAgICAgICAg
ICBjbGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOworICAgICAgICAgICAgZWxzZSBpZiAo
dGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yLnBhdXNlKCk7CisKKyAgICAgICAgICAgIHRpbWVvdXRJZGVudGlmaWVyID0g
c2V0VGltZW91dCgoKSAgPT4geworICAgICAgICAgICAgICAgIHRpbWVvdXRJZGVudGlmaWVyID0g
bnVsbDsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXN1bWUoKTsKLSAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcpOwotICAgICAgICB9Cisg
ICAgICAgICAgICB9LCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25U
b1VwZGF0ZVR5cGVUb2tlbnNBZnRlclNjcm9sbGluZyk7CisgICAgICAgIH07CiAKLSAgICAgICAg
cmV0dXJuIHNjcm9sbEhhbmRsZXIuYmluZCh0aGlzKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbEhh
bmRsZXI7CiAgICAgfQogCiAgICAgX2xvZ0NsZWFyZWQoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZp
ZXcuanMKaW5kZXggMDE0ZDUyNy4uMzVjY2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcwpA
QCAtNTEsNiArNTEsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50VmlldyA9IGNsYXNzIFRl
eHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW4KICAgICAgICAgdmFyIGFj
dGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGlu
Zm9ybWF0aW9uIik7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5
cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdh
dGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgbGV0IHRvb2xUaXBD
b2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhZGUgdW5leGVjdXRlZCBjb2Rl
Iik7CisgICAgICAgIGxldCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEb27igJl0IGZhZGUgdW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIHRo
aXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5B
Y3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb2RlLWNvdmVyYWdlIiwgdG9vbFRpcENvZGVD
b3ZlcmFnZSwgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSwgIkltYWdlcy9OYXZpZ2F0aW9u
SXRlbUNvZGVDb3ZlcmFnZS5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJh
Z2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8g
UHVibGljCkBAIC02Miw3ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcgPSBj
bGFzcyBUZXh0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVuCiAKICAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5
UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW1dOworICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCiAgICAgcmV2ZWFsUG9zaXRpb24o
cG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3Iu
anMKaW5kZXggMzIzMjczMy4uNDk3Njc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC0xMzcsNiArMTM3
LDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRz
IFdlYkluc3BlY3Rvci5WaWV3CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWQ7CiAgICAg
fQogCisgICAgZ2V0IGhhc01vZGlmaWVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9j
b2RlTWlycm9yLmhpc3RvcnlTaXplKCkudW5kbyA+IDA7CisgICAgfQorCiAgICAgdXBkYXRlRm9y
bWF0dGVkU3RhdGUoZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1h
dChmb3JtYXR0ZWQpLmNhdGNoKGhhbmRsZVByb21pc2VFeGNlcHRpb24pOwpAQCAtMTU5LDYgKzE2
NCwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAg
Y2FuU2hvd0NvdmVyYWdlSGludHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIGdldCBzZWxlY3RlZFRleHRSYW5nZSgpCiAgICAgewogICAgICAgICB2YXIgc3Rh
cnQgPSB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJl
c291cmNlQ29udGVudFZpZXcuanMKaW5kZXggMmE2YzhiOS4uZWNmNzJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTUzLDE1ICs1MywyMSBAQCBXZWJJbnNw
ZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50
VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hv
dy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2VzL05h
dmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVz
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25z
LCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5h
YmxlZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJ
bmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5F
dmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdD
aGFuZ2VkLCB0aGlzKTsKKworICAgICAgICBsZXQgdG9vbFRpcENvZGVDb3ZlcmFnZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgbGV0IGFj
dGl2YXRlZFRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbuKA
mXQgZmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0oImNvZGUtY292ZXJhZ2UiLCB0b29sVGlwQ29kZUNvdmVyYWdlLCBhY3RpdmF0ZWRU
b29sVGlwQ29kZUNvdmVyYWdlLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ29kZUNvdmVyYWdlLnN2
ZyIsIDEzLCAxNCk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cywgdGhpcyk7
CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQg
PSBmYWxzZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJT
ZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdl
ZCwgdGhpcy5fZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkLCB0aGlzKTsK
ICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVt
LCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbV07CisgICAgICAgIHJldHVybiBb
dGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0
dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVt
XTsKICAgICB9CiAKICAgICBnZXQgbWFuYWdlc093bklzc3VlcygpCkBAIC0xOTYsOCArMjAyLDEy
IEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgX2NvbnRlbnREaWRQb3B1bGF0ZShldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0u
ZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQoKTsKKwogICAgICAgICB0
aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVk
aXRvci5jYW5TaG93VHlwZUFubm90YXRpb25zKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1
dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlw
dFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7CisKKyAgICAgICAgdGhpcy5fY29kZUNvdmVy
YWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hv
d0NvdmVyYWdlSGludHMoKTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXJTZXR0aW5nLnZhbHVlOwogICAgIH0KIAogICAgIF90b2dnbGVQcmV0dHlQcmludChldmVudCkK
QEAgLTIxMSwxMSArMjIxLDIxIEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIHRo
aXMuX3RleHRFZGl0b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCk7CiAgICAgfQogCisgICAgX3Rv
Z2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IudG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKCk7CisgICAgfQorCiAg
ICAgX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0
ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZh
bHVlOwogICAgIH0KIAorICAgIF9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5n
ZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0
aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
clNldHRpbmcudmFsdWU7CisgICAgfQorCiAgICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0
aW9uSXRlbS5hY3RpdmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZDsK
</data>
<flag name="review"
          id="310725"
          type_id="1"
          status="+"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="310726"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288340</attachid>
            <date>2016-09-08 15:38:46 -0700</date>
            <delta_ts>2016-09-08 15:42:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30504</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGU1OTcwOTcuLmZjZjM0MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA5LTA4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBh
IGJ1dHRvbiB0byBuYXZpZ2F0aW9uIGJhciB0byB0b2dnbGUgQ29udHJvbCBGbG93IFByb2ZpbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3OTEyNjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgIEFkZCAiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiIGFuZCAiRG8g
bm90IGZhZGUgdW5leGVjdXRlZCBjb2RlIi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIEFkZCBh
IHNldHRpbmcgdG8gcmVtZW1iZXIgd2hldGhlciBDb2RlIENvdmVyYWdlIFByb2ZpbGVyIGlzIG9u
IG9yIG9mZiBiZXR3ZWVuIFdlYiBJbnNwZWN0b3IgcmVsb2Fkcy4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNob3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuY2FuU2hvd1R5cGVBbm5v
dGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLmNhblNob3dDb3ZlcmFnZUhpbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuY29udGVudERpZENoYW5nZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRvZ2dsZVR5cGVBbm5v
dGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLnRvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnByZXR0eVByaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Byb2NlZWRQ
b3B1bGF0ZVdpdGhDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dEVkaXRvci5wcm90b3R5cGUuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNldCBf
YmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2Vu
QW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5w
cm90b3R5cGUuX2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc2Fi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUeXBlVG9rZW5TY3Jv
bGxFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fY3JlYXRlQ29udHJvbEZsb3dTY3JvbGxFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5CZUZv
cm1hdHRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlLmRpYWxvZ1dhc0Rpc21pc3NlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNob3dQb3BvdmVyRm9y
VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fYWRkQnJlYWtwb2ludFdpdGhFZGl0b3JMaW5lSW5mbyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9y
ZW1vdmVCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rva2VuVHJhY2tpbmdD
b250cm9sbGVySGlnaGxpZ2h0ZWRNYXJrZWRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0
aW5nQ29udHJvbGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRleHRFZGl0b3IucHJvdG90eXBlLmVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90
b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2dldEFzc29j
aWF0ZWRTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVHlwZVRva2VuQW5ub3RhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgTWFrZSBDb2RlIENvdmVyYWdlIHByb2ZpbGVyIGluZGVwZW5kZW50IGZyb20gVHlw
ZSBQcm9maWxlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRW
aWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0
ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlLmdl
dCB0ZXh0RWRpdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rl
eHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUu
Z2V0IGhhc01vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZS5jYW5TaG93Q292ZXJhZ2VIaW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UmVzb3VyY2VDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNl
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBv
cHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVVbmV4ZWN1dGVkQ29kZUhp
Z2hsaWdodHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2Nv
bnRlbnRXaWxsUG9wdWxhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3Rv
dHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRD
b250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnREaWRQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVUeXBlQW5ub3RhdGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5f
dG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0
aW5nQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJv
dG90eXBlLl9jb250ZW50V2lsbFBvcHVsYXRlKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIHRoZSBb
Q10gaWNvbiByaWdodCBuZXh0IHRvIHRoZSBbVF0gKFR5cGUgUHJvZmlsZXIpIGljb24uCisKIDIw
MTYtMDktMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlciBzaWRlYmFyIHNob3VsZCBpbmNsdWRlIGEgd2Fybmlu
ZyBtZXNzYWdlIGJyZWFrcG9pbnRzIGFyZSBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKaW5kZXggYWFmMjY0ZC4uNmYyOTE3ZSAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcyBhbmQgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGRiZDY1NWMuLmVjMWFlODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE2
MiwxMCArMTYyLDEyIEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoInNob3ctamF2YXNjcmlwdC10eXBlLWluZm9ybWF0aW9uIiwgZmFsc2UpOwogICAg
IGlmICh0aGlzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZSAmJiB3
aW5kb3cuUnVudGltZUFnZW50ICYmIFJ1bnRpbWVBZ2VudC5lbmFibGVUeXBlUHJvZmlsZXIpIHsK
ICAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZVR5cGVQcm9maWxlcigpOwotICAgICAgICBpZiAo
UnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpCi0gICAgICAgICAgICBSdW50
aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogICAgIH0KIAorICAgIHRoaXMu
ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRp
bmcoImVuYWJsZS1jb250cm9sLWZsb3ctcHJvZmlsZXIiLCBmYWxzZSk7CisgICAgaWYgKHRoaXMu
ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWUgJiYgd2luZG93LlJ1bnRpbWVB
Z2VudCAmJiBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcikKKyAgICAgICAg
UnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKKwogICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyA4KTogUGFnZS5zZXRTaG93UGFpbnRSZWN0cyBkaWQgbm90IGV4aXN0Lgog
ICAgIHRoaXMuc2hvd1BhaW50UmVjdHNTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5n
KCJzaG93LXBhaW50LXJlY3RzIiwgZmFsc2UpOwogICAgIGlmICh0aGlzLnNob3dQYWludFJlY3Rz
U2V0dGluZy52YWx1ZSAmJiB3aW5kb3cuUGFnZUFnZW50ICYmIFBhZ2VBZ2VudC5zZXRTaG93UGFp
bnRSZWN0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKaW5kZXggMTUwMDI3OS4uMTIxYTg3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2NyaXB0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKQEAgLTYzLDE1ICs2MywyMSBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcgPSBjbGFzcyBTY3JpcHRDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5DbwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0
aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgi
c2hvdy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2Vz
L05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhpcy5fc2hvd1R5
cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRp
b25zLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
ZW5hYmxlZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5
cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGlu
Zy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRp
bmdDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICBsZXQgdG9vbFRpcENvZGVDb3ZlcmFnZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgbGV0
IGFjdGl2YXRlZFRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRv
IG5vdCBmYWRlIHVuZXhlY3V0ZWQgY29kZSIpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZp
Z2F0aW9uSXRlbSgiY29kZS1jb3ZlcmFnZSIsIHRvb2xUaXBDb2RlQ292ZXJhZ2UsIGFjdGl2YXRl
ZFRvb2xUaXBDb2RlQ292ZXJhZ2UsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1Db2RlQ292ZXJhZ2Uu
c3ZnIiwgMTMsIDE0KTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxl
ZCA9IGZhbHNlOworICAgICAgICBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
clNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFu
Z2VkLCB0aGlzLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5nZWQsIHRoaXMp
OwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAg
ICAgewotICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgcmV0dXJu
IFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNC
dXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0
ZW1dOwogICAgIH0KIAogICAgIGdldCBzY3JpcHQoKQpAQCAtMjAyLDggKzIwOCwxMiBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcgPSBjbGFzcyBTY3JpcHRDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5DbwogICAgIF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQg
PSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9ybWF0dGVkKCk7CisKICAgICAgICAgdGhpcy5fc2hv
d1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2Fu
U2hvd1R5cGVBbm5vdGF0aW9ucygpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5m
b3JtYXRpb25TZXR0aW5nLnZhbHVlOworCisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRv
bk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dDb3ZlcmFn
ZUhpbnRzKCk7CisgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVt
LmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGlu
Zy52YWx1ZTsKICAgICB9CiAKICAgICBfdG9nZ2xlUHJldHR5UHJpbnQoZXZlbnQpCkBAIC0yMTQs
NyArMjI0LDE4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNjcmlw
dENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvCiAKICAgICBfdG9nZ2xlVHlwZUFu
bm90YXRpb25zKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVU
eXBlQW5ub3RhdGlvbnMoKTsKKyAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2dsZVR5
cGVBbm5vdGF0aW9ucygpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgdGhpcy5fc2hvd1R5cGVz
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRydWU7CisgICAgICAgIH0pCisgICAgfQor
CisgICAgX3RvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyhldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdo
dHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5h
dmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0cnVlOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBf
c2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkKQEAgLTIy
Miw2ICsyNDMsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3ID0gY2xhc3MgU2Ny
aXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28KICAgICAgICAgdGhpcy5fc2hv
d1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dK
YXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKICAgICB9CiAKKyAgICBfZW5h
YmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOworICAgIH0K
KwogICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhp
cy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
CmluZGV4IDk3ZmEzMjAuLjY5OWU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9y
LmpzCkBAIC0xMDEsMTQgKzEwMSwyMiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52
YWx1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAg
ICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IucmVzdW1lKCk7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yLnJlc3VtZSgpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBl
VG9rZW5TY3JvbGxIYW5kbGVyICYmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5f
YmFzaWNCbG9ja0Fubm90YXRvcikpCisgICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNj
cm9sbEhhbmRsZXIgJiYgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAg
IHRoaXMuX2VuYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tl
bkFubm90YXRvcikKICAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JF
bmFibGVkU3RhdGUoZmFsc2UpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZSkgeworICAgICAgICAgICAg
aWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgdGhpcy5fYmFz
aWNCbG9ja0Fubm90YXRvci5yZXN1bWUoKTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250
cm9sRmxvd1Njcm9sbEhhbmRsZXIgJiYgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAg
ICAgICAgICAgICB0aGlzLl9lbmFibGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRv
cigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90
YXRvckVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGhpZGRlbigpCkBA
IC0xNjEsNyArMTY5LDE0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICBjYW5TaG93
VHlwZUFubm90YXRpb25zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX3R5cGVUb2tl
bkFubm90YXRvcjsKKyAgICAgICAgLy8gVHlwZSBhbm5vdGF0aW9ucyBmb3IgbW9kaWZpZWQgc2Ny
aXB0cyBhcmUgY3VycmVudGx5IHVuc3VwcG9ydGVkLgorICAgICAgICByZXR1cm4gISF0aGlzLl9n
ZXRBc3NvY2lhdGVkU2NyaXB0KCkgJiYgIXRoaXMuaGFzTW9kaWZpZWQ7CisgICAgfQorCisgICAg
Y2FuU2hvd0NvdmVyYWdlSGludHMoKQorICAgIHsKKyAgICAgICAgLy8gQ29kZSBjb3ZlcmFnZSBo
aW50cyBmb3IgbW9kaWZpZWQgc2NyaXB0cyBhcmUgY3VycmVudGx5IHVuc3VwcG9ydGVkLgorICAg
ICAgICByZXR1cm4gISF0aGlzLl9nZXRBc3NvY2lhdGVkU2NyaXB0KCkgJiYgIXRoaXMuaGFzTW9k
aWZpZWQ7CiAgICAgfQogCiAgICAgY3VzdG9tUGVyZm9ybVNlYXJjaChxdWVyeSkKQEAgLTI0OSwx
MCArMjY0LDE0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNv
dXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIGZvciAodmFyIHJh
bmdlIG9mIG5ld1JhbmdlcykKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRhYmxlTWFya2Vy
cyhyYW5nZSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlz
Ll9iYXNpY0Jsb2NrQW5ub3RhdG9yKSB7CisgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5u
b3RhdG9yKSB7CisgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9
IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciA9IG51bGw7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKSB7CiAgICAg
ICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwog
ICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbnVsbDsKLSAgICAgICAgICAg
IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgPSBudWxsOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yNjMsMTQgKzI4MiwyOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBj
bGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIHZh
ciBuZXdBY3RpdmF0ZWRTdGF0ZSA9ICF0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IuaXNBY3RpdmUo
KTsKICAgICAgICAgaWYgKG5ld0FjdGl2YXRlZFN0YXRlICYmIHRoaXMuX2lzUHJvYmFibHlNaW5p
ZmllZCAmJiAhdGhpcy5mb3JtYXR0ZWQpIHsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybWF0
dGVkU3RhdGUodHJ1ZSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRh
dGVGb3JtYXR0ZWRTdGF0ZSh0cnVlKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICB0aGlz
Ll9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUobmV3QWN0aXZhdGVkU3RhdGUpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUobmV3QWN0aXZhdGVkU3Rh
dGUpOwotICAgICAgICByZXR1cm4gbmV3QWN0aXZhdGVkU3RhdGU7CisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICB9CisKKyAgICB0b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hs
aWdodHMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGxldCBuZXdBY3RpdmF0ZWRTdGF0
ZSA9ICF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisgICAgICAgIGlmIChu
ZXdBY3RpdmF0ZWRTdGF0ZSAmJiB0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQgJiYgIXRoaXMuZm9y
bWF0dGVkKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVGb3JtYXR0ZWRTdGF0ZSh0
cnVlKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3Rh
dG9yRW5hYmxlZCA9IG5ld0FjdGl2YXRlZFN0YXRlOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IG5ld0FjdGl2
YXRlZFN0YXRlOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfQogCiAg
ICAgc2hvd1BvcG92ZXJGb3JUeXBlcyh0eXBlRGVzY3JpcHRpb24sIGJvdW5kcywgdGl0bGUpCkBA
IC0yOTksMTkgKzMzMywyOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBj
bGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICAvLyBU
aGUgYW5ub3RhdG9ycyBtdXN0IGJlIGNsZWFyZWQgYmVmb3JlIHByZXR0eSBwcmludGluZyB0YWtl
cyBwbGFjZSBhbmQgcmVzdW1lZAogICAgICAgICAvLyBhZnRlciBzbyB0aGF0IHRoZXkgY2xlYXIg
dGhlaXIgYW5ub3RhdGlvbnMgaW4gYSBrbm93biBzdGF0ZSBhbmQgaW5zZXJ0IG5ldyBhbm5vdGF0
aW9ucwogICAgICAgICAvLyBpbiB0aGUgbmV3IHN0YXRlLgotICAgICAgICB2YXIgc2hvdWxkUmVz
dW1lVHlwZVRva2VuQW5ub3RhdG9yID0gdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yICYmIHRoaXMu
X3R5cGVUb2tlbkFubm90YXRvci5pc0FjdGl2ZSgpOworCiAgICAgICAgIHZhciBzaG91bGRSZXN1
bWVCYXNpY0Jsb2NrQW5ub3RhdG9yID0gdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciAmJiB0aGlz
Ll9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCk7Ci0gICAgICAgIGlmIChzaG91bGRSZXN1
bWVUeXBlVG9rZW5Bbm5vdGF0b3IgfHwgc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fubm90YXRvcikK
KyAgICAgICAgaWYgKHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAg
ICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIGxl
dCBzaG91bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IgPSB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0
b3IgJiYgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisgICAgICAgIGlmIChz
aG91bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICB0aGlzLl9zZXRUeXBl
VG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwogCiAgICAgICAgIHJldHVybiBzdXBl
ci5wcmV0dHlQcmludChwcmV0dHkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHByZXR0
eSB8fCAhdGhpcy5faXNQcm9iYWJseU1pbmlmaWVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNo
b3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciB8fCBzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5u
b3RhdG9yKQorICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXN1bWVCYXNpY0Jsb2NrQW5ub3Rh
dG9yKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5u
b3RhdG9yKQogICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JF
bmFibGVkU3RhdGUodHJ1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFwcmV0dHkgJiYgdGhpcy5faXNQcm9iYWJseU1pbmlmaWVkKTsKLSAg
ICAgICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3IpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFu
bm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Jh
c2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tB
bm5vdGF0b3JFbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBl
VG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKICAgICB9CkBAIC0zOTIsMTMgKzQzNSwxMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3Bl
YwogCiAgICAgICAgIHRoaXMuc3RyaW5nID0gY29udGVudDsKIAotICAgICAgICB0aGlzLl9tYWtl
VHlwZVRva2VuQW5ub3RhdG9yKCk7Ci0gICAgICAgIHRoaXMuX21ha2VCYXNpY0Jsb2NrQW5ub3Rh
dG9yKCk7CisgICAgICAgIHRoaXMuX2NyZWF0ZUJhc2ljQmxvY2tBbm5vdGF0b3IoKTsKKyAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1
ZSAmJiB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgdGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvckVuYWJsZWQgPSB0cnVlOwogCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
c2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciB8fCB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0
b3IpCi0gICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0
YXRlKHRydWUpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX2NyZWF0ZVR5cGVUb2tlbkFubm90
YXRvcigpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9y
bWF0aW9uU2V0dGluZy52YWx1ZSkKKyAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90
YXRvckVuYWJsZWRTdGF0ZSh0cnVlKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50RGlkUG9wdWxh
dGUoKTsKICAgICB9CkBAIC0xNjc4LDIyICsxNzIxLDEzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5z
cGVjCiAKICAgICBfc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKHNob3VsZEFjdGl2
YXRlKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdHlwZVRva2VuQW5ub3Rh
dG9yKTsKICAgICAgICAgaWYgKCF0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHNob3VsZEFjdGl2YXRlKSB7CiAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnZpc2libGUsICJBbm5vdGF0b3JzIHNob3VsZCBub3QgYmUgZW5h
YmxlZCBpZiB0aGUgVGV4dEVkaXRvciBpcyBub3QgdmlzaWJsZSIpOwotCiAgICAgICAgICAgICBS
dW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2ZpbGVyKCk7Ci0gICAgICAgICAgICBpZiAoUnVudGlt
ZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpCi0gICAgICAgICAgICAgICAgUnVudGlt
ZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKLQogICAgICAgICAgICAgdGhpcy5f
dHlwZVRva2VuQW5ub3RhdG9yLnJlc2V0KCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvcikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpOwotICAgICAgICAgICAgICAgIHRoaXMuX2Jh
c2ljQmxvY2tBbm5vdGF0b3IucmVzZXQoKTsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKQogICAgICAgICAgICAgICAgIHRoaXMu
X2VuYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpOwpAQCAtMTcwNSw4ICsx
NzM5LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNl
Q29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgICAgIC8vIHByb3ZpZGUg
YSBjb25mdXNpbmcgdXNlciBleHBlcmllbmNlLgogCiAgICAgICAgICAgICB0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IuY2xlYXIoKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5u
b3RhdG9yKQotICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuY2xlYXIo
KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fZGlzYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRv
cigpOwpAQCAtMTcxNyw2ICsxNzQ5LDMxIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKICAgICB9CiAK
KyAgICBzZXQgX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkKHNob3VsZEFjdGl2YXRlKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChzaG91bGRBY3RpdmF0ZSkgeworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy52aXNpYmxlLCAiQW5ub3RhdG9ycyBzaG91bGQgbm90IGJlIGVuYWJs
ZWQgaWYgdGhlIFRleHRFZGl0b3IgaXMgbm90IHZpc2libGUiKTsKKworICAgICAgICAgICAgUnVu
dGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKKworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKSk7CisgICAg
ICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlc2V0KCk7CisKKyAgICAgICAgICAg
IGlmICghdGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKQorICAgICAgICAgICAgICAgIHRo
aXMuX2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmNsZWFyKCk7
CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpCisgICAg
ICAgICAgICAgICAgdGhpcy5fZGlzYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3Rh
dG9yKCk7CisgICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlclNldHRpbmcudmFsdWUgPSBzaG91bGRBY3RpdmF0ZTsKKyAgICB9CisKICAgICBf
Z2V0QXNzb2NpYXRlZFNjcmlwdCgpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gbnVsbDsK
QEAgLTE3MjgsNyArMTc4NSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9
IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHJl
dHVybiBzY3JpcHQ7CiAgICAgfQogCi0gICAgX21ha2VUeXBlVG9rZW5Bbm5vdGF0b3IoKQorICAg
IF9jcmVhdGVUeXBlVG9rZW5Bbm5vdGF0b3IoKQogICAgIHsKICAgICAgICAgLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDgpOiBSdW50aW1lLmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0
cyBkaWQgbm90IGV4aXN0IHlldC4KICAgICAgICAgaWYgKCFSdW50aW1lQWdlbnQuZ2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKQpAQCAtMTc0MSw3ICsxNzk4LDcgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3Ig
ZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbmV3
IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IodGhpcywgc2NyaXB0KTsKICAgICB9CiAK
LSAgICBfbWFrZUJhc2ljQmxvY2tBbm5vdGF0b3IoKQorICAgIF9jcmVhdGVCYXNpY0Jsb2NrQW5u
b3RhdG9yKCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGlt
ZS5nZXRCYXNpY0Jsb2NrcyBkaWQgbm90IGV4aXN0IHlldC4KICAgICAgICAgaWYgKCFSdW50aW1l
QWdlbnQuZ2V0QmFzaWNCbG9ja3MpCkBAIC0xNzU4LDEwICsxODE1LDE3IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVu
ZHMgV2ViSW5zcGVjCiAgICAgewogICAgICAgICAvLyBQYXVzZSB1cGRhdGluZyB0eXBlIHRva2Vu
cyB3aGlsZSBzY3JvbGxpbmcgdG8gcHJldmVudCBmcmFtZSBsb3NzLgogICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7Ci0gICAgICAgIHRoaXMuX3R5
cGVUb2tlblNjcm9sbEhhbmRsZXIgPSB0aGlzLl9tYWtlVHlwZVRva2VuU2Nyb2xsRXZlbnRIYW5k
bGVyKCk7CisgICAgICAgIHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgPSB0aGlzLl9jcmVh
dGVUeXBlVG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKTsKICAgICAgICAgdGhpcy5hZGRTY3JvbGxI
YW5kbGVyKHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwogICAgIH0KIAorICAgIF9lbmFi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcigpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICAgICAg
dGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyID0gdGhpcy5fY3JlYXRlQ29udHJvbEZsb3dT
Y3JvbGxFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgdGhpcy5hZGRTY3JvbGxIYW5kbGVyKHRoaXMu
X2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAgfQorCiAgICAgX2Rpc2FibGVTY3JvbGxF
dmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7CkBAIC0xNzY5LDMwICsxODMzLDUxIEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHRoaXMuX3R5cGVUb2tlblNjcm9sbEhh
bmRsZXIgPSBudWxsOwogICAgIH0KIAotICAgIF9tYWtlVHlwZVRva2VuU2Nyb2xsRXZlbnRIYW5k
bGVyKCkKKyAgICBfZGlzYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKCkK
ICAgICB7Ci0gICAgICAgIHZhciB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7Ci0gICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEhhbmRsZXIoKQotICAgICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlcik7CisgICAgICAgIHRoaXMucmVtb3ZlU2Ny
b2xsSGFuZGxlcih0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIpOworICAgICAgICB0aGlz
Ll9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIgPSBudWxsOworICAgIH0KKworICAgIF9jcmVhdGVU
eXBlVG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgbGV0IHRpbWVvdXRJ
ZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgbGV0IHNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7CiAg
ICAgICAgICAgICBpZiAodGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRpbWVvdXRJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX3R5cGVUb2tlbkFubm90YXRvci5wYXVzZSgpOwotICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXNp
Y0Jsb2NrQW5ub3RhdG9yLnBhdXNlKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRp
bWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRp
bWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgdGlt
ZW91dElkZW50aWZpZXIgPSBudWxsOwogICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRv
ci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0sIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5EdXJhdGlvblRvVXBkYXRlVHlwZVRva2Vuc0FmdGVyU2Nyb2xsaW5nKTsKKyAgICAgICAg
fTsKKworICAgICAgICByZXR1cm4gc2Nyb2xsSGFuZGxlcjsKKyAgICB9CisKKyAgICBfY3JlYXRl
Q29udHJvbEZsb3dTY3JvbGxFdmVudEhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgbGV0IHRpbWVv
dXRJZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgbGV0IHNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7
CisgICAgICAgICAgICBpZiAodGltZW91dElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgY2xl
YXJUaW1lb3V0KHRpbWVvdXRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMu
X2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fu
bm90YXRvci5wYXVzZSgpOworCisgICAgICAgICAgICB0aW1lb3V0SWRlbnRpZmllciA9IHNldFRp
bWVvdXQoKCkgID0+IHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7
CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCiAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVzdW1lKCk7Ci0gICAgICAg
ICAgICB9LmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5EdXJh
dGlvblRvVXBkYXRlVHlwZVRva2Vuc0FmdGVyU2Nyb2xsaW5nKTsKLSAgICAgICAgfQorICAgICAg
ICAgICAgfSwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9VcGRh
dGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcpOworICAgICAgICB9OwogCi0gICAgICAgIHJldHVy
biBzY3JvbGxIYW5kbGVyLmJpbmQodGhpcyk7CisgICAgICAgIHJldHVybiBzY3JvbGxIYW5kbGVy
OwogICAgIH0KIAogICAgIF9sb2dDbGVhcmVkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3Lmpz
CmluZGV4IGM5OGQ1MDkuLmFiMTU0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMKQEAgLTUx
LDYgKzUxLDExIEBAIFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcgPSBjbGFzcyBUZXh0Q29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVuCiAgICAgICAgIHZhciBhY3RpdmF0
ZWRUb29sVGlwVHlwZXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdHlwZSBpbmZvcm1h
dGlvbiIpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5l
dyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10eXBlcyIs
IHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2VzL05hdmlnYXRpb25J
dGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIGxldCB0b29sVGlwQ29kZUNv
dmVyYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGYWRlIHVuZXhlY3V0ZWQgY29kZSIpOwor
ICAgICAgICBsZXQgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRG8gbm90IGZhZGUgdW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIHRoaXMuX2Nv
ZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0
ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb2RlLWNvdmVyYWdlIiwgdG9vbFRpcENvZGVDb3ZlcmFn
ZSwgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUNv
ZGVDb3ZlcmFnZS5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUHVibGlj
CkBAIC02Miw3ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcgPSBjbGFzcyBU
ZXh0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVuCiAKICAgICBnZXQgbmF2
aWdhdGlvbkl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRC
dXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW1d
OworICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0s
IHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9jb2RlQ292ZXJhZ2VC
dXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCiAgICAgcmV2ZWFsUG9zaXRpb24ocG9zaXRp
b24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKaW5k
ZXggMTc4ODZhMS4uNDljMjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC0xMzcsNiArMTM3LDE3IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRzIFdlYklu
c3BlY3Rvci5WaWV3CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWQ7CiAgICAgfQogCisg
ICAgZ2V0IGhhc01vZGlmaWVkKCkKKyAgICB7CisgICAgICAgIGxldCBoaXN0b3J5U2l6ZSA9IHRo
aXMuX2NvZGVNaXJyb3IuaGlzdG9yeVNpemUoKS51bmRvOworCisgICAgICAgIC8vIEZvcm1hdHRp
bmcgY29kZSBjcmVhdGVzIGEgaGlzdG9yeSBpdGVtLgorICAgICAgICBpZiAodGhpcy5fZm9ybWF0
dGVkKQorICAgICAgICAgICAgaGlzdG9yeVNpemUtLTsKKworICAgICAgICByZXR1cm4gaGlzdG9y
eVNpemUgPiAwOworICAgIH0KKwogICAgIHVwZGF0ZUZvcm1hdHRlZFN0YXRlKGZvcm1hdHRlZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXQoZm9ybWF0dGVkKS5jYXRjaChoYW5k
bGVQcm9taXNlRXhjZXB0aW9uKTsKQEAgLTE1OSw2ICsxNzAsMTEgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGNhblNob3dDb3ZlcmFnZUhpbnRzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBnZXQgc2VsZWN0ZWRU
ZXh0UmFuZ2UoKQogICAgIHsKICAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5fY29kZU1pcnJvci5n
ZXRDdXJzb3IodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDJhNmM4YjkuLjNmNTI5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRW
aWV3LmpzCkBAIC01MywxNSArNTMsMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICAg
ICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMs
IGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIs
IDEzLCAxNCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNs
aWNrZWQsIHRoaXMuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucywgdGhpcyk7CiAgICAgICAgIHRoaXMu
X3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLQogICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hv
d0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAg
ICAgbGV0IHRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhZGUg
dW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIGxldCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVy
YWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEbyBub3QgZmFkZSB1bmV4ZWN1dGVkIGNvZGUi
KTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvZGUtY292ZXJhZ2Ui
LCB0b29sVGlwQ29kZUNvdmVyYWdlLCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlLCAiSW1h
Z2VzL05hdmlnYXRpb25JdGVtQ29kZUNvdmVyYWdlLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRo
aXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2ds
ZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NvZGVDb3Zl
cmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlclNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbV07CisgICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25O
YXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMu
X2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtXTsKICAgICB9CiAKICAgICBnZXQgbWFu
YWdlc093bklzc3VlcygpCkBAIC0xOTYsOCArMjAyLDEyIEBAIFdlYkluc3BlY3Rvci5UZXh0UmVz
b3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViCiAgICAgX2NvbnRlbnREaWRQb3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0
b3IuY2FuQmVGb3JtYXR0ZWQoKTsKKwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZp
Z2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93VHlwZUFubm90YXRp
b25zKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcu
dmFsdWU7CisKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
ZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd0NvdmVyYWdlSGludHMoKTsKKyAgICAg
ICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOwogICAgIH0K
IAogICAgIF90b2dnbGVQcmV0dHlQcmludChldmVudCkKQEAgLTIwOCw3ICsyMTgsMTggQEAgV2Vi
SW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWIKIAogICAgIF90b2dnbGVUeXBlQW5ub3RhdGlvbnMoZXZlbnQp
CiAgICAgewotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2dsZVR5cGVBbm5vdGF0aW9ucygp
OworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9u
SXRlbS5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBfdG9nZ2xlVW5l
eGVjdXRlZENvZGVIaWdobGlnaHRzKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZUNv
dmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLnRvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cygpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5h
YmxlZCA9IHRydWU7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIF9zaG93SmF2YVNjcmlwdFR5
cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkKGV2ZW50KQpAQCAtMjE2LDYgKzIzNywxMSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VD
b250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5m
b3JtYXRpb25TZXR0aW5nLnZhbHVlOwogICAgIH0KIAorICAgIF9lbmFibGVDb250cm9sRmxvd1By
b2ZpbGVyU2V0dGluZ0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlclNldHRpbmcudmFsdWU7CisgICAgfQorCiAgICAgX3RleHRFZGl0
b3JGb3JtYXR0aW5nRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5
UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZv
cm1hdHRlZDsK
</data>
<flag name="commit-queue"
          id="311691"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288342</attachid>
            <date>2016-09-08 15:42:43 -0700</date>
            <delta_ts>2016-09-08 16:15:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>59993</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGU1OTcwOTcuLmZjZjM0MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA5LTA4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBh
IGJ1dHRvbiB0byBuYXZpZ2F0aW9uIGJhciB0byB0b2dnbGUgQ29udHJvbCBGbG93IFByb2ZpbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3OTEyNjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgIEFkZCAiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiIGFuZCAiRG8g
bm90IGZhZGUgdW5leGVjdXRlZCBjb2RlIi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIEFkZCBh
IHNldHRpbmcgdG8gcmVtZW1iZXIgd2hldGhlciBDb2RlIENvdmVyYWdlIFByb2ZpbGVyIGlzIG9u
IG9yIG9mZiBiZXR3ZWVuIFdlYiBJbnNwZWN0b3IgcmVsb2Fkcy4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNob3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuY2FuU2hvd1R5cGVBbm5v
dGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLmNhblNob3dDb3ZlcmFnZUhpbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuY29udGVudERpZENoYW5nZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRvZ2dsZVR5cGVBbm5v
dGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLnRvZ2dsZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnByZXR0eVByaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Byb2NlZWRQ
b3B1bGF0ZVdpdGhDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dEVkaXRvci5wcm90b3R5cGUuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNldCBf
YmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2Vu
QW5ub3RhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5w
cm90b3R5cGUuX2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc2Fi
bGVTY3JvbGxFdmVudHNGb3JDb250cm9sRmxvd0Fubm90YXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUeXBlVG9rZW5TY3Jv
bGxFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fY3JlYXRlQ29udHJvbEZsb3dTY3JvbGxFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5jYW5CZUZv
cm1hdHRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlLmRpYWxvZ1dhc0Rpc21pc3NlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnNob3dQb3BvdmVyRm9y
VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fYWRkQnJlYWtwb2ludFdpdGhFZGl0b3JMaW5lSW5mbyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9y
ZW1vdmVCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rva2VuVHJhY2tpbmdD
b250cm9sbGVySGlnaGxpZ2h0ZWRNYXJrZWRFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0
aW5nQ29udHJvbGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRleHRFZGl0b3IucHJvdG90eXBlLmVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90
b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2dldEFzc29j
aWF0ZWRTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVHlwZVRva2VuQW5ub3RhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgTWFrZSBDb2RlIENvdmVyYWdlIHByb2ZpbGVyIGluZGVwZW5kZW50IGZyb20gVHlw
ZSBQcm9maWxlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRW
aWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0
ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlLmdl
dCB0ZXh0RWRpdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rl
eHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUu
Z2V0IGhhc01vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZS5jYW5TaG93Q292ZXJhZ2VIaW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UmVzb3VyY2VDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNl
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBv
cHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVVbmV4ZWN1dGVkQ29kZUhp
Z2hsaWdodHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2Nv
bnRlbnRXaWxsUG9wdWxhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3Rv
dHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRD
b250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnREaWRQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVUeXBlQW5ub3RhdGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5f
dG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0
aW5nQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJv
dG90eXBlLl9jb250ZW50V2lsbFBvcHVsYXRlKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIHRoZSBb
Q10gaWNvbiByaWdodCBuZXh0IHRvIHRoZSBbVF0gKFR5cGUgUHJvZmlsZXIpIGljb24uCisKIDIw
MTYtMDktMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlciBzaWRlYmFyIHNob3VsZCBpbmNsdWRlIGEgd2Fybmlu
ZyBtZXNzYWdlIGJyZWFrcG9pbnRzIGFyZSBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKaW5kZXggYWFmMjY0ZGZlZTRkNTY2YzUxMjIxZjBiZjliOTBlY2U1N2VmN2EyMC4u
NmYyOTE3ZTcyZjcyYWQ3NDVmNGY4NjFlMjUyMTc3YWI5NDBhNWY5OSAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDk3MDE0CnpjbWRzPT41ZzU7YW1WbEhKVjY1M3oob01yR0dHZHA+P0RB
KmErNUB4VFIwPWhOfUxafGhLc3EoYyFyY25LVU4rdgp6TiZRWXV2QWVxYW9ZVTMhNHlfbzNNQlpO
aFJsUVlMUzVeMTxwYTAhX3g0Rk1MLUUyMjZIcGlRWF42d1gkWFBaQjUKemp5OGByMmI8VEReS0Ey
S15KSEAtQ0hgNmRkbkd5RiVpbmk0ND5vXzBlP09FbXxHND1wYExrQzRLUjE2WF4qLUwqCno3MGhG
KSNlZVRNQ3hZPWEkQCNCeXtHfkZgPjdfeXw7Qn53Q05PLVIpKWNMKldBOGtJX3s5Xk4xa2dxdHRl
Uj5xXwp6ckVyPHxmfXZAODFudHZfeDhGOW4lWDh3MHdgTEpGQ3l3fD9YNHxfKXlPcXpCOCUzX2kx
dz5NI05XWlBkMVNDP1UKek5WbDN1cSgrZ1IlS0VBMjNWY35rNiFHUD5SPzY4MnFVRlI5K1pASmNe
SmxgdlIoaVoxKD55MV9wVm4qNTx+JTJnCnpgMXtRcGtxVztNc3JlN3BOUTNNMXF2JFFeMFAwd08p
PykofXNTJjxAYEpSNH4tQUp2Si1qRFczI2B3Qy1ZaiVjdQp6Y0d0UCUkVW1RVTFRNVRPX1B0bHtf
Y3VUUE9QV2pkViUqJUMrSVRlMGh8Z3JrZTc1PWZWI1l3YlRgRVJ0eUBocCYKejc9XzwmLWNCPX5U
XjZvU3EmTUhudUtTe3JQfjxMYC1YQ1NPak4zQjB1VnFjMVA4IVh4Z31RUk0jRG11byozMGlnCnpD
KVYxUlEpP2NJZ2c8S2JZPyZXSEthbWtEPWYwKnpRVTFHJEx1eCt+ZGdqTlhSVVY2TUpDWDV3RWlI
YWo9eD1Dcgp6YkVUcWA5dHIrcT5EQE9uWEo2MElzbW55RUplNzZ2TmQ2cCZQRmxfflpBKTFxTSZZ
Xz5AbkZBfWV6XypKJlpPXnsKenwya3RINzJeV01eJV5rX1lPVVZTRFFMRkojSGdAfkF+UWRnVH1D
emdubzZ0OEQzeER6UClUS0NSRzFBZldSJWBECnpNa21qVXA+cGJCJjc0bD54KSUtWHg8b0k5azJn
MDI5cDJzK3YkKUxaTT85MXNjcWFYQC1DVUpfeV51ZUNlU0V4Vwp6bSp9VChVd0EmMnxLNXAySWhP
Z3VPbmZZVnpuYWRqJiEpVlJXXmJLLUV8QWRoUCpUZCVCV1RBbTQkcV89QDEhLWEKenIrcn43Qy1V
UUlfb2Ftb3JyQzhvb3oqI09aLXFWKmhgK2J6Ykt7TWFzcmxJX2EtPkJuZnVEKXdkZVAqbyZoSk0q
CnpuS2E4TWxRIV9PWUlCfDJrSVh6YE1MbTtJY3M5Km92ITBZYXlJaXVEQjY/XnBeWW5MYj9ONm40
KGlMKT9HTiV7dQp6dmFGKHFHRzFyJD1iNmtwKS1yd0pyUEAtZDJxcFRNd1ZaUGZjMW4rO2VSdDA3
Y0pzQ1QzKT5kNXZ4UHJidlkoPV4KektoPDlETyZaNWhMOClDTE8yUEw/SS1PbFVtakZJTGp7YUt1
OEB1MkdYIzt6Vz89NVleV3l2V15NSlpob0RvMylXCnpve0xPNDdKQlMjRW40a3pRRUlvUihRbn5m
JktSUVVKeEZCcXVEOCt9K05DUnxwM1R+U08wJWMjQ3w4e1FSNn5xJgp6d08lKk02fSE/XmtzYkde
ZXJiKERTdDNkU1ljUTdVMmFRPzl1OSYwPHphQzU5QVBJRExNV2dtKlN7Jn0xTGJRZHQKemtMZiVe
TjkmbnE+dmZgQmU0b3YkVU18K18jSkpHaW42PjM/VGBCPjZaYSo/UittbVlkTnZVejltb21we3Ni
K3tOCnpILWhZU3s+IXFhTlFvaF43TjUjRTtgdT5SYFBtTClUX1E+V05yPmlmQX1kWEleKXtWJHho
Uz1KUSM7V0FQdFd6MAp6Ui0wTy1xTGxFT1ZhMj5aXjw5ZmZTdDNmfEQ7WEMmYiNIe2lRPXo4dnlR
ZVJFWWVxT3lJcihaQF57dSY1PWw3JCgKemxDfmoqKWhAaTFlbnMxNDRCMF9CJjdmbnZuezxPRyg9
U2RzX3l7QGVxPzN7RXdgdWYwRFE1SVYoeilvPyhsKiFICno/VF8kelpodChyfEd3O1pvVHY4Rjso
bDdPUiZ6R2V5K1M/OEk9MT05T04qcEU8QG1RK3dGfW4xeCF3PUlFdENrUwp6UG9eMipCQHZSSGNA
ZnplSU9YYzt2Ml9ab2IwYSlAPG44OGpTPWFaNG50QVptSzdgIUVZUjNGMStjU2MmVWsqUSkKensh
eklVPVBqP2hVI3sqK1p+YWtaQ2JBaD5Ka29QNWpEMnk1LUVWWVU+JD5+bURqJCNoMVlPUUBLVTRF
c2B7SmI0CnpfeCY4VFlEWUxMRXZFO3YweStEbXdXJnw3b2E7UmBfUWdTfEcxaXZlb0xAQHNNajUq
bigmdTJaeEU9LWlWN19LUQp6TTw+JGpvREk8Wk9sTVpQc0QyKGw2Nj5ZPURXNks0Py12cisoKXYt
YmMoQTclQDFFWn1jTzAyanNlWGw4LWojSTkKenZpcVd7S0lkfFZFPmxsK2NIIWNDbklyZkZ1PU9K
SyYhakluJDBoViFlJCpWVCpCfDIhQUxhYSpZaT5VPl9DPjVWCnpQWWNYRUolJT1LKTctX0RTPUtG
UUxAVTNhWiFFQStyfU80XmlxfTs2Ym9PMzhgVGt4bjlpei0/MyFmbCshcUdJXwp6WUhKMkc9Z0xL
P25mOGVVIzByNztpJnoxdVZqbzchQHolU2VfcjVOYm5kclRCcEFjPUpgTVY8Ynd9fDt9UilWY34K
ekluaUlzXilYa2JtJiVvQ2cqPXgmYE00MVcrc2NoMTw1U35ZamJBd0xTSHQlQzVwP2BYZXl4Q01z
cl5WdDYzdldmCnokOXJ8SU5KPmlZTWBRUHwrblExJU5TeH4hbzNFdV4kUjBiWm0jeDtBPWVkIypp
ZGF0a0Q3fjFoRGdBb1VsfVhrUgp6MTVoR2leUm8xUW9gP2NSS0Q7ZFclRmBvZ0l1cSRuP30zREdw
QkYpV0UyQmgycDJsVlA5Pm5NRmJFQyo7bFVRKUAKeiowLT5JZW19WnVYd1QxKXoxS0FQJSM8Izw8
SCVUTWh8QCgmV0pneGJnTG4oWjBVMz5TSnJkYiNEZn58TUliQm5SCnpWKHw9VWk+eGQ+R2luaCsl
QnhLUCQqSTw5LSh6Syk0ZkReI1MtZU0rcj9acC0pLXFwV0h3eF5QO0JJQShBWjwrbwp6SnUyKmxY
fTA5bG11dlRQX0N7PSFTU2lgVHtxQjU0KX53SHFwcV5EU2ZhbzlPTE5DZnkoVyZsQT98ZG1lZ0hE
eXQKendLfWdLUmFaJVFIbn1RUF5kIWUjOGJNUSE0MU5VPW8pPihvdUI3Xio8O1QkdnI8dVplIXVO
dXE9bE4wZUhZVFlOCnpCKG94SUg8eEFKPSZvV345cF99UEN6aD48KSpqPWBCM3BJR0tidkAoPWNI
WGFMaXdaYEVtQzMjXzJgXlR2bWwwfAp6KGIpQUdYVnptKUxOfkc4MihyYTZFTmY5dlN0PVEkWGdl
OHRXISpienI/ZFFpYm9CP0xVMlFrTkU1QCRPOCQ8bmUKejBoUFJkUkowY01WY25uTV99YkxWLWNv
ZFIocilJO01YNiFPKmx6IU5AXkpsKVB9SCp9cWwqbHItXiVlJkY4a181Cnp4SXImQEUpQE5faHR9
cGY1a3o5PUBMSnhLKjFWZihPUz8+KjNjSjQ3MjtwNE9FdzNOZDsmISZ2eV5IYzNvOG8lJQp6ezVY
Mk8pe0wmXkw9ZSNqe1JzdnhFajVuQnMydnlET0Z+UyE8SCVeVF9eRytzTE0tQUZgTVlJRnQqSXs4
OU5+IVEKendBWFQ0TDdWNFhkUDlDO3wwJm09XihiNz0qQklmej4/TnUtZGI+JjkxOWlDKFlMQkkq
IzJ3N0hGRTI0ZGZpcGY0Cnozfkh4ZyNFXz5TMn1LYEFvVlJWYyZJbExCcUhXdSk/eWI7OXgqYHB7
aExUMmd6V2ZNdiZMNzxSMGVgLXklVGduaAp6KjVifFBzclNeM2FEK0Y5Nj85V3B3RUFhPmdzM0lj
ZTdPOzd4QCUle3VwMHFUQnw3cHtXO3ktdUJQKkQ3I3o5fSoKemFqcVZ8bSV+XlE+XjFfTDZ1ZkdA
QkNpSWhBRWBBe0pmfGFneUsjUmtCZ3ZUPkpCQ0olYXhReU50KWlPR2BJX1MjCnpgSUNMSnh6eUdi
OH5idiNkcDx8LSM8QHBKRnt7TXh5dk5iVElvRit1d2U5Q0RfQXVWdSExQjYyZDszd3dJWHhCKgp6
PV41LWYqeV55a0Z5QCEhP18/IyV5MnNlLXAwRmsjTWx0dSozVHtCIWQyJCFkbXZQM3FXbWlTSTtv
JWAtayZ8eX0Kenc8JUByVCVDUCFGPmlOZSladXErKUlFb05jKU19V297MSkoVGEmUjJgKUlJYmkz
Wm9iSU9FKnJeNDM8YHY1WSgjCnopK2FJdHU8fj1HQDNwS3VfQUQ9VCZ0IUxJNnRFQWYmckByMW1r
fFdAVSFKWHcoMSt0PHBGTzJGX21Eb3dzbi1Mbwp6WSQzIXN3NEpDdXBIZ2xOeHdPJFNfQXg2UmJB
Z2Q5YExmZ3FLYzw2eEIjNyp8PlR5dkNnezxRMmlMVGhEckR2QXEKemRMIUsyNWwqbklhNEleU0c9
ZkAzSF9xRS1OMm5eTHh0M2IpMihycVk2cF9CKHVTKyVKOUYkZm9uP1cocGdWd0B3CnolZ2s3X3pe
PDIkd3F1Xk1vdXVwMkdxYT94VU96WUw4VFJ3VShqcTk+RnRMV1NtUUJqUDUhcWhlVzVTb1FUc0I2
UAp6OWktJSooSVBkMV5pcF9MMzA8UClJYig9O2I9MSN3U05LeD5hXyRVQkpiYGh0UnhpZDQ/YHI2
NUthKXw+dV9GSEoKendUeE5hPUg9Mk9sc1FrVDlaKV4pWHlhJT0re21LRSQ+JmFfNERhfSVZdmtH
eTxISmVYPkxYUkxfNE40S2s/WHtBCnpuUCFMOUBwanJGbjVGWF5weHRVTUpyQzFeX19sfWBGYHJN
ME5vMDBvMmNvQ3thQCFqbmVkTHp2O2pNWD09U0dvcgp6WEpIMUV5TW01YCZtVHB2P35LP3U4QGBv
QFArJV84RF59T2ZxQjNfSlN5JE5GZU82bEpYKWVgXmFmNXt9LUJCKioKenokPkJhXkpDfnA3M19Y
Qlpwcy0kKVZHR3toY31aWG5qMHlqR2dwM30pYSNvSUkmI1pBU2dsYmBibC1YYGJDc1VuCnpadGhK
WnJjJHVBX1NwNHhST31zcXJNamJCcDtPenRkJVB5bkkoeEZpVkk0TlBVLWxMfFAtKSp9Ql8jZyRO
b0JPOQp6WGYoV0pkdlVHWTdscUxsOys7NV5lJUMkcUIzcnN8TzBnQyotKU4ocjJVJGw/JlViKVgz
JlVRcFI2MHR6dD1+ZSQKemE+ZnczaHI7fFJQdThwPiFfTGMkUWFQQlVqei0mWEQrJD94bCk+Smx3
ck0wWj1NZFhmTzs9PjZXdnx2PDIrTCpiCnpNdjJPWCNQUCtAaT8qS0dxUEdMaWduI3IoeX1gemdQ
SyReYSkxQXBxaiFRbVI5aDJRTCQ2S0wjXz9OO3ZCVTEwJAp6dzhtT29tV0AobmNQTC08dns2b1o1
ITdSYGJ6NXdkKlZ5dSQyOyN7IWNXK0x1I14tV2JedWs5fC0qQ1VGPzRQeUwKemFtc2g2XkA0M3lk
KXVFO2VKbmJDcnlRKTtpZ1IqTCZ9JGlAXmVrQCNSc0YqNG89bVM8I2dVTkA9dENDZS1LSjJOCnpp
Yz5uMkcxQXUlK0JFWH5JNjR1K0w8JTN1T0BXJjtHcDtOJU82QjNeRTcyYThzaVpPeUR2VURMMGRD
U19IRnp1fAp6Vl9wWTVZTmchOyZxZSslMEJpdDZ1UEs3USNpNFFmU1o8TkZvYWshe0s5PGxBTT4q
Q2I/NyF1VjtWdWNPe1ljMVoKel9FYT1+d1hMVUJsZ3ElUmElMHIrPlJObVV4PV5YOT1NLUNJYD5D
UTtmTDhhSSZ4cyomaVlWPXE7OH1WditCSnpuCnpKOCZhdURnNmp7V09iKWxhJjQoYl9ZcUJfRilI
Wj0rRnpaSWJ2fUVwJCRBO1g9O3U9N3NMJWxYZUcxfXB2OC04Ngp6MWQ7bT4/NW03JGBEIWg9YiQk
ZSRkRmd3SndMKTRIZyV+RGU3QmhyZGsySEhNfEhoVjtQT3lBa0xlflBFdm5KSXQKeiQ/bU9oMnl2
MWtZU3the0V5RFJDczY8PShWQ3I/UntUWThMWnhwcEghSEs0M3BRflQlKFl2YkhEQUE3Rnk9R2tQ
CnpqeT44Y3VNM3ZGTVEja2EpJSZGTnFhMkFtPHxReEFRaG8qYW9IISEwKlVRYW9sQV9jc1p4b2VO
QlFLRCNjRCZXTgp6cSowYX1yKzZAfVNhd2tKP1g+JCMraCtIamVFRChlRGp6cmw9bEE1ZUlmdFpD
aUs9bE9odz0qIWxnfUs5XmliQUMKekBeX1QkITtnemVxa1UzfnY+YVlfSCFGS00meHM8a1pgZGlq
aDNvU3A9OztPajU7eENAQVklWFVyIzl4YnJOKXJoCnpqWT5KOFhDNiUtTEY0T0ZzPCtMKGo7czdD
P1lZd1hxZz18PilWPzxEbjU1MG9abEJOMWEtPXkhKHgyUWxpMkJ+Pwp6RTNeVFB1M3wwZ0RJViNq
ZW5ge1lpTmVDZVE9WUwkNWg1YzFoeGlXYXpScSp7NSYwJj9SJVNWOEZaSkNMSWskY1AKemUmRH4j
N2g3SVV1ayFqPkgwQipxYHQoPD1BTUZueyhofVZmTyMzSyVOYVpwOTItUXd2dm9FKUxxVEJlSFNM
YTZmCnpQSjJtdm9zX2lKJWtQdFYtSCZWWnFkbEFCO1VnckRxNGgjREklbiQqbFdRYGZWO0gwVGdn
ajZRIU1URH16e3lBVgp6fEUxQWR0fmJVX3NkP3BuNXNCb3xVZXE7Uj9ze09Sb1BJdHpNSXxlZW97
cU83WCppUTVvNGNPUk9zbnd5SC0tQDUKelExOU5UdG1vPylfNztoR0ptI2duejFgQVZjYSRxTU9N
QiY0QlgpWHVUQntsM2kxP25gdTUoVEw0QnR1MDglNCNsCnpoNXEqPiElOX1NbDF7N2lJT1JqeDFH
eGNGJmMzezVNNGVpeFFBKHZXXj9ldFVvTERuZDR3WVB8XmEhNzwkYFZQXwp6QX1IVT4+YylyM1lV
Y31rb05DbCZnbDY/QHk2c1I+PjhzUHYjaFhjNXB8UDBHbWlyRCRPWDQrfHktMnNeXjFEIz8KelIm
JWs4enRedW1uYkVIdk54dm0rbVk1NDxhRDkpY0pWVndreG1lbmZVaCF3VWR9VldiJmQtSllzUEFP
OVZiOWRECnpMd0NVTXpfYERkcSFOMkdDanp3cUdWO20ociZfKClaPyhVWjZ3Q1IkSTRVMmVySlB9
TXt+RVNDZSglNHY+eSY7Tgp6RXloYTI4QlNrNDsmMFBha2UleDdAPXxKLUlrNDYlZWNiZisrO3dS
ZUBzSyhIREpfYkU+QE1HQFkkM1BII2k9IUgKejhyej5WK3ROSE9PPWFVJDRgbnNIbyNgfDdlYW5w
X3RGNjR7NlNnczdedTZDV1A2aDR4bTdHUDs2aWFFRUJ3Mz1rCnpSNmIxb3tjaEhyN2c9c1VeNWU8
dE9ndzxzbjY2N1l7JUZoVE4xVCYpKjklRUZoRztSOSt9cUd3OH5FNVBCM247fQp6JFFvYExWbGhH
WEFjNS1rPCRVZ2pJQCVLUkA5P19XZndWXkJCe1pmUFp6QSo2VVkwKFpXVD9xZlc+d3k5JjVnSkUK
ekx2Z1VMOUAzYXheYjk9R1cmaWs5O201YVo9XkUwOTtXK0lfN2Q0e0c/SHJ9UVl3cjtHQFJfX3xn
XnF8dWluWS0wCnope2dSJk9XKmRgVWopXkNedSNZYGRaSzRPKTI4fFFgYGBgPkdgMlYwM29MSClx
OWhVUiooYiRhZHFCXzlMYCVVSAp6SD4+bitJUG4/cSVETFRNaHRsXjJ7dj56RylvKzA9KD0mIzwp
N1o2QE00STdZSyUzPVVfbzRRa2k9biR+WnxJOVIKelNZbUM/PiZXX0U9XjVFeHEjWmRIJkZfLVRP
RHNVZGB0cXVReklKZ3N0ejcoUG1uTUNQJFE7aEBzd1dXemZsYyp8CnpqUXJFLTgmKlVNPlp8cjB0
LUJEYXlZfmNmRlc4IyNNeHl+PG5yX2tLam1wMjZPV1UjYTVWPFZ0ZFpfakxwfHA8ewp6QmMwSjNG
TnN6LWBDfHYkdnlRVm54NEV7P1MmRVRCT1RrYV5YbyY5Xjs+RU9wbTd8ezljWUFCWTY2V3IkczVM
S1MKemdzcCFAMSZiITxENzAtUDszZCZDI3p0c2d3MDNWYnlFaFYkY1Y5UllPITNtaWh+O31jbDlG
M2BaemVneG5aeGZ7CnorOzZLfSpHfHAqbWxFeVdmdCp9eHg0U1ZXWk99eUU7Z1QhV0MkSWw8VFIl
RTgpWXxffkdSRGpXLVU+VjB7TDctJgp6SGRrWDs0dFM0PHZrPG84SmBUem55Sz15NUd3Zz1QbyVE
VkEtS2U4Vzt+T0c2UX15U2k4TGVaYHM8UyY2JFV4Tn4KeiUkbFMmSmdnMl9GNE90Y1l6bVJIZG9F
amc/TEtgeUBrOFckKlU/Q0NpKCVwRj40Jm4kWlhEcEZJMV5wK1Z5dGdFCnppfXlpZXdecklzYk1f
VXppOFN4RUA+WDFub24xIzU8JmZVdEx+Nz81e0VSMihZWTwtVG92THlUK1M9YEokLVhJIwp6dyVF
NStISTk5QGIzZ2NGdHQpKkR4dCVUJmxXfEA0WVAoPDleaUNEQlYhZD5LZClCYlpIdWpWc3FkcFNE
PVg8VW4KelZUezllYmZKJT5ARXB6ODd+XjAkNS1fKEo9aXtfb0U1WnFLMzd4OWt5Kk8yKm9IKE0m
SEBfbnFyc1lMWSl1K08zCnpKQl9rTD8lYjkmaEJqSktTdVEoNV4tdzdKK2pHbmNxaHEtdiRoPyFN
dW04QHFBfT12UTBXSXs0TnBtTH07QXJBfAp6aiNqKHVEQW9GMmFeN3B1dkojXmRTUUVeRWRkMXE8
S3FXNlZNaFV3KmNLfHY2dS1rSkVUT0t0fFl4OHdSeEcpe1kKelQ0UW1rd0Q3bW0yayl9OysxJldY
Rmg7bXNAMHErcmpEa2tqYD9yIXptVXV+dHRxYT53eUtGeUlka3FPfGxrWmNYCno2R3RwfVZaKTFR
OFFQYjYyTkB+dWQ4fjgkYEx0MmVzSlpSdEghfFolJWZGJUJxTmVZOShldiNaNWVgJlZAZypUbgp6
Qko2bkBrNSV0aFNwU2c2YjdlPVVAX3E8c1IqPT03VSQpbjF3bzFrK21OVVpJNnFeeG1XIzhzVGpA
Xy14Ji0xSykKeiZRTF96PH0hQGclX3tgSGVZK3ZgeEJ1LWx2S29WaiZWZ0w1VXBjKWx3aGQtTHlX
OXgxZEtNKUxuaW9TPWlCdEM/CnpIfCo2Oy1HMzhVVGRURn5vPkRuRlg4bGgyNXFAPUVUVjN3UXJr
OVpGSG1zRzdRRHpyaXJgUnNsT05ucDNCTX5GRgp6TyMxNll4RjlCKFh5a25TcHA/QDQoZSV8Mjtg
O0Q9YypIV1ZBSnlJPClUcm90Nkx4eHkrRVpDODg+TVI2T3A4aiYKemk9bjxLZFBZNGV7ajJadVh+
YlUwK19gbXIyQ0JMOXhpUzdzSEB6ejhgTVpjVzwrbmQmQz97Kj4kRWUkYFJrekxQCnpyNG5ObG1g
Ty08Wm5+R1ZsYCUwb1d3filgeWFMMU9VPUt7K1FKUWFJSW9JPCNWX1h+dldsam9zP15PSGJnPmwt
dAp6KUMwQDRNbVpzTjB4OE5IMnprcXJ1SSVVNmZwRlFiRzB1VFRZYj58amU3Y25Dci1XX3B0Ozlf
NSYyMnh6Snx9fDYKelo2ek5zdWtTRXdZOCl4flZ6NjgyJXFWJFBuKGRNP2lyLWdyT3k3YDxee2Fp
fFpzfSNKJiF5TTc1ci04OSY1QGFJCnpaXkhIU29HXzRzWGFzejEyeWdYfntQRiM/UnlJengpYzti
T1YlaV98SUQzQCpZRmRPWllMcUtRdjc7bFg1fEc8MAp6SClUZmF0XlMoQnhsJDNINlVKVFB7WVha
VF9ZZnsrY0RoPHFMQj00Vjtjdk5DajF4UjB1Y3ZzT0ZKJihJN3g1UysKemAhV3ZhOVZAWExoMEUy
YipFQT9JUDZaaVAmTVokdU9ZQkE9S1A2cmtOcCYqQ29+K1pJdDJmR3grT2hPb3FUVjgxCnpqJGNg
Rmw7UzxIamIyJm9WSm9wNGgyQCF8RzxLT09kQCtne2p0enZEVjMlaTJ0TXE5NVlPSnxnaz9TM1BI
VEdrfgp6eFlVPWFrdSRDTEI2TG8qJUpmckZ7aT0wO3ZjQUl9TGp7eEZ3T2p7SyU9MVEyJkYtRiRO
VyEoO0lDOG1yOEQ/eiUKek8wfjU4VGUlemtNKCQoJFYpTG0pXyR+RWA+TFpNSXQ0NG8mJn1CSGBl
SWIyKURtc2JqKDQ1JUZ2QUFuP1hEPW1WCnpIUkJ4Rip5Sk47RyVZV0ppY2lqTGc9SV44LVk5REYp
NzQqdlRCNWpJdWF9JFgyPTxsbHJfTmhhZGR8KDtgaTBEKAp6bC1gZXFLRkA0cVpaYTIzb0J0UCoo
PCg3VztwVmlEKm99ST0jWCRyaik9Y0pvT1hoant6NGdicWArOGNOJipjQWwKekZWVnskJnE9Rm5L
VUl9U1hxV3k0TWZJeGtidCVuPkFZIU5SLX0oZDFRZSNOfGc+U19udHJ4fWFCKTR2RWAoOWx1Cno4
S0hQNnhfYGJWen1CPlc2aShEY1RPRylKPFg+bCM3SzlHdS09WTNeXkthOG0+YzBTb28pb1ZpO20r
UmNAJEVkNAp6SEtnek9NOC0mQ1UrMz0+VitxMDFSe05eSDZuYmg0I35QUjQlZTUlOXZUbERINFZq
K0Q7Kk5JLUZQeSQ+JXYlYWoKekVAeDRIdHZEeTw8QSFjfTN5LWd3RE9LYnJ1WWFeTyFxaWk3bHlP
ZCh5VTEwJHIteVZNPHV7NW8hbk1BQUx+SkU1Cno0SjF1bz9fVD0zWlg9RDJrTlg3a3dJWkNiZFlE
eXUrUSRNX1FmLXkhciRDJGRWeEMlRypsI180RD9mcWA9T3Y9MQp6XmBoSm15LW54STlUfG52enRx
WiZCYiZHTlEySlVVJVJpUjBXIS1pIVJUSiQ8e3J6ekZ3USNFNmZ6KzNPQkFtN0EKel9IJWBfIUc1
UFZSUChYREYtZ0VZdU9JYl5WQTl7LThoUyR7TU1AdCpeSm1IJmtEUHUpRyN8VlJ6UCV8bWo+S05C
CnotPlBoNT1KfDFTRkRHdEhuajhGKzl6akYqQzdLUjxCUW91LXs3Y2B6Ui1leHc8KEpBUXdJISQx
OFpASnxgI0I+egp6TGclNkh5KnhkTjx9RkQjV2FkR0cpSHNxd3NeI2JOVXJHTyE1PEYyXnRgWC16
dDxKNXQtdCNmQ0hxTXVoUC1jJVQKekJna2xCTntedUZqUk5HMWEpK0c+dColOTN4JEdgZnhlRXI+
X1NsdGwlaEQwYnczTDtgbkhMJCYzRDtmJUN9O1V7CnoqJTdNUiVYNCVyY01LV0hLOTgpcTUjJHEq
STtzKHNzQ2lCVjVzIX03Ukc3RHg4YmQtQyREKlh0KX5ffm5wRkI1JAp6dGRXWjduUHNjPG9FVn5O
NXcrfmJ7Km1YIVEyQ3gyeTlHTj12aXxzPF8pY2JidDVpUUY8fEd5aXYrOSs1VU1zJkIKenkmY247
VEZ9bmwxJTEydWlTKmRAc28haD1YcDNIfSMlPihvNW1UdSUqUTskbD1JWnJ4YjFhaDJUYk8/JV5G
ITE2CnpRSFpDK059fSUqVXo3UjR7Y1Vheys4b0pPJlRtQUR0ZTVZbGotUVRyUjZObHtIeGFlWT5H
cm5GKERLWmlhfWxjLQp6O2xAWWVMNUd3V2ZAKngmMnVoeTA5ZV81ZGRBK0UzPV5xRnV7K3lZb012
eiRITkx0QGcoREl4Sjt5WGR+ZHpIbyYKelhsZml1dD1JYjlHPnR5PyhtU0VJT084LXY9UilKa009
WW40XjVmYFUjd09JcnhrNzdVMHJvcXRQbWw0WVhldHFqCnpieUwwOHpFRCY1IzlIfD0+aHheZGkq
KipaI0BuZFJtRzdzSGdlIVp8KGpxOVdUXmdAT083Qk5BYCg3KTBtcTwmcwp6ey14WHFHQipAenpi
TDRBJktUbWFEPDhEU3dmczJ4P1A7ZSQ/dj04fGAxVTJENng3YlVib2IzI0dGTEp9NWdpdW0Kekw+
fHFVRyRTYXJOPD04MmQtXnFOdWMkeytheDA0RzVnS2BKS2VEfl9vOz5mWmxSYTkxejZqcWM3b255
V0szQE9WCnptfmBKV29EdWNSbkRSJV44QmIxUHdWaktXNz4lO2oyJkk7Zkc5UX5udHlNQmc1bHco
TjM4Wm0taFBTcjBPMnNNRgp6ZXUwRTxjQGIyIU5kTH01SXJnbSpRM3wpRGh4bEd9ZCpxPXxtV1dh
fjVEbzM2PXpZWUx2fDhadnF2Kl8lYGk/MysKejVBUyh5NDdzIzNEV2F5dmtWPnJ5JlNEeDktYlNe
dnN1byF6Kjc/MFctckMlZDV4eT5jYiRJVCglRXpkYyttRWJZCno+IyM0RVU9UX0jdF41YyZYRkZj
VSkqWio8Znw0fTNDM0ItKUNQSWE4cU93eiR5cj1YQ1RLUjJ1Yyt8OEFpbm1zUwp6NXdUUWpjfENK
KjIxWU1uLXsjQyh3KF9tYTN9U0hWYXhzNFM5dkxVQDhiOVRYQSpPeDJ3S313fE14I31CbDxMYz0K
eipBcGBIbnxCe2lXZ1Ykc2Alalhobz94c0pfRHZKflR6RUNwbW9leDJNODdUMDdzUiNxXnFYfn5S
UWctV3U4QjNlCnpsIUVMOWN9QGg7eGMwNDBlYiNUQ2ZEMSF3azlqTFUhZlNnK2dsP1ZfTDFnQGk1
LUQ0cygpLWJmUmxfZlZISk52QAp6PUkoPiVsQ1paPGdveyNJc0ZhSyMoM3tqXnVmfTNXPzFYdm9A
UDUkV29WQCZ3Y1N+fDJINnQ5TTM7Sl4hKUdSZkUKekdgKngralE5RWJzKj43fCNIYFU8TT1GVyZP
WnIqVkY0MGNgYlpuJVRycjFZckNWODlNdCUtaEpxTCVfelBeNHFkCnpieFB8OyE2S296Q1l+MnFL
NCVQWkUxRDNxM1pKJjtHKU1RUE1rISZYTzVTcm55S2hUZ1lHPihiazcka3s1dlBgSgp6dHRFKzI9
U0E4QT5ZPEc0Z1F9PFVvUEk9YXVlPmQ/dCQmNDNud1pYcUA8LSpmZWBBXnZUWmBadCRCNDhNRjZ+
UHEKem9UPCQoIU1mKEhPWj5AbWt6PEA7em14eTQwJDQxdHBRWUxoYF5Bczg0dlFoV0J3dClkV3xs
S3NkMkUlNlFNd3t5CnpqJUlwR3t6ZXwrSFNabmVOWmxBJGpIMkdDJnw1TGN5akJtKW01V2olN0ZG
KjtVR0E3MFM3bS1KbTUpPHJFQEVCcgp6b2A3NyZGeTdFQG15QSlvRX57OCk3cnB2UEEkZyF3bXh4
bHBFKG4hJGtEVDlWMWcmdlF7QFFsPTc8R1Mzb2dKY20KenIoUnslYV9KYzVHPTR+XmJ0JHR9SzFM
bHNxVFBqM0oqKEIlP05VKW5Yd0NaR0g/cF9BSWAwWk1iKmJHY21DPDBfCnpsfTlUX2VeO09OYnkt
ZDVuemRZU0BmNStebyVffiRZakgpbjdgMTwmRyVoX2d3QDB+QERDOyQxOUMmUl5aPGd4Mgp6SV8t
NzhSejZPaGNmWVd7NU9kVD1mNFJtODJZTCROWnNGJmAzdG5xflQyO0JAPCZyTk9xazE1MVcjekJF
QSk8N2IKek9VRWRHQlhzcVJIVERlTiEjYlUwZnhRI2VsMFE5bFZxNmVpaXFeKyZiNklyczh9Zmc/
eGBkc2FTJTdePnhvb1l5CnpTblV7UnM8KlUhMHktOURlaGdpRW8yVkUpbyVIQ25KJDIkLWx2Mkxj
JnJvaWFpJT1fMT9EVjNoTU5wVjBNMFRgUwp6V3xgWk1qOChTd1BMS0pkd0hFcGtKRGNDZnBwJFpY
YFNVbTIpWFVBZzRMU0NGbkszSG49ayNefVBiRHdZUGxjfn0KelQzbChgKSRUfVlPN0JQR01odz1v
bEZ2TG5oTmhObEVSfiQmUlZwJiReZCVHYWhWPFB2d1paOFAwNiFYZlF3Sk9QCnoydlJAQ2NySUVv
KHN4OW49USRCWF5uS3FOd01xN0NIQmJrfEVkT1J7c3FIMGVCX24qQkVyQm9VbHpMP3YyUm9sNAp6
TChudytQNnQyWkkyWHEpQ2xkQVg/I2khNitDUnRuJVdVTj0+ZyFwTEZ2OCh7QUNjM0tYdCEqQUo1
cCl7aU1USCQKelJmKDAtTjY/clJiQkxOWmltRSVVeStGanM7aUZpaEhDSlBsMU1XSzM1aTU3NW9t
S2wlKksjVj1QWUl0Pj5FKmExCnpFOGtNJU5adS0qP2AoJFpPWX5FfmpAYUppZGA9ODh6YlRTKTN1
Y31kTHY4S3NBWDw3cW4lPStJJTFiYnUxSWlVJAp6PVoreCUtM29UZmtEfkxQU35MajFVWDwmVTdl
JSFiTGtsKEteYHI3V2JsSjAoKXtCQ0BmXlMjV0B9Yk8kQWVNSmMKeiFQMnhTaWVHaFVyVz5OcWtE
JHxIWj5hKilRc1lRfEJvYkMrJiFRR09ZbTJqIzlecC1JU3REdVZ1T3VscT4+WkslCno1JD0kIWBE
JWNvcmJTVGZNKDxyfEM5ZiNqN1k8QTBgRW4hRj8jVmIyeS0+eSsoRlVYQiVaeU10NkskQllEMD1O
eQp6REJfZG5NTmlZaz8wcFJUeTVtUX1rLXRyIV5Efk9wJiQqNU9RQSh8SXpLeEwyPz89YjdxX0dU
c1oxZU84OG1wczMKeih6Rk4pUnlQfXU2M3lxMHFIWl84dE42XjNIR2RyYStaQTszYF9ZazkjMzJ4
QTxAPnx1IzFRZWhxQU96MEdBVyghCnoyVmwzI001cXZAaDZJTD0tOGwwIVN8eFUpUDxsYUYhRFgt
MlJOSio4b0UlUiF2JHAtWHFgekV0Z3pBQ3hHWkMzOwp6RE1uNk9MfTY+ejgyejxjYVpjKktSJDgl
TDh3K2NTLU95O1Q4PFRkMXpuQVojeDgqfm1VYVcyTktFa2BnKFhzU0EKej1PPyZRQUwxQ2drRnhU
fTxuXk1pYEBfO0lUcldGOTY+RiU8NkBOPDNzcmZQXlI4JlNgamx8fGo8aVJUJDMkcygyCnp8SEBu
T2F9TjZKX2l9ZW4pfWhBM3MpbVJrbzhQcSN4PmhudTVnalIpR2xzOX1CV1VGPW5JcHpfTk1GPE1q
Jil2eQp6KlhjWHFHVUR3PkorTkNQYFlFODNeMTU2NykpWD88PWZ6TX0pNVVfMDR+TGk4a2w0dVpW
O009K2ZaK1l0I2klQU4Kenh2eUA3RTg4PkIyWitFdTZoODNMbjd4SVZUdXYxQ0UxbmBYQk9HeT9n
SEBfOFh2fmlAd19OOC0jd2ZDZndzI29ECno5RDlZJmtEPTJWP0MqWjlmfTMqMjViPyNCaGdpPXg9
eXN8Kj5WMzBQTGdaQllZRFlOM0QjXityQ1pNK2UoM2g8ZQp6Vi0jNUQkYlM0N19RcFE1N0BySUZI
dT9pQWZQUnctJkRaWT1vfGBlVzI8UCslKGdYY2xaOD4pR3tGJUpyezdTdDQKenRVND0kUmgtdEBq
KjZeRUB1OTYzOWV3P00odWxOQEl+blI+c2JgK2dpPXo/fHVALXwtdH0mKEFTOTZSYlItOV9RCnpe
Uik5YVZecHh8O0JEUT9uZDRNdSU2KjkkVzhjdG85RmY4RUArPFgwMz87Jjtle1VoYj9ebi0qPCsy
Zn49LXxrfAp6dmdjRiEyJTdETUg+Y2koMCg8cSs/UndVcChkQDBnM3VtVDVuTnsmcmMlMEtZWXRH
aGNNPnpZViRZMXVHZEpPV00KekZ+c3ptTTtfQGBqJi02bFNBTFpHb2FVMkxPbDN4P2ReeWN3VnU4
dj9MdU9TQHQxS0MlczVfeXpDPmYyRTdlT196CnpSeXRkUFhRP3J5Nmt9NDNAUiZiYklaM0dQK3Mj
WCpNKV5tLSpJT0VUTGU8RCMrdUxnYEJ5Wm4oLUVwcWE3MT0/SQp6NlhoO05eUlBSeFF+cCRCaVIl
MTZtMHd1QU4jfDZzI2B9SUs/QX02VjtIbF4jK1FSZkVxcVEqVVFvU3ZUQSYkMTcKei1ZZklETDJl
OD1NSEpVLUQkZzU1VTVab0ltNmZRfVduKXgxZ0pOJD5UNjVpfFIrJEpEPmEmMEF5Zzg3NmJBUCp9
CnpHZ200YE5vYG9me284eHRXKTxLcCFZUFYzR211fDs+ZXE4bCVMKzxRem17Xj8jSyFVViNyQDsr
NlBhPF54fUNrbwp6QGpPT15PVis8P05RYE5FdE4mMVhze0hPQTlJY24lanJ4KTM/ci1FPWhhVnF9
QD0mPCp3PHBfTiUrPWU0bj0qPD4KekAwak0mcmt3UjxAQU0kLSFYYlQ7XlRSNlc+Iz9QcHtUeSl1
ZV9IOWFEWVlMLXF4cFMqVDNTRGYtdjlPfW1len1zCnpkdz18MVF8M2V2bkhpazs+ZXMxMkVweXxA
U1FAIyNPV3p+cSZgczwkcktFVyNUMSh+b3NWQSlgP3ttSCRaclZgKQp6WmNIdXA3P29JLThzU1Vw
PSZlZkt1aUJgLU0xK0ZIT08mYE5lRlV3MSVjXzNJa0E1OzViRVFXcVRpaD9SaHk4dTcKelpQMmFE
aiEtUkVTWlo1RGxoWnl5VWYyejFKeF9jc1lrPURgYnZ1XklfUDBhcjk/Vyk2QXh8R2N0OUtnYURK
el9ECnpEZFY7ZEJuYGF9SzYrfEtJM2Z6QFJQZjk4clN2ISZ3cjY0PStUSk56cXYpLTI8Sjl1S3ha
TjZ+PVN4Tj9uaCEpSAp6bEdgc3ooN3lSe1c3TFI2PE1mcTBRZkQkdEBeNF8zRWx3UXQpRShtcmQw
eEpVI2FYJFJ2KT1rNit8fC04amYmPXQKenFMd213dUlLZ3FiYlhvJipiUWA1azVqIWQkcC0mJlNV
JVUzVU1qVWFyQlpoTDklT3dadHUhdXNvU0p8NEZ4Tz5ECnpkY05kMSNqaj1NKU5kdSRlVkxid1FG
fm07KC0pJDxNUlg8RnsjYXlhPi0/PnBgcklnZyQ7KH5PVXl1KUZYSnl2TAp6Y3FaO217ZiFTNzxe
TyFTTklVZkhEfFhHWTRTQ0tPQjBXRiU3QSphckRBWGsqNnRVJX5FXn1GU1YqYUp+b3creTQKekVZ
PHJqclc8Z0VGVytUP25eQlkpcn1gPkkrMUVyJWErWihINmwkckxzRnBINXViOz5DTyt3Rk9vPDQl
TXRlWWtECnp5NCpnZndRWVJ8cTY9eXE0bVZWN2Ume1pmKk5BYXxDV3Y+UW1rLWQ8JUNVaUZ0NHhI
LXVePSNHQFJ3O0VaaSp3Kwp6JFhyZSpYdTcmQ0s1QjM9aDdzZUVlKkl8YmphJCtpd1ReNmVkZG82
I0R3bjVxVWR+eSlkdSh+NXNDO2B2WmBvcnoKekI0JmN8d0hFbXBmOTZ6OWItaXchdDl2cj9OSTJI
TXU3QmZkaitmO2NhU2pmb2podU9pbXVkSThGQT1BcGFAKm9ECno2U2FDWlg+VHU7azVmMFQrUS11
b0dyPXJ3YEI+QXFfdHFXYmloRXtpXko4dDdjMzttJHQ4QVI9blVqKnMtPkZVWAp6Kks1VCZGfFFs
X3VmQ0hQKGl7M2RFQD9+T3NaRV40UU59c3Q2dnV0U187K2UrZXhxMDtUJD18OHNpSXlhKTEreioK
eihkMW42SkkmUkthSDRUKXshTEUkQkJsNEUpbjIhQjV7Uk8zc3wlZ3BXeytCNSp3TjZ7JCRoWi1n
WiREcmMoX2ZXCnp7eCZPNVQmfSsxdFQtbUdAX05pPT4/XztwZHVHSmprVX5sUVlLOFlQVFUmbDhv
Vyopbl9idEQ3Jl9rQnFrNEVwKgp6YCVwXmxNYEVzPGJyZE9ILXN3RzxjSE8hfUtMdX5xWTF5c1lD
M2Q2R3pNKyZgMzBoUiF3Wj1JP3pwZ0RecmNINj8Kek1YTiUkRHoldUJ5Qk58cSQyVm5XbEBWek4h
ZT8kWE9zX1JZJlRnQ3hvPT59JlVqY2J+S2l7Y1ZzVTcqODIlPCh2CnpUJGM4O3dpcHsqbmZiaVlH
WCFzcikjYypVdF9oX1lyJHcoX0dENlhgKlNnMkBvUEk+JnE8S0d4K1lmJEJlTkZfQwp6LUdyfUZB
bTcqKi1jNGBsPnglakxgQzc1UiVRWnQzWHtgM3tvTi1GcHpWfl9JJWU2PzlHdlVVcD18fEgjKldi
eWUKem5+KEF3QDRNaX5UOEU1cGswcEdreWErMH4wQGo5ZGNCSiRlVEFNJUJsYkQxM1h6MD9raWpu
YyRgSjVQe04pV3FlCnotZypmRD4hOEpBKSNYTzBhbjVEdVpoc0ZXcmBJWXVMTlZFUl5CSjdsbUdW
Yz57VkwoNGxoJT5sa1pJbEYkWGdvMgp6N356cmA/MFk+fiYkeTl0Um1PdzRrSHcwNm1pa3VYUW11
THg+VEZ1N0dmRkFlViVrdTFyPlJrLStCVjMlQXAoekcKekRUMm1YcTJ4LV9xQTI+KG9MVVdhWDNm
ODYhN1BLeWRZdzJJU2JSN01fNEJZP1Z9dGBEaik8PnxAVVVEYiFVYTQzCno8N3VfdkNuLW1fJSM5
I3BFN2xrWXppTFl3XlgxfnlWcDdQPFFzcEN0NWEpMTd3elBYQHh5Qyo/Q3tPJlhPVUFDSQp6T3Z4
QlU7QGBeR3A7KiFFb3xZM3E8bnxoOG56RkFfZElhcz1xPnEkWG1Lc09takRrLUx7bTh5MyhNRTVW
OUhENjYKek5+dT9gd2o7JjlNQ0hCS3BUaXdSQk59MXR5VGk7N3FkczNnLWRrOUA/I2IqP2sxZl9V
LVk7VCpzZGRzc2Y0O15UCnoybVRBSVdAbGgwVElPU3wtYWZjbG5AI2tmPU9lR040LVNZRjxVMTBh
N1RSbTQ9RTJ0KTtlc2V4P0VQflRRfm9hSwp6Xkp+ZlFCZGg5QWBVcUxMOUxjcCpzPCRuTkxQY05p
RzV3bFppJXJfMXJQNXh5VU4lRFlaODBYR1lnIVp+YEFHOUkKekhvUURIaihrVkBnN31YJWE/MCZU
VzxFNTA/JU47blpNcDRfQn5SfkhiTjI9Zm1LRFI3bCs7Iys5UHp2UXA/RWo7CnpmZiNLO2V3S3V7
WlBmeFMzPnZ9d1l+b3JeU1pZfk1VbThJZFFMVUhPPmRDPnA5e1AjfDl4JHxYcShlIXktNHx1NAp6
S09iKz1VYlRwQzhQVGRnPVZ3SCtsK2tsS2ZBcD9Ed2xMMVY8Kk80bVljN2BGNTJeTC0qQHhkMyVO
Nm50VXp2SWwKeigyfGpWcS1hREtDbW9mT1REQ3AhRjB3Y0cmO05jIzJZVT1zaVBmM2phe3B2e09R
aW07NUVlfUYpNXpSRCp9Uj5rCnpvblBeKDJPflh2a3ZzJUA+SFZyQHlzKmJTbkM2I0JiPV9AZSpK
RyU1b0hNQDd7WGpHZUBkaXdOdWtzWlMwYmo3UQp6ZU1pVFdHM31FcD9Vey02TS1IcHk/WT5+fj9O
QmAxOGRzPyt1RDxvMV5WRk9KKG50UnYraV84JnJDSV9qMDhibVgKejkmRjtzYCtiYXlTO2hSMHRU
U2V9KGZSWjg5VF5RPjd1VG5DLTEwY0ZtJHU4cXNwUm4td2p4PE9TVjhEOXVaSjRsCnpeOy1NazFZ
T08pYzd9fDJBaFFpI18wKylhWiUla1ZycDJGK1FqZkpiLTtHTVZyS1A1JUpfZyY8PT4yP0dZT2tz
aAp6amlJZmxUXiNsUHAwUnJlYFB0OVhxQTAycjVOWGJ3RmdhcHhmQUJnUStQXzlZQXkqanZNO3JY
b09KOSNNb1pDYCoKej0/bGVCXmUra2U2e0xBVEpSWU9IdFVoSUxKdkhCOSR7UiZCK2drMSF0KXFg
aGRQfXVOSVZ0NmNBS1JGWE1lRXxCCnpBLS1MMmpfZDRlJjU/R3dYZ2QtTHckZH0xb28oTl9fMnFL
O2FxOVBFLVBuNjwtYT1ZYUYzWE5re3J2c1BwNmxEWgp6IzBaN3t7JW47VHA7LTF5RWlEPG52USg2
ayZKb1VAckcxdUordj80PThaaSNvKkxfVHEmSmF1UU0+YGdyQ3pCUyUKelo1aXpJWHNoVX56NzxS
NUJHa04zYCV2XkpRZXBeNTFeP25yJWBHRi1EaXh1bWF2O0MrbShNME5LaD4jaGI7akNaCnp3YjVR
I180K1A7aVlkblNvQXpkbipESz9LYkROcjs0UFQke3RaMWlMUEQqYmVKXm1wbmtNdVdwYFJ0cE0q
NWNEPwp6UElCX0dadz5acEJkcW9FdHImWDF6cGooXyVaSDtzKG1RRX1fXjkqbzlAPHIzT0VjPCsh
UGBpJCtQVyNGb35AT1gKei07ZDQ7RVRoPFlVJj5QQk5VaXM+NUBPMVlBKjF1PzM2ZVFmWTkxO18k
YFRfS2thN049elZmZDBFak54IzlCdXZQCnpQcn1hZ0JrMGBtKGY3RGl3cTZuYmlGd09rKlkpIy1O
UTltYDVpWkptJjlxQz9gY2Q9X2ttdUZYcTl9OWttbUdANAp6MFNtcClrRTVmKiljMkg8KXN1NVN7
Y0tqO0gwJCUtKj8xWDg+KmYzXztuI1JFVWx8P0BZXmx0NUk4YXw4SjlAZ20KelRVJDhOVGErISEo
IzZ0PXczaGRGT3Q8alQwdl5sVTcmMENtdiohYERxYz9Oek4+OGRhMmd8ajZSVjl0TCh2OCVPCnph
UHtvYHJRTGt9S3J5OTkoNEk/OD96aUh9OyRPXl82MWlPX0xXTiU5JWIyQStoaXsrUGtFKSZuTWde
JHxqXzEzVAp6ellEcylBWXFYfjdQR05OYkZObUxsUlBlSm5SPmZxZ3JjNkA/N0xYcyVlKX1vZVle
UXVSJEJjZyVVN352X3RZNVMKenpeciljXkk3dXFDdlVqLUleXjdxcVY7bSM/dz5xMGZ8VHpveyE5
c0NuSHh1RCZDS0NpVU95YFAzLWZeM3BuTyQpCnpFdnF4bmk2SjUjRy05dkQlPTd3RHY4ZlpHaU0x
SzI8UmY9OW55ayQ0TWR6Q2pjc0YhNHBiTysmd3twamp7aXUwZAp6QCo9M09yIytKUXZmaGZ1cX58
c3AkQ31Qcz4zKylpbktpelhIfW1tTDteKmd1bnpXT0NCazZPY0I5emRCJU5KNj8KelBVLXo8Yyt9
OVE7TSZla0ltZk8xZXN0b1hrVyMpRVFmZFRBXn05UkxnWCFNKm4ocCQ9KUg/TFNvX2hWPD1ubXBy
CnpXb2E9S1ZpV1dXUHtiamc2emxoIVglNGxAXmkkIUM9YERsYiRoXzNGVUtJWmdQayF+K3tNMyM5
QDhyQU1rPW1hWAp6d2ZXc29gJUFHIz1jRHd5amkkczl5eGRUWGgrT2h0VmRHYVh7Y29xPE82eVU3
X3QqQmxfdzZScWQqNG57QUA0bSkKej44MVo0bkBkeEtKWC1pJEh4NlleRkNzQypldXVNXlVJZzxF
YG5AYnE/TH1nfUJYTD4zPmVDYEJwITg4Sm1GbEkwCnpYMjd8UCRPR2FMen5tUXg0YGp5NHhlVXEy
cz1yUUAzcHxIJEs2K35QYWBONU8tPSp5KVB3aGx7QUFQcG49dVV6XgpSb156ZXw8UUNfPVAlWXUp
e3tSRkQlajV0NgoKbGl0ZXJhbCA0ODU0OAp6Y21jaEErajFPOWFeP0djTVZRUkVxUmc2WSg7UjdL
I0BRUFBrV0VZekJtfCh6PkR9SWtMeyUxJFZwVjEtdmtJNGYKem4kT3JaVGZPUTdeYT1XdWA0U3pF
YUYyLTBhKnJ4LWRpNzlOODZMK3k/c3BINXlRKzd+WmROVXVVK1ZlZ3JmPUd0CnohVG5kKSo3eHE/
XipgM0wmRl9Fbm8ybWMqYFlaU1J5emUmTT01YnlCJjBxYSo7SyE4VHQxUWM9dD0rUkJHRE5vcQp6
ZkE7TmY3dyZiQyZFRlBtSDYkM21iPVk/Y19kXnNIOTQ3RUEyZnw/aj1oYjVqOCMyQXEwJXRPOWk5
Yms2ekZZaVkKejI3OHUzWEN+O2omdGdVbkRfKk9uUDRkV0wweUJZVEhvd2ZYSVhIQkFASnJibzky
VzVCP1FlZk98OWdxIyVMVGhGCnpjJlpMQjdsbkFuKVZ5MytuZSNqMV9xRkBreEJnb1ZhXy0qcmVI
WEprSSpaX00rX1NtK1Q9Z3hySHg1SE0kOXsmRwp6diN6Z3ktb0VfcCVse20/R21eb3k2SlI3NTNf
bX4yfERJeUhaWFc3b2lzeXVVNVZMIyFxMXRUd1lXYSE7andOdUgKenV0UDhON3tSV3AmRnI+TGty
bFROVXE0OXg7bWQ7aitySzZkekUjLVpwM2wwfmRiX0ZUbEFJQ0FWdyVeQllQO05JCnpKZHQ5dCsm
MSVoLURWc0BGY3t3NCkkUFdlR3tmM3cmNzJjNnhFJjhlSzx3LXpYUUNKXlI1IW8tOWxIQy1rfC1z
WAp6enVqVCs2b1h9NkZSUkJHTFUwKy1ycnAmMlVBMnRwTllFSWJwU0pWKmZ3TmN+RCk2ZG1taFFN
KEUoTSRzUkVEYlUKeitRKEo1OW8lQnUmTmZYYUNIWStRUUFNbihfRUNaaC0jVjxESDtZSE54dmt4
R19mUVkreD9Ybm9acXZESEs2ak52CnpaZnNAemUhZTtrdE90WSYrXm07TFImPVpJYj5IM2Upazt6
am9obz5YRjAkRClWUyp3bzZRYWlXalNEND5mNmU8bAp6PWxnfCM1cittbW4kN0JBWHMoLU92KkRe
WENoMUk2dTBpO2JGSm08bDxhR3pKP28oNlcqTH1rMEx7JmJAQDdkcmsKencjJUJDR0o/Z3g1JUJ9
czUlOHNta0BwNighRTV3cURURzlfIWckQCspdDdhTHd3MVV0biNKfl56RTV+XjZvM3dXCnomdm90
SUpnaj52bjMmQ29HQnxnQU9RSnFnaGlIbzBAd0clJT9zIT1aK3xeT20zYytIYT5HZ0hZRHAmYWA7
O0lGQAp6Q15YaypVYG9vOUxtOHw5KFotTnh3VVRFJEs5LTFrcEk0ZlE5VW5za25zTHtyVHc8cFJV
TiQkPGVFZz5nVDQ4QTgKelkkQmp7PlJ8NXFrQ3NjbGJ9aUEzLSZYQzdPZFNBPjFWYldmJmE3Vk5z
UkI8JXYpQ0BgcTEqUThTMHZfM21xLUBWCno8KS1WYTgpPU9RTkMrMGdrTHw0NS1yUjJUNz1efFVY
M2JMPGdnVigpbi10Z1JSXmhGeVgqVFMtKj0qYlFfMXRheAp6TjZjfCkmez1qQm9FVkpJWmhpODw8
Pld0Jj1jJlA+blQyNWd7SE9vLVoyMHFee0BIRCs+dCVnRjszbFVMZz44JTAKemZoOTlpOVdudTN3
QiRueXU4Y1pWXlp7fWNMPkdEITJhbEZNYng/ejBHV0Reb0lFIUhTN05he1leKVdBTVhaNW4/Cno4
UndDKER9Vno5ekhMeWFxfXAmfmxDPERecHMwKWJwU0phWSFaTzdyIzMzVGZYXnA7emgkXko9QEZi
PyNoZWtpaQp6e04lMDJORzdTNXYlWG54dXg2OE4rVndhQGZPS19uQCpDdnBPWWZ0RStCYDFuJWlG
cUVWPShlbVczZ1RAbzArZXsKenNFYiRAYXcyeGZEbF4oWTxMT0k8M2A1OyM/SVN2aVZEfWJsaEZJ
QH1OMnJJZVZodEBCSSRgJWRXZkF3eT1HTHQrCnpjZngzKjNFSl41aGBXOzw0Ymd5ODEjZFJVZTlw
YDhaTk5xfCZOdS1yZitac2FaQihpNDxgJT0hQn5fViQ+SiFJaQp6aHBkTFIjcWYzNyZpWG89Wmo1
T2I4K0QpOVUwcHU5Uz1WbHdjM2JsX3VjcC0oSmxtVFhsa08wKDhxaSUkUXYtTF4KenRmVn0waXBL
Sn5udGdINDw4RXduVEh1PyQrcVQ+WjVTcmFPZH16Mi1VUlUmfmc2ZHh5U0BPSU4tenNjYiQ1OCNK
Cno0KGdEYVBnVVIwJFN5JSsrZDMhZWo5WHJIeTxYeD1nPj9OcSN4czJEdSs2NGhnYCN9amBFTVBE
T3NzbGROV1B7bAp6QzZeOTthQXpJJUcoQE80RSU0PVNIU2MmR159MmctPntqOUUoN3BpN2I4TnB0
XlVmbUpicWlPY0EqMXRIYnY8ZXsKenJpQ34zUUVtTFo0a2JrcG4mSiVAXzVETz5nRFVCSW5wU2Yl
Qjs+elBtPkUmT18+P0xAZmlZblpnUkE9NSY2fE5MCnooM35mMFkya19tKn5uV0p3IU9aX2twPyZD
KlclS2xnVmNhNnpCSWAzPCsqIVQ0Y3V1KW1rT25VamEjTjQ8bVMzVwp6XmdgKFcmfiFzZCg0R34k
YipiPmE+VDc5RTl2PDhsb083TCFkWWNjRUFhe2hXKHwyfDVuRU9QRDV6UTdnWiNfaGgKenJjR0Jn
ezZZMnNJRTsqfUdwe0Fnd1VKeHZtPmhmPUdPKGM/T1o+UTZ2cmBBdFBRIz4mSWAmS0lMXkskd2t1
fDl0CnplNGBfYDNkZWRGbitTajgpUVBKQXtiPmFLTnRiJENfMUw2PDtGRF5AbE9pbVpiREEwZ0FR
K2Jae0hPbXozJE9vNgp6aSRKT3p3SCVnXjIqWTAmU0lAcjBudG1HYEk8USZKLVRVZT4zbmA8UkVQ
YyUjO18pcnU8V2l4dSpXKjU1aU5pVVUKeiskS0RoOSR+R2JUaDxraU0jdWhCbWo7a34tKkdxTmYh
PGpKeVJKb3FAMHVHdzZfI2tUcT1+MDM9dEk0XkBBQHo5CnpiV19YMFNPfGFZVkdFJTczN3pgcDVy
e09LWlBDclAoaWthWVRwLXZDJWtHQmVIVnpaTUlLdjRzbyVxLXlJKUNgPgp6MjVoPkZxQzJBNz5f
Zkd9ZSl1VFRMYjkycmApREtmVH5BJDVnR3RaKDJKNn5aVy1aNTkwJWJJdEVnbFRlWmV4JFYKeldn
WjhFMEw4WmBZVVljfEExZ0gyNXkzdj1uJH03d1F6JXZ0WVVCMlo/fWo+VG1TUjZnWUUrYXRAKz1E
Q0w0UTFMCnpxMH49ZytQST9seH1fPF9VZzsqUkM+KUxIaXskS01JTTBjZGhPPEoyNm9zT2tUSV51
WXclNSg8I2tIVEJ5TCNUQgp6Qn4wcj4zMyo1bSE8dlRBdmhXRn1DPkhDcD95aCF9PFZvUz5LOEpg
SCYwIW4jY2hqVl5LbjFyKXtJSUZ8RmtQLT4Kek1ga0NrOG0xXlZPdC0xZngrUkpVUX56ZU1jYEBA
MUE1Q24pa3srYFU/fV5UeyRLLTM2Q2dgZ345Mk99WV9SU20yCnpNOWQlKXohWFQwRDliMUJHezc+
bVRRPGhqWmkmdThXWU1RQ2hrNmk8QSsmJkBHMFdaSWo0dEVhXnxRciVMXmJLJQp6UmRwUjNDa2ZB
fUhZPUYmSyo/IT9XbitDT3U0NH5WZkdpPj9nTiNLNHl0WV5ocjglcUxUcys8KFRWYWZ0dmtpekgK
ejNCZ1lsZ0dEanQzNFE2MTwrNTVNazVUMmZEPi12ST9qfUAmd1ViI0dINn15O0Qod1V2Y2ZwfWNe
TTM5S2l6JUYyCnpqel9AMkh9eH5iVjNDN21iJkZLcGJ7blpqZShqVCFaRHZ7X2BQRiYxc2d8O1dB
RTVQaip5XjF8WVU9RCgpa0N3fAp6dTB7ZnlIaktsNEo7TWVgU2BmdlIqPyhCTFJgUjw2ZVluKF8p
akJ2V0ZkN1MwfDRefSEyNm1VPUBxYDMqQXMkUVgKejNAdHt8M0AqK2g3ekgqeGNnNHklMnBhbnRW
cD9wKjxiaklZZkRje2xZO2o7cWpzZyVgTH00ZDB1RH1DTlBDdHgyCno5eEA8dDZseH1jeWg9alF3
aWVoXiQxeTVaIUJsIWQmVz4rTWxzfiF+elFNZWRYSGFOeFA/fHlBbXVSSz1DZGN6SQp6bVF0V3Rt
cG09Vkxse1p7LW1+dUVsaFMhOGxNKFF5IVpfTmFqQlpkRFY7OXk9JFFFLXY9JS1DMWF1azU+RWZr
JWsKejEkJVUkbHZwbG5vTEd9RyZVdUhEJDg1VWttVlVXUnoxSk0pai07JVU5aGgpNSshT2UkO1Fn
X3s1RHdidjJnSExLCno+K1Q5eDRpSE1uVmk0JVYtXz56RkU4Pkp8dkckIyllb35VWE9OVnd9KCgw
fVk0anM2RCMxYSlON3BUZm09UENzPwp6QzdhQ1c2Ozd9YVo1fm0xRlpIO0NmRV9QVyRWSTlsOzNK
bX1PeytsKSE+ZTdIOzdpezYmUWNYZ0NLS2okc21uelcKeiFFTTU7IU0oZFdkIUdkJWxvSEdBJEJQ
TXpyfDJ3Tz80WSZYI3d9YEVJO2BXfDx5KmNOZlNKR30wTVAyZC1oUGtxCnozNDBEUSFTQjl+KkAl
Y0pfI0VUMyNBeC17PWltNipkZVZxSDlAQTlXMGFFJGY0eWpZMFFkTCRgWml4fE5oWEVZbwp6ZH4o
fjx3KzFgO2EyWDFkSzIqVFJHcndEb0soWENkVlRmfkhwKkhFdW98RikoTmJGST8kPVY0IWJsYEM3
answNnkKelpCS0E2IUVQTmNUZn1+fCpuJlV9Mj5hek42MCsjS2xePFp8KmomREBGbH5uaCtAP2Rf
cVV+WD5SM3ooZzdBc0phCnomS2I+Tj5BNVd0TmZyRFNFaTlfeztCPUtWNTN7S0dYenhScFYjVTI2
QzZpPzd5Wmk3PihiczJYQy13RkE8YHBaeQp6aWJEO1VmTX5qJDlwV2xNKFl0UXIpWSF8V3JxOUc4
QmhIPCRpNHQyKDxXMk08SkwtZCsmQUdXaGJIUUdSPj5RKDMKekBWWjBGZ1ZSRlE9ckFAdEBFTWt1
eWJkQCk1YWg2Y2VZVVlxU2EkMWh1a2JJfjl2bklfRHp+M19KJEQwQyQyeChMCnoyajRjI3I0dm1G
bztZJnlMQ2pLRGVSdnRTUUUzRDBMdE01YUg1OTVSPTs0dk5oPVVSX3d5dFV7ZTVySDRaYHlkZQp6
ZU54KjFPSkYwRDctQS1lM1QpPT92RDsjR1RlVWQwM2leV297cFU5QmZjTiEhUzxQYWZiVEN7RzM9
TSsxNXk/Kk0KekdfaE5VYHpmZmJ2UUVOYDZpeXhOUHFNU0o7UXxqUSsmVFIpXzg3O2hUcWAzM2o/
UzJxcUJBYlUjUGdVRmope3NXCnojYzdSSTFnMGY4TlZgcD03WW0jQzZ+c3VwPGBhSl82SChlY3lG
YDR3THpQTElDYUEyfVVoI3cwMyF+YTxgSWJjVwp6NFFjS2dsQlMtOXBsI09TO3QwKlZOPkVheXl4
SFlSPFJiR0dFYHhGPDxHYEZKbTYpVmZGQHNUO3BlIUpsNmk+cHAKekU+aktgUGRhPyprbyhxYUEl
Q3V+RkBjJWdWbkhXU1Iodzx1K25gWmNXOEZ0OEU7Nj99KmA9NCtjfUQjaHlQMHBaCnpaVSRPRSlJ
PDhLMDBOWjNFZTBlV1BtcktUWCo3N0Bpa3t5cFFsWEQrd0d3cjxZQn0zdGZsVHVeb1VfdlkyeUlj
Swp6WChIfWZDMytJZVJ8RmMpRWY5O1IxaVFvWkQrS0grczZXanlCRzlTe0NvSDF5Y3Y4LVJYO2Mo
M1RJQWtmX2IqZ2sKenw3QWdAd3xFR2coTSt+OVFUWCRwe3cwTnpqVD1OYSp7fHd7RU95UjJPfFVG
b3tmNFdMcGlvU2ZTPVRPXzg+eTteCnphWkVTYVdufEExN0QrMThWdTdhNG96KXc1c0tDN0h6aE9y
S05TbG83MGpDc1VQbnIleD1rK2p5QjM7JFNAUGUyPAp6Jns4MEBiVUQ3ZmJsNzZSclpLeyhOZEZt
NGhIOSpZNFd9OU8qOWJUeUxmRW99UDcjI3JMVlVQNUlLMnwrNiFhQj4KenBQYk4xbT9pI3coVyVf
YTZJX0MrK0pPI1VPT2lyMCZRZ0NrPjs2ZG1Fe251JkszOHQhemg3S21GS0cwbVpPVyVxCnpCM2kq
OCFuaUwyN2BlVEU3VW8mbDM4VzFpKHJtKWZ8MVU0Rk9zTSV6SCNhfj5IRUEhJHo5NzRHSEtYMCh1
VzM2Xgp6O04yR3VvRkVRIyRBfVZaSFg5QUpQY1M7Yjd4KHFgbXVCKzxJdSFpXjh8V3t2KFRwUWde
Y2IlJnlXUCVpPkdJUy0Kejh1WXQwPXhPVytNQ0taYnN0WVcmVWZlWnVgfVVPITd2ME96SUVlOSgy
dkJlTjB7VG4hcDcwZGgwcGs1M0ItK21fCnp3fTVlbGN7dk9ke0dAO2VUdCljdWN4WHNkXlpgTXxa
dGpKekM5a2s7VDtxYndVSCMmQmRsR21VPUspYztaPGZtIQp6R2s9ZFdDTiVVQ08qPm18Rn5tNztq
bytrUklyfEpUfEhmcmE9b14jfWpaPnNmTlI/fWp6Mz4tLXFfJV9xOzMkK2IKejFzaD1oV21kSSEp
JHJmT1FPIU59MzF9OHtvbGctVTl7VThgSFNAWXRfP2Y8a3k+amQyXzZHZz5QNzBGR1VKPWwhCnpu
dGg/RTRgenJQT2l1bCU8O01re2RYMSspcH5oJSlDTTZRVHA2cT9lQENzd0hCYEtwRGlaVz1EOFFZ
VD9aZEREPwp6cEZWaVJoVUVQbWQqViMlIW9JX2JzT0gpNVhxSk56Yl5zLVRibWx+KDZPPzw5aVZu
UGVvV040KXMofkVKUjBAfl8Kek1keHU/bTxRa3MhTzJQXldTUER6QCtSbiZyaUJ7VSVwSX5DJkot
bWY/JFFoRj5lZ0stLXlsWj82YTsyRmd9bUZyCnpzVF9GfTFXZmstXjAtWEFiUnBTfXxDYHB7QCVN
aEhaPDZJZWwxckNLQlpvSCtrekU7aDwxY0FzUkdhbXhpb3VYMQp6YUB5Y2VXWUktcE1lc25kODds
V1pEYCkwaDhNVlkza0NRYGtEbzJEODE5cCNPPnMoakBzbGJFPDJBdzx4PD5wWiYKeiQzQ19RPlJ+
N3QrRCl6ODVBfnhUJnZIPSkhV0t5eVBvc1BlMWNMIVBee2trYil0U3doczxNKEwxdiQhbCF3d1RE
CnpPKmp9TVEoPWZENHZ8SEJsSnZITSgqb211WVZIMHwtQnNiVEhmSV43Yj5nODVwdl4kcUhtQUw/
SUJIRjhRUTUzPQp6aSROMFJJVE8paiU8KUZ3RFB9dnVJS1IyPWFUUE11dXlpM2grVkw8ellXTlQ5
dXBHe2BQVCExYUhlMVhoJnRRJF8KejR7S0IkTmdfSzhuV1M1VDYkVGV1dmkrak5wO0pYQDdzQChA
RmVNd3plWUx9d2t1O3thKmgqZ1Y7Uj03TkZzT0R3CnpYXyh7bFIkTUJTR3lwTTR6aExfIUE+blZR
UkV3NFJoe1dQdTI5JlNsTGI3ZzRoQ0tZOy02KVFvaENEdyt1ckE/eQp6eCFNSUdRK2sxJitDPmJG
XyZsTSY1SHV3dlRTSGh2RTN5VUtFa1Y4P1VeJHxhPnc4MUsjMSQ/YT8qYjFxVmREcikKenliQUdQ
PDJTcH03PG0qMGtSXmFvbUlkUGc+SW45QlN3RnlyOHBHTTRPMl8kPDZvbWdZTDRGJFVaPjVQO2FB
cmg8CnpAbX1KTDRIfl83ZHJRfmw9ejJtQGg4bU1wJCkxVXR8TXElPVRmWkVxRGItfF4mZFl+bl5q
JllVXzdiXjxDS297QAp6ZiZObnU1Vm4qMntteVAxMT9IcHopQT4rdT1pTGlHXkBfI2NkRkZ8aUFw
fEVvdWlVIyFSLX05REZWaDZWOSk9QEgKekkkZ2k8OTdsUnA2T3BvdzhOJmRmNylKZE5oTmAzR2Bq
IyowWDF1dnlOZW1gUHhhRztgPEg5ZSo2NjN9OVl+eG0jCnpoX0h1WWt9MlJRWFVaanZjeDw0PURs
TClvRHY/WCFNTzI7QHAkblZKJHF8TX5DX35SUGVGaHt0UUI7PUU7ZChyMwp6SD10eGNOeTtFdFFf
X2A+QVAzTW02SGlXNHR+NClWRyYmSVBoNDYhbEEqXmBqRit0YW9kI0tAVEc1JnBEXzE5I1MKemds
XnIwcVhLUktoTm1lZ0M1fHwpSE81O3VyWVY2MCkwJXF5VzJqJHsjajh3WCMpK1I2SVYqdCpVMWhI
fjdeZyQxCnotLW1BJXcoUEVEcDY9YEZfWmd3VUBFI2h1R2Nka3NAMHp7fmhWZ1FLJkElWFNhXlpf
M2sqRiN3PmR7S0J2fTJ2PQp6OVhoYnZAfnlxXlZQOzBad2coP3A+R3hsbjlNWHdTcmB1ZjdyJG45
Yz5PN1JoeUROT0RrUSNlVm13Zis5YmZCT0EKems3cmAtX25xeXBpejVYZTR6dT4oRGh5a3ZxYUNo
bVotUGRXWDhEPzsyNSUkQWsqO3V5Zzx2amMkSUJFIyVqSjJ7CnpxSF9iSGFFJllaTndNbzRNYXFO
fWd8Xld8S31vS0t2UERCUDNFRzRVLV5zQFhRSGJaJU9CWnFqZ1ZHcVlwVCshMgp6MWVGMnlJKTFf
UU1YVXxLT0t1JTViTjY+MHpCSUB3X08wRT1SQE9fJlhAWTRUTl9yUldjP3pBKT1YITQ0e3tWNUgK
ej1vVVlFN0Z9NUtSWWsjV14oTlpVSnIkUDx5PWtOQWgxMmtEISszbE9JRE1jelR9OSlXO1p2MUhB
YXt2ZGspZFVKCnpXTkAyc3RgaT1ya0VmQCYxM0dWTCVmemNuVzkyaWxKWk84WFZkOHZTcnFOYGkr
TCVhdGBfLUhYZTxFKGxkWX5QIwp6PjBKV1BKQEdJRlVARCVwKjhMRlUqKypvWmRDfCU0KSt0Jml6
STdPT2BFaC03NG40JGZsXjc8fUdPTkYwQWtGdSoKejY8IzZoJS0teUBgdmp4ZWJuLThtSWljRkQo
WGB+TEgoKlc5MCQzQ1k4RW83V0ljO0hLS0lLN2g9dSF1PGFkK0MlCnpydmNpS2ctKXIkRXNuQ2hR
d0wrP3VhVEM5R2V2UzNLeShwRUUhUEV7KlZ0Kmw+JVA/UENZdVZLd21DX2FrNzwrRgp6UUl1I1d3
KzVmP1V1Tnp5LTJKQ3VBZkpPdGU5Mj52ZlRKWm5va0NoTnlFMVk9UlNiLTFoYUNJXmVXe1NgWUU1
ZCMKekMtdVZITlNDZD9La1UqcV84O25jT3tSaztfSjRlLThHZ0RMWldgIUUpTSEld0xmNyZfWU5B
ViVefWQzTWBoV3xjCnpJdFk3YEdZPDRVeD5hKU1LcDIxJFk0bUE9dXQ+cShHN1J1c1h9IyZGakEl
MWIkQ1UqRUUwSilVYUlPWXluYVk2MAp6TyUxXjQrbEhZY1VPLTYmLUpfZ0UxKHAlTHo+Yzs/dHIl
SUQodjErMmgodVN9PmpoNjstX3deNE52b1VwX1VoKDYKem5XUmVGeVVENF9eYlpKMFJNfUFnektY
PmV1O2UhM0FHV0xPU1gmNnMxZDlRNC10b35IWm5Ublpzen1yc2hZaX54Cno8d31FWFRPc0hTcU1g
bnRiayF8TEhmMTU0SiE3RyhnVlZ1JkxRfShfN29yP0NkVTs7LUtEbGtVKmVDWkxPNWhOWgp6JjZI
TUA4Q3hQK2pIdG42JDNqTVUzTjRYTHJubmFIY3lqNWA4Xj1sJVR4alNzZzx2dDkxXmM+Kks/b01a
PD5UdFEKemxmRGxEdS1rJXZOKyohaWckSmhybWlZcEojdkJWaShseWJTRjZWeDwyNzJFYHcrMjV1
SiRuPUdmQjE0dFA4RSMlCno5bD9ycyRnaXtIKjVQZmxLeEVSaypCTFptQjFMRUVaKTd8QCE+ditk
TF9MZUlJUVRESjY3TX5wUnIrPTs9b21UMQp6TWt5eVdMb09Mc2txcSF3UkA4IWtFTl84QFJ3LSNv
eDxmNjVAZjBJMkI2b0Y9LTRgYGJUS2g7OUpZJENyQiYpS1YKejBwN3hfb19fQ0ByOThRSHNvdjFG
aHokLU0ybiozWHhTWkFnVFpKYEhpcnFrd1lVZ1BDTyFMdTJAWFlTYXMpaHs/CnpabFRVfVFvfEcq
bVV1SlJSZF4rUituTTMxaFpNSU0mIzs4alhGekE5ZjZEcGVLVUdRSDk3WWdPdXw8MFRyaW1qIwp6
V3VQfkpVYzc8OTJyMUh4cGZQLWkkRktmTmcjLWhYQStCdDZRbXJHPUFtdVFLcDJuQ3xrU0B6fT9o
dThLN3d2bEkKek5EdDRYKTMpZitMJUR8JTQ7JUYmQnNvK2QmbnJMWl5UYGgjOWBNUFlDaHt7K0kk
RFpAU2BuZCM9I0hrQUAkLUUlCnoyVGhQPm5KaVVNMDAtaSY7RjhnSEtUTUZzTF43RGp3elc1bXR0
TUliSEFJbSQrQSMxKVgkSzNuTGJLUmx3LShvXgp6YzU7TDQrMihZVUp1Xmx0PkdtZFAjYiZMK05V
YUg3MHFlI2d2bShKX25DUSQlVkJ6N252TXZxOHI8NDczUW9sPCEKeiFWWVZ3LUF0TyY0ZmI8ZmAo
RUpecX1VMlp4RWFZfWllXmY8a0JCeTYkVEgxZENZYyQ+Pil2ITVPXzhNSV9LSHZDCnpie155VHRy
ZT8oKncoUERvK1ZrelpwWHQybXBkI1JtY20qe21XeHhtJHYmKkhaJjU0ITZBeFBlKWYpRlV5Jkhm
cwp6V1VVWFQ4bXRwRjVKfnhqWSVxV0pNenhgSilkJSZiKVV0UGQzPSNETWo5dDU8aV87X01FQFJh
NXc+ZVlrOFF6OTQKemVyWTNDQlhKdldNNEsjNER0K3kpazEwWTc0Vz5CcldudGZZPXhqMnVuYFJr
NGtUc3laRnZZM0wlYStySGx7Q0R0Cnpkb2tuOFZUVUYhSlZzMmI+b3NwQWpWSntjVDY2TlVtMDFF
c1dtem9adyZ9PDR0LUBOZTJwU0BkTG1CIXVWMntwUQp6azMmQHE0fUp4YDA/Z3A+XmlicTRmPmdv
YkUqY0E5aFlsMnI8e3ZTVylGVm1PZXpFK0xzZmNmRWd3QmImWT9eOWgKek1yTyVPOSp3N1hvS2JY
bUtLalNlT3c1elNWb05Hem5rQVAoMk1aM3hBe25WOWh5a2BoRE1vJDxQNmVoSExfWWRZCno5bnsx
WD5QSHhPRnFRX3ZPQVojSiVhKHxKbntlPSVvfCtNXitAbUFfa0pyZkpMcyRield4fi1mWkBQS3x3
fGI9YAp6a1VMR1leSSFgJTVMQnQjUDFmWXRWRjByZWw4QFZzZU1BRCEpWSF3ZkRpUC13NGxqZ0NL
fVYrens8e2c8eURkMX4KendCIW0xKGNXYzJsTF9MRmZPP2steV9mVGJrTXlOTSZoWXxsKyV5KTQ0
d1JRJCZndU5yZzUrZ01LejhmIV8mVnIwCnpfSWRRfVdBRFFgJmZtSk1XUTdlPUNGP0wwVWk1O2pz
Z2hMaSpGJS1WNDFjVmxMdHJTJm9pRDNMeC1sNHZIeXIqKAp6biQzMW1TTWZPJElXaEpXbzI2dEQo
KVp7PVA2Pyg4TSpgZXM4dUthZz57ajhob0dIZXIkY208NmpPclhaZTRIaXAKenJBdmF2LW5mIUlD
eGdBI19OO2l5bjx0c09CLSNCV1EzJGYoUl5jPkBsPGtwb2J7TjE3dTd7SUZkcjJHJisobkFjCnoo
bSp9eGs8UXNVRWAxe0dWVVEoPWJqO184SFNeTWlYd1Q8ak1LWFI9KkppIStaKENwe3BQU2taezhL
TWVoJXt7cQp6KSMjITYmaEt0dTh3Pn43bnxfO0ZGaCpkU3BBcCl+PXImbHpVNFh+KEBMPklQYWMz
Um8rdTA2UDNuaFJxdjZ6PjAKenlBajFeaTYjQDw0d2UrV3t5YjBkZzg8Y0U2TCRmTntMfj9pRWBM
cGw3TmIxSUxVP0BKRmxtd2oydi01aCY1QHljCnpXNHhldSNQWHBnQyNiVHFfVSlxOTYjQ1dSR045
O21AaENla2tjZHFiNndqO0JHRERaRmAwQXFBOS0pZ1MzUTBqbQp6QjxZXklwYXNuSkxMKzA4PTZY
eXQ3KUxzezd0IWo1VUlnXzV3VGFoTno8UCV2bTtCdUJWPkdfPEdwcGpRM25NJHcKem5XXlNyN31+
YmYlPkdyfFZubWBGMDlkd1Fzb15sfTw0KUEoayg8SlBtPndIaypUNkcxRzxoTHEjLUd+QERFQCRn
CnpTRVcxdU92I01pUzw0aDErNWEjT0p4RHhQUWkpeHszd3BlU1RxZC0zKDtXPHtRdlRWSzluWFRH
SEZkbHI/bSNLOQp6Y3c9UGdCSlN2a2F2eWlMU0dFaCRnfGdtKVlfKU8pbm94RHRIRXd9UDxvJmt8
cWhwbG0kdmcpfG9TSnU4KnRDPEoKejIlQ0VBIXYyWH45K25nWU0qLTs3SWxgdmZoJHA5KSp6P1pF
Mk5xcyZFM3UzPTRHLUJkQm4lb01wQ2QoPTkhNll0CnpVQkVudUpeX1N9LSFZS3s3dU1rZCY1b1BM
QnFJYER6RllYV2N1OT9sVDZecTVMVT1wQU1OIyojR2VrbnJHa0xwMgp6cXkrdWYoNXxXZSs3ME1C
O0AjJk15OHteWjJJJWRwV0h5dzJGRXZkRDEhTXFBMHFgdE07JWp3SDxFcUluTCQwIT8KejREbjtD
IVJqQVFOX3lzQ09COXtPemJyNyVsdyZTUFluQENeZGxnQFUyfVleaWhWO1R8RGdZfUo/Yz1KJGd9
VE0pCnpmKGF6OyF5T2BDZ3I/KXtzbylWcDdrTzc+RHU9Tzx3RUYzVlBIOGhjXmdabGlIYVErb1Vl
ci1VP3BHRWdUU1Q8Zwp6S1dmNHZZWnApIUN+fTUkWmtpJUNfRVpJPml4d0I9SiZUTEA7KSh4Szwt
fHQtTyNBO35gTk9TNzlHYX1sM1FBZkAKem9obXNeQFl1NFVBOU9zfG42OSQ+dHwhIXEla1p0a3Ur
fFkyZVZRUExWQH1iZnh0c3lZMWY3OWlqfkI4MitsR2whCnpSYUM8YVNKODhGaUpBNihsUGFVfE15
a3khMT9DXiUmXnRMdSEhPFVuTEBgYyRpVnVQOVB9TU59YiFYMGtATkw2bAp6cWsqUEhjO3pHJWIt
WGVpMX0qV18xPnFlTkRNQDxNIzMpTDY/aitsVmpaY31fOD9nfSpUQ3BVSHBINSstOXhZbXQKelU/
VndHbG41cXRCZHgkakNoPShsSUtGQC0wZWhqbHo2RFhWeEM7Kms+JXVnRFRiI156TFE+IT1MOFRf
PWs7aDxFCnooal5xUns/WE01LXppTSRtJX01MylOYV5EQC1LMStTfX5mckVARiY4S19NfD5KfChU
aDNDIyNeNXRGcEFRbkpYIwp6WndPX2xDQ0BMcGxoRU1RITdKRVVaRCNxPmBtIUY7YmhnWjwjdzhv
ckM7Knx7aV5sK0Q1MWtuelFEPztTa2tFc1gKek4zd0NHX1VMOzlkTD45d1IpUUVwcWJBczt0JlVB
elNRNW81ISFBYH5fUyRebXJUTzRCPkNNNj0jOX04bGZARipDCnp2QXAxNkw9VVNHczJSa2tnVGF8
N0l0ekJBTnYjeDFWY0h8YVctaC1vQiU3QE0wPWIxU01CZFlOPjljcVE0SDFjQQp6dmZ5JEVtbyZs
MlJmNzdMNnYoIUkyIzdEe2BIO1o2PDc8ay1Eam93bkVyfXMybW9vNyUxemN3SEpzJigxT2F8MCMK
eitROzs0UXQ5THZJbmhuX1lAWkljX3Z2VWc3b3p6Vk0xYGx+QGNLJVleTyMtdmh2PGxFdkpVRTxU
QSUoTUZIP3dsCnpWSyQ4YWxxbntwREFjK3dKQzx2cVl8K3o7dnpmZjltbzVaKllKNHp1ZEYjSmJT
aUZqOXVHcStmT25YdUdVPlpWKQp6ZlIxMTNoVCtJeVV+cGd6KXdrZGBWQ1Q/JSEzYClfUGg4XjQx
aDFIWEVuIUFsKDYrZENITlZpZTNkOEdqKCREKSgKejZ8fHpIJl8hT1VAZmtzN2tlbG56YyM5QHBX
ZH5zb0x3MkFQTjslMk95b3k0TykxLV5LRFl8QHx4KT4yPmZRb3tYCnotSl9UdylBRz9KOV4jTm9r
XkhVN19BdHA7Y0laSVRfVm5pM1FeQXNibDAtQXZQSileREY8KGExOE1pUTA2QylOSgp6RHYocnlW
cFVeQDR5PFIqcU1fQHB1YypgaTJCa3RqPkhKfTdUS0M+NzQ2MSYjQChQPE1nVW1oZ3BQcSllJSV6
dnsKek1zVklYSDgtZXI5YjdzVFpATmpuaFotSGU0T29fSXslfXIoO2E+a1QmaW1QNjA4dHNAZnEh
VF9lJE9oPllfQFFgCnpuJlJYNjY0N1IpR2JoZHkmKlItVG9Rbms4Z000Qlg9MlRmXjRUTFNTbS1v
MjVDX0hPfDlMTUdON0Z2eUN1Uk5NIwp6cEF3VDF1cVlsfShvPHU0YE5CdWVFKHY5dlUwIVojSGIm
eVZeeCR4SDc2PCh1ckkxWHsjYj1GKFd5aS05TDY8RjYKejJAPy1uMEJJeFg1KyoqbmgtUl45djUx
al41VF8zQSlfbXhuKXlmZ2dXSFlKfFMyRDtqMEgobGtaSVMzaCg4T2NFCnowMiVsPElrVD5uSnpt
UTN4PXMoRiRGKzhlbUgqYVooVWlWN0ohZSF9ZllQbDk1anJOQygqMCZqRU04KXclfVptQwp6aSFB
JSsqYilwfFZkJnJVeVRpZUgtaVU1UzMhNllTWmp8eF5MUnAkNzl0OHBYYFgkWDd3KDxUbCQ2QE5Y
VXJmanEKenU4KSlyR09eajBVNHJ9NjN8ckM0OUxJdXY+XlIpa2FaPSgtemBNKXZRN0k4I0ZSSDV3
I3VlbnZfPmp3RWtgfkhVCnp5O3s/fFBVQUtFNHBuRUJYTWZCV2Y0b1ZXXmJ9eG5USmtjaEh5LVNi
O0hZNUN8S3JNQ3A3V3Q2QW44NChWWV48Xwp6PlJ0fWB0X31vUzBmb15MOWUqQkI2UGlUK2tRYkVz
djZEZGlJa1lfUzh2SnlZQjwkU3pQOzcrczdmWkNGOUh3Sj0KemRgQjdNUHJJfVMkMCV9TiFUYWsp
V0F8TSZUMFVUbDFfcSQ5TmsrP2pkTXohPiVjbj44OzRsdE1SJEpIZUEheCRxCnopZDU8IVJLRHY2
ZFlnaFBnXiNRcWBLTD49cTl7ZkdHWW5KVkRKV19oWHpFZEloUldINzZvaUlYVjw8KGEtKzBXIwp6
dz5oTEEraSFHJkk8OFkkTW1NLSFndGslUE1PUyVLRkNMbypObTtIU1g4JTlLZDF+XnxyTDtCYUFW
UG1MRkpMMjAKekdAYXVQMDJ5Plp2aT9IKGRVODxVWn1KNyQpb24mR1MkSG82UGB1dVJtbUdLO0E+
SkxZMUI5VDgxZjkwSXlNQ21aCnphXjFIJHpVRXlTUnJucWpHdGY5MWdmPikjWlkoYkB5QXdnYHpL
VUlxT2s5emZZY2NYYmNkPT1mek1nbytHWWxRewp6Jj8jeHZkXyU5bGcqUWVBKiRTTHFPbS1Xe05T
N3BqUmYkJXIjPSZgNDM3VkQ8KmtqPEw9MTdtZE48dyg8TCtQVWMKempoUFI4WDtwP3BfTmJJWjky
dzBEISRVfnJJOXVnTSk8aUZ8Mll0OUtpQyhCc1pQdU9HMjc9OXk7XlhKOEEpYms3CnpHZkdAQ0hY
Jkl8JFB3Nl5uIUd3c0F4PUZFMGRkc2A5e05eYy1PVVkjcmpkRSh0MShTeTt9IWM9cnlDQ2ktSEMt
Kgp6c1gheD1FKXtoa0o1YW9XLTNOQnRAUmNgNTBzRUVNbTQtemM+aClwNkt7bHd2RURzfiYyS25h
akR4alBVMkg4KCUKendqPEt8ODwtU3VKVzB7SWspJUtxazNLP056S1krRFBRQz9TakxeUColQEBN
MkFrQl57bEAwZSFKfX5jQTtYTkx4CnpXMkZCeUt9bztzaWgkbH1mYm1kZGpaK05pSnA5WCVmbllQ
aHZUMk0pY3hYfkBUX2h+S1NBKTJTVGJKRzMrK2VWdAp6WFYxUCRGcDdeWkxlOHdPZFZIeDY5MmM9
dmBtIU1USVglNUEmMkFIKCo/YVpWJl56ZFMoNmwhemlPRChERT0me3QKelZ8ZHlLbFhzWkZ0JFh4
al56Ym9XcCMmdyk3YCREe0crQkJnan47QXopUStwZ2tGN1dqYTBpPkNtXn5jZmw7fUtOCnpkR1du
SGN5KFcwUjBFYWFQKERBbHsjJUVBWTNVNldHQWI8S2pIMHVeNV5VVEB8Qj52JWwxcWhScTJQe2dr
Ulg8dwp6Kyt7ZU1SIWNpOUtTc3tuJU09b0phd2hCPFFEPzs5TXQ4YyVpYXMwVzNpPEFCYGl3bm4w
bFp3ZVl4NGJxeElwNzIKeiNFKUwmS0J5TVJyPStQOUs2T3hOR2R5Q0omOUhnal88QlFoc2Q4fnBB
MjBXUFZ1dTByd3VWRW8wfnVUQEcoSG9gCno7TjtmZXBSMWxVOW1GbkdhdSZkeDRVRSslcDNfU2hr
cTIpZXghZnApOFY7Vk4kSztMUGNOS0g2XmlxOHk9fWJ3JQp6XnxOaEJ7UFFpWVc4eTYpOEwlPzlE
eiV4KkNEK2dYUXdPMm5gKns3MnF9VnNAV2pAbyh5dHtzPzcmTWVuWHJKbEoKemZjV1Bka0duUEIl
PnkpMVIyRzx1VjUjKF9MSC0jMF4/UFo1e0VtSVUofEtSQV9lPFVULTM5eU9MaztgZzE9byF+Cnoo
dzdGfER7PVo9eFN1JEJfKlojM2RPenZXYCQ7elg9fGtpSHBEIXtDKCZFczdVKnomQ2VQe3EkcWA4
bjY7WnA7Mwp6LXJAbVBUKj1oSG40fmZKSXJNZG5PKHR4Zzt7MFlFUn5We35DMVAtPGo5bzhIaH5M
MnJER1orKU5WZTlmcClCWjAKUkR4ODNqJGBhUm4reHojd2BGSClmSmReK2MKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggZGJkNjU1
Yy4uZWMxYWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcwpAQCAtMTYyLDEwICsxNjIsMTIgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygic2hvdy1qYXZhc2NyaXB0LXR5cGUtaW5mb3Jt
YXRpb24iLCBmYWxzZSk7CiAgICAgaWYgKHRoaXMuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRp
b25TZXR0aW5nLnZhbHVlICYmIHdpbmRvdy5SdW50aW1lQWdlbnQgJiYgUnVudGltZUFnZW50LmVu
YWJsZVR5cGVQcm9maWxlcikgewogICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2Zp
bGVyKCk7Ci0gICAgICAgIGlmIChSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cikKLSAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7
CiAgICAgfQogCisgICAgdGhpcy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZW5hYmxlLWNvbnRyb2wtZmxvdy1wcm9maWxlciIsIGZh
bHNlKTsKKyAgICBpZiAodGhpcy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1
ZSAmJiB3aW5kb3cuUnVudGltZUFnZW50ICYmIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxv
d1Byb2ZpbGVyKQorICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cigpOworCiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBQYWdlLnNldFNob3dQYWludFJl
Y3RzIGRpZCBub3QgZXhpc3QuCiAgICAgdGhpcy5zaG93UGFpbnRSZWN0c1NldHRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmcoInNob3ctcGFpbnQtcmVjdHMiLCBmYWxzZSk7CiAgICAgaWYg
KHRoaXMuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlICYmIHdpbmRvdy5QYWdlQWdlbnQgJiYg
UGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpp
bmRleCAxNTAwMjc5Li4xMjFhODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAt
NjMsMTUgKzYzLDIxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNj
cmlwdENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvCiAgICAgICAgIHRoaXMuX3No
b3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRU
b29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOwog
ICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlz
Ll90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNC
dXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0KICAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dKYXZhU2NyaXB0
VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGxldCB0b29s
VGlwQ29kZUNvdmVyYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGYWRlIHVuZXhlY3V0ZWQg
Y29kZSIpOworICAgICAgICBsZXQgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRG8gbm90IGZhZGUgdW5leGVjdXRlZCBjb2RlIik7CisgICAgICAg
IHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjb2RlLWNvdmVyYWdlIiwgdG9vbFRpcENv
ZGVDb3ZlcmFnZSwgYWN0aXZhdGVkVG9vbFRpcENvZGVDb3ZlcmFnZSwgIkltYWdlcy9OYXZpZ2F0
aW9uSXRlbUNvZGVDb3ZlcmFnZS5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9jb2RlQ292
ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVVbmV4ZWN1dGVk
Q29kZUhpZ2hsaWdodHMsIHRoaXMpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25O
YXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIFdlYkluc3BlY3Rvci5lbmFi
bGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJT
ZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
bmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJp
bnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0
ZW1dOworICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9jb2RlQ292ZXJh
Z2VCdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCiAgICAgZ2V0IHNjcmlwdCgpCkBAIC0y
MDIsOCArMjA4LDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNj
cmlwdENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvCiAgICAgX2NvbnRlbnREaWRQ
b3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2
aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQoKTsK
KwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0g
dGhpcy5fdGV4dEVkaXRvci5jYW5TaG93VHlwZUFubm90YXRpb25zKCk7CiAgICAgICAgIHRoaXMu
X3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7CisKKyAgICAgICAgdGhp
cy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRF
ZGl0b3IuY2FuU2hvd0NvdmVyYWdlSGludHMoKTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdl
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXJTZXR0aW5nLnZhbHVlOwogICAgIH0KIAogICAgIF90b2dnbGVQcmV0dHlQ
cmludChldmVudCkKQEAgLTIxNCw3ICsyMjQsMTggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ28K
IAogICAgIF90b2dnbGVUeXBlQW5ub3RhdGlvbnMoZXZlbnQpCiAgICAgewotICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLnRvZ2dsZVR5cGVBbm5vdGF0aW9ucygpOworICAgICAgICB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdHJ1ZTsK
KyAgICAgICAgfSkKKyAgICB9CisKKyAgICBfdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRz
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2dsZVVu
ZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cygpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgdGhpcy5f
Y29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRydWU7CisgICAgICAg
IH0pOwogICAgIH0KIAogICAgIF9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdD
aGFuZ2VkKGV2ZW50KQpAQCAtMjIyLDYgKzI0MywxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcgPSBjbGFzcyBTY3JpcHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5D
bwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQg
PSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVl
OwogICAgIH0KIAorICAgIF9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5nZWQo
ZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNl
dHRpbmcudmFsdWU7CisgICAgfQorCiAgICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdl
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggOTdmYTMyMC4uNjk5ZTQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTEwMSwxNCArMTAxLDIyIEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVu
ZHMgV2ViSW5zcGVjCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBl
SW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRv
a2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvci5y
ZXN1bWUoKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQotICAg
ICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVzdW1lKCk7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgJiYgKHRoaXMuX3R5cGVUb2tl
bkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKSkKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0
b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2Vu
QW5ub3RhdG9yKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fdHlw
ZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAg
ICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX3Nl
dFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nLnZh
bHVlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAg
ICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlc3VtZSgpOworCisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlciAmJiB0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yKQorICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZVNjcm9sbEV2ZW50c0Zv
ckNvbnRyb2xGbG93QW5ub3RhdG9yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IGZhbHNlOworICAgICAgICB9CiAgICAg
fQogCiAgICAgaGlkZGVuKCkKQEAgLTE2MSw3ICsxNjksMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJ
bnNwZWMKIAogICAgIGNhblNob3dUeXBlQW5ub3RhdGlvbnMoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICEhdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yOworICAgICAgICAvLyBUeXBlIGFubm90YXRp
b25zIGZvciBtb2RpZmllZCBzY3JpcHRzIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuCisgICAg
ICAgIHJldHVybiAhIXRoaXMuX2dldEFzc29jaWF0ZWRTY3JpcHQoKSAmJiAhdGhpcy5oYXNNb2Rp
ZmllZDsKKyAgICB9CisKKyAgICBjYW5TaG93Q292ZXJhZ2VIaW50cygpCisgICAgeworICAgICAg
ICAvLyBDb2RlIGNvdmVyYWdlIGhpbnRzIGZvciBtb2RpZmllZCBzY3JpcHRzIGFyZSBjdXJyZW50
bHkgdW5zdXBwb3J0ZWQuCisgICAgICAgIHJldHVybiAhIXRoaXMuX2dldEFzc29jaWF0ZWRTY3Jp
cHQoKSAmJiAhdGhpcy5oYXNNb2RpZmllZDsKICAgICB9CiAKICAgICBjdXN0b21QZXJmb3JtU2Vh
cmNoKHF1ZXJ5KQpAQCAtMjQ5LDEwICsyNjQsMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMK
ICAgICAgICAgZm9yICh2YXIgcmFuZ2Ugb2YgbmV3UmFuZ2VzKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRWRpdGFibGVNYXJrZXJzKHJhbmdlKTsKIAotICAgICAgICBpZiAodGhpcy5fdHlwZVRv
a2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsKKyAgICAgICAgaWYg
KHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3JFbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9iYXNpY0Jsb2Nr
QW5ub3RhdG9yID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IpIHsKICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVu
YWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3Ig
PSBudWxsOwotICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciA9IG51bGw7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI2MywxNCArMjgyLDI5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2Vi
SW5zcGVjCiAKICAgICAgICAgdmFyIG5ld0FjdGl2YXRlZFN0YXRlID0gIXRoaXMuX3R5cGVUb2tl
bkFubm90YXRvci5pc0FjdGl2ZSgpOwogICAgICAgICBpZiAobmV3QWN0aXZhdGVkU3RhdGUgJiYg
dGhpcy5faXNQcm9iYWJseU1pbmlmaWVkICYmICF0aGlzLmZvcm1hdHRlZCkgewotICAgICAgICAg
ICAgdGhpcy51cGRhdGVGb3JtYXR0ZWRTdGF0ZSh0cnVlKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLnVwZGF0ZUZvcm1hdHRlZFN0YXRlKHRydWUpLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShu
ZXdBY3RpdmF0ZWRTdGF0ZSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRT
dGF0ZShuZXdBY3RpdmF0ZWRTdGF0ZSk7Ci0gICAgICAgIHJldHVybiBuZXdBY3RpdmF0ZWRTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIH0KKworICAgIHRvZ2ds
ZVVuZXhlY3V0ZWRDb2RlSGlnaGxpZ2h0cygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Jh
c2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
bGV0IG5ld0FjdGl2YXRlZFN0YXRlID0gIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3Rp
dmUoKTsKKyAgICAgICAgaWYgKG5ld0FjdGl2YXRlZFN0YXRlICYmIHRoaXMuX2lzUHJvYmFibHlN
aW5pZmllZCAmJiAhdGhpcy5mb3JtYXR0ZWQpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnVw
ZGF0ZUZvcm1hdHRlZFN0YXRlKHRydWUpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHRo
aXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0gbmV3QWN0aXZhdGVkU3RhdGU7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0
b3JFbmFibGVkID0gbmV3QWN0aXZhdGVkU3RhdGU7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKICAgICB9CiAKICAgICBzaG93UG9wb3ZlckZvclR5cGVzKHR5cGVEZXNjcmlwdGlv
biwgYm91bmRzLCB0aXRsZSkKQEAgLTI5OSwxOSArMzMzLDI4IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2Vi
SW5zcGVjCiAgICAgICAgIC8vIFRoZSBhbm5vdGF0b3JzIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUg
cHJldHR5IHByaW50aW5nIHRha2VzIHBsYWNlIGFuZCByZXN1bWVkCiAgICAgICAgIC8vIGFmdGVy
IHNvIHRoYXQgdGhleSBjbGVhciB0aGVpciBhbm5vdGF0aW9ucyBpbiBhIGtub3duIHN0YXRlIGFu
ZCBpbnNlcnQgbmV3IGFubm90YXRpb25zCiAgICAgICAgIC8vIGluIHRoZSBuZXcgc3RhdGUuCi0g
ICAgICAgIHZhciBzaG91bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IgPSB0aGlzLl90eXBlVG9r
ZW5Bbm5vdGF0b3IgJiYgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLmlzQWN0aXZlKCk7CisKICAg
ICAgICAgdmFyIHNob3VsZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IgPSB0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKTsKLSAg
ICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciB8fCBzaG91bGRSZXN1bWVC
YXNpY0Jsb2NrQW5ub3RhdG9yKQorICAgICAgICBpZiAoc2hvdWxkUmVzdW1lQmFzaWNCbG9ja0Fu
bm90YXRvcikKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3JFbmFibGVkID0g
ZmFsc2U7CisKKyAgICAgICAgbGV0IHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvciA9IHRo
aXMuX3R5cGVUb2tlbkFubm90YXRvciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IuaXNBY3Rp
dmUoKTsKKyAgICAgICAgaWYgKHNob3VsZFJlc3VtZVR5cGVUb2tlbkFubm90YXRvcikKICAgICAg
ICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAK
ICAgICAgICAgcmV0dXJuIHN1cGVyLnByZXR0eVByaW50KHByZXR0eSkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICBpZiAocHJldHR5IHx8ICF0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzdW1lVHlwZVRva2VuQW5ub3RhdG9yIHx8IHNob3Vs
ZFJlc3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJl
c3VtZUJhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3JFbmFibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChzaG91
bGRSZXN1bWVUeXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nl
dFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZSh0cnVlKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXByZXR0eSAmJiB0aGlzLl9pc1By
b2JhYmx5TWluaWZpZWQpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5v
dGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICAg
ICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTM5MiwxMyArNDM1LDEzIEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAgICAgdGhpcy5zdHJpbmcgPSBjb250ZW50Owog
Ci0gICAgICAgIHRoaXMuX21ha2VUeXBlVG9rZW5Bbm5vdGF0b3IoKTsKLSAgICAgICAgdGhpcy5f
bWFrZUJhc2ljQmxvY2tBbm5vdGF0b3IoKTsKKyAgICAgICAgdGhpcy5fY3JlYXRlQmFzaWNCbG9j
a0Fubm90YXRvcigpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmVuYWJsZUNvbnRyb2xGbG93
UHJvZmlsZXJTZXR0aW5nLnZhbHVlICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCisgICAg
ICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yRW5hYmxlZCA9IHRydWU7CiAKLSAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcu
dmFsdWUpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yIHx8IHRo
aXMuX3R5cGVUb2tlbkFubm90YXRvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9r
ZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUodHJ1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5f
Y3JlYXRlVHlwZVRva2VuQW5ub3RhdG9yKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2hv
d0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlKQorICAgICAgICAgICAgdGhp
cy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKHRydWUpOwogCiAgICAgICAgIHRo
aXMuX2NvbnRlbnREaWRQb3B1bGF0ZSgpOwogICAgIH0KQEAgLTE2NzgsMjIgKzE3MjEsMTMgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRF
ZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIF9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFi
bGVkU3RhdGUoc2hvdWxkQWN0aXZhdGUpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IpOwogICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlbkFu
bm90YXRvcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc2hvdWxkQWN0aXZh
dGUpIHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudmlzaWJsZSwgIkFubm90YXRv
cnMgc2hvdWxkIG5vdCBiZSBlbmFibGVkIGlmIHRoZSBUZXh0RWRpdG9yIGlzIG5vdCB2aXNpYmxl
Iik7Ci0KICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGVUeXBlUHJvZmlsZXIoKTsKLSAg
ICAgICAgICAgIGlmIChSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcikKLSAg
ICAgICAgICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwot
CiAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IucmVzZXQoKTsKLSAgICAgICAg
ICAgIGlmICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKSB7Ci0gICAgICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUoKSk7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvci5yZXNldCgpOwotICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3Rh
dG9yKCk7CkBAIC0xNzA1LDggKzE3MzksNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAg
ICAgICAgICAgLy8gcHJvdmlkZSBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UuCiAKICAgICAg
ICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvci5jbGVhcigpOwotICAgICAgICAgICAgaWYg
KHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCi0gICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNC
bG9ja0Fubm90YXRvci5jbGVhcigpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRva2Vu
U2Nyb2xsSGFuZGxlcikKICAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsRXZlbnRz
Rm9yVHlwZVRva2VuQW5ub3RhdG9yKCk7CkBAIC0xNzE3LDYgKzE3NDksMzEgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0
ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXJTdGF0ZSgpOwogICAgIH0KIAorICAgIHNldCBfYmFzaWNCbG9ja0Fubm90YXRvckVuYWJsZWQo
c2hvdWxkQWN0aXZhdGUpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Jhc2ljQmxvY2tBbm5v
dGF0b3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHNob3VsZEFjdGl2YXRl
KSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnZpc2libGUsICJBbm5vdGF0b3Jz
IHNob3VsZCBub3QgYmUgZW5hYmxlZCBpZiB0aGUgVGV4dEVkaXRvciBpcyBub3QgdmlzaWJsZSIp
OworCisgICAgICAgICAgICBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigp
OworCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
ci5pc0FjdGl2ZSgpKTsKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVz
ZXQoKTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIp
CisgICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlU2Nyb2xsRXZlbnRzRm9yQ29udHJvbEZsb3dB
bm5vdGF0b3IoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IuY2xlYXIoKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xGbG93
U2Nyb2xsSGFuZGxlcikKKyAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlU2Nyb2xsRXZlbnRz
Rm9yQ29udHJvbEZsb3dBbm5vdGF0b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZSA9IHNob3VsZEFjdGl2
YXRlOworICAgIH0KKwogICAgIF9nZXRBc3NvY2lhdGVkU2NyaXB0KCkKICAgICB7CiAgICAgICAg
IHZhciBzY3JpcHQgPSBudWxsOwpAQCAtMTcyOCw3ICsxNzg1LDcgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIHNjcmlwdDsKICAgICB9CiAKLSAgICBfbWFrZVR5cGVU
b2tlbkFubm90YXRvcigpCisgICAgX2NyZWF0ZVR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewog
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUuZ2V0UnVudGltZVR5cGVz
Rm9yVmFyaWFibGVzQXRPZmZzZXRzIGRpZCBub3QgZXhpc3QgeWV0LgogICAgICAgICBpZiAoIVJ1
bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpCkBAIC0xNzQx
LDcgKzE3OTgsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBT
b3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl90eXBl
VG9rZW5Bbm5vdGF0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvcih0aGlz
LCBzY3JpcHQpOwogICAgIH0KIAotICAgIF9tYWtlQmFzaWNCbG9ja0Fubm90YXRvcigpCisgICAg
X2NyZWF0ZUJhc2ljQmxvY2tBbm5vdGF0b3IoKQogICAgIHsKICAgICAgICAgLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDgpOiBSdW50aW1lLmdldEJhc2ljQmxvY2tzIGRpZCBub3QgZXhpc3QgeWV0Lgog
ICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5nZXRCYXNpY0Jsb2NrcykKQEAgLTE3NTgsMTAgKzE4
MTUsMTcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNl
Q29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICB7CiAgICAgICAgIC8vIFBhdXNl
IHVwZGF0aW5nIHR5cGUgdG9rZW5zIHdoaWxlIHNjcm9sbGluZyB0byBwcmV2ZW50IGZyYW1lIGxv
c3MuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVy
KTsKLSAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IHRoaXMuX21ha2VUeXBl
VG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xs
SGFuZGxlciA9IHRoaXMuX2NyZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpOwogICAg
ICAgICB0aGlzLmFkZFNjcm9sbEhhbmRsZXIodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7
CiAgICAgfQogCisgICAgX2VuYWJsZVNjcm9sbEV2ZW50c0ZvckNvbnRyb2xGbG93QW5ub3RhdG9y
KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250cm9sRmxvd1Njcm9s
bEhhbmRsZXIpOworICAgICAgICB0aGlzLl9jb250cm9sRmxvd1Njcm9sbEhhbmRsZXIgPSB0aGlz
Ll9jcmVhdGVDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcigpOworICAgICAgICB0aGlzLmFk
ZFNjcm9sbEhhbmRsZXIodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAgICB9CisK
ICAgICBfZGlzYWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKTsKQEAg
LTE3NjksMzAgKzE4MzMsNTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0g
Y2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhp
cy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IG51bGw7CiAgICAgfQogCi0gICAgX21ha2VUeXBl
VG9rZW5TY3JvbGxFdmVudEhhbmRsZXIoKQorICAgIF9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yQ29u
dHJvbEZsb3dBbm5vdGF0b3IoKQogICAgIHsKLSAgICAgICAgdmFyIHRpbWVvdXRJZGVudGlmaWVy
ID0gbnVsbDsKLSAgICAgICAgZnVuY3Rpb24gc2Nyb2xsSGFuZGxlcigpCi0gICAgICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29udHJvbEZsb3dTY3JvbGxIYW5kbGVyKTsKKyAg
ICAgICAgdGhpcy5yZW1vdmVTY3JvbGxIYW5kbGVyKHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFu
ZGxlcik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93U2Nyb2xsSGFuZGxlciA9IG51bGw7Cisg
ICAgfQorCisgICAgX2NyZWF0ZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpCisgICAgewor
ICAgICAgICBsZXQgdGltZW91dElkZW50aWZpZXIgPSBudWxsOworICAgICAgICBsZXQgc2Nyb2xs
SGFuZGxlciA9ICgpID0+IHsKICAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRpZmllcikKICAg
ICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOwogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikK
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLnBhdXNlKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IpCi0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucGF1c2UoKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsK
ICAgICAgICAgICAgICAgICB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgICAgICAg
ICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvcikKICAgICAgICAgICAgICAgICAgICAgdGhp
cy5fdHlwZVRva2VuQW5ub3RhdG9yLnJlc3VtZSgpOworICAgICAgICAgICAgfSwgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJT
Y3JvbGxpbmcpOworICAgICAgICB9OworCisgICAgICAgIHJldHVybiBzY3JvbGxIYW5kbGVyOwor
ICAgIH0KKworICAgIF9jcmVhdGVDb250cm9sRmxvd1Njcm9sbEV2ZW50SGFuZGxlcigpCisgICAg
eworICAgICAgICBsZXQgdGltZW91dElkZW50aWZpZXIgPSBudWxsOworICAgICAgICBsZXQgc2Ny
b2xsSGFuZGxlciA9ICgpID0+IHsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRpZmllcikK
KyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOworICAgICAg
ICAgICAgZWxzZSBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKKyAgICAgICAgICAgICAg
ICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnBhdXNlKCk7CisKKyAgICAgICAgICAgIHRpbWVv
dXRJZGVudGlmaWVyID0gc2V0VGltZW91dCgoKSAgPT4geworICAgICAgICAgICAgICAgIHRpbWVv
dXRJZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9j
a0Fubm90YXRvcikKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
ci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcp
OwotICAgICAgICB9CisgICAgICAgICAgICB9LCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IuRHVyYXRpb25Ub1VwZGF0ZVR5cGVUb2tlbnNBZnRlclNjcm9sbGluZyk7CisgICAgICAg
IH07CiAKLSAgICAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZXIuYmluZCh0aGlzKTsKKyAgICAgICAg
cmV0dXJuIHNjcm9sbEhhbmRsZXI7CiAgICAgfQogCiAgICAgX2xvZ0NsZWFyZWQoZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UZXh0Q29udGVudFZpZXcuanMKaW5kZXggYzk4ZDUwOS4uYWIxNTQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRD
b250ZW50Vmlldy5qcwpAQCAtNTEsNiArNTEsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50
VmlldyA9IGNsYXNzIFRleHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW4K
ICAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRv
bk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMs
ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOwogICAgICAgICB0aGlz
Ll9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisKKyAgICAg
ICAgbGV0IHRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhZGUg
dW5leGVjdXRlZCBjb2RlIik7CisgICAgICAgIGxldCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVy
YWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEbyBub3QgZmFkZSB1bmV4ZWN1dGVkIGNvZGUi
KTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNvZGUtY292ZXJhZ2Ui
LCB0b29sVGlwQ29kZUNvdmVyYWdlLCBhY3RpdmF0ZWRUb29sVGlwQ29kZUNvdmVyYWdlLCAiSW1h
Z2VzL05hdmlnYXRpb25JdGVtQ29kZUNvdmVyYWdlLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRo
aXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKICAg
ICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTYyLDcgKzY3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRD
b250ZW50VmlldyA9IGNsYXNzIFRleHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5D
b250ZW4KIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNC
dXR0b25OYXZpZ2F0aW9uSXRlbV07CisgICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRC
dXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0s
IHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtXTsKICAgICB9CiAKICAgICBy
ZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dEVkaXRvci5qcwppbmRleCAxNzg4NmExLi40OWMyMGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMK
QEAgLTEzNyw2ICsxMzcsMTcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zv
cm1hdHRlZDsKICAgICB9CiAKKyAgICBnZXQgaGFzTW9kaWZpZWQoKQorICAgIHsKKyAgICAgICAg
bGV0IGhpc3RvcnlTaXplID0gdGhpcy5fY29kZU1pcnJvci5oaXN0b3J5U2l6ZSgpLnVuZG87CisK
KyAgICAgICAgLy8gRm9ybWF0dGluZyBjb2RlIGNyZWF0ZXMgYSBoaXN0b3J5IGl0ZW0uCisgICAg
ICAgIGlmICh0aGlzLl9mb3JtYXR0ZWQpCisgICAgICAgICAgICBoaXN0b3J5U2l6ZS0tOworCisg
ICAgICAgIHJldHVybiBoaXN0b3J5U2l6ZSA+IDA7CisgICAgfQorCiAgICAgdXBkYXRlRm9ybWF0
dGVkU3RhdGUoZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdChm
b3JtYXR0ZWQpLmNhdGNoKGhhbmRsZVByb21pc2VFeGNlcHRpb24pOwpAQCAtMTU5LDYgKzE3MCwx
MSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgY2Fu
U2hvd0NvdmVyYWdlSGludHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KwogICAgIGdldCBzZWxlY3RlZFRleHRSYW5nZSgpCiAgICAgewogICAgICAgICB2YXIgc3RhcnQg
PSB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291
cmNlQ29udGVudFZpZXcuanMKaW5kZXggMmE2YzhiOS4uM2Y1Mjk5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTUzLDE1ICs1MywyMSBAQCBXZWJJbnNwZWN0
b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50Vmll
dyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10
eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2VzL05hdmln
YXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25zLCB0
aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxl
ZCA9IGZhbHNlOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZv
cm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVu
dC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFu
Z2VkLCB0aGlzKTsKKworICAgICAgICBsZXQgdG9vbFRpcENvZGVDb3ZlcmFnZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRmFkZSB1bmV4ZWN1dGVkIGNvZGUiKTsKKyAgICAgICAgbGV0IGFjdGl2
YXRlZFRvb2xUaXBDb2RlQ292ZXJhZ2UgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvIG5vdCBm
YWRlIHVuZXhlY3V0ZWQgY29kZSIpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25O
YXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSgiY29kZS1jb3ZlcmFnZSIsIHRvb2xUaXBDb2RlQ292ZXJhZ2UsIGFjdGl2YXRlZFRvb2xU
aXBDb2RlQ292ZXJhZ2UsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1Db2RlQ292ZXJhZ2Uuc3ZnIiwg
MTMsIDE0KTsKKyAgICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fdG9nZ2xlVW5leGVjdXRlZENvZGVIaWdobGlnaHRzLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZh
bHNlOworICAgICAgICBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNldHRp
bmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0
aGlzLl9lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwogICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewot
ICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRo
aXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgcmV0dXJuIFt0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbSwgdGhpcy5fY29kZUNvdmVyYWdlQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwog
ICAgIH0KIAogICAgIGdldCBtYW5hZ2VzT3duSXNzdWVzKCkKQEAgLTE5Niw4ICsyMDIsMTIgQEAg
V2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNl
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICBfY29udGVudERpZFBvcHVsYXRlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFi
bGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5CZUZvcm1hdHRlZCgpOworCiAgICAgICAgIHRoaXMu
X3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9y
LmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlw
ZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VC
dXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93Q292
ZXJhZ2VIaW50cygpOworICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9u
SXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlclNl
dHRpbmcudmFsdWU7CiAgICAgfQogCiAgICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQpAQCAt
MjA4LDcgKzIxOCwxOCBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBj
bGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogCiAgICAgX3RvZ2dsZVR5
cGVBbm5vdGF0aW9ucyhldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RleHRFZGl0b3IudG9n
Z2xlVHlwZUFubm90YXRpb25zKCk7CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmln
YXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dn
bGVUeXBlQW5ub3RhdGlvbnMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dU
eXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0cnVlOworICAgICAgICB9KQorICAg
IH0KKworICAgIF90b2dnbGVVbmV4ZWN1dGVkQ29kZUhpZ2hsaWdodHMoZXZlbnQpCisgICAgewor
ICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudG9nZ2xlVW5leGVjdXRlZENvZGVIaWdo
bGlnaHRzKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9jb2RlQ292ZXJhZ2VCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAg
ICAgX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQoZXZlbnQpCkBA
IC0yMTYsNiArMjM3LDExIEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9
IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIHRoaXMu
X3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7CiAgICAgfQogCisgICAg
X2VuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXJTZXR0aW5nQ2hhbmdlZChldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2NvZGVDb3ZlcmFnZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9
IFdlYkluc3BlY3Rvci5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyU2V0dGluZy52YWx1ZTsKKyAg
ICB9CisKICAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9
IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>