<?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>68203</bug_id>
          
          <creation_ts>2011-09-15 18:09:59 -0700</creation_ts>
          <short_desc>(Meta) Web Inspector: Add FileSystem support</short_desc>
          <delta_ts>2014-08-03 18:32:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72456</dependson>
    
    <dependson>72691</dependson>
    
    <dependson>73301</dependson>
    
    <dependson>87635</dependson>
    
    <dependson>87724</dependson>
    
    <dependson>87856</dependson>
    
    <dependson>88602</dependson>
    
    <dependson>89066</dependson>
    
    <dependson>89190</dependson>
    
    <dependson>89191</dependson>
    
    <dependson>89420</dependson>
    
    <dependson>89555</dependson>
    
    <dependson>89642</dependson>
    
    <dependson>89739</dependson>
    
    <dependson>89961</dependson>
    
    <dependson>90244</dependson>
    
    <dependson>90361</dependson>
    
    <dependson>90439</dependson>
    
    <dependson>90518</dependson>
    
    <dependson>90529</dependson>
    
    <dependson>90592</dependson>
    
    <dependson>91709</dependson>
    
    <dependson>91732</dependson>
    
    <dependson>91831</dependson>
    
    <dependson>93930</dependson>
    
    <dependson>93933</dependson>
    
    <dependson>93940</dependson>
    
    <dependson>94301</dependson>
    
    <dependson>94908</dependson>
    
    <dependson>97524</dependson>
    
    <dependson>98092</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>burg</cc>
    
    <cc>bweinstein</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>janx</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>paulirish</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>468205</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-09-15 18:09:59 -0700</bug_when>
    <thetext>Resources Panel in Web Inspector should support HTML5 FileSystem API, that should let us:
 - browse entries (directories and files) in FileSystem,
 - delete, copy or move entries,
 - look metadata and content,
and maybe,
 - &quot;Save as&quot;
 - put a native file into a FileSystem (using Drag and Drop)

FileSystem API has been implemented in Chrome, but we don&apos;t have rich debugging tool for developer yet.
It will encourage developer to use FileSystem API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468483</commentid>
    <comment_count>1</comment_count>
      <attachid>107652</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-09-16 08:00:12 -0700</bug_when>
    <thetext>Created attachment 107652
Patch

A patch for early version of FileSystem support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469419</commentid>
    <comment_count>2</comment_count>
      <attachid>107652</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-19 08:41:17 -0700</bug_when>
    <thetext>Comment on attachment 107652
Patch

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

Overall looks good. I added some high-level comments.

&gt; Source/WebCore/inspector/Inspector.json:832
&gt; +        &quot;domain&quot;: &quot;FileSystem&quot;,

All methods and parameters should be documented.

&gt; Source/WebCore/inspector/Inspector.json:845
&gt; +                    { &quot;name&quot;: &quot;fsName&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;&quot; },

No abbreviations in WebKit.

&gt; Source/WebCore/inspector/Inspector.json:853
&gt; +                &quot;name&quot;: &quot;addFileSystem&quot;,

We prefer fileSystemAdded notation. Also, you should not generate any messages unless FileSystem domain is enabled. You should add &quot;enable&quot; and &quot;disable&quot; commands. You could also include &quot;getFileSystems&quot; command that returns all filesystems for the late attach.

&gt; Source/WebCore/inspector/Inspector.json:861
&gt; +                &quot;name&quot;: &quot;onSuccess&quot;,

There should be no generic &quot;onSuccess&quot;/&quot;onError&quot; events.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:17
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

You should use Google license template.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:17
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

ditto

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:57
&gt; +    class FileSystemTask;

It looks like it can be defined in the anonymous namespace in the .cpp file.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:58
&gt; +    class ReadDirectoryTask;

ditto

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:37
&gt; +#include &quot;DOMFileSystem.h&quot;

InspectorInstrumentation should not add includes. You should add InspectorFileSystemInstrumentation.h (just like InspectorConsoleInstrumentation.h has)

&gt; Source/WebCore/inspector/front-end/FileSystem.js:43
&gt; +        FileSystemAgent.readDirectory(name, path, requestId);

We are using single callback for both success and error paths, you could just check whether resulting message is an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479607</commentid>
    <comment_count>3</comment_count>
    <who name="Paul Irish">paulirish</who>
    <bug_when>2011-10-06 16:36:44 -0700</bug_when>
    <thetext>Can we get a new patch? So excited! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479956</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2011-10-07 05:59:25 -0700</bug_when>
    <thetext>This seems like it could make for a good example of a Web Inspector extension.  Would certainly be a good use case for a Web Inspector extension.  If you can&apos;t build this with the extension API, the extension API isn&apos;t done yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484794</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-16 11:16:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This seems like it could make for a good example of a Web Inspector extension.  Would certainly be a good use case for a Web Inspector extension.  If you can&apos;t build this with the extension API, the extension API isn&apos;t done yet.

Not everything FS debugging needs is exposed via web facing APIs. Like mapping to the actual file system, etc. You can&apos;t say that extension API isn&apos;t done unless it exposes certain FS instrumentation specifics. I think it is totally fine to implement support for FS as a part of the core inspector since FS is a part of HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503562</commentid>
    <comment_count>6</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-15 21:01:18 -0800</bug_when>
    <thetext>I complete first version of FileSystem support.
It seems too big as single patch, so I&apos;m splitting it into small ones:
 - Adding files and capture DOMFileSystem object,
 - Adding FileSystem item in storage tree on Resources panel,
 - Adding explorer style split-view as FileSystem view,
 - Adding directory tree as left part of split-view,
 - Adding text file content view as right part of split-view,
 - Adding binary file summary view.

First of them is https://bugs.webkit.org/show_bug.cgi?id=72456, I&apos;ll post review request soon after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505526</commentid>
    <comment_count>7</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-17 23:08:18 -0800</bug_when>
    <thetext>and here is the second part:
[Inspector][FileSystem] Add FileSystem item to storage tree 
https://bugs.webkit.org/show_bug.cgi?id=72691</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508493</commentid>
    <comment_count>8</comment_count>
      <attachid>116451</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-23 16:34:10 -0800</bug_when>
    <thetext>Created attachment 116451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508500</commentid>
    <comment_count>9</comment_count>
      <attachid>116454</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-23 16:47:40 -0800</bug_when>
    <thetext>Created attachment 116454
Screenshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634963</commentid>
    <comment_count>10</comment_count>
      <attachid>144292</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-28 00:53:09 -0700</bug_when>
    <thetext>Created attachment 144292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635797</commentid>
    <comment_count>11</comment_count>
      <attachid>144496</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-29 02:48:22 -0700</bug_when>
    <thetext>Created attachment 144496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637266</commentid>
    <comment_count>12</comment_count>
      <attachid>144827</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-30 08:38:42 -0700</bug_when>
    <thetext>Created attachment 144827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652006</commentid>
    <comment_count>13</comment_count>
      <attachid>148237</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-18 21:01:38 -0700</bug_when>
    <thetext>Created attachment 148237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661360</commentid>
    <comment_count>14</comment_count>
      <attachid>150388</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-02 03:27:04 -0700</bug_when>
    <thetext>Created attachment 150388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026552</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-03 18:32:34 -0700</bug_when>
    <thetext>This feature is no longer in WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107652</attachid>
            <date>2011-09-16 08:00:12 -0700</date>
            <delta_ts>2011-11-15 20:35:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>36841</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAwOGY2MWY4Li4wNjdhNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yNjk4LDYgKzI2OTgsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywKQEAgLTYz
NTUsNiArNjM1Nyw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25S
ZWdpc3RyeVN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uU2VydmVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW0uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKaW5kZXggMDZmM2I5My4uODlk
ZjM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtMTg3LDYgKzE4OCw5IEBAIHZvaWQgRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3du
UHRyPEFzeW5jCiAgICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChh
c3luY0ZpbGVTeXN0ZW0pOwogICAgICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3Rl
bSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCks
IG5hbWUsIGFzeW5jRmlsZVN5c3RlbSk7CisKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIGZp
bGVTeXN0ZW0pOworCiAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChmaWxl
U3lzdGVtLmdldCgpKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmNsZWFyKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGVhZTI1
NGMuLjEyNzEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTgyOSw2ICs4MjksNTEgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgeworICAgICAgICAiZG9t
YWluIjogIkZpbGVTeXN0ZW0iLAorICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5
cGVzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAiaWQiOiAiRmlsZVN5c3RlbSIs
CisgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJGaWxlU3lzdGVtLiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAg
ImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJl
YWREaXJlY3RvcnkiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImZzTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlw
dGlvbiI6ICIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlycGF0aCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICIiIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJhZGRGaWxlU3lzdGVtIiwKKyAg
ICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJmc05hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAib3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJv
blN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAib2JqZWN0In0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJuYW1lIjogIm9uRXJyb3IiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImlu
dGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5
cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9CisgICAg
ICAgIF0KKyAgICB9LAorICAgIHsKICAgICAgICAgImRvbWFpbiI6ICJET00iLAogICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiVGhpcyBkb21haW4gZXhwb3NlcyBET00gcmVhZC93cml0ZSBvcGVyYXRp
b25zLiBFYWNoIERPTSBOb2RlIGlzIHJlcHJlc2VudGVkIHdpdGggaXRzIG1pcnJvciBvYmplY3Qg
dGhhdCBoYXMgYW4gPGNvZGU+aWQ8L2NvZGU+LiBUaGlzIDxjb2RlPmlkPC9jb2RlPiBjYW4gYmUg
dXNlZCB0byBnZXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgTm9kZSwgY29udmVydCBp
dCBpbnRvIHRoZSBKYXZhU2NyaXB0IG9iamVjdCwgZXRjLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBj
bGllbnQgcmVjZWl2ZXMgRE9NIGV2ZW50cyBvbmx5IGZvciB0aGUgbm9kZXMgdGhhdCBhcmUga25v
d24gdG8gdGhlIGNsaWVudC4gQmFja2VuZCBrZWVwcyB0cmFjayBvZiB0aGUgbm9kZXMgdGhhdCB3
ZXJlIHNlbnQgdG8gdGhlIGNsaWVudCBhbmQgbmV2ZXIgc2VuZHMgdGhlIHNhbWUgbm9kZSB0d2lj
ZS4gSXQgaXMgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgbm9kZXMgdGhhdCB3ZXJlIHNlbnQgdG8gdGhlIGNsaWVudC4iLAogICAgICAgICAi
dHlwZXMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggMjU4OWFlYi4uMTY0N2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDksNiArNDksNyBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRh
dGFiYXNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgpAQCAtMTA0LDYgKzEwNSw5IEBAIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICwgbV9kYXRhYmFzZUFn
ZW50KEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fc3RhdGUuZ2V0KCkpKQogI2VuZGlmCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQor
ICAgICwgbV9maWxlc3lzdGVtQWdlbnQoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSkKKyNlbmRpZgogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICAgICAsIG1fZG9tU3RvcmFnZUFnZW50KEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCiAjZW5k
aWYKQEAgLTIxNyw2ICsyMjEsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RG
cm9udGVuZCgpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIG1fZGF0YWJhc2VBZ2VudC0+c2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgbV9maWxlc3lzdGVtQWdlbnQtPnNldEZyb250ZW5kKG1faW5zcGVj
dG9yRnJvbnRlbmQuZ2V0KCkpOworI2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAg
IG1fZG9tU3RvcmFnZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgp
KTsKICNlbmRpZgpAQCAtMjUwLDYgKzI1Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKCkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAg
ICAgbV9kZWJ1Z2dlckFnZW50LmdldCgpLAogI2VuZGlmCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQorICAgICAgICBtX2ZpbGVzeXN0ZW1BZ2VudC5nZXQoKSwKKyNlbmRpZgogICAgICAgICBtX3Jl
c291cmNlQWdlbnQuZ2V0KCksCiAgICAgICAgIG1fcGFnZUFnZW50LmdldCgpLAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtMjk2LDYgKzMwNiw5IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAg
ICAgbV9kYXRhYmFzZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgbV9maWxlc3lzdGVtQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyNl
bmRpZgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBtX2RvbVN0b3JhZ2VBZ2VudC0+Y2xl
YXJGcm9udGVuZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCBhOGZkNDQ3Li4yM2ZlZDQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUzLDYgKzUzLDcgQEAg
Y2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKQEAgLTEzNyw2ICsxMzgsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShEQVRBQkFTRSkKICAgICBPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4gbV9kYXRhYmFz
ZUFnZW50OwogI2VuZGlmCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIE93blB0cjxJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IG1fZmlsZXN5c3RlbUFnZW50OworI2VuZGlmCiAjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQogICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IG1f
ZG9tU3RvcmFnZUFnZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRjZTk0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMCwwICsxLDIwMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
aCIKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpGcm9u
dGVuZFByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpGcm9udGVuZFByb3ZpZGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJv
bnRlbmRQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBmcm9u
dGVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZCkpOworICAgIH0KKworICAgIH5Gcm9udGVuZFByb3ZpZGVyKCkgeyB9CisKKyAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRlbmQoKSB7IHJldHVybiBtX2Zy
b250ZW5kOyB9CisgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kID0gMDsgfQor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBGcm9udGVuZFByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtKiBmcm9udGVuZCkgOiBtX2Zyb250ZW5kKGZyb250ZW5kKSB7IH0KKyAgICBJ
bnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogbV9mcm9udGVuZDsKK307CisKK2NsYXNzIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RmlsZVN5c3RlbVRhc2sgOiBwdWJsaWMgQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRh
KGNvbnN0IEZpbGVNZXRhZGF0YSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBp
c0RpcmVjdG9yeSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFz
eW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkKKyAgICB7Cisg
ICAgICAgIGlmIChmcm9udGVuZCgpKQorICAgICAgICAgICAgZnJvbnRlbmQoKS0+b25FcnJvciht
X3JlcXVlc3RJZCwgY29kZSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgRmlsZVN5c3RlbVRh
c2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVx
dWVzdElkKQorICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSwg
bV9yZXF1ZXN0SWQocmVxdWVzdElkKSB7IH0KKworICAgIEluc3BlY3RvckZyb250ZW5kOjpGaWxl
U3lzdGVtKiBmcm9udGVuZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9mcm9udGVuZFByb3Zp
ZGVyID8gbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpIDogMDsKKyAgICB9CisKKyAgICBS
ZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAgIGludCBtX3Jl
cXVlc3RJZDsKK307CisKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6UmVhZERpcmVj
dG9yeVRhc2sgOiBwdWJsaWMgRmlsZVN5c3RlbVRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZpbGVTeXN0ZW1UYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBmcm9udGVuZCwgaW50IHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUmVhZERpcmVjdG9yeVRhc2soZnJvbnRlbmQsIHJlcXVlc3RJZCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGlzRGlyZWN0b3J5KQorICAgIHsKKyAgICAgICAgaWYgKCFmcm9udGVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlbnRy
eShJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgZW50cnktPnNldFN0cmluZygi
bmFtZSIsIG5hbWUpOworICAgICAgICBlbnRyeS0+c2V0Qm9vbGVhbigiaXNEaXJlY3RvcnkiLCBp
c0RpcmVjdG9yeSk7CisgICAgICAgIG1fZW50cmllcy0+cHVzaE9iamVjdChlbnRyeSk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9y
ZSkKKyAgICB7CisgICAgICAgIGlmICghZnJvbnRlbmQoKSB8fCBoYXNNb3JlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQoSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJlc3VsdC0+c2V0QXJyYXkoInBheWxvYWQi
LCBtX2VudHJpZXMpOworICAgICAgICBmcm9udGVuZCgpLT5vblN1Y2Nlc3MobV9yZXF1ZXN0SWQs
IHJlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlYWREaXJlY3RvcnlUYXNrKFBhc3NS
ZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmQsIGludCByZXF1ZXN0SWQpCisgICAgICAg
IDogRmlsZVN5c3RlbVRhc2soZnJvbnRlbmQsIHJlcXVlc3RJZCksIG1fZW50cmllcyhJbnNwZWN0
b3JBcnJheTo6Y3JlYXRlKCkpIHsgfQorCisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBtX2Vu
dHJpZXM7Cit9OworCisvLyBzdGF0aWMKK1Bhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMpKTsKK30KKworSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkKK3sKKyAgICBpZiAo
bV9mcm9udGVuZFByb3ZpZGVyKQorICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmNsZWFyRnJv
bnRlbmQoKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudCgwKTsKK30KKwordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWREaXJl
Y3RvcnkoRXJyb3JTdHJpbmcqLCBjb25zdCBXVEY6OlN0cmluZyYgZnNOYW1lLCBjb25zdCBXVEY6
OlN0cmluZyYgZGlycGF0aCwgaW50IHJlcXVlc3RJZCkKK3sKKyAgICBBU1NFUlQoZnJvbnRlbmQo
KSk7CisKKyAgICBGU05hbWVNYXA6Oml0ZXJhdG9yIGl0ciA9IG1fZmlsZXN5c3RlbXMuZmluZChm
c05hbWUpOworICAgIGlmIChpdHIgPT0gbV9maWxlc3lzdGVtcy5lbmQoKSkgeworICAgICAgICBm
cm9udGVuZCgpLT5vbkVycm9yKHJlcXVlc3RJZCwgMSAvKiBXZWJGaWxlRXJyb3JOb3RGb3VuZCAq
Lyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdHItPnNlY29uZC0+YXN5bmNGaWxl
U3lzdGVtKCktPnJlYWREaXJlY3RvcnkoZGlycGF0aCwgUmVhZERpcmVjdG9yeVRhc2s6OmNyZWF0
ZShtX2Zyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCkpOworfQorCit2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlc3lzdGVtKQoreworICAgIGlmICghZnJvbnRlbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgU3RyaW5nIGZzTmFtZSA9IGZpbGVzeXN0ZW0tPm5hbWUoKTsKKyAgICBTdHJpbmcgdHlw
ZTsKKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZnMoZmlsZXN5c3RlbSk7CisgICAgbV9maWxl
c3lzdGVtcy5hZGQoZnNOYW1lLCBmcyk7CisgICAgZnJvbnRlbmQoKS0+YWRkRmlsZVN5c3RlbSgK
KyAgICAgICAgZnMtPm5hbWUoKSwKKyAgICAgICAgZnMtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCksCisgICAgICAgIHR5cGVUb1N0cmluZyhmcy0+YXN5bmNGaWxlU3lzdGVtKCktPnR5cGUo
KSkpOworfQorCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IEZy
b250ZW5kUHJvdmlkZXI6OmNyZWF0ZShmcm9udGVuZC0+ZmlsZXN5c3RlbSgpKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQoreworICAgIGlmICht
X2Zyb250ZW5kUHJvdmlkZXIpIHsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5jbGVhckZy
b250ZW5kKCk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci5jbGVhcigpOworICAgIH0KK30K
KworSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQoreworICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KHRoaXMpOworfQorCitJbnNwZWN0b3JG
cm9udGVuZDo6RmlsZVN5c3RlbSogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojpmcm9udGVuZCgp
Cit7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQcm92aWRlciA/IG1fZnJvbnRlbmRQcm92aWRlci0+
ZnJvbnRlbmQoKSA6IDA7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnR5
cGVUb1N0cmluZyhBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5OgorICAgICAgICByZXR1
cm4gInRlbXBvcmFyeSI7CisgICAgY2FzZSBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQ6Cisg
ICAgICAgIHJldHVybiAicGVyc2lzdGVudCI7CisgICAgY2FzZSBBc3luY0ZpbGVTeXN0ZW06OkV4
dGVybmFsOgorICAgICAgICByZXR1cm4gImV4dGVybmFsIjsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gInVua25vd24iOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOGRhMDAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKKyNk
ZWZpbmUgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXN5
bmNGaWxlU3lzdGVtOworY2xhc3MgRE9NRmlsZVN5c3RlbTsKK2NsYXNzIEluc3BlY3RvckFycmF5
OworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTsKK2NsYXNzIEluc3BlY3RvckZyb250
ZW5kOworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwor
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK3R5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCitj
bGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgeworcHVibGljOgorICAgIGNsYXNzIEZyb250
ZW5kUHJvdmlkZXI7CisgICAgY2xhc3MgRmlsZVN5c3RlbVRhc2s7CisgICAgY2xhc3MgUmVhZERp
cmVjdG9yeVRhc2s7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgfkluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudCgpOworCisgICAgdm9pZCByZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgY29u
c3QgV1RGOjpTdHJpbmcmIGZzTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRpcnBhdGgsIGludCBy
ZXF1ZXN0SWQpOworCisgICAgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGZpbGVzeXN0ZW0pOworCisgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworcHJpdmF0ZToKKyAgICBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIEluc3BlY3Rv
ckZyb250ZW5kOjpGaWxlU3lzdGVtKiBmcm9udGVuZCgpOworICAgIFN0cmluZyB0eXBlVG9TdHJp
bmcoQXN5bmNGaWxlU3lzdGVtOjpUeXBlKTsKKworICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1f
aW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gPiBGU05hbWVNYXA7CisgICAgRlNOYW1lTWFwIG1fZmlsZXN5c3RlbXM7
CisKKyAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNWQwYzNm
Yy4uNmM0OGQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oIgpAQCAtNzYyLDYgKzc2MywxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZQog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW1JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSkK
K3sKKyAgICBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JBZ2VudCgpOworICAgIGlmICghaW5zcGVjdG9yQWdlbnQgfHwgIWluc3Bl
Y3RvckFnZW50LT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KiBmc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KCkpCisgICAgICAgIGZzQWdlbnQtPmRpZE9wZW5GaWxlU3lzdGVtKGZp
bGVzeXN0ZW0pOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXNlRE9NU3RvcmFnZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBi
b29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSogZnJhbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNmY1OWVlNC4u
NWRkOGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtMzEsOCArMzEsMTAgQEAKICNpZm5kZWYgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uX2gKICNkZWZpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKIAorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiQ29uc29sZVR5cGVzLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CkBAIC00Miw2ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENoYXJhY3Rl
ckRhdGE7CitjbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRE9N
V3JhcHBlcldvcmxkOwogY2xhc3MgRGF0YWJhc2U7CkBAIC0xNzAsNiArMTczLDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8RGF0YWJhc2U+LCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSk7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBzdGF0aWMgdm9pZCBkaWRVc2VE
T01TdG9yYWdlKFBhZ2UqLCBTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1l
Kik7CiAjZW5kaWYKQEAgLTMwNCw2ICszMTEsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPERh
dGFiYXNlPiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAg
IHN0YXRpYyB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtKTsKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQogICAgIHN0YXRpYyB2b2lkIGRpZFVzZURPTVN0b3JhZ2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZy
YW1lKik7CiAjZW5kaWYKQEAgLTkzNCw2ICs5NDUsMTYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW8KICNlbmRpZgogfQogCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0pIHsK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkp
CisgICAgICAgIGRpZE9wZW5GaWxlU3lzdGVtSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmaWxl
c3lzdGVtKTsKKyNlbmRpZgorfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVzZURPTVN0b3JhZ2UoUGFn
ZSogcGFnZSwgU3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGlzTG9jYWxTdG9yYWdlLCBG
cmFtZSogZnJhbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
dHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaAppbmRleCBiYzgwOTA1Li40NDMwYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3Mg
SW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFz
cyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsK
K2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUnVu
dGltZUFnZW50OwpAQCAtNzMsNiArNzQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERBVEFCQVNF
KQogICAgICAgICAsIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKQogI2VuZGlmCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorICAgICAgICAsIG1faW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KDAp
CisjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgICAgICAs
IG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KDApCiAjZW5kaWYKQEAgLTExOSw2ICsx
MjMsMTAgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGluc3BlY3RvckRh
dGFiYXNlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQ7IH0K
ICAgICB2b2lkIHNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JEYXRhYmFzZUFnZW50ID0gYWdlbnQ7IH0KICNlbmRpZgor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGlu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OyB9CisgICAgdm9pZCBzZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA9
IGFnZW50OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogaW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50ID0gYWdlbnQ7IH0KQEAgLTE1Myw2ICsxNjEsOSBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShEQVRBQkFTRSkKICAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBtX2luc3BlY3RvckRh
dGFiYXNlQWdlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBtX2luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDsKKyNlbmRpZgog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50KiBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGMzNDk5MjcuLjg2MWQ3MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0x
NDQsNiArMTQ0LDkgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJv
bnRlbmQoKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICAgICBtX2RlYnVn
Z2VyQWdlbnQuZ2V0KCksCiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAg
IDAsCisjZW5kaWYKICAgICAgICAgMCwgLy8gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudAogICAgICAg
ICAwLCAvLyBJbnNwZWN0b3JQYWdlQWdlbnQKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU1NmI3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpz
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0g
ZnVuY3Rpb24oKQoreworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLl9j
YWxsYmFja3MgPSB7fTsKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fbmV4dFJl
cXVlc3RJZCA9IDE7CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24obmFtZSwgcGF0aCwgc3VjY2Vzcywg
ZXJyb3IpCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdElkID0gdGhpcy5fcHVzaENhbGxiYWNr
KHsKKyAgICAgICAgICAgIG9uU3VjY2Vzczogc3VjY2VzcywKKyAgICAgICAgICAgIG9uRXJyb3I6
IGVycm9yCisgICAgICAgIH0pOworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVhZERpcmVjdG9y
eShuYW1lLCBwYXRoLCByZXF1ZXN0SWQpOworICAgIH0sCisKKyAgICBhZGRGaWxlU3lzdGVtOiBm
dW5jdGlvbihuYW1lLCBvcmlnaW4sIHR5cGUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5hZGRGaWxlU3lzdGVtKG5hbWUsIG9yaWdpbiwgdHlwZSk7CisgICAg
fSwKKworICAgIF9wb3BDYWxsYmFjazogZnVuY3Rpb24ocmVxdWVzdElkKQorICAgIHsKKyAgICAg
ICAgdmFyIGNhbGxiYWNrcyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fY2Fs
bGJhY2tzOworICAgICAgICB2YXIgcmVzdWx0ID0gY2FsbGJhY2tzW3JlcXVlc3RJZF07CisgICAg
ICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tyZXF1ZXN0SWRdOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBfcHVzaENhbGxiYWNrOiBmdW5j
dGlvbihoYW5kbGVyKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fbmV4dFJlcXVlc3RJZCsrOworICAgICAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX2NhbGxiYWNrc1tyZXF1ZXN0SWRdID0gaGFuZGxl
cjsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3RJZDsKKyAgICB9LAorCisgICAgb25FcnJvcjogZnVu
Y3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUpCisgICAgeworICAgICAgICB2YXIgaGFuZGxlciA9
IHRoaXMuX3BvcENhbGxiYWNrKHJlcXVlc3RJZCk7CisgICAgICAgIGlmIChoYW5kbGVyICYmIGhh
bmRsZXIub25FcnJvcikKKyAgICAgICAgICAgIGhhbmRsZXIub25FcnJvcihlcnJvckNvZGUpOwor
ICAgIH0sCisKKyAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLl9wb3BDYWxsYmFjayhyZXF1ZXN0SWQpOwor
ICAgICAgICBpZiAoaGFuZGxlciAmJiBoYW5kbGVyLm9uU3VjY2VzcykKKyAgICAgICAgICAgIGhh
bmRsZXIub25TdWNjZXNzKHJlc3VsdC5wYXlsb2FkKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgdmFyIGNhbGxiYWNrcyA9IFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtRGlzcGF0Y2hlci5fY2FsbGJhY2tzOworICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtRGlzcGF0Y2hlci5fY2FsbGJhY2tzID0ge307CisgICAgfQorfTsKKworSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1EaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbURpc3BhdGNoZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jMTc4MDhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldyA9IGZ1bmN0aW9uKCkKK3sKKyAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywg
ImZpbGVzeXN0ZW0iKTsKKyAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7Cit9OworCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworICAKK307CisKK1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKaW5kZXggODg1MTMzZC4uNDc5MzA1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC01OCw2
ICs1OCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNl
KQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAiQXBwbGljYXRpb25DYWNoZSIsIFsiYXBwbGljYXRp
b24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBl
bmRDaGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQpOwogCisgICAgdGhp
cy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0
ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0ZW0i
KSwgIkZpbGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iLCAiZmlsZXN5
c3RlbSJdKTsKKyAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuZmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudCk7CisgIAogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuaWQgPSAic3RvcmFn
ZS12aWV3cyI7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuY2xhc3NOYW1lID0gImRpZmYtY29udGFp
bmVyIjsKQEAgLTcxLDYgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVu
Y3Rpb24oZGF0YWJhc2UpCiAgICAgdGhpcy5fY29va2llVmlld3MgPSB7fTsKICAgICB0aGlzLl9v
cmlnaW5zID0ge307CiAgICAgdGhpcy5fZG9tYWlucyA9IHt9OworICAgIHRoaXMuX2ZpbGVTeXN0
ZW1zID0ge307CiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlz
LnNpZGViYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fb25tb3Vz
ZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC0xNTAsNyArMTU0LDExIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9u
Q2FjaGVWaWV3ID0gbnVsbDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2NhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVWaWV3U3RhdHVzOwogCisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zID0ge307CisgICAg
ICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUucmVzZXQoKTsK
KyAKICAgICAgICAgdGhpcy5kYXRhYmFzZXNMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CiAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VMaXN0VHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5jb29raWVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKQEAgLTI5Nyw2ICszMDUsMTUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VMaXN0VHJlZUVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9tU3RvcmFnZVRyZWVFbGVtZW50KTsKICAgICB9LAogCisgICAg
YWRkRmlsZVN5c3RlbTogZnVuY3Rpb24obmFtZSwgb3JpZ2luLCB0eXBlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1zW25hbWVdKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSA9IG9yaWdpbiArICcvJyArIHR5cGU7CisgICAg
ICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1UcmVlRWxlbWVudCh0aGlzLCBuYW1lLCBvcmlnaW4sIHR5cGUpOworICAgICAgICB0aGlzLmZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZmlsZVN5c3RlbVRyZWVFbGVtZW50
KTsKKyAgICB9LAorICAKICAgICBzZWxlY3REYXRhYmFzZTogZnVuY3Rpb24oZGF0YWJhc2VJZCkK
ICAgICB7CiAgICAgICAgIHZhciBkYXRhYmFzZTsKQEAgLTUwMyw2ICs1MjAsMTcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Fw
cGxpY2F0aW9uQ2FjaGVWaWV3LnVwZGF0ZVN0YXR1cyh0aGlzLl9jYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlVmlld1N0YXR1cyk7CiAgICAgfSwKIAorICAgIHNob3dGaWxlU3lzdGVtOiBmdW5jdGlvbih0
cmVlRWxlbWVudCwgbmFtZSwgb3JpZ2luKQorICAgIHsKKyAgICAgICAgdmFyIHZpZXcgPSB0aGlz
Ll9maWxlc3lzdGVtVmlldzsKKyAgICAgICAgaWYgKCF2aWV3KSB7CisgICAgICAgICAgICB2aWV3
ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3l0ZW1WaWV3KHRyZWVFbGVtZW50LCBuYW1lLCBvcmln
aW4pOworICAgICAgICAgICAgdGhpcy5fZmlsZXN5c3RlbVZpZXcgPSB2aWV3OworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hv
d0NhdGVnb3J5VmlldzogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9jYXRlZ29yeVZpZXcpCkBAIC0xNTI1LDYgKzE1NTMsODMgQEAgV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CiAKK1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIGZzTmFtZSwg
b3JpZ2luLCB0eXBlKQoreworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50
LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBvcmlnaW4gKyAnLycgKyB0eXBlLCBbImZp
bGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7CisgICAgdGhpcy5fZnNOYW1lID0gZnNOYW1l
OworICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAg
ICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VHJlZUVsZW1lbnQucHJvdG90eXBlID0geworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAgICAgLy8gVE9ETyh0emlrKTogSW1wbGVtZW50IEZp
bGVTeXN0ZW1UcmVlRWxlbWVudFZpZXcKKyAgICB9LAorICAKKyAgICBvbmV4cGFuZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Jvb3QpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuX3Jvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1FbnRyeVRy
ZWVFbGVtZW50KHRoaXMsIHRoaXMuX2ZzTmFtZSwgIiIsIHRydWUgLyogaXNEaXJlY3RvcnkgKi8p
OworICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3QpOworICAgIH0KK307CisKK1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKKworV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1FbnRyeVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBm
c05hbWUsIGVudHJ5TmFtZSwgaXNEaXJlY3RvcnkpCit7CisgICAgV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGVudHJ5TmFt
ZSB8fCAiLyIsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKKyAgICB0aGlzLl9m
c05hbWUgPSBmc05hbWU7CisgICAgdGhpcy5fbmFtZSA9IGVudHJ5TmFtZTsKKyAgICB0aGlzLl9p
c0RpcmVjdG9yeSA9IGlzRGlyZWN0b3J5OworICAgIGlmIChpc0RpcmVjdG9yeSkKKyAgICAgIHRo
aXMuX2NoaWxkcmVuID0gbnVsbDsKKyAgICB0aGlzLmhhc0NoaWxkcmVuID0gaXNEaXJlY3Rvcnk7
Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUVudHJ5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0geworICAgIF9nZXRQYXRoQ2hhaW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSB0aGlzLl9uYW1lID8gdGhpcy5wYXJlbnQuX2dldFBhdGhDaGFpbigpIDogW107Cisg
ICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX25hbWUpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhp
cyk7CisgICAgfSwKKworICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fY2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2No
aWxkcmVuID0gW107CisKKyAgICAgICAgdmFyIHBhdGhzID0gdGhpcy5fZ2V0UGF0aENoYWluKCk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUucmVh
ZERpcmVjdG9yeSgKKyAgICAgICAgICAgIHRoaXMuX2ZzTmFtZSwgcGF0aHMuam9pbigiLyIpLAor
ICAgICAgICAgICAgZnVuY3Rpb24oZW50cmllcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpIGluIGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBjaGls
ZCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUVudHJ5VHJlZUVsZW1lbnQodGhpcywgdGhp
cy5fZnNOYW1lLCBlbnRyaWVzW2ldLm5hbWUsIGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpOworICAg
ICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgICAgICAgICAgICAg
ICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LmJpbmQodGhpcyksCisgICAgICAgICAgICBmdW5jdGlvbihjb2RlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkZBSUw6IiwgY29kZSk7CisgICAg
ICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJh
c2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VS
ZXZpc2lvblRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCByZXZpc2lvbikKIHsK
ICAgICB2YXIgdGl0bGUgPSByZXZpc2lvbi50aW1lc3RhbXAgPyByZXZpc2lvbi50aW1lc3RhbXAu
dG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihvcmlnaW5hbCki
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCmluZGV4IGJlOTU5ODQuLmFkYThjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNzYsNiArNzYsNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0b3JhZ2UuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0
b3JhZ2VJdGVtc1ZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkRhdGFHcmlkLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaG93TW9yZURhdGFHcmlkTm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llc1Rh
YmxlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJDb29raWVJdGVtc1ZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rvci1pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlkbAppbmRleCAwNjE3ZDQ5Li5lZjU2MjZjIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlkbApAQCAt
ODcsNiArODcsNyBAQCBtYWNyb190cmFpdHMgPSB7CiAgICAgIkRhdGFiYXNlIjogIkRBVEFCQVNF
IiwKICAgICAiRE9NU3RvcmFnZSI6ICJET01fU1RPUkFHRSIsCiAgICAgIkFwcGxpY2F0aW9uQ2Fj
aGUiOiAiT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIiwKKyAgICAiRmlsZVN5c3RlbSI6ICJGSUxF
X1NZU1RFTSIsCiAgICAgIkRlYnVnZ2VyIjogIkpBVkFTQ1JJUFRfREVCVUdHRVIiLAogICAgICJE
T01EZWJ1Z2dlciI6ICJKQVZBU0NSSVBUX0RFQlVHR0VSIiwKICAgICAiUHJvZmlsZXIiOiAiSkFW
QVNDUklQVF9ERUJVR0dFUiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116451</attachid>
            <date>2011-11-23 16:34:10 -0800</date>
            <delta_ts>2012-05-28 00:52:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20111124093409.patch</filename>
            <type>text/plain</type>
            <size>84480</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmYmY0NmQ0ZWE3MTVl
NGY0YzNkYjM3ZTY1ZDU1NGMxODU0MGNmZC4uYjkzM2EyYTYxZTc0ODI4NjdjZGJlNDMyN2Q4MTk4
NDBlYjRiMDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMjk0MCw2ICsyOTQwLDY4IEBACiAgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENs
b3NlKToKIAorMjAxMS0xMS0xNyAgVGFpanUgVFNVSUtJICA8dHppa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW0luc3BlY3Rvcl1bRmlsZVN5c3RlbV0gQWRkIEZpbGVTeXN0ZW0gaXRlbSB0byBz
dG9yYWdlIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyNjkxCisKKyAgICAgICAgQWRkaW5nIEZpbGVTeXN0ZW0gaXRlbSB0byBzdG9yYWdlIHRy
ZWUgb24gUmVzb3VyY2VzIHBhbmVsLgorICAgICAgICBBZGRpbmcgTm90aWZpY2F0aW9uIG9uIEZp
bGVTeXN0ZW0gY3JlYXRpb24gYW5kIGludmFsaWRhdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUZpbGVTeXN0ZW06OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNv
b2tpZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpZE9wZW5GaWxl
U3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6aW52
YWxpZGF0ZUZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50UHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnRQcm94eTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnRQcm94eTo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5OjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnRQcm94eSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1J
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbXB0eVZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRW1wdHlWaWV3LnByb3RvdHlwZS53YXNTaG93bik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZzogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5hZGRGaWxlU3lzdGVtKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuaW52YWxpZGF0ZUZpbGVT
eXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5z
aG93RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVt
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzczoKKyAgICAgICAgKC5maWxl
c3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uKToKKwogMjAxMS0xMS0xNyAgRGF2aWQgUmV2
ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2FsbHMg
dG8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
IHNob3VsZCBiZSBiYWxhbmNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGZlN2U2YmIyYTdk
ZDQwNjRkZmUwZjA5YzhiODRiYjg2ZTYzNGFkMS4uZjA3MmU0MDcxNmJkM2JmOWQyZGQ4YTc4MTFh
NjIwY2I2MThlOGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg4Nyw2ICs4ODcsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggYjljN2FmZjBhZTJjYmNlNTdhN2U3YmEzMzkyZTBjMTNlYzhjMWNiMy4uZTllYTM0N2Y2N2Q4
YjZjNWU2M2IyOGUwODgxNDNhZWY1Nzg2NjI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc0MCw2
ICsyNzQwLDkgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgnLAorICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCcsCkBAIC02MzQ5
LDYgKzYzNTIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
UGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUmVn
aXN0cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blNlcnZlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3Lmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9MaW5lRGlhbG9nLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzJywKQEAgLTY1MTAsNiArNjUxNSw3
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZXJyb3JSZWREb3Qu
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9mb3J3YXJkLnBu
ZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZnJhbWUucG5nJywK
KyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZ2xvc3N5SGVhZGVyLnBu
ZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZ2xvc3N5SGVhZGVy
UHJlc3NlZC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ds
b3NzeUhlYWRlclNlbGVjdGVkLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IGExZWI2NjZlNWQzNTg5NWEyNTg5MjQzMWM4MzYzMjNjNzE5
MTdhOWIuLmZiZWI5NThhNmUwZDU2ZjdiNWUwOTBmYTkzNDQwOGNmOGE3YWQ1NmUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02ODQzOCw2ICs2
ODQzOCwxOCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlv
bi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpA
QCAtNjg4OTcsNiArNjg5MDksMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbS5qcyIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZv
bnRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlNDc0MDY3ZjQwMTI0NzAxY2E0
YjQzNTI4OGYwMmNiNjFlNmJkMDMuLmIzMzk3ZGQyYWNlODQzOGUxYWNiN2NiYzIwNGE1MjU2MmM4
MjAwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMxNyw2ICszMTcsOSBAQAogCQkxNUM3NzA5NDEwMEQzQ0E4MDA1QkEyNjcg
LyogSlNWYWxpZGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUu
Y3BwICovOyB9OwogCQkxNUM3NzBBNTEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3
MEEzMTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRlLm1tICovOyB9OwogCQkxNUM3
NzBBNjEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwQTQxMDBENDFDRDAwNUJBMjY3
IC8qIERPTVZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKKwkJMTVEMTdEMjExNDcyMzFFQjAwNUVCQ0E2
IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUQxN0QxRTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLzsgfTsKKwkJMTVEMTdEMjIxNDcyMzFFQjAwNUVCQ0E2
IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTVEMTdEMUYxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oICovOyB9OworCQkxNUQxN0QyMzE0NzIzMUVCMDA1RUJDQTYgLyog
SW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVEMTdEMjAxNDcyMzFFQjAwNUVCQ0E2IC8qIElu
c3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJMTYzRTg4RjcxMThB
MzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTYzRTg4RjUxMThBMzlEMjAwRUQ5MjMx
IC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwICovOyB9OwogCQkxNjNFOEIxMzExOEIzQURE
MDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFBVFNVSS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2M0U4QjEyMTE4QjNBREQwMEVEOTIzMSAvKiBTaW1w
bGVGb250RGF0YUFUU1VJLm1tICovOyB9OwogCQkxODVCQ0YyODBGMzI3OUNFMDAwRUEyNjIgLyog
VGhyZWFkVGltZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE4NUJDRjI2MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwICovOyB9
OwpAQCAtMTM3OSw2ICsxMzgyLDcgQEAKIAkJNTAzOEJFNDExNDcyQUQ5ODAwOTVFMEQxIC8qIENh
Y2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTAzOEJFM0YxNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5oICovOyB9OwogCQk1
MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwICovOyB9OworCQk1MEI0MjE1ODE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwQjQyMTU3MTQ2OTc2OTYwMDg3RTYwNCAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICov
OyB9OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUx
MTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4
NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBD
YWNoZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTc0MDAsNiArNzQwNCw5IEBACiAJCTE1Qzc3MDkyMTAw
RDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNWYWxpZGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTVDNzcwQTMxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01WYWxpZGl0eVN0
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzBBNDEwMEQ0MUNEMDA1
QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01WYWxpZGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1
RDE3RDFFMTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTVEMTdEMUYxNDcyMzFFQjAw
NUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTVEMTdEMjAxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVT
eXN0ZW1JbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVGb250
RGF0YUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTYzRThCMTIx
MThCM0FERDAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQVRTVUkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaW1wbGVGb250RGF0YUFUU1VJLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxODVCQ0YyNjBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFk
VGltZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZFRp
bWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUzNSw2ICsxNDU0Miw5
IEBACiAJCQkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oICovLAogCQkJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2UuY3BwICovLAogCQkJCTQxRjA2MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLywKKwkJCQkxNUQxN0QxRTE0NzIzMUVCMDA1
RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLywKKwkJCQkxNUQxN0QxRjE0
NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi8sCisJCQkJMTVE
MTdEMjAxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRp
b24uaCAqLywKIAkJCQkyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmggKi8sCiAJCQkJRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVFIC8qIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovLApAQCAtMjMwNzQsNiArMjMwODQsOCBA
QAogCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE3NDBGNUYw
MEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNUQxN0QyMjE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNUQxN0QyMzE0NzIzMUVCMDA1RUJDQTYgLyogSW5z
cGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjI3
Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0Qzc1MzExMjk0RDlEMDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA1
Myw2ICsyNjA2NSw3IEBACiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3NEVDQkExMDE4MzlB
NjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1RDE3RDIxMTQ3MjMxRUIwMDVFQkNBNiAvKiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEY0RjVGRkIx
MUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUYzNDRDNzU4MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA1MTI2NTMwMjJjZjYxMWY3MDllN2JmYzlkYWQ5
MTgxY2I0NjQwY2VmLi4xMTQzMWY3N2E1NzY3NjFkZjA0YWZhMzY5YTlkYWM2MWIxZDNlYTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ1LDEyICs0NSwy
MiBAQAogI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIHN0YXRpYworUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBET01GaWxlU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQoreworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKGFkb3B0UmVm
KG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkpKTsKKyAg
ICBmaWxlU3lzdGVtLT5tX2FnZW50UHJvdmlkZXIgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0uZ2V0KCkpOworICAgIHJldHVybiBmaWxlU3lz
dGVtOworfQorCiBET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQs
IG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQpAQCAtNzQsNiArODQsMTEgQEAgYm9vbCBET01GaWxlU3lzdGVtOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogCiB2b2lkIERPTUZpbGVTeXN0ZW06OmNvbnRleHREZXN0cm95ZWQoKQog
eworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKHRoaXMpOworICAgIGlmIChJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50ID0gbV9hZ2VudFByb3ZpZGVyLmdldCgpID8g
bV9hZ2VudFByb3ZpZGVyLT5nZXQoKSA6IDApIHsKKyAgICAgICAgbV9hZ2VudFByb3ZpZGVyID0g
MDsKKyAgICAgICAgYWdlbnQtPmZpbGVTeXN0ZW1JbnZhbGlkYXRlZCh0aGlzKTsKKyAgICB9CiAg
ICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRl
eHREZXN0cm95ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKaW5k
ZXggOGUzNTU2NzBmYzQ1ZGMzOWYyODVhMjBjOWY0ZWM0NmFlNTE2YWJjNi4uYTdmZGE4OGZjOGRl
NDNlZTFkOTJiYzExMjNkZmVlMjE1NDVmOGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmgKQEAgLTQ0LDEzICs0NCwxMiBAQCBjbGFzcyBGaWxlOwogY2xhc3MgRmlsZUNh
bGxiYWNrOwogY2xhc3MgRmlsZUVudHJ5OwogY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOworY2xh
c3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEJh
Y2tQdHI7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2Us
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVT
eXN0ZW0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW0o
Y29udGV4dCwgbmFtZSwgYXN5bmNGaWxlU3lzdGVtKSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiAgICAgUGFz
c1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCgpOwogCkBAIC05NSw2ICs5NCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIFJlZlB0cjxDQj4gbV9jYWxsYmFjazsKICAgICAgICAgUmVmUHRyPENCQXJn
PiBtX2NhbGxiYWNrQXJnOwogICAgIH07CisKKyAgICBSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ+ID4gbV9hZ2VudFByb3ZpZGVyOwogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCA4Y2JhYWQ3MjUxYTAxMWM4YmY1NjhhODhiNjdkMDY5ZTNjZWJhOWFhLi44ODE5NmEx
NTdkMTcxYWFiOGYzMTcyZjU5NTZkZTUwZGRlMDY0MDZhCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC00Miw2ICs0Miw3IEBAIERPTUFJ
Tl9ERUZJTkVfTkFNRV9NQVAgPSB7CiAgICAgIkRhdGFiYXNlIjogIkVOQUJMRV9TUUxfREFUQUJB
U0UiLAogICAgICJEZWJ1Z2dlciI6ICJFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiIsCiAgICAg
IkRPTURlYnVnZ2VyIjogIkVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSIiwKKyAgICAiRmlsZVN5
c3RlbSI6ICJFTkFCTEVfRklMRV9TWVNURU0iLAogICAgICJQcm9maWxlciI6ICJFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUiIsCiAgICAgIldvcmtlciI6ICJFTkFCTEVfV09SS0VSUyIsCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYjcxNmNhOGIwM2NmYWVh
MDdkN2EzMGM0OWU3MjJhMmY1NWRjODVjZC4uYzRmZTdmN2ExYmU1ZjE2YWZhNzM4NGIwMzgyMWVl
ZTYyM2JmODUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAt
OTk0LDYgKzk5NCwxNjUgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgeworICAgICAgICAiZG9t
YWluIjogIkZpbGVTeXN0ZW0iLAorICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgImNv
bW1hbmRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJs
ZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgZXZlbnRzIGZyb20g
YmFja2VuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogImRpc2FibGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNh
YmxlcyBldmVudHMgZnJvbSBiYWNrZW5kLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVhZERpcmVjdG9yeSIsCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGJhY2tlbmQgdG8gcmVhZCB0aGUgZGlyZWN0b3J5
IGNvbnRlbnQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZVN5c3RlbU5h
bWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpbGVTeXN0ZW0g
SWRlbnRpZmllciBwYXNzZWQgd2l0aCBmaWxlU3lzdGVtQWRkZWQgZXZlbnQuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
ZGlyZWN0b3J5UGF0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RnVsbCBwYXRoIG9mIHRoZSBkaXJlY3RvcnkgdG8gcmVhZC4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInR5cGUiOiAic3RyaW5nIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SWQi
LAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBJZGVudGlm
aWVyIGZvciB0aGUgcmVxdWVzdC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAi
aW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVhZEZp
bGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGJhY2tlbmQgdG8g
cmVhZCB0aGUgZmlsZSBjb250ZW50IGFuZCBtZXRhZGF0YS4iLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJmaWxlU3lzdGVtTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlsZVN5c3RlbSBJZGVudGlmaWVyIHBhc3NlZCB3aXRoIGZpbGVTeXN0
ZW1BZGRlZCBldmVudC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5n
IgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlUGF0aCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiRnVsbCBwYXRoIG9mIHRoZSBmaWxlIHRvIHJlYWQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJyZXF1ZXN0SWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlVuaXF1ZSBJZGVudGlmaWVyIGZvciB0aGUgcmVxdWVzdC4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInR5cGUiOiAiaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlU3lzdGVtQWRkZWQi
LAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOb3RpZmllcyBmcm9udGVuZCBvZiBu
ZXcgRmlsZVN5c3RlbS4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlU3lz
dGVtTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5pcXVl
IGlkZW50aWZpZWQgZm9yIHRoZSBGaWxlU3lzdGVtLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm9yaWdpbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogInR5cGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZp
bGVTeXN0ZW0gdHlwZSwgb25lIG9mIHRlbXBvcmFyeSwgcGVyc2lzdGVudCBvciBleHRlcm5hbC4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlU3lzdGVtSW52YWxpZGF0ZWQiLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOb3RpZmllcyBmcm9udGVuZCBvZiBmaWxlc3lz
dGVtIGludmFsaWRhdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxl
U3lzdGVtTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmls
ZVN5c3RlbSBuYW1lIHRvIGJlIGludmFsaWRhdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogImRpZFJlYWREaXJlY3RvcnkiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJy
ZXF1ZXN0SWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVl
c3QgSUQgcGFzc2VkIHRvIHJlYWREaXJlY3RvcnkuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ0eXBlIjogImludGVnZXIiCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVycm9yIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIwIG9yIGVycm9yIGNvZGUuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogImVudHJpZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkZpbGUgb3IgZGlyZWN0b3J5IGVudHJ5IG9uIHRoZSBkaXJlY3RvcnkuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJp
dGVtcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnVsbFBhdGgiLCAi
dHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImlzRGlyZWN0b3J5IiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlkUmVhZEZpbGUiLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SWQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgcGFzc2VkIHRvIHJlYWRGaWxlLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIgorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJlcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiMCBvciBlcnJvciBjb2RlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJp
bnRlZ2VyIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ1cmwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkZpbGVzeXN0ZW0gc2NoZW1lIFVSTC4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJz
aXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaWxlIHNpemUu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm51bWJlciIKKyAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAidHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQ29udGVudCB0eXBlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJp
bmciCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogInN0cmluZ0NvbnRlbnQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRlbnQgb2YgdGhlIGZpbGUgZm9yIHRleHQg
ZmlsZSwgbnVsbCBmb3IgYmluYXJ5IGZpbGUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0
eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YVVSTCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGVudCBvZiB0aGUgZmlsZSBhcyBE
YXRhVVJMIGZvciBiaW5hcnkgZmlsZSwgbnVsbCBmb3IgdGV4dCBmaWxlLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorICAgIHsK
ICAgICAgICAgImRvbWFpbiI6ICJET00iLAogICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBk
b21haW4gZXhwb3NlcyBET00gcmVhZC93cml0ZSBvcGVyYXRpb25zLiBFYWNoIERPTSBOb2RlIGlz
IHJlcHJlc2VudGVkIHdpdGggaXRzIG1pcnJvciBvYmplY3QgdGhhdCBoYXMgYW4gPGNvZGU+aWQ8
L2NvZGU+LiBUaGlzIDxjb2RlPmlkPC9jb2RlPiBjYW4gYmUgdXNlZCB0byBnZXQgYWRkaXRpb25h
bCBpbmZvcm1hdGlvbiBvbiB0aGUgTm9kZSwgcmVzb2x2ZSBpdCBpbnRvIHRoZSBKYXZhU2NyaXB0
IG9iamVjdCB3cmFwcGVyLCBldGMuIEl0IGlzIGltcG9ydGFudCB0aGF0IGNsaWVudCByZWNlaXZl
cyBET00gZXZlbnRzIG9ubHkgZm9yIHRoZSBub2RlcyB0aGF0IGFyZSBrbm93biB0byB0aGUgY2xp
ZW50LiBCYWNrZW5kIGtlZXBzIHRyYWNrIG9mIHRoZSBub2RlcyB0aGF0IHdlcmUgc2VudCB0byB0
aGUgY2xpZW50IGFuZCBuZXZlciBzZW5kcyB0aGUgc2FtZSBub2RlIHR3aWNlLiBJdCBpcyBjbGll
bnQncyByZXNwb25zaWJpbGl0eSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBub2Rl
cyB0aGF0IHdlcmUgc2VudCB0byB0aGUgY2xpZW50LjxwPk5vdGUgdGhhdCA8Y29kZT5pZnJhbWU8
L2NvZGU+IG93bmVyIGVsZW1lbnRzIHdpbGwgcmV0dXJuIGNvcnJlc3BvbmRpbmcgZG9jdW1lbnQg
ZWxlbWVudHMgYXMgdGhlaXIgY2hpbGQgbm9kZXMuPC9wPiIsCiAgICAgICAgICJ0eXBlcyI6IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkMjExYjRlMmIxNmFhNzZiZjI5NGVhMzViODIwMjZmZjkzZWY2OGZiLi4xNDE5ODRmZjll
OWE3YjE5YzA5MWYxMjk4NTE5MzlkOGViY2RmNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC03OSw2ICs4MCw5IEBAIEluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50
KiBpbnNwZWN0b3JDCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAsIG1fZGF0YWJhc2VB
Z2VudChJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpKSkKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
KyAgICAsIG1fZmlsZVN5c3RlbUFnZW50KEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCisjZW5kaWYKICAg
ICAsIG1fZG9tU3RvcmFnZUFnZW50KEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX3RpbWVs
aW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9wYWdlQWdlbnQuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKSkKQEAg
LTE3MSw2ICsxNzUsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBtX2RhdGFiYXNlQWdlbnQtPnNldEZy
b250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQorICAgIG1fZmlsZVN5c3RlbUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3Rv
ckZyb250ZW5kLmdldCgpKTsKKyNlbmRpZgogICAgIG1fZG9tU3RvcmFnZUFnZW50LT5zZXRGcm9u
dGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAg
ICBtX3dvcmtlckFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsK
QEAgLTE5OCw2ICsyMDUsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCgpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC5nZXQoKSwKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAg
bV9maWxlU3lzdGVtQWdlbnQuZ2V0KCksCisjZW5kaWYKICAgICAgICAgbV9yZXNvdXJjZUFnZW50
LmdldCgpLAogICAgICAgICBtX3BhZ2VBZ2VudC5nZXQoKSwKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKQEAgLTIzNyw2ICsyNDcsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBtX2Rh
dGFiYXNlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKyAgICBtX2ZpbGVTeXN0ZW1BZ2VudC0+Y2xlYXJGcm9udGVuZCgpOworI2VuZGlmCiAg
ICAgbV9kb21TdG9yYWdlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX3BhZ2VBZ2VudC0+
Y2xlYXJGcm9udGVuZCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQpAQCAtMjkwLDYgKzMwMyw5IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tp
ZShjb25zdCBTdHJpbmcmIGluc3BlY3RvCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBt
X2RhdGFiYXNlQWdlbnQtPnJlc3RvcmUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKKyAgICBtX2ZpbGVTeXN0ZW1BZ2VudC0+cmVzdG9yZSgpOworI2VuZGlmCiAgICAgbV9kb21T
dG9yYWdlQWdlbnQtPnJlc3RvcmUoKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBtX3dvcmtl
ckFnZW50LT5yZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCBiMDU3OTNiNzgxYjg4ZGE3ODZiY2NjMTk1NzAzMWIyOTA4MjQw
ZWY3Li5mODU1YzcxNzNkMzkwMTc4ZmExZDA3OTY2ZDgwYTllYzNlN2M3OTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUzLDYgKzUz
LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNs
YXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKQEAgLTEyNyw2ICsxMjgsOSBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+
IG1fZGF0YWJhc2VBZ2VudDsKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBP
d25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBtX2ZpbGVTeXN0ZW1BZ2VudDsKKyNlbmRp
ZgogICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IG1fZG9tU3RvcmFnZUFnZW50
OwogICAgIE93blB0cjxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiBtX3RpbWVsaW5lQWdlbnQ7CiAg
ICAgT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0ODU1NjQ4NmUxNTJmOTYxM2IxOGNlZjY1
MjRhNmM5NTQ3YjM1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMCwwICsxLDUyMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRP
TUZpbGVQYXRoLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVu
dHJ5LmgiCisjaW5jbHVkZSAiRW50cnlBcnJheS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1
ZGUgIkZpbGVDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgorI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVt
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIHsKKworLy8gRXZlbnREaXNwYXRjaGVyPEIsIEgsIFIoQTEsIEEyLC4uLik+IHNo
b3VsZDoKKy8vIC0gc3ViY2xhc3Mgb2YgQiwKKy8vIC0gYWNjZXB0IEgqIGFuZCBSIChIOjoqKShB
MSwgQTIsLi4uKSBpbiBjb25zdHJ1Y3RvciwKKy8vIC0gaGFzIHN1aXRhYmxlIGNhbGxiYWNrIG1l
dGhvZCBsaWtlIFIgaGFuZGxlRXZlbnQoQTEsIEEyLC4uLiksCisvLyAtIGRpc3BhdGNoIGNhbGxp
bmcgaGFuZGxlRXZlbnQoYTEsIGEyLC4uLikgdG8gaC0+bWV0aG9kKGExLCBhMiwuLi4pCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIFN5
bm9ueW0+CitjbGFzcyBFdmVudERpc3BhdGNoZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2VD
YWxsYmFjaywgdHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmcx
PgorY2xhc3MgRXZlbnREaXNwYXRjaGVyPEJhc2VDYWxsYmFjaywgSGFuZGxlciwgUmVzdWx0KEFy
ZzEpPiA6IHB1YmxpYyBCYXNlQ2FsbGJhY2sgeworcHVibGljOgorICAgIHR5cGVkZWYgUmVzdWx0
IChIYW5kbGVyOjoqIEhhbmRsZU1ldGhvZCkoQXJnMSk7CisKKyAgICBFdmVudERpc3BhdGNoZXIo
UGFzc1JlZlB0cjxIYW5kbGVyPiBoYW5kbGVyLCBIYW5kbGVNZXRob2QgbWV0aG9kKQorICAgICAg
ICA6IG1faGFuZGxlcihoYW5kbGVyKSwgbV9tZXRob2QobWV0aG9kKSB7IH0KKworICAgIHZpcnR1
YWwgUmVzdWx0IGhhbmRsZUV2ZW50KEFyZzEgYXJnKQorICAgIHsKKyAgICAgICAgcmV0dXJuICht
X2hhbmRsZXIuZ2V0KCktPiptX21ldGhvZCkoYXJnKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5F
dmVudERpc3BhdGNoZXIoKSB7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEhhbmRsZXI+IG1faGFu
ZGxlcjsKKyAgICBIYW5kbGVNZXRob2QgbV9tZXRob2Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYW5kbGVyPgorY2xhc3MgRXZlbnREaXNwYXRjaGVyPFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIs
IEhhbmRsZXIsIHZvaWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6
OkV2ZW50Kik+IDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgdm9pZCAoSGFuZGxlcjo6KiBIYW5kbGVNZXRob2QpKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopOworICAgIEV2ZW50RGlzcGF0Y2hlcihQ
YXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRsZU1ldGhvZCBtZXRob2QpCisgICAgICAg
IDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSksIG1f
aGFuZGxlcihoYW5kbGVyKSwgbV9tZXRob2QobWV0aG9kKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
ZWJDb3JlOjpFdmVudCogZXZlbnQpCisgICAgeworICAgICAgICAobV9oYW5kbGVyLmdldCgpLT4q
bV9tZXRob2QpKGNvbnRleHQsIGV2ZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyJiByaHMpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcyA9PSAmcmhzOworICAgIH0KKworICAgIHZpcnR1YWwgfkV2ZW50RGlzcGF0
Y2hlcigpIHsgfQorcHJpdmF0ZToKKyAgICBXVEY6OlJlZlB0cjxIYW5kbGVyPiBtX2hhbmRsZXI7
CisgICAgSGFuZGxlTWV0aG9kIG1fbWV0aG9kOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFBhc3NUeXBlIHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzZUNhbGxiYWNrLCB0
eXBlbmFtZSBIYW5kbGVyLCB0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZzE+CitQYXNzUmVm
UHRyPEJhc2VDYWxsYmFjaz4gY3JlYXRlRGlzcGF0Y2hlcihQYXNzVHlwZTxCYXNlQ2FsbGJhY2s+
LCBIYW5kbGVyKiBoYW5kbGVyLCBSZXN1bHQgKEhhbmRsZXI6OiptZXRob2QpKEFyZzEpKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnREaXNwYXRjaGVyPEJhc2VDYWxsYmFjaywgSGFu
ZGxlciwgUmVzdWx0KEFyZzEpPihSZWZQdHI8SGFuZGxlcj4oaGFuZGxlciksIG1ldGhvZCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5
cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMj4KK1Bhc3NSZWZQdHI8
QmFzZUNhbGxiYWNrPiBjcmVhdGVEaXNwYXRjaGVyKFBhc3NUeXBlPEJhc2VDYWxsYmFjaz4sIEhh
bmRsZXIqIGhhbmRsZXIsIFJlc3VsdCAoSGFuZGxlcjo6Km1ldGhvZCkoQXJnMSwgQXJnMikpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudERpc3BhdGNoZXI8QmFzZUNhbGxiYWNrLCBI
YW5kbGVyLCBSZXN1bHQoQXJnMSwgQXJnMik+KFJlZlB0cjxIYW5kbGVyPihoYW5kbGVyKSwgbWV0
aG9kKSk7Cit9CisKK1N0cmluZyB0eXBlVG9TdHJpbmcoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVt
OjpUeXBlIHR5cGUpCit7CisgICAgdXNpbmcgV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQXN5bmNGaWxlU3lzdGVtOjpFeHRlcm5hbDoKKyAg
ICAgICAgcmV0dXJuICJleHRlcm5hbCI7CisgICAgY2FzZSBBc3luY0ZpbGVTeXN0ZW06OlBlcnNp
c3RlbnQ6CisgICAgICAgIHJldHVybiAicGVyc2lzdGVudCI7CisgICAgY2FzZSBBc3luY0ZpbGVT
eXN0ZW06OlRlbXBvcmFyeToKKyAgICAgICAgcmV0dXJuICJ0ZW1wb3JhcnkiOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiAidW5rbm93biI7CisgICAgfQorfQorCit0eXBlZGVmIFdlYkNv
cmU6OkJhY2tQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBBZ2VudFByb3Zp
ZGVyOwordHlwZWRlZiBXZWJDb3JlOjpCYWNrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtPiBGcm9udGVuZFByb3ZpZGVyOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
UGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrUHRyPFQ+ID4gbWFrZUJhY2tQdHIoVCogcHRyKQorewor
ICAgIHJldHVybiBXZWJDb3JlOjpCYWNrUHRyPFQ+OjpjcmVhdGUocHRyKTsKK30KKworfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIEZp
bGVTeXN0ZW1BZ2VudFN0YXRlIHsKK3N0YXRpYyBjb25zdCBjaGFyIGZpbGVTeXN0ZW1BZ2VudEVu
YWJsZWRbXSA9ICJmaWxlU3lzdGVtQWdlbnRFbmFibGVkIjsKK30KKworY2xhc3MgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpGaWxlVGFza0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlVGFz
a0Jhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgU3RhcnQoKSA9IDA7CisgICAgdmly
dHVhbCB+RmlsZVRhc2tCYXNlKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBGaWxlVGFza0Jhc2Uo
UGFzc1JlZlB0cjxBZ2VudFByb3ZpZGVyPiBhZ2VudFByb3ZpZGVyLCBQYXNzUmVmUHRyPEZyb250
ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgZmlsZVN5c3RlbU5hbWUpIDogbV9hZ2VudFByb3ZpZGVyKGFnZW50UHJvdmlkZXIpLCBtX2Zy
b250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlciksIG1fcmVxdWVzdElkKHJlcXVlc3RJZCks
IG1fZmlsZVN5c3RlbU5hbWUoZmlsZVN5c3RlbU5hbWUpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9hZ2VudFByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRl
ci5nZXQoKSk7CisgICAgfQorCisgICAgRmlsZVRhc2tCYXNlKGNvbnN0IEZpbGVUYXNrQmFzZSYg
cmhzKSA6IG1fYWdlbnRQcm92aWRlcihyaHMubV9hZ2VudFByb3ZpZGVyKSwgbV9mcm9udGVuZFBy
b3ZpZGVyKHJocy5tX2Zyb250ZW5kUHJvdmlkZXIpLCBtX3JlcXVlc3RJZChtX3JlcXVlc3RJZCks
IG1fZmlsZVN5c3RlbU5hbWUocmhzLm1fZmlsZVN5c3RlbU5hbWUpCisgICAgeworICAgICAgICBB
U1NFUlQobV9hZ2VudFByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci5nZXQoKSk7CisgICAgfQorCisgICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBn
ZXRBZ2VudCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9hZ2VudFByb3ZpZGVyLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fYWdlbnRQcm92aWRlci0+Z2V0KCk7CisgICAgfQorCisgICAgRE9N
RmlsZVN5c3RlbSogZ2V0RmlsZVN5c3RlbSgpCisgICAgeworICAgICAgICBpZiAoSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KiBhZ2VudCA9IGdldEFnZW50KCkpCisgICAgICAgICAgICByZXR1cm4g
YWdlbnQtPmdldEZpbGVTeXN0ZW0obV9maWxlU3lzdGVtTmFtZSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBnZXRGcm9udGVu
ZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyKTsKKyAgICAgICAg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCA9IGdldEFnZW50KCk7CisgICAgICAgIGlm
IChhZ2VudCAmJiBhZ2VudC0+bV9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fZnJvbnRl
bmRQcm92aWRlci0+Z2V0KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGludCBn
ZXRSZXF1ZXN0SWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVxdWVzdElkOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBSZWZQdHI8QWdlbnRQcm92aWRlcj4gbV9hZ2VudFByb3ZpZGVyOwor
ICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgaW50
IG1fcmVxdWVzdElkOworICAgIFN0cmluZyBtX2ZpbGVTeXN0ZW1OYW1lOworfTsKKworY2xhc3Mg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpSZWFkRGlyZWN0b3J5VGFzayA6IHB1YmxpYyBGaWxl
VGFza0Jhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPEFnZW50UHJvdmlkZXI+IGFnZW50UHJvdmlkZXIsIFBhc3NSZWZQ
dHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZERpcmVjdG9yeVRhc2soYWdlbnRQcm92
aWRlciwgZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBmaWxlU3lzdGVtTmFtZSwgZnVsbFBh
dGgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWFkRGlyZWN0b3J5VGFzaygpCisgICAgewor
ICAgICAgICBpZiAobV9yZXRyeSkKKyAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0
b3J5VGFzaygqdGhpcykpLT5TdGFydCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTdGFy
dCgpCisgICAgeworICAgICAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtID0gZ2V0RmlsZVN5
c3RlbSgpOworICAgICAgICBpZiAoIWZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIG1fcmV0cnkg
PSBmYWxzZTsKKyAgICAgICAgICAgIFJlZlB0cjxGaWxlRXJyb3I+IGVycm9yKEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6QUJPUlRfRVJSKSk7CisgICAgICAgICAgICBvbkVycm9yKGVycm9y
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8
RGlyZWN0b3J5UmVhZGVyPiByZWFkZXIgPSBEaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShmaWxlc3lz
dGVtLCBtX2Z1bGxQYXRoKTsKKyAgICAgICAgcmVhZGVyLT5yZWFkRW50cmllcygKKyAgICAgICAg
ICAgIGNyZWF0ZURpc3BhdGNoZXIoUGFzc1R5cGU8RW50cmllc0NhbGxiYWNrPigpLCB0aGlzLCAm
UmVhZERpcmVjdG9yeVRhc2s6Om9uU3VjY2VzcyksCisgICAgICAgICAgICBjcmVhdGVEaXNwYXRj
aGVyKFBhc3NUeXBlPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6
b25FcnJvcikpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWFkRGlyZWN0b3J5VGFzayhQYXNz
UmVmUHRyPEFnZW50UHJvdmlkZXI+IGFnZW50UHJvdmlkZXIsIFBhc3NSZWZQdHI8RnJvbnRlbmRQ
cm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBm
aWxlU3lzdGVtTmFtZSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgOiBGaWxlVGFza0Jhc2UoYWdl
bnRQcm92aWRlciwgZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBmaWxlU3lzdGVtTmFtZSks
IG1fcmV0cnkodHJ1ZSksIG1fZnVsbFBhdGgoZnVsbFBhdGgpCisgICAgeworICAgIH0KKworICAg
IFJlYWREaXJlY3RvcnlUYXNrKGNvbnN0IFJlYWREaXJlY3RvcnlUYXNrJiByaHMpIDogRmlsZVRh
c2tCYXNlKHJocyksIG1fcmV0cnkodHJ1ZSksIG1fZnVsbFBhdGgocmhzLm1fZnVsbFBhdGgpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgb25TdWNjZXNzKEVudHJ5QXJyYXkqIGdvdEVudHJpZXMp
CisgICAgeworICAgICAgICBBU1NFUlQoZ290RW50cmllcyk7CisgICAgICAgIG1fcmV0cnkgPSBm
YWxzZTsKKworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRlbmQg
PSBnZXRGcm9udGVuZCgpOworICAgICAgICBpZiAoIWZyb250ZW5kKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBlbnRyaWVzKEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7aSA8IGdv
dEVudHJpZXMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIEVudHJ5KiBnb3RFbnRyeSA9
IGdvdEVudHJpZXMtPml0ZW0oaSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGVudHJ5KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygibmFtZSIsIGdvdEVudHJ5LT5uYW1lKCkpOworICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygiZnVsbFBhdGgiLCBnb3RFbnRyeS0+ZnVsbFBhdGgoKSk7CisgICAgICAgICAg
ICBlbnRyeS0+c2V0U3RyaW5nKCJ1cmwiLCBnb3RFbnRyeS0+dG9VUkwoKSk7CisgICAgICAgICAg
ICBlbnRyeS0+c2V0Qm9vbGVhbigiaXNEaXJlY3RvcnkiLCBnb3RFbnRyeS0+aXNEaXJlY3Rvcnko
KSk7CisgICAgICAgICAgICBlbnRyaWVzLT5wdXNoT2JqZWN0KGVudHJ5KTsKKyAgICAgICAgfQor
ICAgICAgICBnZXRGcm9udGVuZCgpLT5kaWRSZWFkRGlyZWN0b3J5KGdldFJlcXVlc3RJZCgpLCAw
LCBlbnRyaWVzLnJlbGVhc2UoKSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBvbkVycm9yKEZpbGVFcnJvciogZXJyb3IpCisgICAgeworICAgICAgICBtX3JldHJ5
ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBm
cm9udGVuZCA9IGdldEZyb250ZW5kKCkpCisgICAgICAgICAgICBmcm9udGVuZC0+ZGlkUmVhZERp
cmVjdG9yeShnZXRSZXF1ZXN0SWQoKSwgZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGJvb2wgbV9yZXRyeTsKKyAgICBTdHJpbmcgbV9mdWxsUGF0
aDsKK307CisKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6UmVhZEZpbGVUYXNrIDog
cHVibGljIEZpbGVUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVh
ZEZpbGVUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxBZ2VudFByb3ZpZGVyPiBhZ2VudFByb3ZpZGVy
LCBQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUsIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWRGaWxlVGFzayhhZ2Vu
dFByb3ZpZGVyLCBmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIGZpbGVTeXN0ZW1OYW1lLCBm
dWxsUGF0aCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTdGFydCgpCisgICAgeworICAg
ICAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKG1fZnVsbFBhdGgpKSB7CisgICAgICAg
ICAgICBtX3JldHJ5ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtID0gZ2V0RmlsZVN5c3RlbSgpOworICAg
ICAgICBpZiAoIWZpbGVTeXN0ZW0pIHsKKyAgICAgICAgICAgIG1fcmV0cnkgPSBmYWxzZTsKKyAg
ICAgICAgICAgIFJlZlB0cjxGaWxlRXJyb3I+IGVycm9yKEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6QUJPUlRfRVJSKSk7CisgICAgICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQ6OkZp
bGVTeXN0ZW0qIGZyb250ZW5kID0gZ2V0RnJvbnRlbmQoKSkKKyAgICAgICAgICAgICAgICBmcm9u
dGVuZC0+ZGlkUmVhZEZpbGUoZ2V0UmVxdWVzdElkKCksIGVycm9yLT5jb2RlKCksIFN0cmluZygp
LCAwLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07CisgICAgICAg
IFJlZlB0cjxGaWxlRW50cnk+IGVudHJ5KEZpbGVFbnRyeTo6Y3JlYXRlKGZpbGVTeXN0ZW0sIG1f
ZnVsbFBhdGgpKTsKKyAgICAgICAgbV91cmwgPSBlbnRyeS0+dG9VUkwoKTsKKyAgICAgICAgZW50
cnktPmZpbGUoCisgICAgICAgICAgICBjcmVhdGVEaXNwYXRjaGVyKFBhc3NUeXBlPEZpbGVDYWxs
YmFjaz4oKSwgdGhpcywgJlJlYWRGaWxlVGFzazo6Z290RmlsZSksCisgICAgICAgICAgICBjcmVh
dGVEaXNwYXRjaGVyKFBhc3NUeXBlPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRmlsZVRh
c2s6OmVycm9yT25HZXR0aW5nRmlsZSkpOworICAgIH0KKworICAgIH5SZWFkRmlsZVRhc2soKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fcmV0cnkpCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgUmVh
ZEZpbGVUYXNrKCp0aGlzKSktPlN0YXJ0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlYWRG
aWxlVGFzayhQYXNzUmVmUHRyPEFnZW50UHJvdmlkZXI+IGFnZW50UHJvdmlkZXIsIFBhc3NSZWZQ
dHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgOiBGaWxl
VGFza0Jhc2UoYWdlbnRQcm92aWRlciwgZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBmaWxl
U3lzdGVtTmFtZSksIG1fcmV0cnkodHJ1ZSksIG1fZnVsbFBhdGgoZnVsbFBhdGgpLCBtX2ZpbGVT
eXN0ZW0oMCkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgUmVhZEZpbGVUYXNrKGNvbnN0
IFJlYWRGaWxlVGFzayYgcmhzKSA6IEZpbGVUYXNrQmFzZShyaHMpLCBtX3JldHJ5KHRydWUpLCBt
X2Z1bGxQYXRoKHJocy5tX2Z1bGxQYXRoKSwgbV9maWxlU3lzdGVtKDApCisgICAgeworICAgIH0K
KworICAgIGJvb2wgZ290RmlsZShGaWxlKiBmaWxlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
ZmlsZVN5c3RlbSk7CisgICAgICAgIG1fcmVhZGVyID0gRmlsZVJlYWRlcjo6Y3JlYXRlKG1fZmls
ZVN5c3RlbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV9yZWFkZXItPnNl
dE9ubG9hZChjcmVhdGVEaXNwYXRjaGVyKFBhc3NUeXBlPEV2ZW50TGlzdGVuZXI+KCksIHRoaXMs
ICZSZWFkRmlsZVRhc2s6Om9ubG9hZCkpOworICAgICAgICBtX3JlYWRlci0+c2V0T25hYm9ydChj
cmVhdGVEaXNwYXRjaGVyKFBhc3NUeXBlPEV2ZW50TGlzdGVuZXI+KCksIHRoaXMsICZSZWFkRmls
ZVRhc2s6Om9uYWJvcnQpKTsKKyAgICAgICAgbV9yZWFkZXItPnNldE9uZXJyb3IoY3JlYXRlRGlz
cGF0Y2hlcihQYXNzVHlwZTxFdmVudExpc3RlbmVyPigpLCB0aGlzLCAmUmVhZEZpbGVUYXNrOjpv
bmVycm9yKSk7CisKKyAgICAgICAgbV9zaXplID0gZmlsZS0+c2l6ZSgpOworICAgICAgICBtX3R5
cGUgPSBmaWxlLT50eXBlKCk7CisgICAgICAgIG1fdGV4dCA9IG1fdHlwZS5zdGFydHNXaXRoKCJ0
ZXh0LyIpOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpZiAobV90
ZXh0KQorICAgICAgICAgICAgbV9yZWFkZXItPnJlYWRBc1RleHQoZmlsZSwgZWMpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3JlYWRlci0+cmVhZEFzRGF0YVVSTChmaWxlLCBlYyk7Cisg
ICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBi
b29sIGVycm9yT25HZXR0aW5nRmlsZShGaWxlRXJyb3IqIGVycm9yKQorICAgIHsKKyAgICAgICAg
bV9yZXRyeSA9IGZhbHNlOworICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0
ZW0qIGZyb250ZW5kID0gZ2V0RnJvbnRlbmQoKSkKKyAgICAgICAgICAgIGZyb250ZW5kLT5kaWRS
ZWFkRmlsZShnZXRSZXF1ZXN0SWQoKSwgZXJyb3ItPmNvZGUoKSwgU3RyaW5nKCksIDAsIFN0cmlu
ZygpLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICB2b2lkIG9ubG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKQorICAgIHsK
KyAgICAgICAgbV9yZXRyeSA9IGZhbHNlOworICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQ6
OkZpbGVTeXN0ZW0qIGZyb250ZW5kID0gZ2V0RnJvbnRlbmQoKSkgeworICAgICAgICAgICAgU3Ry
aW5nIHN0cmluZ0NvbnRlbnQ7CisgICAgICAgICAgICBTdHJpbmcgZGF0YVVSTDsKKyAgICAgICAg
ICAgIGlmIChtX3RleHQpCisgICAgICAgICAgICAgICAgc3RyaW5nQ29udGVudCA9IG1fcmVhZGVy
LT5zdHJpbmdSZXN1bHQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkYXRh
VVJMID0gbV9yZWFkZXItPnN0cmluZ1Jlc3VsdCgpOworICAgICAgICAgICAgZnJvbnRlbmQtPmRp
ZFJlYWRGaWxlKGdldFJlcXVlc3RJZCgpLCAwLCBtX3VybCwgbV9zaXplLCBtX3R5cGUsIHN0cmlu
Z0NvbnRlbnQsIGRhdGFVUkwpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvbmFib3J0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopCisgICAgeworICAgICAgICBtX3JldHJ5
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIG9uZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV2ZW50KikKKyAgICB7CisgICAgICAgIG1fcmV0cnkgPSBmYWxzZTsKKyAgICAgICAgaWYg
KEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBmcm9udGVuZCA9IGdldEZyb250ZW5kKCkp
CisgICAgICAgICAgICBmcm9udGVuZC0+ZGlkUmVhZEZpbGUoZ2V0UmVxdWVzdElkKCksIG1fcmVh
ZGVyLT5lcnJvcigpLT5jb2RlKCksIFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0
cmluZygpKTsKKyAgICB9CisKKyAgICBib29sIG1fcmV0cnk7CisgICAgU3RyaW5nIG1fZnVsbFBh
dGg7CisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX3R5cGU7CisgICAgdW5zaWduZWQg
bG9uZyBsb25nIG1fc2l6ZTsKKyAgICBib29sIG1fdGV4dDsKKyAgICBSZWZQdHI8RmlsZVJlYWRl
cj4gbV9yZWFkZXI7CisgICAgRE9NRmlsZVN5c3RlbSogbV9maWxlU3lzdGVtOworfTsKKworLy8g
c3RhdGljCitQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKSk7Cit9
CisKK0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgp
Cit7CisgICAgaWYgKG1fYWdlbnRQcm92aWRlci5nZXQoKSAmJiBtX2FnZW50UHJvdmlkZXItPmdl
dCgpKQorICAgICAgICBtX2FnZW50UHJvdmlkZXItPmNsZWFyKCk7CisgICAgaWYgKG1fZnJvbnRl
bmRQcm92aWRlci5nZXQoKSAmJiBtX2Zyb250ZW5kUHJvdmlkZXItPmdldCgpKQorICAgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXItPmNsZWFyKCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpyZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnVsbFBhdGgsIGludCByZXF1ZXN0
SWQpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlcik7CisgICAgUmVhZERpcmVjdG9y
eVRhc2s6OmNyZWF0ZShtX2FnZW50UHJvdmlkZXIsIG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCBmaWxlU3lzdGVtTmFtZSwgZnVsbFBhdGgpLT5TdGFydCgpOworfQorCit2b2lkIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVhZEZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBXVEY6OlN0
cmluZyYgZmlsZVN5c3RlbU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmdWxsUGF0aCwgaW50IHJl
cXVlc3RJZCkKK3sKKyAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyKTsKKyAgICBSZWFkRmls
ZVRhc2s6OmNyZWF0ZShtX2FnZW50UHJvdmlkZXIsIG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCBmaWxlU3lzdGVtTmFtZSwgZnVsbFBhdGgpLT5TdGFydCgpOworfQorCitQYXNzUmVmUHRy
PEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lz
dGVtKQoreworICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW1QdHIgPSBmaWxlU3lzdGVtLmdl
dCgpOworICAgIFN0cmluZyBmaWxlU3lzdGVtTmFtZSA9IGZpbGVTeXN0ZW0tPm5hbWUoKTsKKyAg
ICBOYW1lZEZpbGVTeXN0ZW1zOjppdGVyYXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmFkZChmaWxl
U3lzdGVtLT5uYW1lKCksIEZpbGVTeXN0ZW1zKCkpLmZpcnN0OworICAgIGl0ci0+c2Vjb25kLmFk
ZChmaWxlU3lzdGVtKTsKKworICAgIGlmIChnZXRGcm9udGVuZCgpICYmIG1fZW5hYmxlZCkgewor
ICAgICAgICBnZXRGcm9udGVuZCgpLT5maWxlU3lzdGVtQWRkZWQoCisgICAgICAgICAgICBmaWxl
U3lzdGVtTmFtZSwKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1QdHItPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCksCisgICAgICAgICAgICB0eXBlVG9TdHJpbmcoZmlsZVN5c3RlbVB0ci0+YXN5
bmNGaWxlU3lzdGVtKCktPnR5cGUoKSkpOworICAgIH0KKyAgICByZXR1cm4gbV9hZ2VudFByb3Zp
ZGVyOworfQorCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZmlsZVN5c3RlbUludmFs
aWRhdGVkKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKK3sKKyAgICBTdHJp
bmcgbmFtZSA9IGZpbGVTeXN0ZW0tPm5hbWUoKTsKKyAgICBOYW1lZEZpbGVTeXN0ZW1zOjppdGVy
YXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmZpbmQobmFtZSk7CisgICAgaWYgKGl0ciA9PSBtX2Zp
bGVTeXN0ZW1zLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaXRyLT5zZWNvbmQucmVtb3Zl
KGZpbGVTeXN0ZW0pOworICAgIGlmIChpdHItPnNlY29uZC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9maWxlU3lzdGVtcy5yZW1vdmUoaXRyKTsKKyAgICAgICAgaWYgKGdldEZyb250ZW5kKCkgJiYg
bV9lbmFibGVkKQorICAgICAgICAgICAgZ2V0RnJvbnRlbmQoKS0+ZmlsZVN5c3RlbUludmFsaWRh
dGVkKG5hbWUpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYgKEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lz
dGVtKiBmcm9udGVuZCA9IGdldEZyb250ZW5kKCkpIHsKKyAgICAgICAgZm9yIChOYW1lZEZpbGVT
eXN0ZW1zOjppdGVyYXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmJlZ2luKCk7CisgICAgICAgICAg
ICAgaXRyICE9IG1fZmlsZVN5c3RlbXMuZW5kKCk7ICsraXRyKSB7CisgICAgICAgICAgICBBU1NF
UlQoIWl0ci0+c2Vjb25kLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBET01GaWxlU3lzdGVtKiBm
aWxlU3lzdGVtID0gaXRyLT5zZWNvbmQuYmVnaW4oKS0+Z2V0KCk7CisgICAgICAgICAgICBmcm9u
dGVuZC0+ZmlsZVN5c3RlbUFkZGVkKAorICAgICAgICAgICAgICAgIGZpbGVTeXN0ZW0tPm5hbWUo
KSwKKyAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpLAorICAgICAgICAgICAgICAgIHR5cGVUb1N0cmluZyhmaWxlU3lzdGVtLT5hc3luY0ZpbGVT
eXN0ZW0oKS0+dHlwZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9lbmFibGVk
KQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBt
X2VuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyopCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1B
Z2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworfQorCit2b2lk
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQoreworICAgIEFTU0VSVChmcm9udGVuZCk7CisgICAgaWYgKG1fZnJvbnRlbmRQ
cm92aWRlci5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5jbGVhcigpOworICAg
IG1fZnJvbnRlbmRQcm92aWRlciA9IG1ha2VCYWNrUHRyKGZyb250ZW5kLT5maWxlc3lzdGVtKCkp
OworfQorCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7
CisgICAgaWYgKG1fZnJvbnRlbmRQcm92aWRlci5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZFBy
b3ZpZGVyLT5jbGVhcigpOworICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgbV9lbmFi
bGVkID0gZmFsc2U7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0
ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKK30KKwordm9pZCBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ6OnJlc3RvcmUoKQoreworICAgIG1fZW5hYmxlZCA9IG1fc3RhdGUt
PmdldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQp
OworfQorCitET01GaWxlU3lzdGVtKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmdldEZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSkKK3sKKyAgICBOYW1lZEZpbGVTeXN0
ZW1zOjppdGVyYXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmZpbmQoZmlsZVN5c3RlbU5hbWUpOwor
ICAgIHJldHVybiBpdHIgIT0gbV9maWxlU3lzdGVtcy5lbmQoKSA/IGl0ci0+c2Vjb25kLmJlZ2lu
KCktPmdldCgpIDogMDsKK30KKworSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yU3RhdGUqIHN0YXRlKQorICAgIDogbV9hZ2VudFByb3ZpZGVyKG1ha2VCYWNrUHRy
KHRoaXMpKSwKKyAgICAgIG1fZnJvbnRlbmRQcm92aWRlcigwKSwKKyAgICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKSwKKyAgICAgIG1fc3RhdGUoc3RhdGUpLAor
ICAgICAgbV9lbmFibGVkKGZhbHNlKQoreworICAgIEFTU0VSVChpbnN0cnVtZW50aW5nQWdlbnRz
KTsKKyAgICBBU1NFUlQoc3RhdGUpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmIzNGJmMzVjNGMyNzgzNGNkZDgyYjg4NjY3MjBhNTY2ZmFhNDEzZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKKworI2lmIEVOQUJM
RShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBc3luY0ZpbGVTeXN0ZW07CitjbGFzcyBET01GaWxlU3lz
dGVtOworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2Ns
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ7
Cit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Ns
YXNzIEJhY2tQdHIgOiBwdWJsaWMgUmVmQ291bnRlZDxCYWNrUHRyPFQ+ID4geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJhY2tQdHI8VD4pOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhY2tQdHI8VD4gPiBjcmVhdGUoVCogcHRyKSB7cmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNr
UHRyKHB0cikpO30KKyAgICBUKiBnZXQoKSBjb25zdCB7cmV0dXJuIG1fcHRyO30KKyAgICB2b2lk
IGNsZWFyKCkge21fcHRyID0gMDt9Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEJhY2tQdHIoVCog
cHRyKSA6IG1fcHRyKHB0cikgeyB9CisgICAgVCogbV9wdHI7Cit9OworCitjbGFzcyBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQgeworcHVibGljOgorICAgIGNsYXNzIEZpbGVUYXNrQmFzZTsKKyAg
ICBjbGFzcyBSZWFkRGlyZWN0b3J5VGFzazsKKyAgICBjbGFzcyBSZWFkRmlsZVRhc2s7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQoKTsKKworICAgIHZvaWQgcmVhZERpcmVjdG9yeShFcnJvclN0cmlu
ZyosIGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeVBhdGgsIGludCByZXF1ZXN0SWQpOworICAgIHZvaWQgcmVhZEZpbGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBXVEY6OlN0cmluZyYgZmlsZVN5c3RlbU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlUGF0aCwgaW50IHJlcXVlc3RJZCk7CisKKyAgICBQYXNzUmVmUHRyPEJhY2tQdHI8
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4pOworICAgIHZvaWQgZmlsZVN5c3RlbUludmFsaWRhdGVkKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4pOworCisgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAg
ICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKKworICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqKTsKKyAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKworICAgIERPTUZp
bGVTeXN0ZW0qIGdldEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSk7CisK
KyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZ2V0RnJvbnRlbmQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZnJvbnRlbmRQcm92aWRlci5nZXQoKSA/IG1fZnJvbnRlbmRQcm92
aWRlci0+Z2V0KCkgOiAwOworICAgIH0KKworICAgIHZvaWQgcmVzdG9yZSgpOworcHJpdmF0ZToK
KyAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclN0YXRlKik7CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPERPTUZpbGVTeXN0ZW0+
ID4gRmlsZVN5c3RlbXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRmlsZVN5c3RlbXM+
IE5hbWVkRmlsZVN5c3RlbXM7CisgICAgTmFtZWRGaWxlU3lzdGVtcyBtX2ZpbGVTeXN0ZW1zOwor
CisgICAgUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IG1fYWdlbnRQ
cm92aWRlcjsKKyAgICBSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3Rl
bT4gPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2lu
c3RydW1lbnRpbmdBZ2VudHM7CisgICAgSW5zcGVjdG9yU3RhdGUqIG1fc3RhdGU7CisgICAgYm9v
bCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCisjZW5kaWYgLy8gSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhNDllY2RiMGY0YjhiMjY4ZDQ4YmRiOGFlZTUyZmY2NjQxMmYxMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1l
bnRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1JbnN0
cnVtZW50YXRpb25faAorI2RlZmluZSBJbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9u
X2gKKworI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCitpbmxpbmUgUGFzc1JlZlB0cjxC
YWNrUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gPiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3Rl
bSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoZmls
ZVN5c3RlbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIGRpZE9w
ZW5GaWxlU3lzdGVtSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmaWxlU3lzdGVtKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHJldHVybiAwOworfQorI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW5z
cGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDcxMzI5NDMx
NmUwMmI5OWE2NzNlZDljMTAxNGVlYjY2ZTdmNjFiMmQuLmFhYTRmYTBlM2NlYWIxZTQwMDZmNjI4
OTYwNjdlM2IxNGMzZjI2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
cm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgpAQCAt
NzY4LDYgKzc3MCwxNSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRh
dGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZQogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCitQYXNzUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50PiA+IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW1J
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50KiBmaWxlU3lzdGVtQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1BZ2VudC0+ZGlkT3Bl
bkZpbGVTeXN0ZW0oZmlsZVN5c3RlbSk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXNl
RE9NU3RvcmFnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
U3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSogZnJh
bWUpCiB7CiAgICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yQWdlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBhNjIwMjdkYzYzODM4ODBlMGM4
ZDc4YjlmMzRhMGUzMWRiNjJiZDIxLi40NWM1YjY5ZDFiNWQ4NDczYzk1ZDY1MmE2N2M0MWE5NWE2
NzA3ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENoYXJhY3RlckRhdGE7CitjbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgRE9NV2lu
ZG93OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRGF0YWJhc2U7CkBAIC00OSw2ICs1
MCw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50czsKIGNsYXNzIEtVUkw7CkBAIC02Myw2ICs2NSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVh
OwogY2xhc3MgV29ya2VyQ29udGV4dDsKIGNsYXNzIFdvcmtlckNvbnRleHRQcm94eTsKIGNsYXNz
IFhNTEh0dHBSZXF1ZXN0OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEJhY2tQdHI7CiAKICNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OwpA
QCAtMTcyLDYgKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlPiwgY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVt
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4pOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBk
aWRVc2VET01TdG9yYWdlKFBhZ2UqLCBTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2Us
IEZyYW1lKik7CiAKICNpZiBFTkFCTEUoV09SS0VSUykKQEAgLTMwNCw2ICszMTEsMTAgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBQYXNzUmVmUHRyPERhdGFiYXNlPiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVtSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2
b2lkIGRpZFVzZURPTVN0b3JhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdG9yYWdlQXJl
YSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKik7CiAKICNpZiBFTkFCTEUoV09SS0VSUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4
IDdjZDdmN2EyYWVjYWNmNjBiOGRhZjE2MDE0MmE5YTgxMzBhNmZhYzUuLmY3N2U4Y2Y2MDMzZWEz
MTJiMjFmMTA5MTZmZDE3MWEwNjZjNTdmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OworY2xhc3Mg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsK
IGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ7CkBAIC03MSw2ICs3Miw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
ICAgICAgICAsIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKQogI2VuZGlmCisjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQorICAgICAgICAsIG1faW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KDApCisj
ZW5kaWYKICAgICAgICAgLCBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgwKQogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICAgICAsIG1faW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCgwKQpAQCAtMTE1LDYgKzExOSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGFnZW50KSB7IG1faW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCA9IGFnZW50OyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKKyAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OyB9Cisg
ICAgdm9pZCBzZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA9IGFnZW50OyB9CisjZW5k
aWYKKwogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogaW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50ID0gYWdlbnQ7IH0KIApAQCAtMTQ2LDYgKzE1NSw5IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBt
X2luc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CisgICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBtX2luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDsKKyNlbmRpZgogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogbV9pbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IGY4OGZiNWNmYzNkYjExYWMzNjI5NzU0YzY5NWI0ZDA0MTIwOWUwMTUu
LjFkYzExMzBjN2Q0ZTdkZjgwM2Y1M2EwOGE4Y2ZjMjU4MGM0ODk3ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5l
Y3RGcm9udGVuZCgpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgIG1f
ZGVidWdnZXJBZ2VudC5nZXQoKSwKICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAg
ICAgICAgMCwgLy8gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50CisjZW5kaWYKICAgICAgICAgMCwg
Ly8gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudAogICAgICAgICAwLCAvLyBJbnNwZWN0b3JQYWdlQWdl
bnQKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCA4YTEzNTZlODhiODc0ZTU1M2M0N2Zj
MDY5NWZkMjIwYzU5MTQ1ODk0Li5hNTU3YzY3ZWNmZDE2Y2IwZDM1N2Y1MWRiYWE4ODZhMjNhYjVk
NmYyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNo
CkBAIC02MCw2ICs2MCw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tc3Vt
bWFyeV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIFwKICAgICAg
ICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwu
anMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzIFwKICAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMgXAogICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIFwKQEAg
LTE0OCw2ICsxNDksNyBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1h
cnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZlbCBTSQogICAgICAgICAtLWpzIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgXAog
ICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VU
YWJsZVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcyBcCiAgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBcCiAg
ICAgLS1tb2R1bGUganNtb2R1bGVfc2NyaXB0czo4OmpzbW9kdWxlX2NvbXBvbmVudHMgXAogICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lk
ZWJhclBhbmUuanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbXB0eVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vt
cHR5Vmlldy5qcwppbmRleCAxZDQ0YzhhYzQwYmM4MzU0NmIwNmRkYTVjNTBhNTJhNThlZjU5YTUy
Li4zYTRhMjFhMzA5MGZhYTE2MDNiNzQ3NTZhNjdlYzcyYzA5NTdiMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcwpAQCAtNDEsNyArNDEs
NyBAQCBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3ID0gZnVuY3Rpb24odGV4dCkKIFdlYkluc3BlY3Rv
ci5FbXB0eVZpZXcucHJvdG90eXBlID0gewogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInN0b3JhZ2UtZW1wdHktdmlldyI7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzdG9yYWdlLWVtcHR5LXZpZXci
KTsKICAgICAgICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fdGV4dDsKICAgICB9
LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmU5YzlkOGQzMmNhM2MyYTgyNjZmMWYyMmM2YTM2M2U2N2ZjY2E4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbS5qcwpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlciA9IGZ1bmN0aW9uKCkKK3sKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlci5fcGVuZGluZ0NhbGxiYWNrcyA9IHt9OworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNw
YXRjaGVyLl9uZXh0UmVxdWVzdElkID0gMTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNw
YXRjaGVyLl9wdXNoQ2FsbGJhY2sgPSBmdW5jdGlvbihvYmopCit7CisgICAgdmFyIHJlcXVlc3RJ
ZCA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fbmV4dFJlcXVlc3RJZCsrOwor
ICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fcGVuZGluZ0NhbGxiYWNrc1ty
ZXF1ZXN0SWRdID0gb2JqOworICAgIHJldHVybiByZXF1ZXN0SWQ7Cit9OworCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX3BvcENhbGxiYWNrID0gZnVuY3Rpb24ocmVxdWVzdElk
KQoreworICAgIHZhciBjYWxsYmFja3MgPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNo
ZXIuX3BlbmRpbmdDYWxsYmFja3M7CisgICAgdmFyIHJlc3VsdCA9IGNhbGxiYWNrc1tyZXF1ZXN0
SWRdOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRlbGV0ZSBjYWxsYmFja3NbcmVxdWVzdElk
XTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNw
YXRjaGVyLl9yZXNldCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bURpc3BhdGNoZXIuX3BlbmRpbmdDYWxsYmFja3MgPSB7fTsKK307CisKK1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtRGlzcGF0Y2hlci5yZWFkRGlyZWN0b3J5ID0gZnVuY3Rpb24oZmlsZVN5c3RlbU5h
bWUsIHBhdGgsIHN1Y2Nlc3MsIGVycm9yKQoreworICAgIHZhciByZXF1ZXN0SWQgPSBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX3B1c2hDYWxsYmFjayh7b25TdWNjZXNzOiBzdWNj
ZXNzLCBvbkVycm9yOiBlcnJvcn0pOworICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRGlyZWN0b3J5
KGZpbGVTeXN0ZW1OYW1lLCBwYXRoLCByZXF1ZXN0SWQpOworfTsKKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1EaXNwYXRjaGVyLnJlYWRGaWxlID0gZnVuY3Rpb24oZmlsZVN5c3RlbU5hbWUsIHBh
dGgsIHN1Y2Nlc3MsIGVycm9yKQoreworICAgIHZhciByZXF1ZXN0SWQgPSBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbURpc3BhdGNoZXIuX3B1c2hDYWxsYmFjayh7b25TdWNjZXNzOiBzdWNjZXNzLCBv
bkVycm9yOiBlcnJvcn0pOworICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRmlsZShmaWxlU3lzdGVt
TmFtZSwgcGF0aCwgcmVxdWVzdElkKTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CisgICAgZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihuYW1l
LCBvcmlnaW4sIHR5cGUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5hZGRGaWxlU3lzdGVtKG5hbWUsIG9yaWdpbiwgdHlwZSk7CisgICAgfSwKKworICAgIGZp
bGVTeXN0ZW1JbnZhbGlkYXRlZDogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmludmFsaWRhdGVGaWxlU3lzdGVtKG5hbWUpOworICAg
IH0sCisKKyAgICBkaWRSZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9yQ29k
ZSwgZW50cmllcykgeworICAgICAgdmFyIGhhbmRsZXIgPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bURpc3BhdGNoZXIuX3BvcENhbGxiYWNrKHJlcXVlc3RJZCk7CisgICAgICBpZiAoZXJyb3JDb2Rl
KSB7CisgICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIub25FcnJvcikKKyAgICAgICAgICBo
YW5kbGVyLm9uRXJyb3IoZXJyb3JDb2RlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICho
YW5kbGVyICYmIGhhbmRsZXIub25TdWNjZXNzKQorICAgICAgICAgIGhhbmRsZXIub25TdWNjZXNz
KGVudHJpZXMpOworICAgICAgfQorICAgIH0sCisKKyAgICBkaWRSZWFkRmlsZTogZnVuY3Rpb24o
cmVxdWVzdElkLCBlcnJvckNvZGUsIHVybCwgc2l6ZSwgdHlwZSwgc3RyaW5nQ29udGVudCwgZGF0
YVVSTCkgeworICAgICAgICB2YXIgaGFuZGxlciA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlz
cGF0Y2hlci5fcG9wQ2FsbGJhY2socmVxdWVzdElkKTsKKyAgICAgICAgaWYgKGVycm9yQ29kZSkg
eworICAgICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIub25FcnJvcikKKyAgICAgICAgICAg
IGhhbmRsZXIub25FcnJvcihlcnJvckNvZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
IGlmIChoYW5kbGVyICYmIGhhbmRsZXIub25TdWNjZXNzKQorICAgICAgICAgICAgaGFuZGxlci5v
blN1Y2Nlc3ModXJsLCBzaXplLCB0eXBlLCBzdHJpbmdDb250ZW50LCBkYXRhVVJMKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlz
cGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2FkMWYxNjQ1OGM3ZGVkY2UzNzFkY2Y3OGJlYzU5OTFkZjllNzA1ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbVZpZXcuanMKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcgPSBmdW5jdGlvbihmaWxlU3lzdGVtTmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5j
YWxsKHRoaXMpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzdG9yYWdlLXZpZXci
KTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsZXN5c3RlbS12aWV3Iik7CisK
KyAgICB0aGlzLl9kaXJlY3RvcnlUcmVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsK
KyAgICB0aGlzLl9kaXJlY3RvcnlUcmVlLmFkZFN0eWxlQ2xhc3MoImZpbGVzeXN0ZW0tZGlyZWN0
b3J5LXRyZWUiKTsKKyAgICB0aGlzLl9kaXJlY3RvcnlUcmVlLmFkZFN0eWxlQ2xhc3MoIm91dGxp
bmUtZGlzY2xvc3VyZSIpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kaXJl
Y3RvcnlUcmVlKTsKKworICAgIHRoaXMuX2RldGFpbFZpZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgdGhpcy5fZGV0YWlsVmlld3MuYWRkU3R5bGVDbGFzcygiZmlsZXN5
c3RlbS1kZXRhaWwtdmlld3MiKTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
ZGV0YWlsVmlld3MpOworCisgICAgdGhpcy5fcmVzaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIHRoaXMuX3Jlc2l6ZXIuYWRkU3R5bGVDbGFzcygiZmlsZXN5c3RlbS1y
ZXNpemVyIik7CisgICAgdGhpcy5fcmVzaXplci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9zdGFydFJlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc2l6ZXIpOworCisgICAgdGhpcy5fYWN0aXZl
VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KCJGaWxlIFZpZXciKTsKKyAgICB0aGlz
Ll9hY3RpdmVWaWV3LnNob3codGhpcy5lbGVtZW50KTsKKworICAgIHRoaXMuX2RpcmVjdG9yeVRy
ZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKHRoaXMuX2RpcmVjdG9yeVRyZWUpOworICAgIHRo
aXMuX2RpcmVjdG9yeVRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbURpcmVjdG9yeVRyZWVFbGVtZW50KHRoaXMsIGZpbGVTeXN0ZW1OYW1lLCAiLyIsICIv
IiwgdHJ1ZSkpOworCisgICAgdGhpcy51cGRhdGVMZWZ0Vmlld1dpZHRoKCIyMCUiKTsKK307CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7CisgICAgX3N0YXJ0UmVz
aXplckRyYWdnaW5nOiBmdW5jdGlvbihldmVudCkgeworICAgICAgICB2YXIgY3VycmVudFdpZHRo
ID0gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2RpcmVjdG9yeVRyZWUpLmdldFBy
b3BlcnR5VmFsdWUoJ3dpZHRoJykpOworICAgICAgICB2YXIgZHJhZ2dpbmcgPSB0aGlzLl9yZXNp
emVyRHJhZ2dpbmcuYmluZCh0aGlzLCBjdXJyZW50V2lkdGgsIGV2ZW50LnBhZ2VYKTsKKyAgICAg
ICAgdmFyIGVuZERyYWdnaW5nID0gdGhpcy5fZW5kUmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0KHRoaXMuX3Jlc2l6ZXJFbGVt
ZW50LCBkcmFnZ2luZywgZW5kRHJhZ2dpbmcsIGV2ZW50LCAiZXctcmVzaXplIik7CisgICAgfSwK
KworICAgIF9yZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGJhc2VXaWR0aCwgcmVsYXRpdmVUbywg
ZXZlbnQpIHsKKyAgICAgICAgdmFyIG5ld1dpZHRoID0gYmFzZVdpZHRoICsgZXZlbnQucGFnZVgg
LSByZWxhdGl2ZVRvOworICAgICAgICB0aGlzLnVwZGF0ZUxlZnRWaWV3V2lkdGgobmV3V2lkdGgg
KyAncHgnKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICB9LAorCisgICAg
X2VuZFJlc2l6ZXJEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKKyAgICB9LAorCisgICAgdXBkYXRlTGVmdFZpZXdX
aWR0aDogZnVuY3Rpb24od2lkdGgpIHsKKyAgICAgICAgdGhpcy5fZGlyZWN0b3J5VHJlZS5zdHls
ZS53aWR0aCA9IHdpZHRoOworICAgICAgICB0aGlzLl9yZXNpemVyLnN0eWxlLmxlZnQgPSB3aWR0
aDsKKyAgICAgICAgdGhpcy5fZGV0YWlsVmlld3Muc3R5bGUubGVmdCA9IHdpZHRoOworICAgICAg
ICB0aGlzLmRvUmVzaXplKCk7CisgICAgfSwKKworICAgIHNob3c6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnNob3cgfHwgZnVuY3Rpb24oKXt9KS5h
cHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICB0aGlzLl9hY3RpdmVWaWV3LnNob3codGhp
cy5fZGV0YWlsVmlld3MpOworICAgICAgICB0aGlzLnVwZGF0ZUxlZnRWaWV3V2lkdGgoKTsKKyAg
ICB9LAorCisgICAgaGlkZTogZnVuY3Rpb24oKSB7CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUuaGlkZSB8fCBmdW5jdGlvbigpe30pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
CisgICAgICAgIHRoaXMuX2FjdGl2ZVZpZXcuaGlkZSgpOworICAgIH0KK307CisKK1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpcmVjdG9yeVZpZXcgPSBX
ZWJJbnNwZWN0b3IuVmlldzsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXJlY3RvcnlUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBmaWxlU3lzdGVtTmFtZSwgZnVsbFBh
dGgsIG5hbWUsIGlzRGlyZWN0b3J5KSB7CisgICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBuYW1l
LCBudWxsLCBpc0RpcmVjdG9yeSk7CisgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lz
dGVtVmlldzsKKyAgICB0aGlzLl9maWxlU3lzdGVtTmFtZSA9IGZpbGVTeXN0ZW1OYW1lOworICAg
IHRoaXMuX2Z1bGxQYXRoID0gZnVsbFBhdGg7CisgICAgdGhpcy5faXNEaXJlY3RvcnkgPSBpc0Rp
cmVjdG9yeTsKKyAgICB0aGlzLl9jaGlsZHJlbiA9IG51bGw7CisgICAgdGhpcy5fZGV0YWlsVmll
dyA9IG51bGw7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpcmVjdG9yeVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciB2aWV3ID0gdGhpcy5fZmlsZVN5c3RlbVZpZXcuX2RldGFpbFZpZXdzW3RoaXMuX2Z1bGxQYXRo
XTsKKyAgICAgICAgaWYgKCF2aWV3KSB7CisgICAgICAgICAgICBpZiAodGhpcy5faXNEaXJlY3Rv
cnkpIHsKKyAgICAgICAgICAgICAgICB2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5FbXB0eVZpZXco
IkRpcmVjdG9yeTogIiArIHRoaXMuX2Z1bGxQYXRoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KCJMb2FkaW5n
IGZpbGU6ICIgKyB0aGlzLl9mdWxsUGF0aCk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnJlYWRGaWxlKHRoaXMuX2ZpbGVTeXN0ZW1OYW1lLCB0aGlz
Ll9mdWxsUGF0aCwgdGhpcy5fc2hvd0ZpbGUuYmluZCh0aGlzKSwgZXJyb3IuYmluZCh0aGlzKSk7
CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3Ll9k
ZXRhaWxWaWV3c1t0aGlzLl9mdWxsUGF0aF0gPSB2aWV3OworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3Ll9hY3RpdmVWaWV3KQorICAgICAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbVZpZXcuX2FjdGl2ZVZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1WaWV3Ll9hY3RpdmVWaWV3ID0gdmlldzsKKyAgICAgICAgdmlldy5zaG93KHRoaXMuX2Zp
bGVTeXN0ZW1WaWV3Ll9kZXRhaWxWaWV3cyk7CisgICAgfSwKKworICAgIG9uZXhwYW5kOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IFtdOworCisgICAgICAgIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtRGlzcGF0Y2hlci5yZWFkRGlyZWN0b3J5KHRoaXMuX2ZpbGVTeXN0ZW1OYW1lLCB0
aGlzLl9mdWxsUGF0aCwgc3VjY2Vzcy5iaW5kKHRoaXMpLCBlcnJvci5iaW5kKHRoaXMpKTsKKwor
ICAgICAgICBmdW5jdGlvbiBzdWNjZXNzKHJlc3VsdCkgeworICAgICAgICAgICAgZm9yICh2YXIg
aSBpbiByZXN1bHQpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGRQYXRoID0gKHRoaXMuX2Z1
bGxQYXRoID09ICcvJyA/ICcvJyA6IHRoaXMuX2Z1bGxQYXRoICsgJy8nKSArIHJlc3VsdFtpXS5u
YW1lOworICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbURpcmVjdG9yeVRyZWVFbGVtZW50KHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LCB0aGlzLl9maWxl
U3lzdGVtTmFtZSwgY2hpbGRQYXRoLCByZXN1bHRbaV0ubmFtZSwgcmVzdWx0W2ldLmlzRGlyZWN0
b3J5KTsKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVycm9yKCkgeworICAgICAgICAgICAgY29uc29sZS5l
cnJvci5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpOworICAgICAgICB9CisgICAgfSwKKworICAg
IF9zaG93RmlsZTogZnVuY3Rpb24odXJsLCBzaXplLCB0eXBlLCBzdHJpbmdDb250ZW50LCBkYXRh
VVJMKSB7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHR5cGUgPSAnYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtJzsKKworICAgICAgICB2YXIgdmlldzsKKyAgICAgICAgaWYgKHN0cmlu
Z0NvbnRlbnQpIHsKKyAgICAgICAgICAgIHZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lKG51bGwpOworICAgICAgICAgICAgdmlldy5zZXRDb250ZW50KCJ0ZXh0L3BsYWluIiwgc3Ry
aW5nQ29udGVudCk7CisgICAgICAgIH0gZWxzZSBpZiAoZGF0YVVSTCkgeworICAgICAgICAgICAg
dmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KCJBIEJpbmFyeSBmaWxlIGxvYWRlZC4i
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlldy5fYWN0aXZl
VmlldykKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3Ll9hY3RpdmVWaWV3LmRldGFj
aCgpOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5fYWN0aXZlVmlldyA9IHZpZXc7Cisg
ICAgICAgIHZpZXcuc2hvdyh0aGlzLl9maWxlU3lzdGVtVmlldy5fZGV0YWlsVmlld3MpOworICAg
ICAgICBjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpOworICAgIH0KK307CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZVN5c3RlbS5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWRiMTIyMTU5MjZlNzFjNDNjYTc5YTJlNzhiOTQ0NzhkMmMxZjgyOQpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNDQ5CnpjbVY7eTBZM2hUUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1P
MV5AczZBTV5pVjAwMDAxYjVjaF8wSXRwKQp6PT5QeCMyNFlKYEw7KEspe3thNz55e0Q0XjAwMFNh
TkxoMEwwMUZjVTAxRmNWMEdnWl8wMDAwN2JWKkdgMmlwcjAKejF2NEhvTFVRb3swMEJXc0xfdChJ
JWNZWSlPRzdhZiNlWFNKMVVvcjZ5MTl2eWkoM341emsqQlkpSCptZ0lKbE0wCnpiKGVJaUFjKGsk
VSFjMX5LQGkqJjNMVHRFWlJ6VnY/c2RwKHRJfElJRyFQUSole2t9aEJvfiQoMkIxKT9sPnN7Xgp6
VXVpWH5qVnl2RlVHMiUpRiMhMnw5KVFRXjd3KWNaRVJhY0gzWitfa1lqZVl7QDlZNX0jc0R5cTlH
Jig5eT40ZF8KenckZkA9OHhkZk9yJD9abTBJRElhcCE/ZlFMI29yJT4pVippYG5ncnJlaVJOVVA3
RGYmOGJtPVA/N2YxUTVjM2lVCnpwMVNjajQrTllMZkdPQjM0NHVLSElpSlNubnk5S0lleGhPK0kl
ZEZCU3JwI21NRmRfTWR4SUFrQjtZaXlOSSs1Iwp6YGxGMHo2ajg8d2BwSGFIQ2xlVU5LbTNERzBn
UE0jPSU+NDhmZE8qTWUmcTxAelRJUEdiP3cpbkJwIVl0c0krZXsKcj58ZDNPMmZNUm9RcXt3TWIp
cXJYJVVadyhEaVhCcFg2TElVMDAwMDBOa3ZYWHUwbWpmTEdgaTgKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCmluZGV4IDczZjIyYzRkNWVkODJlZDIzZTVlMDgyNDliYWI4NmNiNjJmNzk1
NTMuLjA4MDZjNDc3ZTNjYTYzMmY3NjI0ODljMDI1OWE5MWM4MTJhYzhkOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpA
QCAtNjQsNiArNjQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihk
YXRhYmFzZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCBbImFw
cGxpY2F0aW9uLWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuc2lkZWJhclRy
ZWUuYXBwZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAor
ICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3Rv
cmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxl
U3lzdGVtIiksICJGaWxlU3lzdGVtIiwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIiwg
ImZpbGVzeXN0ZW0iXSk7CisgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQpOworCiAgICAgdGhpcy5zdG9yYWdlVmlld3MgPSB0aGlz
LnNwbGl0Vmlldy5tYWluRWxlbWVudDsKICAgICB0aGlzLnN0b3JhZ2VWaWV3cy5hZGRTdHlsZUNs
YXNzKCJkaWZmLWNvbnRhaW5lciIpOwogCkBAIC03Niw2ICs3OSw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuX29yaWdpbnMgPSB7
fTsKICAgICB0aGlzLl9kb21haW5zID0ge307CiAKKyAgICB0aGlzLl9maWxlU3lzdGVtcyA9IHt9
OworICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3cyA9IHt9OworCiAgICAgdGhpcy5zaWRlYmFyRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9vbm1vdXNlbW92ZS5iaW5k
KHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOwogCkBAIC0x
NjAsNyArMTY2LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fY29va2llVmlld3MgPSB7fTsKIAorICAgICAgICB0aGlzLl9maWxl
U3lzdGVtcyA9IHt9OworICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlld3MgPSB7fTsKKyAKICAg
ICAgICAgdGhpcy5kYXRhYmFzZXNMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAg
ICAgICAgIHRoaXMubG9jYWxTdG9yYWdlTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CiAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgdGhpcy5jb29raWVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKQEAgLTMwMiw2ICszMTIsMjggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VMaXN0VHJlZUVsZW1lbnQu
YXBwZW5kQ2hpbGQoZG9tU3RvcmFnZVRyZWVFbGVtZW50KTsKICAgICB9LAogCisgICAgYWRkRmls
ZVN5c3RlbTogZnVuY3Rpb24obmFtZSwgb3JpZ2luLCB0eXBlKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX2ZpbGVTeXN0ZW1zW25hbWVdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJl
ZUVsZW1lbnQodGhpcywgbmFtZSwgb3JpZ2luLCB0eXBlKTsKKyAgICAgICAgdGhpcy5fZmlsZVN5
c3RlbXNbbmFtZV0gPSBmaWxlU3lzdGVtVHJlZUVsZW1lbnQ7CisgICAgICAgIHRoaXMuZmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOwor
ICAgIH0sCisKKyAgICBpbnZhbGlkYXRlRmlsZVN5c3RlbTogZnVuY3Rpb24obmFtZSkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSkgeworICAgICAgICAgICAgdGhp
cy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2ZpbGVTeXN0ZW1z
W25hbWVdKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc1tuYW1lXTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlld3NbbmFtZV0pIHsKKyAg
ICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3c1tuYW1lXS5kZXRhY2goKTsKKyAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtVmlld3NbbmFtZV07CisgICAgICAgIH0KKyAgICB9
LAorCiAgICAgc2VsZWN0RGF0YWJhc2U6IGZ1bmN0aW9uKGRhdGFiYXNlSWQpCiAgICAgewogICAg
ICAgICB2YXIgZGF0YWJhc2U7CkBAIC00ODMsNiArNTE1LDE4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodGhp
cy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsKICAgICB9LAogCisgICAgc2hvd0Zp
bGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW1OYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFm
aWxlU3lzdGVtTmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHZpZXcgPSB0
aGlzLl9maWxlU3lzdGVtVmlld3NbZmlsZVN5c3RlbU5hbWVdOworICAgICAgICBpZiAoIXZpZXcp
IHsKKyAgICAgICAgICAgIHZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KGZp
bGVTeXN0ZW1OYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3c1tmaWxlU3lz
dGVtTmFtZV0gPSB2aWV3OworICAgICAgICB9CisgICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXco
dmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRlZ29yeVZpZXc6IGZ1bmN0aW9uKGNhdGVnb3J5
TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2F0ZWdvcnlWaWV3KQpAQCAtMTYyMSw2
ICsxNjY1LDI5IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yCiAgKiBAY29uc3RydWN0b3IKICAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0KICAqLworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwg
ZmlsZVN5c3RlbU5hbWUsIG9yaWdpbiwgdHlwZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuQmFzZVN0
b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgb3JpZ2luICsg
Jy8nICsgdHlwZSwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworICAgIHRoaXMu
X2ZpbGVTeXN0ZW1OYW1lID0gZmlsZVN5c3RlbU5hbWU7CisgICAgdGhpcy5fb3JpZ2luID0gb3Jp
Z2luOworICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxz
ZTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
eworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgV2ViSW5zcGVjdG9yLkJh
c2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhpcyk7CisgICAg
ICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhpcy5fZmlsZVN5c3RlbU5hbWUp
OworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3Rv
dHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
QmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0KKyAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNp
b25UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgcmV2aXNpb24pCiB7CiAgICAg
dmFyIHRpdGxlID0gcmV2aXNpb24udGltZXN0YW1wID8gcmV2aXNpb24udGltZXN0YW1wLnRvTG9j
YWxlVGltZVN0cmluZygpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIob3JpZ2luYWwpIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjE0
MmFmMzE3NzFkZmVkNzUzMDE5ZjdkODNjMGE1YjZkMmU2OTYxZC4uY2Y2ODMxNmFhN2U3MzhkNzc5
Njk2ZTA0NGNkZTYxM2ZkODgxN2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTQsNiArNTQsOCBAQAogICAgIDxmaWxlPkV4dGVuc2lv
blBhbmVsLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmls
ZT4KICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5
c3RlbS5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlU3lzdGVtVmlldy5qczwvZmlsZT4KICAgICA8
ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwvZmls
ZT4KICAgICA8ZmlsZT5IQVJFbnRyeS5qczwvZmlsZT4KQEAgLTIwNSw2ICsyMDcsNyBAQAogICAg
IDxmaWxlPkltYWdlcy9lcnJvclJlZERvdC5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2Zv
cndhcmQucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9mcmFtZS5wbmc8L2ZpbGU+CisgICAg
PGZpbGU+SW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9nbG9z
c3lIZWFkZXIucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9nbG9zc3lIZWFkZXJQcmVzc2Vk
LnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZ2xvc3N5SGVhZGVyU2VsZWN0ZWQucG5nPC9m
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCmluZGV4IDhjZTM2MDk5YzA2ZjZlMjc5OWE4NzUyNDlmOTVkOTNkNzY5YjFmMTkuLjNjYzc5
ZmIwYmIxOWMyZGQ4YjZmNTEwMmVjM2IzOTg0NThmZWU5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTI2NTYsMyArMjY1Niwz
NiBAQCBib2R5LnBsYXRmb3JtLW1hYyAjZHJhd2VyLXN0YXR1cy1iYXIgLnNlYXJjaC1zdGF0dXMt
YmFyLXByb2dyZXNzIHsKICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgIGJvcmRl
ci13aWR0aDogMCAwIDExcHggMDsKIH0KKworLmZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUsIC5m
aWxlc3lzdGVtLXJlc2l6ZXIsIC5maWxlc3lzdGVtLWRldGFpbC12aWV3cyB7CisgICAgYm90dG9t
OiAwcHg7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMHB4OworfQorCisuZmlsZXN5c3RlbS1kaXJlY3RvcnktdHJlZSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDIyOSwgMjIxLCAyMTQpOworICAgIGxlZnQ6IDBweDsKK30KKworLmZpbGVz
eXN0ZW0tcmVzaXplciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUp
OworICAgIGJvcmRlcjogcmdiKDIwNSwgMjA1LCAyMDUpIHNvbGlkIHRoaW47CisgICAgY3Vyc29y
OiBldy1yZXNpemU7CisgICAgd2lkdGg6IDVweDsKKyAgICB6LWluZGV4OiA1MDA7Cit9CisKKy5m
aWxlc3lzdGVtLWRldGFpbC12aWV3cyB7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKyAgICByaWdo
dDogMHB4OworfQorCisuZmlsZXN5c3RlbS1kaXJlY3RvcnktdHJlZSAuY2hpbGRyZW4geworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKKy5maWxlc3lzdGVtLWRpcmVjdG9yeS10cmVlIC5jaGlsZHJl
bi5leHBhbmRlZCB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA3NzBmNDAyMjFhM2Mw
MDhlNTk1N2Y4MzE0YTdjNmMxZWY2MTgwNzYwLi5iYWM2OTYyMmYxNzRjYTM3OTgxYjcyZTEzZGE0
NGZmYjA4MDZjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKQEAgLTc1LDYgKzc1LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9yYWdlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9yYWdlSXRlbXNWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJE
YXRhR3JpZC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRmlsZVN5c3RlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iU2hvd01vcmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNUYWJsZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llSXRlbXNW
aWV3LmpzIj48L3NjcmlwdD4KQEAgLTE0OSw2ICsxNTAsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRh
dGFiYXNlUXVlcnlWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQm90dG9tVXBQcm9m
aWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4
IDlkOTFlYjc1OTQwMWVhNGMxYjQxYjIxZjBkNGJhYjA5OTQwYzQ0YTYuLmQ2NWI5YzBiMzQ0ZmM1
OTM3NzZhNTVkNDkzOTc3NjhlMjIxMDkxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zODUsNiArMzg1LDcgQEAgV2ViSW5zcGVj
dG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5jb25zb2xlLmVuYWJs
ZUFnZW50KCk7CiAgICAgRGF0YWJhc2VBZ2VudC5lbmFibGUoKTsKICAgICBET01TdG9yYWdlQWdl
bnQuZW5hYmxlKCk7CisgICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOwogCiAgICAgV2ViSW5z
cGVjdG9yLnNob3dQYW5lbChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsLmdl
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9y
ZXNvdXJjZXNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jl
c291cmNlc1BhbmVsLmNzcwppbmRleCAxOGM3NmFlMjE3Mzk4NDJkNzk0ODAyNTJjNjcxYzczYWQw
MjlkZWM4Li4xMzM3Mjk4ZTYyYzVkNzEwNWE1M2NkZmQ1NTk0NjI0YTFkNzc4N2ViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVs
LmNzcwpAQCAtMzI1LDcgKzMyNSw2IEBAIGxpLnNlbGVjdGVkIC5iYXNlLXN0b3JhZ2UtdHJlZS1l
bGVtZW50LXN1YnRpdGxlIHsKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2FwcGxpY2F0aW9uQ2Fj
aGUucG5nKTsKIH0KIAotLyogRklYTUU6IE1ha2Ugc2VwYXJhdGUgcG5nIGZvciBmaWxlLXN5c3Rl
bSAqLwotLmZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uIHsKLSAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL2FwcGxpY2F0aW9uQ2FjaGUucG5nKTsKKy5maWxlc3lzdGVtLXN0b3JhZ2Ut
dHJlZS1pdGVtIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5n
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>116454</attachid>
            <date>2011-11-23 16:47:40 -0800</date>
            <delta_ts>2011-11-23 16:47:40 -0800</delta_ts>
            <desc>Screenshot</desc>
            <filename>Inspector-FileSystem.png</filename>
            <type>image/png</type>
            <size>115077</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144292</attachid>
            <date>2012-05-28 00:53:09 -0700</date>
            <delta_ts>2012-05-29 02:48:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20120528165308.patch</filename>
            <type>text/plain</type>
            <size>45931</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGZiNTc5YWYw
OTk1M2YxMDVlODgxOGM0MGQ3YzM3ZDJiZDNjNDM5NC4uODRmZTE1NzVmMWE5NWUzMTAwNjA0ZDgy
ODAyZjg1ODFhZDAwM2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQwNiw2ICs2NDA2LDkgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApAQCAtNjU5OCw2ICs2
NjAxLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1l
ZGl1bUljb24ucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9l
cnJvclJlZERvdC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2ZvcndhcmQucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9m
aWxlc3lzdGVtLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMv
ZnJhbWUucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9z
c3lIZWFkZXIucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9n
bG9zc3lIZWFkZXJQcmVzc2VkLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDg0NGI4ZDNkMDk5ZTJmMWUyM2Q4ZDQxMGQyZmQwMjQ1NjY0
ZjM3MDUuLjYzMmYzMDQ1Mzk0MzE5NDg1NzI4MjQ1ZDAwNTc2MDNhZWY4MDVmNGQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDQ3MCw2ICs3
NDQ3MCwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTW9kZWwuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxmaWx0ZXJlZEl0
ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGIyZWU5NjNmNDYzMmM0NGUyMDNmMDcyNGQy
MWY0NGVhMzVhNDdmMTIuLjM3NmU1YTg5ZGZiYTViZjFkYWRlYTQ2M2JlMjQ1M2Q1ZjYzYmQ1Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE0MDAsMTAgKzE0
MDAsMjggQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZGlzYWJsZSIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2Fi
bGVzIGV2ZW50cyBmcm9tIGJhY2tlbmQuLiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRGlzYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4iCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlYWREaXJlY3RvcnkiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjog
ImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICJ0
eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAi
dHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAg
ICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiZGlkUmVhZERpcmVjdG9yeSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVudHJpZXMiLCAidHlwZSI6ICJhcnJh
eSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9IH0KKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggZDNm
ZmY1YjdkYzgzYmEwZWNlZTNmYjY1ZTZmMTdiNTNjMWZlNjIxOS4uNTcxZjhjZjdjYjIwNTUzOTY4
NWY3ODMyNDUwZjBiMzMwNTAwYjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAKICNpbmNsdWRlICJET01GaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3Rh
dGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiS1VSTC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ2LDcyIEBAIG5hbWVzcGFjZSBG
aWxlU3lzdGVtQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBmaWxlU3lzdGVtQWdlbnRF
bmFibGVkW10gPSAiZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CiB9CiAKK2NsYXNzIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZy
b250ZW5kUHJvdmlkZXI+IHsKKyAgcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250
ZW5kUHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRl
bmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZyb250ZW5kUHJvdmlkZXIo
ZnJvbnRlbmQpKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSog
Z2V0RnJvbnRlbmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRlbmQ7CisgICAgfQor
CisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX2Zyb250ZW5kID0gMDsKKyAgICB9
CisKKyAgcHJpdmF0ZToKKyAgICBGcm9udGVuZFByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kOjpG
aWxlU3lzdGVtKiBmcm9udGVuZCkgOiBtX2Zyb250ZW5kKGZyb250ZW5kKSB7IH0KKworICAgIElu
c3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBtX2Zyb250ZW5kOworfTsKKworbmFtZXNwYWNl
IHsKKwordHlwZWRlZiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIg
RnJvbnRlbmRQcm92aWRlcjsKKworY2xhc3MgUmVhZERpcmVjdG9yeVRhc2sgOiBwdWJsaWMgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFJlYWREaXJlY3RvcnlU
YXNrPiB7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFz
az4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlYWREaXJlY3RvcnlUYXNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGZyb250ZW5kUHJv
dmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgQWJvcnQoKTsKKyAgICB9CisKKyAgICB2b2lk
IFN0YXJ0KCkKKyAgICB7CisgICAgICAgIEFib3J0KCk7CisgICAgfQorCisgICAgdm9pZCBBYm9y
dCgpCisgICAgeworICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci5nZXQoKSB8fCAhbV9m
cm9udGVuZFByb3ZpZGVyLT5nZXRGcm9udGVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmdldEZyb250ZW5kKCktPmRpZFJlYWREaXJlY3Rvcnko
bV9yZXF1ZXN0SWQsIEZpbGVFcnJvcjo6QUJPUlRfRVJSLCBUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPjo6Y3JlYXRlKCkpOworICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSAwOworICAgIH0K
KworICBwcml2YXRlOgorICAgIFJlYWREaXJlY3RvcnlUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4g
ZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAg
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCks
IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSwgbV9yZXF1ZXN0SWQocmVxdWVz
dElkKSwgbV91cmwoS1VSTCgpLCB1cmwpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgaW50IG1fcmVxdWVzdElkOwor
ICAgIEtVUkwgbV91cmw7Cit9OworCit9CisKIC8vIHN0YXRpYwogUGFzc093blB0cjxJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ+IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0
ZSkKIHsKQEAgLTUyLDYgKzEyMCw4IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50CiAKIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpCiB7CisgICAg
aWYgKG1fZnJvbnRlbmRQcm92aWRlci5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVy
LT5jbGVhcigpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50KDApOwogfQogCkBAIC03MSwxNSArMTQxLDMxIEBAIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29s
ZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJs
ZWQpOwogfQogCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVhZERpcmVjdG9yeShX
ZWJDb3JlOjpFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsX3N0cmluZykKK3sKKyAgICBpZiAoIW1fZW5h
YmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlci0+Z2V0RnJvbnRlbmQoKSk7CisKKyAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5hZGRJdGVtKHVybF9zdHJpbmcgKyAiZm9v
Iik7CisgICAgcmVzdWx0LT5hZGRJdGVtKHVybF9zdHJpbmcgKyAiYmFyLyIpOworICAgIHJlc3Vs
dC0+YWRkSXRlbSh1cmxfc3RyaW5nICsgImJheiIpOworICAgIG1fZnJvbnRlbmRQcm92aWRlci0+
Z2V0RnJvbnRlbmQoKS0+ZGlkUmVhZERpcmVjdG9yeShyZXF1ZXN0SWQsIDAsIHJlc3VsdCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKLSAgICBtX2Zyb250
ZW5kID0gZnJvbnRlbmQtPmZpbGVzeXN0ZW0oKTsKKyAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSBG
cm9udGVuZFByb3ZpZGVyOjpjcmVhdGUoZnJvbnRlbmQtPmZpbGVzeXN0ZW0oKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKLSAgICBtX2Zy
b250ZW5kID0gMDsKKyAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKSB7CisgICAgICAg
IG1fZnJvbnRlbmRQcm92aWRlci0+Y2xlYXIoKTsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVy
ID0gMDsKKyAgICB9CiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFi
bGVkKTsKIH0KQEAgLTkxLDcgKzE3Nyw2IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpyZXN0b3JlKCkKIAogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yU3RhdGUqIHN0YXRlKQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudD4oIkZpbGVTeXN0ZW0iLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSksCi0g
ICAgICBtX2Zyb250ZW5kKDApLAogICAgICAgbV9lbmFibGVkKGZhbHNlKQogewogICAgIEFTU0VS
VChpbnN0cnVtZW50aW5nQWdlbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCAyOGE5NzlhYWQyMDE5ODRiMzVjZDVl
MGUzYTMwZjZiZjVlZjg2MTlkLi4xODQ2YzNkZWI2Y2RhNDFkMzkwYTgyNWQ0ZjcxOTQyMjRlNzJk
ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oCkBAIC00NywxOSArNDcsMjMgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIAogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CisgICAgY2xh
c3MgRnJvbnRlbmRQcm92aWRlcjsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0
ZSopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShXZWJDb3Jl
OjpFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBXVEY6OlN0cmluZyYgdXJsX3N0cmluZyk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9u
dGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUq
KTsKIAotICAgIEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBtX2Zyb250ZW5kOworICAg
IFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29t
cGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKaW5kZXggMmYxZDdhODgwMDc2OWMxNjRjYjc2NDQ2ZmJhZGU1OTI4YWNiNjMxMC4u
NjgxYjY5MTY0ZmI1ODIxZDI5ZTNjM2U5NGRhZGZiOGQzZGU4OTY5NCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtNzYsNiArNzYsNyBAQCBt
b2R1bGVzID0gWwogICAgICAgICAgICAgIkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzIiwKICAg
ICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVN
YW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJGaWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAgICAg
ICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJNb2RlbC5qcyIsCiAgICAg
ICAgICAgICAiTGlua2lmaWVyLmpzIiwKQEAgLTIwNCw2ICsyMDUsOCBAQCBtb2R1bGVzID0gWwog
ICAgICAgICAgICAgIkRhdGFiYXNlUXVlcnlWaWV3LmpzIiwKICAgICAgICAgICAgICJEYXRhYmFz
ZVRhYmxlVmlldy5qcyIsCiAgICAgICAgICAgICAiRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyIsCisg
ICAgICAgICAgICAiRmlsZUNvbnRlbnRWaWV3LmpzIiwKKyAgICAgICAgICAgICJGaWxlU3lzdGVt
Vmlldy5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERCVmlld3MuanMiLAogICAgICAgICAgICAg
IlJlc291cmNlc1BhbmVsLmpzIiwKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTQy
ZjQ1NjI0MTEyYTZmNjE2NWYyNTI0M2E5NmIyZWVlNmIxYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanMKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0g
ZmlsZQorICovCitXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oZmlsZSkK
K3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworfQorCitXZWJJbnNwZWN0b3Iu
RmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVDb250
ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1Nb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzc1MmQyOGQ3ZTNhOGY0ZTM3NmEyZDk5NjQwZWExNjg5
NWRlNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAgLTAsMCArMSwzODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBAaW1wbGVtZW50cyB7
RmlsZVN5c3RlbUFnZW50LkRpc3BhdGNoZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworCisgICAgdGhpcy5fb3JpZ2luRm9yRnJhbWVJZCA9IHt9OworICAgIHRoaXMuX2ZyYW1lSWRz
Rm9yT3JpZ2luID0ge307CisgICAgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4gPSB7fTsKKwor
ICAgIHRoaXMuX3BlbmRpbmdSZWFkRGlyZWN0b3J5UmVxdWVzdHMgPSB7fTsKKworICAgIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQs
IHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lTmF2aWdh
dGVkLCB0aGlzLl9mcmFtZU5hdmlnYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLnJlc291
cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMuRnJhbWVEZXRhY2hlZCwgdGhpcy5fZnJhbWVEZXRhY2hlZCwgdGhpcyk7
CisKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3RlbURpc3BhdGNoZXIodGhp
cyk7CisgICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOworCisgICAgaWYgKFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpCisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1l
UmVjdXJzaXZlbHkoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSk7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0geworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9m
cmFtZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOwor
ICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICov
CisgICAgX2ZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBl
dmVudC5kYXRhOworICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2
ZW50CisgICAgICovCisgICAgX2ZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RnJhbWV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJzaXZl
bHkoZnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfYXR0YWNoRnJhbWU6IGZ1
bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX29yaWdpbkZvckZyYW1lSWRb
ZnJhbWUuaWRdKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFt
ZSk7CisKKyAgICAgICAgaWYgKGZyYW1lLnNlY3VyaXR5T3JpZ2luID09ICJudWxsIikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlk
XSA9IGZyYW1lLnNlY3VyaXR5T3JpZ2luOworCisgICAgICAgIHZhciBuZXdfb3JpZ2luID0gZmFs
c2U7CisgICAgICAgIGlmICghdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlP
cmlnaW5dKSB7CisgICAgICAgICAgICB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1
cml0eU9yaWdpbl0gPSB7fTsKKyAgICAgICAgICAgIG5ld19vcmlnaW4gPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW2ZyYW1lLnNlY3VyaXR5T3JpZ2lu
XVtmcmFtZS5pZF0gPSBmcmFtZS5pZDsKKyAgICAgICAgaWYgKG5ld19vcmlnaW4pCisgICAgICAg
ICAgICB0aGlzLl9vcmlnaW5BZGRlZChmcmFtZS5zZWN1cml0eU9yaWdpbik7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBm
cmFtZQorICAgICAqLworICAgIF9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFt
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lKGZyYW1lKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUuY2hpbGRGcmFtZXNbaV0pOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJhbWU6IGZ1bmN0aW9uKGZyYW1l
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIG9yaWdpbiA9IHRoaXMuX29yaWdpbkZv
ckZyYW1lSWRbZnJhbWUuaWRdOworICAgICAgICBkZWxldGUgdGhpcy5fb3JpZ2luRm9yRnJhbWVJ
ZFtmcmFtZS5pZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltvcmln
aW5dW2ZyYW1lLmlkXTsKKworICAgICAgICB2YXIgbGFzdF9vcmlnaW4gPSB0aGlzLl9mcmFtZUlk
c0Zvck9yaWdpbltvcmlnaW5dLmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGxhc3Rfb3JpZ2luKSB7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bb3JpZ2luXTsKKyAg
ICAgICAgICAgIHRoaXMuX29yaWdpblJlbW92ZWQob3JpZ2luKTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFt
ZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJhbWVSZWN1cnNpdmVseTogZnVuY3Rpb24o
ZnJhbWUpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lLmNoaWxkRnJh
bWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVs
eShmcmFtZS5jaGlsZEZyYW1lc1tpXSk7CisgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lKGZyYW1l
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAg
ICAqLworICAgIF9vcmlnaW5BZGRlZDogZnVuY3Rpb24ob3JpZ2luKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dKQorICAgICAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSA9IHt9OworCisgICAgICAgIHZhciB0eXBl
cyA9IFsicGVyc2lzdGVudCIsICJ0ZW1wb3JhcnkiXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVzW2ldXSkgeworICAgICAgICAgICAgICAgIHZhciBm
aWxlU3lzdGVtID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSh0
aGlzLCBvcmlnaW4sIHR5cGVzW2ldKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVt
c0Zvck9yaWdpbltvcmlnaW5dW3R5cGVzW2ldXSA9IGZpbGVTeXN0ZW07CisgICAgICAgICAgICAg
ICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4K
KyAgICAgKi8KKyAgICBfb3JpZ2luUmVtb3ZlZDogZnVuY3Rpb24ob3JpZ2luKQorICAgIHsKKyAg
ICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5d
KSB7CisgICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3Jp
Z2luW29yaWdpbl1bdHlwZV07CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNG
b3JPcmlnaW5bb3JpZ2luXVt0eXBlXTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1SZW1v
dmVkKGZpbGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltvcmlnaW5dOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICAg
ICAqLworICAgIF9maWxlU3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCisgICAgewor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkV2ZW50VHlwZXMuRmlsZVN5c3RlbUFkZGVkLCBmaWxlU3lzdGVtKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAgICAgKi8KKyAgICBfZmlsZVN5c3RlbVJlbW92ZWQ6
IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMuRmlsZVN5
c3RlbVJlbW92ZWQsIGZpbGVTeXN0ZW0pOworICAgIH0sCisKKyAgICByZWZyZXNoRmlsZVN5c3Rl
bUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIG9yaWdpbiBpbiB0aGlz
Ll9maWxlU3lzdGVtc0Zvck9yaWdpbikKKyAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkKKyAgICAgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtUmVtb3ZlZCh0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVd
KTsKKworICAgICAgICBmb3IgKHZhciBvcmlnaW4gaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW4pCisgICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3Jp
Z2luW29yaWdpbl0pCisgICAgICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV0pOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5fSBk
aXJlY3RvcnkKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAg
cmVhZERpcmVjdG9yeTogZnVuY3Rpb24oZGlyZWN0b3J5LCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHZhciBmcmFtZUlkID0gdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bZGlyZWN0b3J5LmZpbGVT
eXN0ZW0ub3JpZ2luXS5hbnlPZigpOworICAgICAgICBpZiAoIWZyYW1lSWQpIHsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoY2FsbGJhY2suYmluZChudWxsLCBGaWxlRXJyb3IuQUJPUlRfRVJSLCBu
dWxsKSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
cmVxdWVzdElkID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5uZXh0UmVxdWVzdElkKys7
CisgICAgICAgIHZhciByZXF1ZXN0ID0geworICAgICAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3Rv
cnksCisgICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKKyAgICAgICAgfTsKKworICAgICAg
ICB0aGlzLl9wZW5kaW5nUmVhZERpcmVjdG9yeVJlcXVlc3RzW3JlcXVlc3RJZF0gPSByZXF1ZXN0
OworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVhZERpcmVjdG9yeShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGRpcmVjdG9yeS51cmwpOworICAgIH0sCisKKyAgICBkaWRSZWFkRGlyZWN0b3J5OiBmdW5j
dGlvbihyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZW50cnlfdXJscykKKyAgICB7CisgICAgICAgIHZh
ciByZXF1ZXN0ID0gdGhpcy5fcGVuZGluZ1JlYWREaXJlY3RvcnlSZXF1ZXN0c1tyZXF1ZXN0SWRd
OworICAgICAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRl
bGV0ZSB0aGlzLl9wZW5kaW5nUmVhZERpcmVjdG9yeVJlcXVlc3RzW3JlcXVlc3RJZF07CisKKyAg
ICAgICAgaWYgKGVycm9yQ29kZSAhPSAwKSB7CisgICAgICAgICAgICByZXF1ZXN0LmNhbGxiYWNr
KGVycm9yQ29kZSwgbnVsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgYmFzZVVSTCA9IHJlcXVlc3QuZGlyZWN0b3J5LnVybDsKKyAgICAgICAgdmFyIGVu
dHJpZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyeV91cmxzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZW50cnkgPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5LkNyZWF0ZUVudHJ5KHJlcXVlc3QuZGlyZWN0b3J5LCBlbnRyeV91cmxzW2ld
KTsKKyAgICAgICAgICAgIGlmICghZW50cnkpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmNh
bGxiYWNrKEZpbGVFcnJvci5TRUNVUklUWV9FUlIsIG51bGwpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5jYWxsYmFjaygwLCBlbnRyaWVzKTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsKKyAgICBGaWxl
U3lzdGVtQWRkZWQ6ICJGaWxlU3lzdGVtQWRkZWQiLAorICAgIEZpbGVTeXN0ZW1SZW1vdmVkOiAi
RmlsZVN5c3RlbVJlbW92ZWQiCit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwubmV4
dFJlcXVlc3RJZCA9IDE7CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxl
U3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAqIEBwYXJhbSB7c3RyaW5n
fSB0eXBlCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSA9IGZ1
bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgb3JpZ2luLCB0eXBlKQoreworICAgIHRoaXMub3JpZ2lu
ID0gb3JpZ2luOworICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgdGhpcy5yb290ID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5KGZpbGVTeXN0ZW1Nb2RlbCwgdGhp
cywgbnVsbCwgIiIpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0
ZW0ucHJvdG90eXBlID0geworICAgIGdldCBuYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiAi
ZmlsZXN5c3RlbToiICsgdGhpcy5vcmlnaW4gKyAiLyIgKyB0aGlzLnR5cGU7CisgICAgfQorfQor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsfSBmaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5fSBwYXJlbnREaXJlY3RvcnkKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkgPSBmdW5j
dGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9yeSwgbmFtZSkK
K3sKKyAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbCA9IGZpbGVTeXN0ZW1Nb2RlbDsKKyAgICB0aGlz
LmZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOworICAgIHRoaXMucGFyZW50RGlyZWN0b3J5ID0gcGFy
ZW50RGlyZWN0b3J5OworICAgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisKK1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlID0geworICAgIGdldCB1cmwoKQorICAgIHsK
KyAgICAgICAgdmFyIHVybDsKKyAgICAgICAgaWYgKHRoaXMucGFyZW50RGlyZWN0b3J5KQorICAg
ICAgICAgICAgdXJsID0gdGhpcy5wYXJlbnREaXJlY3RvcnkudXJsICsgdGhpcy5uYW1lOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB1cmwgPSB0aGlzLmZpbGVTeXN0ZW0ubmFtZTsKKworICAg
ICAgICBpZiAodGhpcy5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiB1cmwgKyAiLyI7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1cmw7CisgICAgfQorfQorCisvKioK
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVu
dERpcmVjdG9yeQorICogQHBhcmFtIHtzdHJpbmd9IHVybAorICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl8V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlfQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LkNyZWF0ZUVu
dHJ5ID0gZnVuY3Rpb24ocGFyZW50RGlyZWN0b3J5LCB1cmwpCit7CisgICAgdmFyIHBhcmVudFVS
TCA9IHBhcmVudERpcmVjdG9yeS51cmw7CisgICAgaWYgKCF1cmwuc3RhcnRzV2l0aChwYXJlbnRV
UkwpKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAodXJsW3VybC5sZW5ndGgtMV0gPT0g
Jy8nKSB7CisgICAgICAgIHZhciBuYW1lID0gdXJsLnNsaWNlKHBhcmVudFVSTC5sZW5ndGgsIC0x
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVj
dG9yeShwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbU1vZGVsLCBwYXJlbnREaXJlY3RvcnkuZmls
ZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2
YXIgbmFtZSA9IHVybC5zbGljZShwYXJlbnRVUkwubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUocGFyZW50RGlyZWN0b3J5LmZpbGVT
eXN0ZW1Nb2RlbCwgcGFyZW50RGlyZWN0b3J5LmZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9yeSwg
bmFtZSk7CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5G
aWxlID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3Rv
cnksIG5hbWUpCit7CisgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxs
KHRoaXMsIGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBuYW1l
KTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZSA9IHsK
KyAgICBnZXQgaXNEaXJlY3RvcnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBm
aWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5G
aWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRGlyZWN0b3J5fSBwYXJlbnREaXJlY3RvcnkKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5ID0gZnVuY3Rpb24o
ZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxsKHRoaXMsIGZpbGVTeXN0
ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBuYW1lKTsKK30KKworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkucHJvdG90eXBlID0geworICAgIGdldCBp
c0RpcmVjdG9yeSgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEFycmF5LjxXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeT4pfSBjYWxsYmFjaworICAgICAqLworICAgIHJlYWRE
aXJlY3Rvcnk6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlU3lz
dGVtTW9kZWwucmVhZERpcmVjdG9yeSh0aGlzLCBjYWxsYmFjayk7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MGM3YmEyMDM3Y2ExMGI3MTlhZGU2ZjQ5MDAwYWNhNjQ4YTAxYTRmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
Vmlldy5qcwpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmlld30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgKi8KK1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCit7CisgICAgV2ViSW5zcGVjdG9yLlNw
bGl0Vmlldy5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9u
LkxlZnQsICJGaWxlU3lzdGVtVmlld1NpZGViYXJXaWR0aCIpOworICAgIHRoaXMuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJmaWxlc3lzdGVtLXZpZXciKTsKKworICAgIHZhciBkaXJlY3RvcnlUcmVl
RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgib2wiLCAiZmlsZXN5c3RlbS1kaXJl
Y3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5VHJlZSA9IG5ldyBUcmVlT3V0bGluZShk
aXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRoaXMuZGlyZWN0b3J5VHJlZS5hcHBlbmRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMsIGZpbGVTeXN0
ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOworfQorCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVmlld30gdmlldworICAgICAqLworICAgIHNob3dWaWV3OiBmdW5jdGlv
bih2aWV3KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgPT09IHZpZXcpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3KQorICAgICAg
ICAgICAgdGhpcy52aXNpYmxlVmlldy5kZXRhY2goKTsKKyAgICAgICAgdGhpcy52aXNpYmxlVmll
dyA9IHZpZXc7CisgICAgICAgIHZpZXcuc2hvdyh0aGlzLm1haW5FbGVtZW50KTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7VHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlld30gZmlsZVN5c3RlbVZpZXcKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FbnRyeX0gZW50cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVu
dHJ5ID0gZnVuY3Rpb24oZmlsZVN5c3RlbVZpZXcsIGVudHJ5KQoreworICAgIHZhciBuYW1lID0g
ZW50cnkucGFyZW50RGlyZWN0b3J5ID8gZW50cnkubmFtZSA6ICIvIjsKKyAgICBUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIG5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5KTsKKworICAgIHRoaXMu
X2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtVmll
dzsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZSA9IHsK
KyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2VsZWN0aW9uIik7Cisg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZShzZWxlY3Rpb24sIHRoaXMu
bGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2VudHJ5LmlzRGlyZWN0b3J5KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmaWxlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGV9ICovIHRoaXMuX2VudHJ5OworICAgICAgICBpZiAo
IXRoaXMuX3ZpZXcpCisgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5G
aWxlQ29udGVudFZpZXcoZmlsZSk7CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LnNob3dW
aWV3KHRoaXMuX3ZpZXcpOworICAgIH0sCisKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9lbnRyeS5yZWFkRGlyZWN0b3J5KHRoaXMuX2RpZFJlYWRE
aXJlY3RvcnkuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9kaWRSZWFkRGlyZWN0b3J5OiBm
dW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgeworICAgICAgICBpZiAoZXJyb3JDb2Rl
ID09IDApIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNbaV0pKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVtLnBu
ZyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0u
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkyNjM4OWRhZDIyNWRjNzcxYjJiOTYwYzAyNzYyNWViZjE4NTFmYmIK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyMjYKemNtVjsqMVUzN0tQKTxoOzNLfExrMDAwZTFO
SkxUcTAwMUJXMDAxQmUxXkBzNmI5I0Y4MDAwMDFiNWNoXzBJdHApCno9PlB4IzI0WUpgTDsoSyl7
e2E3Pnl7RDReMDAwU2FOTGgwTDAxRmNVMDFGY1YwR2daXzAwMDA3YlYqR2AyaXB0Kgp6MV9+U18w
dDg8RzAwY0AmTF90KG8hfGoqTmp9JTIxIygma19HclApflRgO1JMRiMkfiQ1aDk1bjJMLWR5Z0d2
WlEKelBrUWtta21KVjAxTXg9VSE2UHhvcWpEcDlGZmtIRDVmeDwoTE5LQD5ZdyFjdXVtbUB8P0Mx
MSEpJSR2PT93UlNHCno/JXZzVylKaTUoPjhgNWhjfFlvVC0taUdDRnhsa1lnUmoyPnlhNWRNeDtZ
RkNQSVBeTSM9UVVMcCg2KjEyK1p4QAp6XlpafkspaFo4QV4/PjQ8akYxMXdHck0tTGlAQDt7cj82
SXIjdHQzMTB9eTJ8QigrNHV0d3ZsMEUtMysqe3dKVykKejZMPTh5YnY9dHAlKjxLYTkrSTFAWTlZ
OTRzciRPbGpKaGBFN0Q7SWN2T1Yya01jeFFYJHdqTC1YQTg4KmoxRnM2CnoxZ0M5NCl2OUU0ckU4
KzlNQyRfOFA3QWZyckUzalFCfkR5MWZwNU0kditqRipgcG1oMXIyfG8/KXFEMjcrfHdwaQp6TDdl
NXA3c3EmVSYlVTApZzBSTFhBMEk3RyFzUjxSUUkpbl5iTURRJStTdnFFV29oPCRrQlZtcT52dGhs
TiQ5Z1cKek9LbU5AVE1QM0dUKWxGWXNjU2JfVHlBaURkS3Z7KGwpKzZ5SmhGWCtqaGx1cmYkMmFH
UD9XR0wxWGZhIVFPUyFCCno5aCN1Ulo8aSk8ViVZaUFsWlg+KXdIaFZ9WClHXnJkLUBpYUZKNThT
YjVGTzlGZWFiSyk9RHR9PWNIdytzSSllPAp6eGQ9JSFWZnk5XytqZmt3Pik5dTAjdEhyWGVGUn58
Xjg1QEY3YVhUZnA1eXUtKlFvY141c14te0MjY1FobmxYKX4KenJNclE9Nmd5R0F7cilWOEV0bDJo
KipQfEJ5cEokfHpiMWFkST5pe2pKXz59b1N6K14qYDxlTHBHUn4+RGVzdmc0CnpLJHpIM1JYdThx
KE9lUn5SRktpeTtsMitLQUxmPFVfT1cleEhmLUdSdX4kdH40OCNkTE1aTSpuZn5HemVROVE/Mgp6
JEcreW0jTUUyQjY3WDNyMzc2LWxhSkdAVXVBNnxmbVVfTDBfU2NFVHcjMkNRQURUNGkjKW5ZU2R7
VGlSS29ANVMKem9BVkd2MTMtV0dFa0pTM1IkZUZQNnlxI3ZuPD1vUWlZT1J5QVBLMVJiOUw+YzRo
JnsjMjVINyVqTFJmN1lCdmgpCno1e3AhblM1NG9HTU55MGpOQ3MjekVgfTZiTUtHRkBHSilTNTFn
K1o4VD9eRUxOWTNxcndOQE82I2lWb044WGlPKAp6bnAkbnJBMTtBcEM5XlBoRTRtMUxkSFExSUVv
anZ5YVR1Myl3PGp5MC10Rkc8Y0dFJTxMKD1mekJ9RlNvVkVeNzEKekR5IVFeP3x0Q2tJfDE4Qi1K
UEs3eXRTJntEPCViWk5rYG1GSDM0R2BpP2NVeSY2UENAa0BvPHUzM2tQVSh4SU5KCnpVPXQ2bk8x
QnZGKHZxUm9qa0o8eHhYWjg0eitCPj1iJUxqSlElT0w/VSZld1lHJCEhZFU0cSZlQlo3KClTSXct
VAp6Yj5nUmpxXnM3cTJuMj8tNmlhQ2pVYCM7YytJZWhuQDJZTzcqUkR1JDsmUHBMRyYoeGsyTWxH
TVc3SWNMQDw5PFcKel41e2VTYVE7dW0mO08zV2wqNSpVVTJIO2EpNUFRcmB8Kks9Z0B1OTQxQVZ+
dWBLOUZaUGZ0JGwxMiZaTXcrVnl5CnpKVj9EKF90dSs9N1FCZG52a1g0NF80ZEg8PUNoTk5sYjE2
QkY+dllKdVlWcnwtZF5qRjB8I0UrR0NWeEkoWEZNfgpvV3VKM2w3e3pnWGI4S3d2N3ljaT5LUlk0
Rm55dm9IPF5UV3kwNypxb002TjwkZj5TTCpDOyRLZQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKaW5kZXggNzlmOWJmY2Y0YTcwYzAwYTk4Y2NkZWUyMWNlYWY3NDc5Y2FmZGFmOC4uMWFl
NzA2ZTU0ZmQ4YjRiZGE0Zjc5MzA3MzgzMWYwMGM3N2NmOWE5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC02Nyw2
ICs2NywxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFz
ZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCBbImFwcGxpY2F0
aW9uLWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuc2lkZWJhclRyZWUuYXBw
ZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAorICAgIGlm
IChQcmVmZXJlbmNlcy5leHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlvbikgeworICAgICAgICB0aGlz
LmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQodGhpcyk7CisgICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hp
bGQodGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKKyAgICB9CisKICAgICB0aGlzLnN0
b3JhZ2VWaWV3cyA9IHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50OwogICAgIHRoaXMuc3RvcmFn
ZVZpZXdzLmFkZFN0eWxlQ2xhc3MoImRpZmYtY29udGFpbmVyIik7CiAKQEAgLTQ1Nyw2ICs0NjIs
MTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5faW5uZXJTaG93Vmlldyh0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlld3NbZnJhbWVJZF0p
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiAgQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmlld30g
dmlldworICAgICAqLworICAgIHNob3dGaWxlU3lzdGVtOiBmdW5jdGlvbih2aWV3KQorICAgIHsK
KyAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hvd0Nh
dGVnb3J5VmlldzogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9jYXRlZ29yeVZpZXcpCkBAIC0xNDc5LDYgKzE0OTIsNzkgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3Rv
cmFnZUNhdGUKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbH0gc3RvcmFnZVBhbmVsCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TGlzdFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsKQoreworICAgIFdlYkluc3Bl
Y3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlU3lzdGVtIiksICJGaWxlU3lzdGVtIiwgWyJmaWxl
c3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5w
cm90b3R5cGUub25leHBhbmQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5yZWZyZXNoRmlsZVN5
c3RlbSgpOworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0
dGFjaC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0
aGlzKSwgdHJ1ZSk7CisgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQorICAgICAgICAgICAgdGhp
cy5yZWZyZXNoRmlsZVN5c3RlbSgpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVF
dmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gTGlzdCIpLCB0
aGlzLnJlZnJlc2hGaWxlU3lzdGVtLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5z
aG93KGV2ZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAqLyBldmVudC5kYXRhOworICAgICAgICB2
YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJl
ZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKTsKKyAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAgICBfZmlsZVN5
c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZpbGVTeXN0
ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IHRoaXMu
X2ZpbGVTeXN0ZW1UcmVlRWxlbWVudEJ5TmFtZShmaWxlU3lzdGVtLm5hbWUpOworICAgICAgICBp
ZiAoIWZpbGVTeXN0ZW1UcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ZmlsZVN5c3RlbVRyZWVFbGVtZW50LmNsZWFyKCk7CisgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQo
ZmlsZVN5c3RlbVRyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0ZW1UcmVlRWxl
bWVudEJ5TmFtZTogZnVuY3Rpb24oZmlsZVN5c3RlbU5hbWUpCisgICAgeworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciBjaGlsZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVu
dH0gKi8gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5maWxlU3lzdGVt
TmFtZSA9PT0gZmlsZVN5c3RlbU5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hp
bGRyZW5baV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAg
IHJlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
X2ZpbGVTeXN0ZW1Nb2RlbCkgeworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsID0g
bmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwoKTsKKyAgICAgICAgICAgIHRoaXMuX2Zp
bGVTeXN0ZW1Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtQWRkZWQsIHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZCwgdGhp
cyk7CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMuRmlsZVN5c3RlbVJlbW92ZWQs
IHRoaXMuX2ZpbGVTeXN0ZW1SZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2ZpbGVTeXN0ZW1Nb2RlbC5yZWZyZXNoRmlsZVN5c3RlbUxpc3QoKTsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlOwor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3Rv
cmFnZVRyZWVFbGVtZW50fQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWx9
IHN0b3JhZ2VQYW5lbAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWx9IG1v
ZGVsCkBAIC0xODgwLDYgKzE5NjYsNzEgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IKIAogLyoq
CiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VU
cmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9y
YWdlUGFuZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lz
dGVtfSBmaWxlU3lzdGVtCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIGZpbGVTeXN0ZW0pCit7CisgICAgdmFyIGRpc3BsYXlO
YW1lID0gZmlsZVN5c3RlbS50eXBlICsgIiAtICIgKyBmaWxlU3lzdGVtLm9yaWdpbjsKKyAgICBX
ZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5l
bCwgbnVsbCwgZGlzcGxheU5hbWUsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsK
KyAgICB0aGlzLl9maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKK30KKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGZpbGVTeXN0ZW1OYW1l
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfSwK
KworICAgIGdldCBpdGVtVVJMKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmlsZXN5c3RlbTov
LyIgKyB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfSwKKworICAgIG9uYXR0YWNoOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0
TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4
dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1l
bnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gVmll
dyIpLCB0aGlzLl9yZWZyZXNoRmlsZVN5c3RlbS5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4
dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9yZWZyZXNoRmlsZVN5c3RlbTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW1WaWV3KQor
ICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcucmVmcmVzaCgpOworICAgIH0sCisKKyAg
ICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhpcyk7CisgICAgICAg
IGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAgICAgIGlmICghV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1WaWV3KSB7CisgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCJGaWxl
U3lzdGVtVmlldyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0aGlzLl9maWxlU3lzdGVtKTsKKyAgICAgICAgfQor
ICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhpcy5fZmlsZVN5c3Rl
bVZpZXcpOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuZmlsZVN5c3RlbVZpZXcgJiYgdGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3
ID09IHRoaXMuZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwu
Y2xvc2VWaXNpYmxlVmlldygpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdl
VHJlZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5WaWV3fQogICovCiBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5
VmlldyA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzCmluZGV4IGFkZGEwMmM3OGNiMTA0YWM1ZWE3NjFiMjdiYmYyZTI2ZjRhYjlk
MGIuLjE0MTUyZWZkZWUwYWQ3ODEzNmJiYjE5Mzg5NmU3ZDlhMGNhNDRiODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNDQsNyArNDQs
OCBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgZXhwb3NlV29ya2Vyc0luc3BlY3Rpb246IGZh
bHNlLAogICAgIGFwcGxpY2F0aW9uVGl0bGU6ICJXZWIgSW5zcGVjdG9yIC0gJXMiLAogICAgIHNo
b3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGllczogZmFsc2UsCi0gICAgc2hvd0Rv
Y2tUb1JpZ2h0OiBmYWxzZQorICAgIHNob3dEb2NrVG9SaWdodDogZmFsc2UsCisgICAgZXhwb3Nl
RmlsZVN5c3RlbUluc3BlY3Rpb246IHRydWUKIH0KIAogdmFyIENhcGFiaWxpdGllcyA9IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBiNjZl
MTlmNmFjNTQ1Y2MwYTI3ZjQyZjJmNDA4OGJlZmEyNjNlZTk0Li4yMjU5ZDk3YzZkZTVlZDlkNjc3
M2UwZmIzNjAzZTk5N2VmZDllZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCkBAIC01OCw2ICs1OCw4IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9u
UmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmls
ZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlU3lzdGVt
TW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkZv
bnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxlPgpAQCAt
MjQyLDYgKzI0NCw3IEBACiAgICAgPGZpbGU+SW1hZ2VzL2Vycm9ySWNvbi5wbmc8L2ZpbGU+CiAg
ICAgPGZpbGU+SW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1h
Z2VzL2Vycm9yUmVkRG90LnBuZzwvZmlsZT4KKyAgICA8ZmlsZT5JbWFnZXMvZmlsZXN5c3RlbS5w
bmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZvcndhcmQucG5nPC9maWxlPgogICAgIDxmaWxl
PkltYWdlcy9mcmFtZS5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2dsb3NzeUhlYWRlci5w
bmc8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbAppbmRleCBhZDkwM2Y4NzI5NjMxZTA5NWUxNDEyNzA0YjkwNTA3MGI3M2Y4YzJj
Li41YzRjNmZiMzA2OWNhOWEzYTgzMzE2ZjM5ZjcyMjM4YzA1N2I2ZWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE2MCw2
ICsxNjAsOSBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNvdXJjZUNTU1Rva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSFRNTFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSmF2YVNjcmlwdFRv
a2VuaXplci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRmlsZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGb250Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1h
Z2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCmluZGV4IDRkNmNh
MmIxMjlkNTNmNjUyNGQ1YmJmNmZkYmQwOWFjMTJhYzBiZDQuLjliZTg3NjI2MDFiMDFmNzQ5ZWI4
NTMwOTVlNDQyZDFmZTliNDI1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCkBAIC0zMjYsNyArMzI2LDYgQEAgbGku
c2VsZWN0ZWQgLmJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtc3VidGl0bGUgewogICAgIGNvbnRl
bnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOwogfQogCi0vKiBGSVhNRTogTWFr
ZSBzZXBhcmF0ZSBwbmcgZm9yIGZpbGUtc3lzdGVtICovCi0uZmlsZS1zeXN0ZW0tc3RvcmFnZS10
cmVlLWl0ZW0gLmljb24gewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNo
ZS5wbmcpOworLmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24geworICAgIGNvbnRl
bnQ6IHVybChJbWFnZXMvZmlsZXN5c3RlbS5wbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCAxZDcyMjViMjZmOGJlYmUzYzkw
ZGM5ZTRmNWU4NWJkMDBiZWU4ZGY3Li44MTBmMWQ5OWQ2MTg0MTY0OTg4YjRkNTY3NjMxZjAxN2I4
ZTVkODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxp
dGllcy5qcwpAQCAtNjc1LDQgKzY3NSwyNyBAQCBNYXAucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgdGhpcy5fbWFwID0ge307CiAgICAgfQotfQorfTsKKworKGZ1bmN0aW9uKCkgewordmFy
IG9iamVjdFByb3RvdHlwZSA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi9PYmplY3QucHJvdG90eXBl
OworT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdFByb3RvdHlwZSwgImlzRW1wdHkiLAorewor
ICAgIHZhbHVlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
K30pOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0UHJvdG90eXBlLCAiYW55T2YiLAor
eworICAgIHZhbHVlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpIGluIHRo
aXMpCisgICAgICAgICAgICByZXR1cm4gdGhpc1tpXTsKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorfSk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Mzk1OTdmOWNiMDdjNWQ0OGJlZDE4OTg0ZWM0NzQ3ZjRiNGYzNDM4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVt
LXRlc3QuanMKQEAgLTAsMCArMSwyIEBACisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXNvdXJjZXMtcGFuZWwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXNvdXJjZXMt
cGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNGRmN2M2MTIzY2Q0NWU1MWFiMDI0MTZk
M2Q2ZDI1MDkxYTFiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3Jlc291cmNlcy1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACitUZXN0cyBGaWxlU3lzdGVtIHRyZWUgZWxlbWVudCBvbiByZXNvdXJjZXMgcGFu
ZWwuCisKK2Vycm9yOiBFeGNlcHRpb24gZHVyaW5nIHRlc3QgZXhlY3V0aW9uOiBUeXBlRXJyb3I6
IENhbm5vdCByZWFkIHByb3BlcnR5ICdwcm90b3R5cGUnIG9mIHVuZGVmaW5lZAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jlc291cmNl
cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMtcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODRjYjZjOTNmODZhNWJlNjU5ODE5
NWYzY2EyNzZmNjRhOTQ3NmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXNvdXJjZXMtcGFuZWwuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNy
Yz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0
ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
dmFyIGZpbGVTeXN0ZW1zID0ge307CisgICAgUHJlZmVyZW5jZXMuZXhwb3NlRmlsZVN5c3RlbUlu
c3BlY3Rpb24gPSBmYWxzZTsKKworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUsICJfZmlsZVN5c3RlbUFk
ZGVkIiwgZmlsZVN5c3RlbUFkZGVkLCB0cnVlKTsKKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtQWRk
ZWQoZXZlbnQpIHsKKyAgICAgICAgaWYgKGZpbGVTeXN0ZW1zW2V2ZW50LmRhdGEubmFtZV0pCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiVW5leHBlY3RlZCBmaWxlU3lzdGVt
QWRkZWQgZXZlbnQ6ICIgKyBldmVudC5kYXRhLm5hbWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiRmlsZVN5c3RlbSBhZGRlZDogIiArIGV2ZW50LmRhdGEubmFtZSk7CisgICAg
ICAgIGZpbGVTeXN0ZW1zW2V2ZW50LmRhdGEubmFtZV0gPSBldmVudC5kYXRhOworICAgIH0KKwor
ICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RU
cmVlRWxlbWVudC5wcm90b3R5cGUsICJfZmlsZVN5c3RlbVJlbW92ZWQiLCBmaWxlU3lzdGVtUmVt
b3ZlZCwgdHJ1ZSk7CisgICAgZnVuY3Rpb24gZmlsZVN5c3RlbVJlbW92ZWQoZXZlbnQpIHsKKyAg
ICAgICAgaWYgKGZpbGVTeXN0ZW1zW2V2ZW50LmRhdGEubmFtZV0pIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaWxlU3lzdGVtIHJlbW92ZWQ6IiArIGV2ZW50LmRhdGEu
bmFtZSk7CisgICAgICAgICAgICBkZWxldGUgZmlsZVN5c3RlbXNbZXZlbnQuZGF0YS5uYW1lXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBwZXJzaXN0ZW50RmlsZVN5c3RlbSA9IG51bGw7
CisgICAgdmFyIHRlbXBvcmFyeUZpbGVTeXN0ZW0gPSBudWxsOworCisgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgicmVzb3VyY2VzIik7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5leHBhbmQoKTsKKworICAgIEluc3BlY3RvclRl
c3QuY3JlYXRlQW5kTmF2aWdhdGVJRnJhbWUoInJlc291cmNlcy9wYWdlLXdpdGgtbWFuaWZlc3Qu
cGhwP21hbmlmZXN0SWQ9MSIsICk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge0luc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7fSwgMCk7Cit9Cis8L3NjcmlwdD4KKzxwPlRlc3RzIEZp
bGVTeXN0ZW0gdHJlZSBlbGVtZW50IG9uIHJlc291cmNlcyBwYW5lbC48L3A+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144496</attachid>
            <date>2012-05-29 02:48:22 -0700</date>
            <delta_ts>2012-05-30 08:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20120529184820.patch</filename>
            <type>text/plain</type>
            <size>53883</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODhlNWMyZGJl
ODkyZTdlMmFiYWVlMDhmNGU1YmI1NzAyNjI2NDQ5Yy4uOGVlZWUwNmZhMmJlZTA2OGU2YjdlYzdh
OTY3YTQ0YTc2Mzc0MWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQwNSw2ICs2NDA1LDkgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApAQCAtNjU5Nyw2ICs2
NjAwLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1l
ZGl1bUljb24ucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9l
cnJvclJlZERvdC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2ZvcndhcmQucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9m
aWxlc3lzdGVtLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMv
ZnJhbWUucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9z
c3lIZWFkZXIucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9n
bG9zc3lIZWFkZXJQcmVzc2VkLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDg0NGI4ZDNkMDk5ZTJmMWUyM2Q4ZDQxMGQyZmQwMjQ1NjY0
ZjM3MDUuLjYzMmYzMDQ1Mzk0MzE5NDg1NzI4MjQ1ZDAwNTc2MDNhZWY4MDVmNGQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDQ3MCw2ICs3
NDQ3MCwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTW9kZWwuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxmaWx0ZXJlZEl0
ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM5OTExNjA4YzRlOGNkYmFhYjY5N2UwNTcz
ZGUzZTc0ZGU0MGJiNTEuLjA5ZDA0MTNlOWYxNzY5YWI1ODQzZDk1NGE0YjI4N2FjYzFiMWI3ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE0MDAsMTAgKzE0
MDAsNDAgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZGlzYWJsZSIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2Fi
bGVzIGV2ZW50cyBmcm9tIGJhY2tlbmQuLiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRGlzYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4iCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlYWREaXJlY3RvcnkiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0byByZWFkIHRoZSBkaXJlY3Rvcnkg
Y29udGVudC4gUmVzdWx0IHNob3VsZCByZXR1cm4gb24gZGlkUmVhZERpcmVjdG9yeSBldmVudCB3
aXRoIHJlcXVlc3QgSUQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3Ry
aW5nIiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAg
ICAgICAiZXZlbnRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImRpZFJlYWREaXJlY3RvcnkiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1
ZXN0SWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiZXJyb3JDb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0
IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidHlwZSI6ICJpbnRlZ2VyIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlbnRyaWVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVUkxzIG9mIHRoZSBjb250ZW50
IG9mIHRoZSBkaXJlY3RvcnkuIElmIHRoZSBlbnRyeSBpcyBkaXJlY3RvcnksIGl0cyBVUkwgZW5k
cyB3aXRoICcvJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9
LAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggZDNmZmY1YjdkYzgzYmEwZWNlZTNmYjY1ZTZmMTdiNTNj
MWZlNjIxOS4uOGJiMDkwMTRkZTJkZTZkM2ViZmQ5NTY3ZjUxMzc4NDRmYWZhNDY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMzUsOCArMzUsMjAgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCIKIAogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJEaXJlY3Rv
cnlSZWFkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxs
YmFjay5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3Rh
dGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDYgKzU2LDE5OCBAQCBuYW1lc3BhY2UgRmlsZVN5c3RlbUFnZW50U3RhdGUgewogc3Rh
dGljIGNvbnN0IGNoYXIgZmlsZVN5c3RlbUFnZW50RW5hYmxlZFtdID0gImZpbGVTeXN0ZW1BZ2Vu
dEVuYWJsZWQiOwogfQogCitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZyb250ZW5k
UHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGcm9udGVuZFByb3ZpZGVyPiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRnJvbnRlbmRQcm92aWRlcik7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudCogYWdlbnQsIEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBmcm9udGVuZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJvbnRlbmRQcm92aWRlcihhZ2VudCwg
ZnJvbnRlbmQpKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSog
ZnJvbnRlbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fYWdlbnQgJiYgbV9hZ2VudC0+
bV9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fZnJvbnRlbmQ7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9hZ2VudCA9
IDA7CisgICAgICAgIG1fZnJvbnRlbmQgPSAwOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGcm9u
dGVuZFByb3ZpZGVyKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdlbnQsIEluc3BlY3RvckZy
b250ZW5kOjpGaWxlU3lzdGVtKiBmcm9udGVuZCkKKyAgICAgICAgOiBtX2FnZW50KGFnZW50KQor
ICAgICAgICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpIHsgfQorCisgICAgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50KiBtX2FnZW50OworICAgIEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBt
X2Zyb250ZW5kOworfTsKKworbmFtZXNwYWNlIHsKKwordHlwZWRlZiBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIgRnJvbnRlbmRQcm92aWRlcjsKKworY2xhc3MgUmVh
ZERpcmVjdG9yeVRhc2sgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1Ymxp
YyBSZWZDb3VudGVkPFJlYWREaXJlY3RvcnlUYXNrPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVhZERpcmVjdG9yeVRhc2spOworcHVibGljOgorICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7
CisgICAgY2xhc3MgR2V0RmlsZVN5c3RlbUNhbGxiYWNrOworICAgIGNsYXNzIFJlYWREaXJlY3Rv
cnlFbnRyaWVzQ2FsbGJhY2s7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5
VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRl
ciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW50IHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6
QUJPUlRfRVJSLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBnb3RG
aWxlU3lzdGVtKERPTUZpbGVTeXN0ZW0qKTsKKyAgICB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
aWVzKEVudHJ5QXJyYXkqKTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJy
b3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+
IGVudHJpZXMpCisgICAgeworICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlciB8fCAhbV9m
cm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRpZFJlYWREaXJlY3RvcnkobV9yZXF1
ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgZW50cmllcyk7CisgICAgICAgIG1f
ZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlYWREaXJlY3Rv
cnlUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2Zyb250ZW5kUHJvdmlkZXIo
ZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAg
ICAgICwgbV91cmwoS1VSTCgpLCB1cmwpIHsgfQorCisgICAgdm9pZCByZWFkRGlyZWN0b3J5RW50
cmllcygpOworCisgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRl
cjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgS1VSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9w
YXRoOworICAgIEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4gPiBtX2VudHJpZXM7CisgICAgRGlyZWN0b3J5UmVhZGVyKiBtX2RpcmVj
dG9yeVJlYWRlcjsKK307CisKK2NsYXNzIFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNr
IDogcHVibGljIFdlYkNvcmU6OkVycm9yQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEVycm9yQ2FsbGJhY2spOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRE
aXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxSZWFkRGlyZWN0
b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrKHJlYWREaXJlY3RvcnlUYXNr
KSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJy
b3IpCisgICAgeworICAgICAgICBpZiAobV9yZWFkRGlyZWN0b3J5VGFzaykKKyAgICAgICAgICAg
IG1fcmVhZERpcmVjdG9yeVRhc2stPnJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAwKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIEVycm9yQ2FsbGJhY2so
UGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCisgICAgICAg
IDogbV9yZWFkRGlyZWN0b3J5VGFzayhyZWFkRGlyZWN0b3J5VGFzaykgeyB9CisgICAgUmVmUHRy
PFJlYWREaXJlY3RvcnlUYXNrPiBtX3JlYWREaXJlY3RvcnlUYXNrOworfTsKKworY2xhc3MgUmVh
ZERpcmVjdG9yeVRhc2s6OkdldEZpbGVTeXN0ZW1DYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVt
Q2FsbGJhY2sgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdldEZpbGVTeXN0ZW1DYWxsYmFj
ayk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s6Okdl
dEZpbGVTeXN0ZW1DYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+
IHJlYWREaXJlY3RvcnlUYXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWFkRGlyZWN0b3J5VGFzazo6R2V0RmlsZVN5c3RlbUNhbGxiYWNrKHJlYWREaXJlY3RvcnlUYXNr
KSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkRPTUZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0pCisgICAgeworICAgICAgICBtX3JlYWREaXJlY3RvcnlUYXNr
LT5nb3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgR2V0RmlsZVN5c3RlbUNhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERp
cmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNrKQorICAgICAgICA6IG1fcmVhZERpcmVjdG9y
eVRhc2socmVhZERpcmVjdG9yeVRhc2spIHsgfQorICAgIFJlZlB0cjxSZWFkRGlyZWN0b3J5VGFz
az4gbV9yZWFkRGlyZWN0b3J5VGFzazsKK307CisKK2NsYXNzIFJlYWREaXJlY3RvcnlUYXNrOjpS
ZWFkRGlyZWN0b3J5RW50cmllc0NhbGxiYWNrIDogcHVibGljIEVudHJpZXNDYWxsYmFjayB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayk7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s6OlJlYWREaXJl
Y3RvcnlFbnRyaWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNr
PiByZWFkRGlyZWN0b3J5VGFzaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVhZERpcmVjdG9yeVRhc2s6OlJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJhY2socmVhZERpcmVj
dG9yeVRhc2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRW50cnlB
cnJheSogZW50cmllcykKKyAgICB7CisgICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPmRpZFJl
YWREaXJlY3RvcnlFbnRyaWVzKGVudHJpZXMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayhQYXNzUmVmUHRy
PFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykKKyAgICAgICAgOiBtX3JlYWRE
aXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0KKyAgICBSZWZQdHI8UmVhZERpcmVj
dG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Cit9OworCit2b2lkIFJlYWREaXJlY3RvcnlU
YXNrOjpzdGFydCgpCit7CisgICAgaWYgKCFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lz
dGVtVVJMKG1fdXJsLCBtX3R5cGUsIG1fcGF0aCkpIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZp
bGVFcnJvcjo6U1lOVEFYX0VSUiwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBM
b2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKAorICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fdHlwZSwKKyAgICAgICAgRmlsZVN5c3RlbUNh
bGxiYWNrczo6Y3JlYXRlKAorICAgICAgICAgICAgUmVhZERpcmVjdG9yeVRhc2s6OkdldEZpbGVT
eXN0ZW1DYWxsYmFjazo6Y3JlYXRlKHRoaXMpLAorICAgICAgICAgICAgUmVhZERpcmVjdG9yeVRh
c2s6OkVycm9yQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSwKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbV90eXBlKSk7Cit9CisKK3ZvaWQgUmVhZERpcmVjdG9yeVRhc2s6Omdv
dEZpbGVTeXN0ZW0oRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSkKK3sKKyAgICBSZWZQdHI8RGly
ZWN0b3J5UmVhZGVyPiByZWFkZXIgPSBEaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShmaWxlU3lzdGVt
LCBtX3BhdGgpOworICAgIG1fZGlyZWN0b3J5UmVhZGVyID0gcmVhZGVyLmdldCgpOworICAgIG1f
ZW50cmllcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICByZWFk
RGlyZWN0b3J5RW50cmllcygpOworfQorCit2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpyZWFkRGly
ZWN0b3J5RW50cmllcygpCit7CisgICAgbV9kaXJlY3RvcnlSZWFkZXItPnJlYWRFbnRyaWVzKAor
ICAgICAgICBSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazo6
Y3JlYXRlKHRoaXMpLAorICAgICAgICBSZWFkRGlyZWN0b3J5VGFzazo6RXJyb3JDYWxsYmFjazo6
Y3JlYXRlKHRoaXMpKTsKK30KKwordm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVj
dG9yeUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK3sKKyAgICBpZiAoZW50cmllcy0+bGVu
Z3RoKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgICAgIEVudHJ5KiBlbnRyeSA9IGVudHJpZXMtPml0ZW0oaSk7
CisgICAgICAgICAgICBTdHJpbmcgdXJsID0gZW50cnktPnRvVVJMKCk7CisgICAgICAgICAgICBp
ZiAoZW50cnktPmlzRGlyZWN0b3J5KCkgJiYgIXVybC5lbmRzV2l0aCgiLyIpKQorICAgICAgICAg
ICAgICAgIHVybCArPSAiLyI7CisgICAgICAgICAgICBtX2VudHJpZXMtPmFkZEl0ZW0odXJsKTsK
KyAgICAgICAgfQorICAgICAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJy
b3JDb2RlPigwKSwgbV9lbnRyaWVzKTsKK30KKworfQorCiAvLyBzdGF0aWMKIFBhc3NPd25QdHI8
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUpCiB7CkBAIC01Miw2ICsyNTYsOCBAQCBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudD4gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudAog
CiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6On5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKQog
eworICAgIGlmIChtX2Zyb250ZW5kUHJvdmlkZXIpCisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRl
ci0+Y2xlYXIoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudCgwKTsKIH0KIApAQCAtNzEsMTUgKzI3NywyOSBAQCB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFi
bGVkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWREaXJlY3Rvcnko
V2ViQ29yZTo6RXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYg
ZnJhbWVJZCwgY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCB8
fCAhbV9mcm9udGVuZFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJv
bnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpLT5mcmFtZUZvcklkKGZyYW1lSWQp
OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBSZWFkRGlyZWN0b3J5VGFzazo6Y3JlYXRlKG1fZnJvbnRl
bmRQcm92aWRlciwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVxdWVzdElkLCB1cmwpLT5zdGFy
dCgpOworfQorCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIEFTU0VSVChmcm9udGVuZCk7Ci0gICAg
bV9mcm9udGVuZCA9IGZyb250ZW5kLT5maWxlc3lzdGVtKCk7CisgICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKHRoaXMsIGZyb250ZW5kLT5maWxlc3lzdGVt
KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y2xlYXJGcm9udGVuZCgp
CiB7Ci0gICAgbV9mcm9udGVuZCA9IDA7CisgICAgaWYgKG1fZnJvbnRlbmRQcm92aWRlcikgewor
ICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmNsZWFyKCk7CisgICAgICAgIG1fZnJvbnRlbmRQ
cm92aWRlciA9IDA7CisgICAgfQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogICAgIG1fc3RhdGUt
PnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQs
IG1fZW5hYmxlZCk7CiB9CkBAIC05MCw5ICszMTAsOCBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudDo6cmVzdG9yZSgpCiB9CiAKIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ+KCJGaWxlU3lzdGVtIiwgaW5zdHJ1bWVudGluZ0FnZW50cywg
c3RhdGUpLAotICAgICAgbV9mcm9udGVuZCgwKSwKLSAgICAgIG1fZW5hYmxlZChmYWxzZSkKKyAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+KCJGaWxlU3lz
dGVtIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCisgICAgLCBtX2VuYWJsZWQoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGluc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIEFTU0VSVChzdGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmgKaW5kZXggMjhhOTc5YWFkMjAxOTg0YjM1Y2Q1ZTBlM2EzMGY2YmY1ZWY4NjE5ZC4uNWMw
MDFkZGE4ZGQxZGEwY2YxMjYwMmZmZmNkMDIxMDZlMzIxZGRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCwy
NiArNDAsMzMgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIGNsYXNzIERPTUZpbGVTeXN0ZW07CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAordHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKIGNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Piwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhhbmRs
ZXIgewogcHVibGljOgorICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7CisKICAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCisgICAgdmlydHVhbCB2b2lk
IHJlYWREaXJlY3RvcnkoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5k
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwog
Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIG1fZnJvbnRlbmQ7CisgICAgUmVm
UHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKICAgICBib29sIG1fZW5h
YmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5weQppbmRleCAyZjFkN2E4ODAwNzY5YzE2NGNiNzY0NDZmYmFkZTU5MjhhY2I2MzEwLi42ODFi
NjkxNjRmYjU4MjFkMjllM2MzZTk0ZGFkZmI4ZDNkZTg5Njk0IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03Niw2ICs3Niw3IEBAIG1vZHVs
ZXMgPSBbCiAgICAgICAgICAgICAiRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMiLAogICAgICAg
ICAgICAgIkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyIsCiAgICAgICAgICAgICAiRmlsZU1hbmFn
ZXIuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1Nb2RlbC5qcyIsCiAgICAgICAgICAgICAi
SEFSRW50cnkuanMiLAogICAgICAgICAgICAgIkluZGV4ZWREQk1vZGVsLmpzIiwKICAgICAgICAg
ICAgICJMaW5raWZpZXIuanMiLApAQCAtMjA0LDYgKzIwNSw4IEBAIG1vZHVsZXMgPSBbCiAgICAg
ICAgICAgICAiRGF0YWJhc2VRdWVyeVZpZXcuanMiLAogICAgICAgICAgICAgIkRhdGFiYXNlVGFi
bGVWaWV3LmpzIiwKICAgICAgICAgICAgICJET01TdG9yYWdlSXRlbXNWaWV3LmpzIiwKKyAgICAg
ICAgICAgICJGaWxlQ29udGVudFZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3
LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVz
b3VyY2VzUGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NDJmNDU2
MjQxMTJhNmY2MTY1ZjI1MjQzYTk2YjJlZWU2YjFiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcwpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlfSBmaWxl
CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcgPSBmdW5jdGlvbihmaWxlKQorewor
ICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxl
Q29udGVudFZpZXcucHJvdG90eXBlID0geworfQorCitXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczZTllYzQ1Nzg1MTlmNjViM2MzYzEyZmZhY2QzZWJlOTI1OTY4
YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMCwwICsxLDQwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBpbXBsZW1lbnRzIHtGaWxl
U3lzdGVtQWdlbnQuRGlzcGF0Y2hlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisK
KyAgICB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkID0ge307CisgICAgdGhpcy5fZnJhbWVJZHNGb3JP
cmlnaW4gPSB7fTsKKyAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbiA9IHt9OworCisgICAg
dGhpcy5fcGVuZGluZ1JlYWREaXJlY3RvcnlSZXF1ZXN0cyA9IHt9OworCisgICAgV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVBZGRlZCwgdGhpcy5fZnJhbWVBZGRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVOYXZpZ2F0ZWQs
IHRoaXMuX2ZyYW1lTmF2aWdhdGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
cmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwu
RXZlbnRUeXBlcy5GcmFtZURldGFjaGVkLCB0aGlzLl9mcmFtZURldGFjaGVkLCB0aGlzKTsKKwor
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKTsK
KyAgICBGaWxlU3lzdGVtQWdlbnQuZW5hYmxlKCk7CisKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1
cnNpdmVseShXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKK30KKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2ZyYW1l
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7CisgICAg
ICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAg
ICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZy
YW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQK
KyAgICAgKi8KKyAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFt
ZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShm
cmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUZyYW1lfSBmcmFtZQorICAgICAqLworICAgIF9hdHRhY2hGcmFtZTogZnVuY3Rp
b24oZnJhbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFt
ZS5pZF0pCisgICAgICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsK
KworICAgICAgICBpZiAoZnJhbWUuc2VjdXJpdHlPcmlnaW4gPT0gIm51bGwiKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUuaWRdID0g
ZnJhbWUuc2VjdXJpdHlPcmlnaW47CisKKyAgICAgICAgdmFyIG5ld19vcmlnaW4gPSBmYWxzZTsK
KyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1cml0eU9yaWdp
bl0pIHsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW2ZyYW1lLnNlY3VyaXR5
T3JpZ2luXSA9IHt9OworICAgICAgICAgICAgbmV3X29yaWdpbiA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmlnaW5dW2Zy
YW1lLmlkXSA9IGZyYW1lLmlkOworICAgICAgICBpZiAobmV3X29yaWdpbikKKyAgICAgICAgICAg
IHRoaXMuX29yaWdpbkFkZGVkKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1l
CisgICAgICovCisgICAgX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWUoZnJhbWUpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
dGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZS5jaGlsZEZyYW1lc1tpXSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZy
YW1lfSBmcmFtZQorICAgICAqLworICAgIF9kZXRhY2hGcmFtZTogZnVuY3Rpb24oZnJhbWUpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUuaWRdKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgb3JpZ2luID0gdGhpcy5fb3JpZ2luRm9yRnJh
bWVJZFtmcmFtZS5pZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2Zy
YW1lLmlkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW29yaWdpbl1b
ZnJhbWUuaWRdOworCisgICAgICAgIHZhciBsYXN0X29yaWdpbiA9IHRoaXMuX2ZyYW1lSWRzRm9y
T3JpZ2luW29yaWdpbl0uaXNFbXB0eSgpOworICAgICAgICBpZiAobGFzdF9vcmlnaW4pIHsKKyAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltvcmlnaW5dOworICAgICAg
ICAgICAgdGhpcy5fb3JpZ2luUmVtb3ZlZChvcmlnaW4pOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBm
cmFtZQorICAgICAqLworICAgIF9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFt
ZSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZy
YW1lLmNoaWxkRnJhbWVzW2ldKTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWUoZnJhbWUpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICov
CisgICAgX29yaWdpbkFkZGVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pCisgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dID0ge307CisKKyAgICAgICAgdmFyIHR5cGVzID0g
WyJwZXJzaXN0ZW50IiwgInRlbXBvcmFyeSJdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHR5cGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW29yaWdpbl1bdHlwZXNbaV1dKSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVT
eXN0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKHRoaXMs
IG9yaWdpbiwgdHlwZXNbaV0pOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luW29yaWdpbl1bdHlwZXNbaV1dID0gZmlsZVN5c3RlbTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAg
ICAqLworICAgIF9vcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAg
ICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pIHsK
KyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
b3JpZ2luXVt0eXBlXTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dW3R5cGVdOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQo
ZmlsZVN5c3RlbSk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW29yaWdpbl07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgICAgICov
CisgICAgX2ZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24oZmlsZVN5c3RlbSkKKyAgICB7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtQWRkZWQsIGZpbGVTeXN0ZW0pOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZVN5c3RlbX0gZmlsZVN5c3RlbQorICAgICAqLworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVu
Y3Rpb24oZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVt
UmVtb3ZlZCwgZmlsZVN5c3RlbSk7CisgICAgfSwKKworICAgIHJlZnJlc2hGaWxlU3lzdGVtTGlz
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgb3JpZ2luIGluIHRoaXMuX2Zp
bGVTeXN0ZW1zRm9yT3JpZ2luKQorICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9m
aWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dKQorICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1SZW1vdmVkKHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV0pOwor
CisgICAgICAgIGZvciAodmFyIG9yaWdpbiBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbikK
KyAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
b3JpZ2luXSkKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQodGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXSk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVj
dG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnk+KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZWFk
RGlyZWN0b3J5OiBmdW5jdGlvbihkaXJlY3RvcnksIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
dmFyIGZyYW1lSWQgPSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltkaXJlY3RvcnkuZmlsZVN5c3Rl
bS5vcmlnaW5dLmFueU9mKCk7CisgICAgICAgIGlmICghZnJhbWVJZCkgeworICAgICAgICAgICAg
c2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIEZpbGVFcnJvci5BQk9SVF9FUlIsIG51bGwp
LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1
ZXN0SWQgPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLm5leHRSZXF1ZXN0SWQrKzsKKyAg
ICAgICAgdmFyIHJlcXVlc3QgPSB7CisgICAgICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwK
KyAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjaworICAgICAgICB9OworCisgICAgICAgIHRo
aXMuX3BlbmRpbmdSZWFkRGlyZWN0b3J5UmVxdWVzdHNbcmVxdWVzdElkXSA9IHJlcXVlc3Q7Cisg
ICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRGlyZWN0b3J5KHJlcXVlc3RJZCwgZnJhbWVJZCwg
ZGlyZWN0b3J5LnVybCk7CisgICAgfSwKKworICAgIGRpZFJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBlbnRyeV91cmxzKQorICAgIHsKKyAgICAgICAgdmFyIHJl
cXVlc3QgPSB0aGlzLl9wZW5kaW5nUmVhZERpcmVjdG9yeVJlcXVlc3RzW3JlcXVlc3RJZF07Cisg
ICAgICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX3BlbmRpbmdSZWFkRGlyZWN0b3J5UmVxdWVzdHNbcmVxdWVzdElkXTsKKworICAgICAg
ICBpZiAoZXJyb3JDb2RlICE9IDApIHsKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGJhY2soZXJy
b3JDb2RlLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBiYXNlVVJMID0gcmVxdWVzdC5kaXJlY3RvcnkudXJsOworICAgICAgICB2YXIgZW50cmll
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJ5X3VybHMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRW50cnkuQ3JlYXRlRW50cnkocmVxdWVzdC5kaXJlY3RvcnksIGVudHJ5X3VybHNbaV0pOwor
ICAgICAgICAgICAgaWYgKCFlbnRyeSkgeworICAgICAgICAgICAgICAgIHJlcXVlc3QuY2FsbGJh
Y2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiwgbnVsbCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW50cmllcy5wdXNoKGVudHJ5KTsKKyAgICAg
ICAgfQorICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKDAsIGVudHJpZXMpOworICAgIH0KK30KKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzID0geworICAgIEZpbGVTeXN0
ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3RlbVJlbW92ZWQ6ICJGaWxl
U3lzdGVtUmVtb3ZlZCIKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5uZXh0UmVx
dWVzdElkID0gMTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0
ZW1Nb2RlbAorICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBhcmFtIHtzdHJpbmd9IHR5
cGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtID0gZnVuY3Rp
b24oZmlsZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUpCit7CisgICAgdGhpcy5vcmlnaW4gPSBv
cmlnaW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0aGlzLnJvb3QgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3RlbU1vZGVsLCB0aGlzLCBu
dWxsLCAiIik7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5w
cm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmaWxl
c3lzdGVtOiIgKyB0aGlzLm9yaWdpbiArICIvIiArIHRoaXMudHlwZTsKKyAgICB9Cit9CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSA9IGZ1bmN0aW9u
KGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBuYW1lKQorewor
ICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsID0gZmlsZVN5c3RlbU1vZGVsOworICAgIHRoaXMuZmls
ZVN5c3RlbSA9IGZpbGVTeXN0ZW07CisgICAgdGhpcy5wYXJlbnREaXJlY3RvcnkgPSBwYXJlbnRE
aXJlY3Rvcnk7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKK30KKworLyoqCisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IHgKKyAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0geQorICogQHJldHVybiB7bnVtYmVyfQorICovCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUgPSBmdW5jdGlvbih4LCB5
KQoreworICAgIGlmICh4LmlzRGlyZWN0b3J5KSB7CisgICAgICAgIGlmICgheS5pc0RpcmVjdG9y
eSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoeS5p
c0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICh4Lm5h
bWUgPCB5Lm5hbWUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoeC5uYW1lID4geS5uYW1l
KQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gMDsKK30KKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IHVybCgpCisgICAgewor
ICAgICAgICB2YXIgdXJsOworICAgICAgICBpZiAodGhpcy5wYXJlbnREaXJlY3RvcnkpCisgICAg
ICAgICAgICB1cmwgPSB0aGlzLnBhcmVudERpcmVjdG9yeS51cmwgKyB0aGlzLm5hbWU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHVybCA9IHRoaXMuZmlsZVN5c3RlbS5uYW1lOworCisgICAg
ICAgIGlmICh0aGlzLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIHVybCArICIvIjsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9Cit9CisKKy8qKgor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50
RGlyZWN0b3J5CisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeXxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkZpbGV9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuQ3JlYXRlRW50
cnkgPSBmdW5jdGlvbihwYXJlbnREaXJlY3RvcnksIHVybCkKK3sKKyAgICB2YXIgcGFyZW50VVJM
ID0gcGFyZW50RGlyZWN0b3J5LnVybDsKKyAgICBpZiAoIXVybC5zdGFydHNXaXRoKHBhcmVudFVS
TCkpCisgICAgICAgIHJldHVybiBudWxsOworICAgIGlmICh1cmxbdXJsLmxlbmd0aC0xXSA9PSAn
LycpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB1cmwuc2xpY2UocGFyZW50VVJMLmxlbmd0aCwgLTEp
OworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0
b3J5KHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtTW9kZWwsIHBhcmVudERpcmVjdG9yeS5maWxl
U3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZh
ciBuYW1lID0gdXJsLnNsaWNlKHBhcmVudFVSTC5sZW5ndGgpOworICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZShwYXJlbnREaXJlY3RvcnkuZmlsZVN5
c3RlbU1vZGVsLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBu
YW1lKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50RGlyZWN0b3J5CisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGUgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9y
eSwgbmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwo
dGhpcywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUp
OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlID0gewor
ICAgIGdldCBpc0RpcmVjdG9yeSgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlOworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZp
bGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkgPSBmdW5jdGlvbihm
aWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9yeSwgbmFtZSkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwodGhpcywgZmlsZVN5c3Rl
bU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworfQorCitXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGlz
RGlyZWN0b3J5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVhZERp
cmVjdG9yeTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0
ZW1Nb2RlbC5yZWFkRGlyZWN0b3J5KHRoaXMsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2NjM1MTMxYTllNTQ1ODVjNjRkNjhiNThhMjYzMmJkY2QxODk5MmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24u
TGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAgdGhpcy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImZpbGVzeXN0ZW0tdmlldyIpOworCisgICAgdmFyIGRpcmVjdG9yeVRyZWVF
bGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIsICJmaWxlc3lzdGVtLWRpcmVj
dG9yeS10cmVlIik7CisgICAgdGhpcy5kaXJlY3RvcnlUcmVlID0gbmV3IFRyZWVPdXRsaW5lKGRp
cmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENoaWxk
KGRpcmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoIm91dGxpbmUtZGlzY2xvc3VyZSIpOworICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRk
U3R5bGVDbGFzcygic2lkZWJhciIpOworCisgICAgdGhpcy5kaXJlY3RvcnlUcmVlLmFwcGVuZENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcywgZmlsZVN5c3Rl
bS5yb290KSk7CisgICAgdGhpcy52aXNpYmxlVmlldyA9IG51bGw7Cit9CisKK1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd1ZpZXc6IGZ1bmN0aW9u
KHZpZXcpCisgICAgeworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gdmlldykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpCisgICAgICAg
ICAgICB0aGlzLnZpc2libGVWaWV3LmRldGFjaCgpOworICAgICAgICB0aGlzLnZpc2libGVWaWV3
ID0gdmlldzsKKyAgICAgICAgdmlldy5zaG93KHRoaXMubWFpbkVsZW1lbnQpOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1WaWV3fSBmaWxlU3lzdGVtVmlldworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5fSBlbnRyeQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50
cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtVmlldywgZW50cnkpCit7CisgICAgdmFyIG5hbWUgPSBl
bnRyeS5wYXJlbnREaXJlY3RvcnkgPyBlbnRyeS5uYW1lIDogIi8iOworICAgIFRyZWVFbGVtZW50
LmNhbGwodGhpcywgbmFtZSwgbnVsbCwgZW50cnkuaXNEaXJlY3RvcnkpOworCisgICAgdGhpcy5f
ZW50cnkgPSBlbnRyeTsKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IGZpbGVTeXN0ZW1WaWV3
OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlID0gewor
ICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0g
dGhpcy5saXN0SXRlbUVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzZWxlY3Rpb24iKTsKKyAg
ICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHNlbGVjdGlvbiwgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZW50cnkuaXNEaXJlY3RvcnkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGZpbGUgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gKi8gdGhpcy5fZW50cnk7CisgICAgICAgIGlmICgh
dGhpcy5fdmlldykKKyAgICAgICAgICAgIHRoaXMuX3ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZp
bGVDb250ZW50VmlldyhmaWxlKTsKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcuc2hvd1Zp
ZXcodGhpcy5fdmlldyk7CisgICAgfSwKKworICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB9LAorCisgICAgX2RpZFJlYWREaXJlY3Rv
cnk6IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJv
ckNvZGUgPT0gMCkgeworICAgICAgICAgICAgZW50cmllcy5zb3J0KFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk7CisgICAgICAgICAgICB2YXIgb2xkQ2hpbGRyZW4g
PSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOworCisgICAgICAgICAgICB2YXIgbmV3RW50cnlJbmRl
eCA9IDA7CisgICAgICAgICAgICB2YXIgb2xkQ2hpbGRJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgY3VycmVudFRyZWVJdGVtID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChuZXdFbnRyeUluZGV4
IDwgZW50cmllcy5sZW5ndGggJiYgb2xkQ2hpbGRJbmRleCA8IG9sZENoaWxkcmVuLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzW25ld0VudHJ5SW5kZXhdLm5hbWUgPT0gb2xk
Q2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0uX2VudHJ5Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0ucmVmcmVzaCgpOworICAgICAgICAgICAgICAg
ICAgICArK25ld0VudHJ5SW5kZXg7CisgICAgICAgICAgICAgICAgICAgICsrb2xkQ2hpbGRJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJyZW50VHJlZUl0ZW07CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChlbnRyaWVzW25ld0VudHJ5SW5kZXhdLm5hbWUgPCBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4
XS5fZW50cnkubmFtZSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcs
IGVudHJpZXNbMF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAgICAgICArK25l
d0VudHJ5SW5kZXg7CisgICAgICAgICAgICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkQXRJbmRleChjdXJyZW50VHJlZUl0ZW0pOworICAgICAg
ICAgICAgICAgICsrb2xkQ2hpbGRJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZv
ciAoOyBuZXdFbnRyeUluZGV4IDwgZW50cmllcy5sZW5ndGg7ICsrbmV3RW50cnlJbmRleCkKKyAg
ICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNbbmV3RW50cnlJbmRleF0p
KTsKKworICAgICAgICAgICAgZm9yICg7IG9sZENoaWxkSW5kZXggPCBvbGRDaGlsZHJlbi5sZW5n
dGg7ICsrb2xkQ2hpbGRJbmRleCkKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKG9s
ZENoaWxkcmVuW29sZENoaWxkSW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZWZy
ZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0
b3J5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9lbnRyeS5yZWFkRGlyZWN0
b3J5KHRoaXMuX2RpZFJlYWREaXJlY3RvcnkuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVF
bGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2Mzg5ZGFkMjI1
ZGM3NzFiMmI5NjBjMDI3NjI1ZWJmMTg1MWZiYgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIy
Ngp6Y21WOyoxVTM3S1ApPGg7M0t8TGswMDBlMU5KTFRxMDAxQlcwMDFCZTFeQHM2YjkjRjgwMDAw
MWI1Y2hfMEl0cCkKej0+UHgjMjRZSmBMOyhLKXt7YTc+eXtENF4wMDBTYU5MaDBMMDFGY1UwMUZj
VjBHZ1pfMDAwMDdiVipHYDJpcHQqCnoxX35TXzB0ODxHMDBjQCZMX3QobyF8aipOan0lMjEjKCZr
X0dyUCl+VGA7UkxGIyR+JDVoOTVuMkwtZHlnR3ZaUQp6UGtRa21rbUpWMDFNeD1VITZQeG9xakRw
OUZma0hENWZ4PChMTktAPll3IWN1dW1tQHw/QzExISklJHY9P3dSU0cKej8ldnNXKUppNSg+OGA1
aGN8WW9ULS1pR0NGeGxrWWdSajI+eWE1ZE14O1lGQ1BJUF5NIz1RVUxwKDYqMTIrWnhACnpeWlp+
SyloWjhBXj8+NDxqRjExd0dyTS1MaUBAO3tyPzZJciN0dDMxMH15MnxCKCs0dXR3dmwwRS0zKyp7
d0pXKQp6Nkw9OHlidj10cCUqPEthOStJMUBZOVk5NHNyJE9sakpoYEU3RDtJY3ZPVjJrTWN4UVgk
d2pMLVhBODgqajFGczYKejFnQzk0KXY5RTRyRTgrOU1DJF84UDdBZnJyRTNqUUJ+RHkxZnA1TSR2
K2pGKmBwbWgxcjJ8bz8pcUQyNyt8d3BpCnpMN2U1cDdzcSZVJiVVMClnMFJMWEEwSTdHIXNSPFJR
SSluXmJNRFElK1N2cUVXb2g8JGtCVm1xPnZ0aGxOJDlnVwp6T0ttTkBUTVAzR1QpbEZZc2NTYl9U
eUFpRGRLdnsobCkrNnlKaEZYK2pobHVyZiQyYUdQP1dHTDFYZmEhUU9TIUIKejloI3VSWjxpKTxW
JVlpQWxaWD4pd0hoVn1YKUdecmQtQGlhRko1OFNiNUZPOUZlYWJLKT1EdH09Y0h3K3NJKWU8Cnp4
ZD0lIVZmeTlfK2pma3c+KTl1MCN0SHJYZUZSfnxeODVARjdhWFRmcDV5dS0qUW9jXjVzXi17QyNj
UWhubFgpfgp6ck1yUT02Z3lHQXtyKVY4RXRsMmgqKlB8QnlwSiR8emIxYWRJPml7akpfPn1vU3or
XipgPGVMcEdSfj5EZXN2ZzQKekskekgzUlh1OHEoT2VSflJGS2l5O2wyK0tBTGY8VV9PVyV4SGYt
R1J1fiR0fjQ4I2RMTVpNKm5mfkd6ZVE5UT8yCnokRyt5bSNNRTJCNjdYM3IzNzYtbGFKR0BVdUE2
fGZtVV9MMF9TY0VUdyMyQ1FBRFQ0aSMpbllTZHtUaVJLb0A1Uwp6b0FWR3YxMy1XR0VrSlMzUiRl
RlA2eXEjdm48PW9RaVlPUnlBUEsxUmI5TD5jNGgmeyMyNUg3JWpMUmY3WUJ2aCkKejV7cCFuUzU0
b0dNTnkwak5DcyN6RWB9NmJNS0dGQEdKKVM1MWcrWjhUP15FTE5ZM3Fyd05ATzYjaVZvTjhYaU8o
CnpucCRuckExO0FwQzleUGhFNG0xTGRIUTFJRW9qdnlhVHUzKXc8ankwLXRGRzxjR0UlPEwoPWZ6
Qn1GU29WRV43MQp6RHkhUV4/fHRDa0l8MThCLUpQSzd5dFMme0Q8JWJaTmtgbUZIMzRHYGk/Y1V5
JjZQQ0BrQG88dTMza1BVKHhJTkoKelU9dDZuTzFCdkYodnFSb2prSjx4eFhaODR6K0I+PWIlTGpK
USVPTD9VJmV3WUckISFkVTRxJmVCWjcoKVNJdy1UCnpiPmdSanFeczdxMm4yPy02aWFDalVgIztj
K0llaG5AMllPNypSRHUkOyZQcExHJih4azJNbEdNVzdJY0xAPDk8Vwp6XjV7ZVNhUTt1bSY7TzNX
bCo1KlVVMkg7YSk1QVFyYHwqSz1nQHU5NDFBVn51YEs5RlpQZnQkbDEyJlpNdytWeXkKekpWP0Qo
X3R1Kz03UUJkbnZrWDQ0XzRkSDw9Q2hOTmxiMTZCRj52WUp1WVZyfC1kXmpGMHwjRStHQ1Z4SShY
Rk1+Cm9XdUozbDd7emdYYjhLd3Y3eWNpPktSWTRGbnl2b0g8XlRXeTA3KnFvTTZOPCRmPlNMKkM7
JEtlCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA3OWY5YmZjZjRhNzBjMDBh
OThjY2RlZTIxY2VhZjc0NzljYWZkYWY4Li4xYWU3MDZlNTRmZDhiNGJkYTRmNzkzMDczODMxZjAw
Yzc3Y2Y5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTY3LDYgKzY3LDExIEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNo
ZUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVs
ZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAi
QXBwbGljYXRpb25DYWNoZSIsIFsiYXBwbGljYXRpb24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0i
XSk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2Fj
aGVMaXN0VHJlZUVsZW1lbnQpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLmV4cG9zZUZpbGVTeXN0
ZW1JbnNwZWN0aW9uKSB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCh0aGlzKTsKKyAgICAg
ICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVs
ZW1lbnQpOworICAgIH0KKwogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gdGhpcy5zcGxpdFZpZXcu
bWFpbkVsZW1lbnQ7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuYWRkU3R5bGVDbGFzcygiZGlmZi1j
b250YWluZXIiKTsKIApAQCAtNDU3LDYgKzQ2MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2Fw
cGxpY2F0aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
ICBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd0ZpbGVT
eXN0ZW06IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3
KHZpZXcpOworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29y
eU5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTE0Nzks
NiArMTQ5Miw3OSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZQogCiAvKioKICAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVu
dH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihz
dG9yYWdlUGFuZWwpCit7CisgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVT
eXN0ZW0iKSwgIkZpbGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZC5jYWxsKHRoaXMp
OworICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAgfSwKKworICAgIG9uYXR0
YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVn
b3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CisgICAgICAgIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgaWYgKHRo
aXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAg
fSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlZnJlc2ggRmlsZVN5c3RlbSBMaXN0IiksIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0uYmluZCh0
aGlzKSk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgIH0sCisKKyAgICBf
ZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxl
U3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0
ZW19ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWws
IGZpbGVTeXN0ZW0pOworICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGZpbGVTeXN0ZW1UcmVlRWxl
bWVudCk7CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIg
ZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gdGhpcy5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1l
KGZpbGVTeXN0ZW0ubmFtZSk7CisgICAgICAgIGlmICghZmlsZVN5c3RlbVRyZWVFbGVtZW50KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmaWxlU3lzdGVtVHJlZUVsZW1lbnQuY2xlYXIo
KTsKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOworICAg
IH0sCisKKyAgICBfZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lOiBmdW5jdGlvbihmaWxlU3lz
dGVtTmFtZSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJl
bi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50fSAqLyB0aGlzLmNoaWxkcmVuW2ldOworICAg
ICAgICAgICAgaWYgKGNoaWxkLmZpbGVTeXN0ZW1OYW1lID09PSBmaWxlU3lzdGVtTmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgcmVmcmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbU1vZGVsKSB7CisgICAgICAg
ICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbCgpOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRl
ZCwgdGhpcy5fZmlsZVN5c3RlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RXZlbnRUeXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQsIHRo
aXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLnJlZnJlc2hG
aWxlU3lzdGVtTGlzdCgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0
ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CiAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbH0gc3RvcmFnZVBhbmVsCiAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbH0gbW9kZWwKQEAgLTE4ODAsNiArMTk2Niw3MSBAQCBX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3RvcgogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWx9IHN0b3JhZ2VQYW5lbAorICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZmls
ZVN5c3RlbSkKK3sKKyAgICB2YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lzdGVtLnR5cGUgKyAiIC0g
IiArIGZpbGVTeXN0ZW0ub3JpZ2luOworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVF
bGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkaXNwbGF5TmFtZSwgWyJmaWxl
c3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworICAgIHRoaXMuX2ZpbGVTeXN0ZW0gPSBmaWxl
U3lzdGVtOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKKyAgICBnZXQgZmlsZVN5c3RlbU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgZ2V0IGl0ZW1VUkwoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsK
KyAgICB9LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRo
aXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250
ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7
CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBWaWV3IiksIHRoaXMuX3JlZnJlc2hGaWxlU3lzdGVt
LmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAor
CisgICAgX3JlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVt
Vmlldy5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtVmlldykg
eworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcpIHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLndhcm4oIkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBhdmFpbGFibGUu
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
dGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRo
aXMuX2ZpbGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5z
aG93RmlsZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKworICAgIGNsZWFy
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVtVmlldyAmJiB0
aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVtVmlldykKKyAg
ICAgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8K
IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlWaWV3ID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggYWRkYTAyYzc4
Y2IxMDRhYzVlYTc2MWIyN2JiZjJlMjZmNGFiOWQwYi4uMTQxNTJlZmRlZTBhZDc4MTM2YmJiMTkz
ODk2ZTdkOWEwY2E0NGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzCkBAIC00NCw3ICs0NCw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAg
ICBleHBvc2VXb3JrZXJzSW5zcGVjdGlvbjogZmFsc2UsCiAgICAgYXBwbGljYXRpb25UaXRsZTog
IldlYiBJbnNwZWN0b3IgLSAlcyIsCiAgICAgc2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Q
cm9wZXJ0aWVzOiBmYWxzZSwKLSAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlCisgICAgc2hvd0Rv
Y2tUb1JpZ2h0OiBmYWxzZSwKKyAgICBleHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlvbjogdHJ1ZQog
fQogCiB2YXIgQ2FwYWJpbGl0aWVzID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCmluZGV4IGI2NmUxOWY2YWM1NDVjYzBhMjdmNDJmMmY0MDg4YmVm
YTI2M2VlOTQuLjIyNTlkOTdjNmRlNWVkOWQ2NzczZTBmYjM2MDNlOTk3ZWZkOWVkYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTU4LDYg
KzU4LDggQEAKICAgICA8ZmlsZT5FeHRlbnNpb25SZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVNYW5hZ2VyLmpz
PC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KKyAgICA8ZmlsZT5G
aWxlU3lzdGVtVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25E
aWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
R29Ub0xpbmVEaWFsb2cuanM8L2ZpbGU+CkBAIC0yNDIsNiArMjQ0LDcgQEAKICAgICA8ZmlsZT5J
bWFnZXMvZXJyb3JJY29uLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JNZWRpdW1J
Y29uLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JSZWREb3QucG5nPC9maWxlPgor
ICAgIDxmaWxlPkltYWdlcy9maWxlc3lzdGVtLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMv
Zm9yd2FyZC5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZyYW1lLnBuZzwvZmlsZT4KICAg
ICA8ZmlsZT5JbWFnZXMvZ2xvc3N5SGVhZGVyLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGFkOTAzZjg3Mjk2
MzFlMDk1ZTE0MTI3MDRiOTA1MDcwYjczZjhjMmMuLjVjNGM2ZmIzMDY5Y2E5YTNhODMzMTZmMzlm
NzIyMzhjMDU3YjZlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTYwLDYgKzE2MCw5IEBAIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlQ1NTVG9rZW5pemVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VI
VE1MVG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlQ29udGVudFZpZXcuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0
ZW1Nb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlVGFibGVWaWV3LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
cmVzb3VyY2VzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9y
ZXNvdXJjZXNQYW5lbC5jc3MKaW5kZXggNGQ2Y2EyYjEyOWQ1M2Y2NTI0ZDViYmY2ZmRiZDA5YWMx
MmFjMGJkNC4uOWJlODc2MjYwMWIwMWY3NDllYjg1MzA5NWU0NDJkMWZlOWI0MjU4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5j
c3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5l
bC5jc3MKQEAgLTMyNiw3ICszMjYsNiBAQCBsaS5zZWxlY3RlZCAuYmFzZS1zdG9yYWdlLXRyZWUt
ZWxlbWVudC1zdWJ0aXRsZSB7CiAgICAgY29udGVudDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNh
Y2hlLnBuZyk7CiB9CiAKLS8qIEZJWE1FOiBNYWtlIHNlcGFyYXRlIHBuZyBmb3IgZmlsZS1zeXN0
ZW0gKi8KLS5maWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7Ci0gICAgY29udGVu
dDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7CisuZmlsZXN5c3RlbS1zdG9yYWdl
LXRyZWUtaXRlbSAuaWNvbiB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9maWxlc3lzdGVtLnBu
Zyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVz
LmpzCmluZGV4IDFkNzIyNWIyNmY4YmViZTNjOTBkYzllNGY1ZTg1YmQwMGJlZThkZjcuLjgxMGYx
ZDk5ZDYxODQxNjQ5ODhiNGQ1Njc2MzFmMDE3YjhlNWQ4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC02NzUsNCArNjc1LDI3IEBA
IE1hcC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9tYXAgPSB7fTsKICAgICB9
Ci19Cit9OworCisoZnVuY3Rpb24oKSB7Cit2YXIgb2JqZWN0UHJvdG90eXBlID0gLyoqIEB0eXBl
IHshT2JqZWN0fSAqL09iamVjdC5wcm90b3R5cGU7CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2Jq
ZWN0UHJvdG90eXBlLCAiaXNFbXB0eSIsCit7CisgICAgdmFsdWU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfSk7CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0
eShvYmplY3RQcm90b3R5cGUsICJhbnlPZiIsCit7CisgICAgdmFsdWU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcykKKyAgICAgICAgICAgIHJldHVybiB0aGlz
W2ldOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9KTsKK30pKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0t
dGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmls
ZXN5c3RlbS10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzOTU5N2Y5Y2IwN2M1ZDQ4YmVkMTg5ODRlYzQ3
NDdmNGI0ZjM0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpAQCAtMCwwICsxLDIgQEAKKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3Jlc291cmNlcy1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3Jlc291cmNlcy1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzI0ZGY3YzYxMjNjZDQ1ZTUxYWIwMjQxNmQzZDZkMjUwOTFhMWJmZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIEZpbGVTeXN0ZW0g
dHJlZSBlbGVtZW50IG9uIHJlc291cmNlcyBwYW5lbC4KKworZXJyb3I6IEV4Y2VwdGlvbiBkdXJp
bmcgdGVzdCBleGVjdXRpb246IFR5cGVFcnJvcjogQ2Fubm90IHJlYWQgcHJvcGVydHkgJ3Byb3Rv
dHlwZScgb2YgdW5kZWZpbmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jlc291cmNlcy1wYW5lbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4NGNiNmM5M2Y4NmE1YmU2NTk4MTk1ZjNjYTI3NmY2NGE5NDc2ZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
c291cmNlcy1wYW5lbC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPjxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVz
dCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgZmlsZVN5c3RlbXMgPSB7fTsKKyAgICBQ
cmVmZXJlbmNlcy5leHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlvbiA9IGZhbHNlOworCisgICAgSW5z
cGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVt
ZW50LnByb3RvdHlwZSwgIl9maWxlU3lzdGVtQWRkZWQiLCBmaWxlU3lzdGVtQWRkZWQsIHRydWUp
OworICAgIGZ1bmN0aW9uIGZpbGVTeXN0ZW1BZGRlZChldmVudCkgeworICAgICAgICBpZiAoZmls
ZVN5c3RlbXNbZXZlbnQuZGF0YS5uYW1lXSkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJVbmV4cGVjdGVkIGZpbGVTeXN0ZW1BZGRlZCBldmVudDogIiArIGV2ZW50LmRhdGEu
bmFtZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaWxlU3lzdGVtIGFkZGVk
OiAiICsgZXZlbnQuZGF0YS5uYW1lKTsKKyAgICAgICAgZmlsZVN5c3RlbXNbZXZlbnQuZGF0YS5u
YW1lXSA9IGV2ZW50LmRhdGE7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSwgIl9maWxl
U3lzdGVtUmVtb3ZlZCIsIGZpbGVTeXN0ZW1SZW1vdmVkLCB0cnVlKTsKKyAgICBmdW5jdGlvbiBm
aWxlU3lzdGVtUmVtb3ZlZChldmVudCkgeworICAgICAgICBpZiAoZmlsZVN5c3RlbXNbZXZlbnQu
ZGF0YS5uYW1lXSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZpbGVT
eXN0ZW0gcmVtb3ZlZDoiICsgZXZlbnQuZGF0YS5uYW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZSBm
aWxlU3lzdGVtc1tldmVudC5kYXRhLm5hbWVdOworICAgICAgICB9CisgICAgfQorCisgICAgdmFy
IHBlcnNpc3RlbnRGaWxlU3lzdGVtID0gbnVsbDsKKyAgICB2YXIgdGVtcG9yYXJ5RmlsZVN5c3Rl
bSA9IG51bGw7CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50
LmV4cGFuZCgpOworCisgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVBbmROYXZpZ2F0ZUlGcmFtZSgi
cmVzb3VyY2VzL3BhZ2Utd2l0aC1tYW5pZmVzdC5waHA/bWFuaWZlc3RJZD0xIiwgKTsKKworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTt9LCAw
KTsKK30KKzwvc2NyaXB0PgorPHA+VGVzdHMgRmlsZVN5c3RlbSB0cmVlIGVsZW1lbnQgb24gcmVz
b3VyY2VzIHBhbmVsLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144827</attachid>
            <date>2012-05-30 08:38:42 -0700</date>
            <delta_ts>2012-06-18 21:01:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20120531003840.patch</filename>
            <type>text/plain</type>
            <size>62387</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggY2VjMTM5MzM2
NTUzNzA2NjdiNTdjZDA5ZGYzODE1OTM3ZjJiYzE2Yi4uMjQ1NDAwMGMwMGQ4ZWU5YmVlMzQ2MTIx
ZTA5NzIzMzlhNjMwNzJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQwNCw2ICs2NDA0LDkgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApAQCAtNjU5Niw2ICs2
NTk5LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1l
ZGl1bUljb24ucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9l
cnJvclJlZERvdC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2ZvcndhcmQucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9m
aWxlc3lzdGVtLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMv
ZnJhbWUucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9z
c3lIZWFkZXIucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9n
bG9zc3lIZWFkZXJQcmVzc2VkLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDQwZmUwOWFkMjkwZjBkZDg3NGRlN2ZkOWZhYWZiNzY2Yzcy
ZjA1YzQuLmFiMjczYWEwYWMwMDEzMzU0NDI5OGJiMDY5MDE1Mzg5MmFjNjUzMTkgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDUyMiw2ICs3
NDUyMiwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTW9kZWwuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxmaWx0ZXJlZEl0
ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM5OTExNjA4YzRlOGNkYmFhYjY5N2UwNTcz
ZGUzZTc0ZGU0MGJiNTEuLmNlNjliZjVhOGJkODZkMjE5NWQyNzljZmMyYmJiMWE0OGZhY2JlNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEzOTMsNiArMTM5
MywxNyBAQAogICAgIHsKICAgICAgICAgImRvbWFpbiI6ICJGaWxlU3lzdGVtIiwKICAgICAgICAg
ImhpZGRlbiI6IHRydWUsCisgICAgICAgICJ0eXBlcyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAiaWQiOiAiTWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9i
amVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibW9kaWZpY2F0aW9uVGltZSIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgInR5cGUiOiAibnVtYmVyIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZpZXdUeXBlIiwgInR5cGUiOiAic3RyaW5n
IiwgImVudW0iOiBbICJ0ZXh0IiwgImltYWdlIiwgIm1lZGlhIiwgImJpbmFyeSIgXSB9CisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICBdLAogICAgICAgICAiY29tbWFu
ZHMiOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwK
QEAgLTE0MDAsMTAgKzE0MTEsNjYgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCi0gICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2FibGVzIGV2ZW50cyBmcm9tIGJhY2tlbmQuLiIKKyAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlYWREaXJl
Y3RvcnkiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0byByZWFk
IHRoZSBkaXJlY3RvcnkgY29udGVudC4gUmVzdWx0IHNob3VsZCByZXR1cm4gb24gZGlkUmVhZERp
cmVjdG9yeSBldmVudCB3aXRoIHJlcXVlc3QgSUQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQi
LCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJs
IiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRNZXRhZGF0YSIsCisg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAg
ICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJkaWRSZWFkRGlyZWN0b3J5IiwK
KyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdElkIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVy
cm9yQ29kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiMCwgaWYg
bm8gZXJyb3IuIE90aGVyd2lzZSwgZXJyb3JDb2RlIGlzIHNldCB0byBGaWxlRXJyb3I6OkVycm9y
Q29kZSB2YWx1ZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZW50cmllcyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiVVJMcyBvZiB0aGUgY29udGVudCBvZiB0aGUgZGlyZWN0b3J5LiBJ
ZiB0aGUgZW50cnkgaXMgZGlyZWN0b3J5LCBpdHMgVVJMIGVuZHMgd2l0aCAnLycuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJnb3RNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVl
c3RJZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIgorICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJlcnJvckNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5
cGUiOiAiaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibWV0YWRhdGEiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIiRyZWYiOiAiRmlsZVN5c3RlbS5NZXRhZGF0YSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAKaW5kZXggM2FmYjI2YmYxOTQxOTE4MmNmOGFjOWZlM2JkMTkxNzZjMWRkMjkz
Yy4uNWZjM2EzZjNlMWRkNGQ1YzhhMTcxZGJkNTcxNGY4YmQ4YzgyYTUxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTM1LDggKzM1LDI1IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgiCiAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVh
ZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRl
ICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJM
b2NhbEZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNjIsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBmaWxlU3lz
dGVtQWdlbnRFbmFibGVkW10gPSAiZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CiB9CiAKIGNsYXNz
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEZyb250ZW5kUHJvdmlkZXI+IHsKLSAgcHVibGljOgorICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZyb250ZW5kUHJvdmlkZXIpOworcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50
LCBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRlbmQpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZyb250ZW5kUHJvdmlkZXIoYWdlbnQsIGZyb250ZW5kKSk7
CkBAIC02NCw3ICs4Miw3IEBAIGNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRl
bmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZyb250ZW5kUHJvCiAgICAgICAgIG1fZnJv
bnRlbmQgPSAwOwogICAgIH0KIAotICBwcml2YXRlOgorcHJpdmF0ZToKICAgICBGcm9udGVuZFBy
b3ZpZGVyKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdlbnQsIEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtKiBmcm9udGVuZCkKICAgICAgICAgOiBtX2FnZW50KGFnZW50KQogICAgICAg
ICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpIHsgfQpAQCAtNzMsNiArOTEsMzE3IEBAIGNsYXNzIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZyb250ZW5kUHJvCiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIG1fZnJv
bnRlbmQ7CiB9OwogCituYW1lc3BhY2UgeworCit0eXBlZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6RnJvbnRlbmRQcm92aWRlciBGcm9udGVuZFByb3ZpZGVyOworCitjbGFzcyBSZWFkRGly
ZWN0b3J5VGFzayA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgcHVibGljIFJl
ZkNvdW50ZWQ8UmVhZERpcmVjdG9yeVRhc2s+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWFkRGlyZWN0b3J5VGFzayk7CitwdWJsaWM6CisgICAgY2xhc3MgRXJyb3JDYWxsYmFjazsKKyAg
ICBjbGFzcyBHZXRGaWxlU3lzdGVtQ2FsbGJhY2s7CisgICAgY2xhc3MgUmVhZERpcmVjdG9yeUVu
dHJpZXNDYWxsYmFjazsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNr
PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmVhZERpcmVjdG9yeVRhc2soZnJvbnRlbmRQcm92aWRlciwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgcmVxdWVzdElkLCB1cmwpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVy
cm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IGdvdEZpbGVTeXN0ZW0oRE9NRmlsZVN5c3RlbSopOworICAgIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoRW50cnlBcnJheSopOworCisgICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9y
OjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+ID4gZW50cmllcykKKyAgICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8
ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGlkUmVhZERpcmVjdG9yeSht
X3JlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBlbnRyaWVzKTsKKyAgICAg
ICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVhZERp
cmVjdG9yeVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICAsIG1fZnJvbnRlbmRQcm92
aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkK
KyAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CisKKyAgICB2b2lkIHJl
YWREaXJlY3RvcnlFbnRyaWVzKCk7CisKKyAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9m
cm9udGVuZFByb3ZpZGVyOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBLVVJMIG1fdXJsOwor
ICAgIFN0cmluZyBtX3BhdGg7CisgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOworICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IG1fZW50cmllczsKKyAgICBSZWZQdHI8RGly
ZWN0b3J5UmVhZGVyPiBtX2RpcmVjdG9yeVJlYWRlcjsKK307CisKK2NsYXNzIFJlYWREaXJlY3Rv
cnlUYXNrOjpFcnJvckNhbGxiYWNrIDogcHVibGljIFdlYkNvcmU6OkVycm9yQ2FsbGJhY2sgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVycm9yQ2FsbGJhY2spOworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxi
YWNrKHJlYWREaXJlY3RvcnlUYXNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpIE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAobV9y
ZWFkRGlyZWN0b3J5VGFzaykKKyAgICAgICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPnJlcG9y
dFJlc3VsdChlcnJvci0+Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
Citwcml2YXRlOgorICAgIEVycm9yQ2FsbGJhY2soUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFz
az4gcmVhZERpcmVjdG9yeVRhc2spCisgICAgICAgIDogbV9yZWFkRGlyZWN0b3J5VGFzayhyZWFk
RGlyZWN0b3J5VGFzaykgeyB9CisgICAgUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiBtX3JlYWRE
aXJlY3RvcnlUYXNrOworfTsKKworY2xhc3MgUmVhZERpcmVjdG9yeVRhc2s6OkdldEZpbGVTeXN0
ZW1DYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEdldEZpbGVTeXN0ZW1DYWxsYmFjayk7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s6OkdldEZpbGVTeXN0ZW1DYWxsYmFjaz4gY3JlYXRl
KFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5VGFzazo6R2V0RmlsZVN5
c3RlbUNhbGxiYWNrKHJlYWREaXJlY3RvcnlUYXNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUV2ZW50KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0pIE9WRVJSSURFCisgICAg
eworICAgICAgICBtX3JlYWREaXJlY3RvcnlUYXNrLT5nb3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW0p
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2V0RmlsZVN5
c3RlbUNhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlU
YXNrKQorICAgICAgICA6IG1fcmVhZERpcmVjdG9yeVRhc2socmVhZERpcmVjdG9yeVRhc2spIHsg
fQorCisgICAgUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiBtX3JlYWREaXJlY3RvcnlUYXNrOwor
fTsKKworY2xhc3MgUmVhZERpcmVjdG9yeVRhc2s6OlJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJh
Y2sgOiBwdWJsaWMgRW50cmllc0NhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWFkRGlyZWN0b3J5RW50cmllc0NhbGxiYWNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjaz4gY3Jl
YXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNrKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERp
cmVjdG9yeUVudHJpZXNDYWxsYmFjayhyZWFkRGlyZWN0b3J5VGFzaykpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeUFycmF5KiBlbnRyaWVzKSBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGVudHJpZXMpOworICAgICAgICBtX3JlYWREaXJlY3RvcnlU
YXNrLT5kaWRSZWFkRGlyZWN0b3J5RW50cmllcyhlbnRyaWVzKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJhY2so
UGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCisgICAgICAg
IDogbV9yZWFkRGlyZWN0b3J5VGFzayhyZWFkRGlyZWN0b3J5VGFzaykgeyB9CisgICAgUmVmUHRy
PFJlYWREaXJlY3RvcnlUYXNrPiBtX3JlYWREaXJlY3RvcnlUYXNrOworfTsKKwordm9pZCBSZWFk
RGlyZWN0b3J5VGFzazo6c3RhcnQoKQoreworICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNy
YWNrRmlsZVN5c3RlbVVSTChtX3VybCwgbV90eXBlLCBtX3BhdGgpKSB7CisgICAgICAgIHJlcG9y
dFJlc3VsdChGaWxlRXJyb3I6OlNZTlRBWF9FUlIsIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3Rl
bSgKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3R5cGUsCisgICAgICAgIEZp
bGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZSgKKyAgICAgICAgICAgIFJlYWREaXJlY3RvcnlUYXNr
OjpHZXRGaWxlU3lzdGVtQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSwKKyAgICAgICAgICAgIFJlYWRE
aXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrOjpjcmVhdGUodGhpcyksCisgICAgICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fdHlwZSkpOworfQorCit2b2lkIFJlYWREaXJlY3Rv
cnlUYXNrOjpnb3RGaWxlU3lzdGVtKERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0pCit7CisgICAg
bV9kaXJlY3RvcnlSZWFkZXIgPSBEaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShmaWxlU3lzdGVtLCBt
X3BhdGgpOworICAgIG1fZW50cmllcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVh
dGUoKTsKKyAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOworfQorCit2b2lkIFJlYWREaXJlY3Rv
cnlUYXNrOjpyZWFkRGlyZWN0b3J5RW50cmllcygpCit7CisgICAgbV9kaXJlY3RvcnlSZWFkZXIt
PnJlYWRFbnRyaWVzKAorICAgICAgICBSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVu
dHJpZXNDYWxsYmFjazo6Y3JlYXRlKHRoaXMpLAorICAgICAgICBSZWFkRGlyZWN0b3J5VGFzazo6
RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKTsKK30KKwordm9pZCBSZWFkRGlyZWN0b3J5VGFz
azo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK3sKKyAgICBp
ZiAoIWVudHJpZXMtPmxlbmd0aCgpKSB7CisgICAgICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2Fz
dDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oMCksIG1fZW50cmllcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cmllcy0+bGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBFbnRyeSogZW50cnkgPSBlbnRyaWVzLT5pdGVtKGkpOworICAgICAg
ICBTdHJpbmcgdXJsID0gZW50cnktPnRvVVJMKCk7CisgICAgICAgIGlmIChlbnRyeS0+aXNEaXJl
Y3RvcnkoKSAmJiAhdXJsLmVuZHNXaXRoKCIvIikpCisgICAgICAgICAgICB1cmwgKz0gIi8iOwor
ICAgICAgICBtX2VudHJpZXMtPmFkZEl0ZW0odXJsKTsKKyAgICB9CisgICAgcmVhZERpcmVjdG9y
eUVudHJpZXMoKTsKK30KKworY2xhc3MgR2V0TWV0YWRhdGFUYXNrIDogcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgUmVmQ291bnRlZDxHZXRNZXRhZGF0YVRhc2s+IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRNZXRhZGF0YVRhc2spOworcHVibGljOgorICAg
IGNsYXNzIEVycm9yQ2FsbGJhY2s7CisgICAgY2xhc3MgR2V0RW50cnlDYWxsYmFjazsKKyAgICBj
bGFzcyBHZXRNZXRhZGF0YUNhbGxiYWNrOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0TWV0
YWRhdGFUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFBy
b3ZpZGVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBp
bnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR2V0TWV0YWRhdGFUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgcmVwb3J0UmVzdWx0
KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KCk7Cisg
ICAgdm9pZCBnb3RFbnRyeShFbnRyeSopOworICAgIHZvaWQgZ290TWV0YWRhdGEoTWV0YWRhdGEq
KTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29k
ZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0YWRhdGE+IG1ldGFkYXRh
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mcm9u
dGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5nb3RNZXRhZGF0YShtX3JlcXVlc3RJZCwgc3RhdGlj
X2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtZXRhZGF0YSk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92
aWRlciA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIEdldE1ldGFkYXRhVGFzayhQYXNzUmVm
UHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCisgICAgICAgICwgbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlk
ZXIpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAgICAgICAsIG1fdXJsKFBh
cnNlZFVSTFN0cmluZywgdXJsKSB7IH0KKworICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBt
X2Zyb250ZW5kUHJvdmlkZXI7CisgICAgaW50IG1fcmVxdWVzdElkOworICAgIEtVUkwgbV91cmw7
CisgICAgU3RyaW5nIG1fcGF0aDsKK307CisKK2NsYXNzIEdldE1ldGFkYXRhVGFzazo6RXJyb3JD
YWxsYmFjayA6IHB1YmxpYyBXZWJDb3JlOjpFcnJvckNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShFcnJvckNhbGxiYWNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxHZXRNZXRhZGF0YVRhc2s6OkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldE1l
dGFkYXRhVGFzaz4gZ2V0TWV0YWRhdGFUYXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBHZXRNZXRhZGF0YVRhc2s6OkVycm9yQ2FsbGJhY2soZ2V0TWV0YWRhdGFUYXNrKSk7
CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3Ip
IE9WRVJSSURFCisgICAgeworICAgICAgICBtX2dldE1ldGFkYXRhVGFzay0+cmVwb3J0UmVzdWx0
KGVycm9yLT5jb2RlKCksIDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRXJyb3JDYWxsYmFjayhQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0TWV0
YWRhdGFUYXNrKQorICAgICAgICA6IG1fZ2V0TWV0YWRhdGFUYXNrKGdldE1ldGFkYXRhVGFzaykg
eyB9CisKKyAgICBSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBtX2dldE1ldGFkYXRhVGFzazsKK307
CisKK2NsYXNzIEdldE1ldGFkYXRhVGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBFbnRy
eUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNrKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s6OkdldEVudHJ5
Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0TWV0YWRhdGFU
YXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRhZGF0YVRhc2s6
OkdldEVudHJ5Q2FsbGJhY2soZ2V0TWV0YWRhdGFUYXNrKSk7CisgICAgfQorCisgICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KEVudHJ5KiBlbnRyeSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IG1fZ2V0TWV0YWRhdGFUYXNrLT5nb3RFbnRyeShlbnRyeSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZXRFbnRyeUNhbGxiYWNrKFBhc3NSZWZQdHI8R2V0
TWV0YWRhdGFUYXNrPiBnZXRNZXRhZGF0YVRhc2spCisgICAgICAgIDogbV9nZXRNZXRhZGF0YVRh
c2soZ2V0TWV0YWRhdGFUYXNrKSB7IH0KKworICAgIFJlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IG1f
Z2V0TWV0YWRhdGFUYXNrOworfTsKKworY2xhc3MgR2V0TWV0YWRhdGFUYXNrOjpHZXRNZXRhZGF0
YUNhbGxiYWNrIDogcHVibGljIE1ldGFkYXRhQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEdldE1ldGFkYXRhQ2FsbGJhY2spOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdldE1ldGFkYXRhVGFzazo6R2V0TWV0YWRhdGFDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8R2V0TWV0YWRhdGFUYXNrPiBnZXRNZXRhZGF0YVRhc2spCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdldE1ldGFkYXRhVGFzazo6R2V0TWV0YWRhdGFDYWxsYmFjayhnZXRN
ZXRhZGF0YVRhc2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTWV0
YWRhdGEqIG1ldGFkYXRhKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9nZXRNZXRhZGF0YVRh
c2stPmdvdE1ldGFkYXRhKG1ldGFkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
Citwcml2YXRlOgorICAgIEdldE1ldGFkYXRhQ2FsbGJhY2soUGFzc1JlZlB0cjxHZXRNZXRhZGF0
YVRhc2s+IGdldE1ldGFkYXRhVGFzaykKKyAgICAgICAgOiBtX2dldE1ldGFkYXRhVGFzayhnZXRN
ZXRhZGF0YVRhc2spIHsgfQorCisgICAgUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gbV9nZXRNZXRh
ZGF0YVRhc2s7Cit9OworCit2b2lkIEdldE1ldGFkYXRhVGFzazo6c3RhcnQoKQoreworICAgIEZp
bGVTeXN0ZW1UeXBlIHR5cGU7CisgICAgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3Rl
bVVSTChtX3VybCwgdHlwZSwgbV9wYXRoKTsKKworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgdHlwZSwKKyAgICAgICAgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKEdldE1ldGFk
YXRhVGFzazo6R2V0RW50cnlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2V0TWV0YWRhdGFUYXNrOjpFcnJvckNhbGxiYWNrOjpjcmVh
dGUodGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHR5cGUsIG1fcGF0aCkpOworfQorCit2b2lkIEdldE1ldGFkYXRhVGFz
azo6Z290RW50cnkoRW50cnkqIGVudHJ5KQoreworICAgIGVudHJ5LT5nZXRNZXRhZGF0YShHZXRN
ZXRhZGF0YVRhc2s6OkdldE1ldGFkYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR2V0TWV0YWRhdGFUYXNrOjpFcnJvckNhbGxiYWNrOjpjcmVhdGUodGhp
cykpOworfQorCit2b2lkIEdldE1ldGFkYXRhVGFzazo6Z290TWV0YWRhdGEoTWV0YWRhdGEqIG1l
dGFkYXRhKQoreworICAgIHR5cGVkZWYgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRh
OjpWaWV3VHlwZSBWaWV3VHlwZTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9wYXRoKTsKKyAgICBWaWV3VHlwZTo6RW51bSB2aWV3
VHlwZTsKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KG1pbWVUeXBlKSkKKyAgICAgICAgdmlld1R5cGUgPSBWaWV3VHlwZTo6SW1hZ2U7CisgICAgZWxz
ZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWlt
ZVR5cGUpKQorICAgICAgICB2aWV3VHlwZSA9IFZpZXdUeXBlOjpUZXh0OworICAgIGVsc2UgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkp
CisgICAgICAgIHZpZXdUeXBlID0gVmlld1R5cGU6OlRleHQ7CisgICAgZWxzZSBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAg
dmlld1R5cGUgPSBWaWV3VHlwZTo6TWVkaWE7CisgICAgZWxzZQorICAgICAgICB2aWV3VHlwZSA9
IFZpZXdUeXBlOjpCaW5hcnk7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06
Ok1ldGFkYXRhPiByZXN1bHQgPQorICAgICAgICAgICAgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06
Ok1ldGFkYXRhOjpjcmVhdGUoKQorICAgICAgICAgICAgICAgIC5zZXRNb2RpZmljYXRpb25UaW1l
KG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKCkpCisgICAgICAgICAgICAgICAgLnNldFNpemUo
bWV0YWRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgICAgICAuc2V0Vmlld1R5cGUodmlld1R5cGUp
OworICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oMCks
IHJlc3VsdCk7Cit9CisKK30KKwogLy8gc3RhdGljCiBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudD4gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogewpA
QCAtMTAyLDYgKzQzMSwyOCBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRT
dGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKIH0KIAordm9pZCBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWREaXJlY3RvcnkoRXJyb3JTdHJpbmcqLCBpbnQgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAg
IGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKworICAgIEZyYW1l
KiBmcmFtZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCktPmZy
YW1lRm9ySWQoZnJhbWVJZCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFJlYWREaXJlY3RvcnlUYXNr
OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1
ZXN0SWQsIHVybCktPnN0YXJ0KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpnZXRNZXRhZGF0YShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1f
ZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zyb250ZW5k
UHJvdmlkZXItPmZyb250ZW5kKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKS0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgR2V0TWV0YWRhdGFUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3Zp
ZGVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0SWQsIHVybCktPnN0YXJ0KCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCBh
NjM3ZmEwZTk3MmIxYWU3OGZkZDlhNDA5MmRmZTFhMWYxYmRiMTZlLi42OTBjMzRkN2JmNzZkNTNl
OWIyNzQxMjJlMjllMzIyMTgxYWQwZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFz
cyBET01GaWxlU3lzdGVtOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0
b3JTdGF0ZTsKQEAgLTUyLDEyICs1MywxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KEVycm9yU3Ry
aW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKEVycm9yU3RyaW5n
KiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVy
bCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwotICAgIHZpcnR1YWwg
dm9pZCByZXN0b3JlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpIE9WRVJSSURFOwogcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clN0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5weQppbmRleCAyZjFkN2E4ODAwNzY5YzE2NGNiNzY0NDZmYmFkZTU5MjhhY2I2MzEwLi42ODFi
NjkxNjRmYjU4MjFkMjllM2MzZTk0ZGFkZmI4ZDNkZTg5Njk0IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03Niw2ICs3Niw3IEBAIG1vZHVs
ZXMgPSBbCiAgICAgICAgICAgICAiRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMiLAogICAgICAg
ICAgICAgIkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyIsCiAgICAgICAgICAgICAiRmlsZU1hbmFn
ZXIuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1Nb2RlbC5qcyIsCiAgICAgICAgICAgICAi
SEFSRW50cnkuanMiLAogICAgICAgICAgICAgIkluZGV4ZWREQk1vZGVsLmpzIiwKICAgICAgICAg
ICAgICJMaW5raWZpZXIuanMiLApAQCAtMjA0LDYgKzIwNSw4IEBAIG1vZHVsZXMgPSBbCiAgICAg
ICAgICAgICAiRGF0YWJhc2VRdWVyeVZpZXcuanMiLAogICAgICAgICAgICAgIkRhdGFiYXNlVGFi
bGVWaWV3LmpzIiwKICAgICAgICAgICAgICJET01TdG9yYWdlSXRlbXNWaWV3LmpzIiwKKyAgICAg
ICAgICAgICJGaWxlQ29udGVudFZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3
LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVz
b3VyY2VzUGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZGJhYWY0
ZGVmNmIyMzM1YzAzNThhNGRkOTEyMjQ4ZDExMzUzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcwpAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlfSBmaWxl
CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcgPSBmdW5jdGlvbihmaWxlKQorewor
ICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisKKyAgICB0aGlzLl9pbm5lclZpZXcg
PSBudWxsOworICAgIHRoaXMuX2ZpbGUgPSBmaWxlOworfQorCitXZWJJbnNwZWN0b3IuRmlsZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKKyAgICB3YXNTaG93bjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fZmlsZS5nZXRNZXRhZGF0YSh0aGlzLl9nb3RNZXRhZGF0YS5iaW5kKHRo
aXMpKTsKKyAgICB9LAorCisgICAgX2dvdE1ldGFkYXRhOiBmdW5jdGlvbihlcnJvckNvZGUsIG1l
dGFkYXRhKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLnZpZXdUeXBlKSB7CisgICAgICAg
IGNhc2UgInRleHQiOgorICAgICAgICAgICAgdGhpcy5fc2hvd1ZpZXcobmV3IFdlYkluc3BlY3Rv
ci5FbXB0eVZpZXcoIlRleHQgVmlldyIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJpbWFnZSI6CisgICAgICAgICAgICB0aGlzLl9zaG93VmlldyhuZXcgV2ViSW5zcGVjdG9y
LkVtcHR5VmlldygiSW1hZ2UgVmlldyIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJtZWRpYSI6CisgICAgICAgICAgICB0aGlzLl9zaG93VmlldyhuZXcgV2ViSW5zcGVjdG9y
LkVtcHR5VmlldygiTWVkaWEgVmlldyIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJiaW5hcnkiOgorICAgICAgICAgICAgdGhpcy5fc2hvd1ZpZXcobmV3IFdlYkluc3BlY3Rv
ci5FbXB0eVZpZXcoIkJpbmFyeSBWaWV3IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgX3Nob3dWaWV3OiBmdW5jdGlvbih2aWV3KQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2lubmVyVmlldykKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVmlldy5kZXRh
Y2goKTsKKyAgICAgICAgdGhpcy5faW5uZXJWaWV3ID0gdmlldzsKKyAgICAgICAgdmlldy5zaG93
KHRoaXMuZWxlbWVudCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2Rl
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA4MTZiNTBmMjExMDlkYzllYjJmYzM2NGY2MzdmNGRiNmIyNWRlYjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBpbXBsZW1lbnRzIHtGaWxlU3lz
dGVtQWdlbnQuRGlzcGF0Y2hlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisKKyAg
ICB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkID0ge307CisgICAgdGhpcy5fZnJhbWVJZHNGb3JPcmln
aW4gPSB7fTsKKyAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbiA9IHt9OworCisgICAgdGhp
cy5fcGVuZGluZ1JlYWREaXJlY3RvcnlSZXF1ZXN0cyA9IHt9OworICAgIHRoaXMuX3BlbmRpbmdH
ZXRNZXRhZGF0YVJlcXVlc3RzID0ge307CisKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVl
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZl
bnRUeXBlcy5GcmFtZUFkZGVkLCB0aGlzLl9mcmFtZUFkZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZp
Z2F0ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1l
RGV0YWNoZWQsIHRoaXMuX2ZyYW1lRGV0YWNoZWQsIHRoaXMpOworCisgICAgSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMpOworICAgIEZpbGVTeXN0ZW1B
Z2VudC5lbmFibGUoKTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwu
bWFpbkZyYW1lKQorICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpOworfQorCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYXR0YWNo
RnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9mcmFtZU5hdmlnYXRl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAg
dGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9m
cmFtZURldGFjaGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRh
OworICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
IGZyYW1lCisgICAgICovCisgICAgX2F0dGFjaEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXSkKKyAgICAgICAg
ICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworCisgICAgICAgIGlmIChm
cmFtZS5zZWN1cml0eU9yaWdpbiA9PT0gIm51bGwiKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUuaWRdID0gZnJhbWUuc2VjdXJpdHlP
cmlnaW47CisKKyAgICAgICAgdmFyIG5ld19vcmlnaW4gPSBmYWxzZTsKKyAgICAgICAgaWYgKCF0
aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1cml0eU9yaWdpbl0pIHsKKyAgICAgICAg
ICAgIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW2ZyYW1lLnNlY3VyaXR5T3JpZ2luXSA9IHt9Owor
ICAgICAgICAgICAgbmV3X29yaWdpbiA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
ZnJhbWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmlnaW5dW2ZyYW1lLmlkXSA9IGZyYW1l
LmlkOworICAgICAgICBpZiAobmV3X29yaWdpbikKKyAgICAgICAgICAgIHRoaXMuX29yaWdpbkFk
ZGVkKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICovCisgICAg
X2F0dGFjaEZyYW1lUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAg
dGhpcy5fYXR0YWNoRnJhbWUoZnJhbWUpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZy
YW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fYXR0YWNoRnJh
bWVSZWN1cnNpdmVseShmcmFtZS5jaGlsZEZyYW1lc1tpXSk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBmcmFtZQorICAg
ICAqLworICAgIF9kZXRhY2hGcmFtZTogZnVuY3Rpb24oZnJhbWUpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUuaWRdKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB2YXIgb3JpZ2luID0gdGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5pZF07
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXTsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW29yaWdpbl1bZnJhbWUuaWRdOworCisg
ICAgICAgIHZhciBsYXN0X29yaWdpbiA9IHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW29yaWdpbl0u
aXNFbXB0eSgpOworICAgICAgICBpZiAobGFzdF9vcmlnaW4pIHsKKyAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltvcmlnaW5dOworICAgICAgICAgICAgdGhpcy5fb3Jp
Z2luUmVtb3ZlZChvcmlnaW4pOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBmcmFtZQorICAgICAqLwor
ICAgIF9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZSkKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lLmNoaWxkRnJhbWVz
W2ldKTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWUoZnJhbWUpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICovCisgICAgX29yaWdpbkFk
ZGVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0
ZW1zRm9yT3JpZ2luW29yaWdpbl0pCisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dID0ge307CisKKyAgICAgICAgdmFyIHR5cGVzID0gWyJwZXJzaXN0ZW50Iiwg
InRlbXBvcmFyeSJdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdp
bl1bdHlwZXNbaV1dKSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKHRoaXMsIG9yaWdpbiwgdHlwZXNb
aV0pOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1b
dHlwZXNbaV1dID0gZmlsZVN5c3RlbTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVt
QWRkZWQoZmlsZVN5c3RlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAqLworICAgIF9vcmln
aW5SZW1vdmVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAgICBmb3IgKHZhciB0eXBl
IGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pIHsKKyAgICAgICAgICAgIHZh
ciBmaWxlU3lzdGVtID0gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXTsK
KyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5
cGVdOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQoZmlsZVN5c3RlbSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdp
bl07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgICAgICovCisgICAgX2ZpbGVTeXN0
ZW1BZGRlZDogZnVuY3Rpb24oZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBl
cy5GaWxlU3lzdGVtQWRkZWQsIGZpbGVTeXN0ZW0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5
c3RlbQorICAgICAqLworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZmlsZVN5c3Rl
bSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgZmlsZVN5
c3RlbSk7CisgICAgfSwKKworICAgIHJlZnJlc2hGaWxlU3lzdGVtTGlzdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgb3JpZ2luIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3Jp
Z2luKQorICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dKQorICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1SZW1vdmVkKHRo
aXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV0pOworCisgICAgICAgIGZvciAo
dmFyIG9yaWdpbiBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbikKKyAgICAgICAgICAgIGZv
ciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW5bb3JpZ2luXVt0eXBlXSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVjdG9yeQorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5EaXJlY3Rvcnk+KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZWFkRGlyZWN0b3J5OiBmdW5j
dGlvbihkaXJlY3RvcnksIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lSWQgPSB0
aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltkaXJlY3RvcnkuZmlsZVN5c3RlbS5vcmlnaW5dLmFueU9m
KCk7CisgICAgICAgIGlmICghZnJhbWVJZCkgeworICAgICAgICAgICAgc2V0VGltZW91dChjYWxs
YmFjay5iaW5kKG51bGwsIEZpbGVFcnJvci5BQk9SVF9FUlIsIG51bGwpLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1ZXN0SWQgPSBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLm5leHRSZXF1ZXN0SWQrKzsKKyAgICAgICAgdmFyIHJlcXVl
c3QgPSB7CisgICAgICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKKyAgICAgICAgICAgIGNh
bGxiYWNrOiBjYWxsYmFjaworICAgICAgICB9OworCisgICAgICAgIHRoaXMuX3BlbmRpbmdSZWFk
RGlyZWN0b3J5UmVxdWVzdHNbcmVxdWVzdElkXSA9IHJlcXVlc3Q7CisgICAgICAgIEZpbGVTeXN0
ZW1BZ2VudC5yZWFkRGlyZWN0b3J5KHJlcXVlc3RJZCwgZnJhbWVJZCwgZGlyZWN0b3J5LnVybCk7
CisgICAgfSwKKworICAgIGRpZFJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJy
b3JDb2RlLCBlbnRyeVVSTHMpCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuX3Bl
bmRpbmdSZWFkRGlyZWN0b3J5UmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFyZXF1
ZXN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1Jl
YWREaXJlY3RvcnlSZXF1ZXN0c1tyZXF1ZXN0SWRdOworCisgICAgICAgIGlmIChlcnJvckNvZGUg
IT09IDApIHsKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGJhY2soZXJyb3JDb2RlLCBudWxsKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBiYXNlVVJMID0g
cmVxdWVzdC5kaXJlY3RvcnkudXJsOworICAgICAgICB2YXIgZW50cmllcyA9IFtdOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJ5VVJMcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGVudHJ5ID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5DcmVhdGVF
bnRyeShyZXF1ZXN0LmRpcmVjdG9yeSwgZW50cnlVUkxzW2ldKTsKKyAgICAgICAgICAgIGlmICgh
ZW50cnkpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKEZpbGVFcnJvci5TRUNV
UklUWV9FUlIsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7CisgICAgICAgIH0KKyAgICAgICAgcmVx
dWVzdC5jYWxsYmFjaygwLCBlbnRyaWVzKTsKKyAgICB9LAorCisgICAgZ2V0TWV0YWRhdGE6IGZ1
bmN0aW9uKGVudHJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBmcmFtZUlkID0gdGhp
cy5fZnJhbWVJZHNGb3JPcmlnaW5bZW50cnkuZmlsZVN5c3RlbS5vcmlnaW5dLmFueU9mKCk7Cisg
ICAgICAgIGlmICghZnJhbWVJZCkgeworICAgICAgICAgICAgc2V0VGltZW91dChjYWxsYmFjay5i
aW5kKG51bGwsIEZpbGVFcnJvci5BQk9SVF9FUlIsIG51bGwpLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1ZXN0SWQgPSBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLm5leHRSZXF1ZXN0SWQrKzsKKyAgICAgICAgdGhpcy5fcGVuZGluZ0dl
dE1ldGFkYXRhUmVxdWVzdHNbcmVxdWVzdElkXSA9IGNhbGxiYWNrOworICAgICAgICBGaWxlU3lz
dGVtQWdlbnQuZ2V0TWV0YWRhdGEocmVxdWVzdElkLCBmcmFtZUlkLCBlbnRyeS51cmwpOworICAg
IH0sCisKKyAgICBnb3RNZXRhZGF0YTogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIG1l
dGFkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fcGVuZGluZ0dldE1l
dGFkYXRhUmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdHZXRNZXRhZGF0YVJl
cXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbWV0YWRhdGEp
OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzID0g
eworICAgIEZpbGVTeXN0ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3Rl
bVJlbW92ZWQ6ICJGaWxlU3lzdGVtUmVtb3ZlZCIKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5uZXh0UmVxdWVzdElkID0gMTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBh
cmFtIHtzdHJpbmd9IHR5cGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxl
U3lzdGVtID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUpCit7CisgICAg
dGhpcy5vcmlnaW4gPSBvcmlnaW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0aGlzLnJv
b3QgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3Rl
bU1vZGVsLCB0aGlzLCBudWxsLCAiIik7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJmaWxlc3lzdGVtOiIgKyB0aGlzLm9yaWdpbiArICIvIiArIHRoaXMudHlwZTsK
KyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5F
bnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0
b3J5LCBuYW1lKQoreworICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsID0gZmlsZVN5c3RlbU1vZGVs
OworICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07CisgICAgdGhpcy5wYXJlbnREaXJl
Y3RvcnkgPSBwYXJlbnREaXJlY3Rvcnk7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKK30KKworLyoq
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IHgKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0geQorICogQHJldHVybiB7
bnVtYmVyfQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUg
PSBmdW5jdGlvbih4LCB5KQoreworICAgIGlmICh4LmlzRGlyZWN0b3J5KSB7CisgICAgICAgIGlm
ICgheS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoeS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0K
KworICAgIGlmICh4Lm5hbWUgPCB5Lm5hbWUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAo
eC5uYW1lID4geS5uYW1lKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gMDsKK30KKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0
IHVybCgpCisgICAgeworICAgICAgICB2YXIgdXJsOworICAgICAgICBpZiAodGhpcy5wYXJlbnRE
aXJlY3RvcnkpCisgICAgICAgICAgICB1cmwgPSB0aGlzLnBhcmVudERpcmVjdG9yeS51cmwgKyB0
aGlzLm5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVybCA9IHRoaXMuZmlsZVN5c3Rl
bS5uYW1lOworCisgICAgICAgIGlmICh0aGlzLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0
dXJuIHVybCArICIvIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAg
ICB9LAorCisgICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgdGhpcy5maWxlU3lzdGVtTW9kZWwuZ2V0TWV0YWRhdGEodGhpcywgY2FsbGJhY2spOworICAg
IH0KK30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGly
ZWN0b3J5fSBwYXJlbnREaXJlY3RvcnkKKyAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5fFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRmlsZX0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5F
bnRyeS5DcmVhdGVFbnRyeSA9IGZ1bmN0aW9uKHBhcmVudERpcmVjdG9yeSwgdXJsKQoreworICAg
IHZhciBwYXJlbnRVUkwgPSBwYXJlbnREaXJlY3RvcnkudXJsOworICAgIGlmICghdXJsLnN0YXJ0
c1dpdGgocGFyZW50VVJMKSkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgaWYgKHVybFt1cmwu
bGVuZ3RoLTFdID09PSAnLycpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB1cmwuc2xpY2UocGFyZW50
VVJMLmxlbmd0aCwgLTEpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRGlyZWN0b3J5KHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtTW9kZWwsIHBhcmVu
dERpcmVjdG9yeS5maWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHZhciBuYW1lID0gdXJsLnNsaWNlKHBhcmVudFVSTC5sZW5ndGgpOworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZShwYXJlbnRE
aXJlY3RvcnkuZmlsZVN5c3RlbU1vZGVsLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgcGFy
ZW50RGlyZWN0b3J5LCBuYW1lKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50
RGlyZWN0b3J5CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICovCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGUgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0s
IHBhcmVudERpcmVjdG9yeSwgbmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkVudHJ5LmNhbGwodGhpcywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnRE
aXJlY3RvcnksIG5hbWUpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUu
cHJvdG90eXBlID0geworICAgIGdldCBpc0RpcmVjdG9yeSgpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnku
cHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rv
cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9y
eSwgbmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwo
dGhpcywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUp
OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUg
PSB7CisgICAgZ2V0IGlzRGlyZWN0b3J5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXku
PFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAg
ICovCisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAg
ICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZWFkRGlyZWN0b3J5KHRoaXMsIGNhbGxiYWNrKTsKKyAg
ICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDlmZGEwZGY1Zjk5ZjJmYmI2NzBhOGQ1NjAxZjliNzg2
N2IxODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5T
aWRlYmFyUG9zaXRpb24uTGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZpbGVzeXN0ZW0tdmlldyIpOworCisgICAgdmFy
IGRpcmVjdG9yeVRyZWVFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIsICJm
aWxlc3lzdGVtLWRpcmVjdG9yeS10cmVlIik7CisgICAgdGhpcy5kaXJlY3RvcnlUcmVlID0gbmV3
IFRyZWVPdXRsaW5lKGRpcmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJFbGVt
ZW50LmFwcGVuZENoaWxkKGRpcmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xvc3VyZSIpOworICAgIHRoaXMuc2lk
ZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2lkZWJhciIpOworCisgICAgdGhpcy5kaXJlY3Rv
cnlUcmVlLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnko
dGhpcywgZmlsZVN5c3RlbS5yb290KSk7CisgICAgdGhpcy52aXNpYmxlVmlldyA9IG51bGw7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hv
d1ZpZXc6IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmll
dyA9PT0gdmlldykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZVZpZXcpCisgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmRldGFjaCgpOworICAgICAgICB0
aGlzLnZpc2libGVWaWV3ID0gdmlldzsKKyAgICAgICAgdmlldy5zaG93KHRoaXMubWFpbkVsZW1l
bnQpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1WaWV3fSBmaWxlU3lzdGVtVmlldworICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSBlbnRyeQorICovCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVZpZXcuRW50cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtVmlldywgZW50cnkpCit7Cisg
ICAgdmFyIG5hbWUgPSBlbnRyeS5wYXJlbnREaXJlY3RvcnkgPyBlbnRyeS5uYW1lIDogIi8iOwor
ICAgIFRyZWVFbGVtZW50LmNhbGwodGhpcywgbmFtZSwgbnVsbCwgZW50cnkuaXNEaXJlY3Rvcnkp
OworCisgICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9
IGZpbGVTeXN0ZW1WaWV3OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnku
cHJvdG90eXBlID0geworICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgc2VsZWN0aW9uID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJz
ZWxlY3Rpb24iKTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHNl
bGVjdGlvbiwgdGhpcy5saXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7CisKKyAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9o
YW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAgICBv
bnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2VudHJ5LmlzRGly
ZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmaWxlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGV9ICovIHRoaXMuX2VudHJ5Owor
ICAgICAgICBpZiAoIXRoaXMuX3ZpZXcpCisgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcoZmlsZSk7CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1WaWV3LnNob3dWaWV3KHRoaXMuX3ZpZXcpOworICAgIH0sCisKKyAgICBvbmV4cGFuZDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIF9o
YW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwg
dGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50
KTsKKyAgICB9LAorCisgICAgX2RpZFJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9uKGVycm9yQ29kZSwg
ZW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZpbGVFcnJvci5OT1Rf
Rk9VTkRfRVJSKSB7CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQpCisgICAgICAgICAgICAg
ICAgdGhpcy5wYXJlbnQucmVmcmVzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5l
cnJvcigiRmFpbGVkIHRvIHJlYWQgZGlyZWN0b3J5OiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJpZXMuc29ydChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOworICAgICAgICB2YXIgb2xkQ2hpbGRy
ZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOworCisgICAgICAgIHZhciBuZXdFbnRyeUluZGV4
ID0gMDsKKyAgICAgICAgdmFyIG9sZENoaWxkSW5kZXggPSAwOworICAgICAgICB2YXIgY3VycmVu
dFRyZWVJdGVtID0gMDsKKyAgICAgICAgd2hpbGUgKG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxl
bmd0aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAg
ICBpZiAoZW50cmllc1tuZXdFbnRyeUluZGV4XS5uYW1lID09PSBvbGRDaGlsZHJlbltvbGRDaGls
ZEluZGV4XS5fZW50cnkubmFtZSkgeworICAgICAgICAgICAgICAgIG9sZENoaWxkcmVuW29sZENo
aWxkSW5kZXhdLnJlZnJlc2goKTsKKyAgICAgICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7Cisg
ICAgICAgICAgICAgICAgKytvbGRDaGlsZEluZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVu
dFRyZWVJdGVtOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoZW50cmllc1tuZXdFbnRyeUluZGV4XS5uYW1lIDwgb2xkQ2hpbGRyZW5b
b2xkQ2hpbGRJbmRleF0uX2VudHJ5Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2Vy
dENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5
c3RlbVZpZXcsIGVudHJpZXNbMF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAg
ICsrbmV3RW50cnlJbmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhp
cy5yZW1vdmVDaGlsZEF0SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICsrb2xk
Q2hpbGRJbmRleDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVu
dHJpZXMubGVuZ3RoOyArK25ld0VudHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3Rl
bVZpZXcsIGVudHJpZXNbbmV3RW50cnlJbmRleF0pKTsKKworICAgICAgICBmb3IgKDsgb2xkQ2hp
bGRJbmRleCA8IG9sZENoaWxkcmVuLmxlbmd0aDsgKytvbGRDaGlsZEluZGV4KQorICAgICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZChvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XSk7CisgICAgfSwK
KworICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW50
cnkuaXNEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2VudHJ5
LnJlYWREaXJlY3RvcnkodGhpcy5fZGlkUmVhZERpcmVjdG9yeS5iaW5kKHRoaXMpKTsKKyAgICB9
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUuX19wcm90
b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmcgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVtLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MjYzODlkYWQyMjVkYzc3MWIyYjk2MGMwMjc2MjVlYmYxODUxZmJiCkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAxMjI2CnpjbVY7KjFVMzdLUCk8aDszS3xMazAwMGUxTkpMVHEwMDFCVzAwMUJlMV5A
czZiOSNGODAwMDAxYjVjaF8wSXRwKQp6PT5QeCMyNFlKYEw7KEspe3thNz55e0Q0XjAwMFNhTkxo
MEwwMUZjVTAxRmNWMEdnWl8wMDAwN2JWKkdgMmlwdCoKejFfflNfMHQ4PEcwMGNAJkxfdChvIXxq
Kk5qfSUyMSMoJmtfR3JQKX5UYDtSTEYjJH4kNWg5NW4yTC1keWdHdlpRCnpQa1FrbWttSlYwMU14
PVUhNlB4b3FqRHA5RmZrSEQ1Zng8KExOS0A+WXchY3V1bW1AfD9DMTEhKSUkdj0/d1JTRwp6PyV2
c1cpSmk1KD44YDVoY3xZb1QtLWlHQ0Z4bGtZZ1JqMj55YTVkTXg7WUZDUElQXk0jPVFVTHAoNiox
MitaeEAKel5aWn5LKWhaOEFePz40PGpGMTF3R3JNLUxpQEA7e3I/NklyI3R0MzEwfXkyfEIoKzR1
dHd2bDBFLTMrKnt3SlcpCno2TD04eWJ2PXRwJSo8S2E5K0kxQFk5WTk0c3IkT2xqSmhgRTdEO0lj
dk9WMmtNY3hRWCR3akwtWEE4OCpqMUZzNgp6MWdDOTQpdjlFNHJFOCs5TUMkXzhQN0FmcnJFM2pR
Qn5EeTFmcDVNJHYrakYqYHBtaDFyMnxvPylxRDI3K3x3cGkKekw3ZTVwN3NxJlUmJVUwKWcwUkxY
QTBJN0chc1I8UlFJKW5eYk1EUSUrU3ZxRVdvaDwka0JWbXE+dnRobE4kOWdXCnpPS21OQFRNUDNH
VClsRllzY1NiX1R5QWlEZEt2eyhsKSs2eUpoRlgramhsdXJmJDJhR1A/V0dMMVhmYSFRT1MhQgp6
OWgjdVJaPGkpPFYlWWlBbFpYPil3SGhWfVgpR15yZC1AaWFGSjU4U2I1Rk85RmVhYkspPUR0fT1j
SHcrc0kpZTwKenhkPSUhVmZ5OV8ramZrdz4pOXUwI3RIclhlRlJ+fF44NUBGN2FYVGZwNXl1LSpR
b2NeNXNeLXtDI2NRaG5sWCl+CnpyTXJRPTZneUdBe3IpVjhFdGwyaCoqUHxCeXBKJHx6YjFhZEk+
aXtqSl8+fW9TeiteKmA8ZUxwR1J+PkRlc3ZnNAp6SyR6SDNSWHU4cShPZVJ+UkZLaXk7bDIrS0FM
ZjxVX09XJXhIZi1HUnV+JHR+NDgjZExNWk0qbmZ+R3plUTlRPzIKeiRHK3ltI01FMkI2N1gzcjM3
Ni1sYUpHQFV1QTZ8Zm1VX0wwX1NjRVR3IzJDUUFEVDRpIyluWVNke1RpUktvQDVTCnpvQVZHdjEz
LVdHRWtKUzNSJGVGUDZ5cSN2bjw9b1FpWU9SeUFQSzFSYjlMPmM0aCZ7IzI1SDclakxSZjdZQnZo
KQp6NXtwIW5TNTRvR01OeTBqTkNzI3pFYH02Yk1LR0ZAR0opUzUxZytaOFQ/XkVMTlkzcXJ3TkBP
NiNpVm9OOFhpTygKem5wJG5yQTE7QXBDOV5QaEU0bTFMZEhRMUlFb2p2eWFUdTMpdzxqeTAtdEZH
PGNHRSU8TCg9ZnpCfUZTb1ZFXjcxCnpEeSFRXj98dENrSXwxOEItSlBLN3l0UyZ7RDwlYlpOa2Bt
RkgzNEdgaT9jVXkmNlBDQGtAbzx1MzNrUFUoeElOSgp6VT10Nm5PMUJ2Rih2cVJvamtKPHh4WFo4
NHorQj49YiVMakpRJU9MP1UmZXdZRyQhIWRVNHEmZUJaNygpU0l3LVQKemI+Z1JqcV5zN3EybjI/
LTZpYUNqVWAjO2MrSWVobkAyWU83KlJEdSQ7JlBwTEcmKHhrMk1sR01XN0ljTEA8OTxXCnpeNXtl
U2FRO3VtJjtPM1dsKjUqVVUySDthKTVBUXJgfCpLPWdAdTk0MUFWfnVgSzlGWlBmdCRsMTImWk13
K1Z5eQp6SlY/RChfdHUrPTdRQmRudmtYNDRfNGRIPD1DaE5ObGIxNkJGPnZZSnVZVnJ8LWReakYw
fCNFK0dDVnhJKFhGTX4Kb1d1SjNsN3t6Z1hiOEt3djd5Y2k+S1JZNEZueXZvSDxeVFd5MDcqcW9N
Nk48JGY+U0wqQzskS2UKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDc5Zjli
ZmNmNGE3MGMwMGE5OGNjZGVlMjFjZWFmNzQ3OWNhZmRhZjguLjFhZTcwNmU1NGZkOGI0YmRhNGY3
OTMwNzM4MzFmMDBjNzdjZjlhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtNjcsNiArNjcsMTEgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAgICAgdGhpcy5hcHBs
aWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0
ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFwcGxpY2F0aW9u
IENhY2hlIiksICJBcHBsaWNhdGlvbkNhY2hlIiwgWyJhcHBsaWNhdGlvbi1jYWNoZS1zdG9yYWdl
LXRyZWUtaXRlbSJdKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuYXBw
bGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCk7CiAKKyAgICBpZiAoUHJlZmVyZW5jZXMuZXhw
b3NlRmlsZVN5c3RlbUluc3BlY3Rpb24pIHsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRy
ZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KHRo
aXMpOworICAgICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuZmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudCk7CisgICAgfQorCiAgICAgdGhpcy5zdG9yYWdlVmlld3MgPSB0aGlz
LnNwbGl0Vmlldy5tYWluRWxlbWVudDsKICAgICB0aGlzLnN0b3JhZ2VWaWV3cy5hZGRTdHlsZUNs
YXNzKCJkaWZmLWNvbnRhaW5lciIpOwogCkBAIC00NTcsNiArNDYyLDE0IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lubmVyU2hvd1Zp
ZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAg
ICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIHRoaXMuX2lu
bmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRlZ29yeVZpZXc6IGZ1bmN0
aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2F0ZWdvcnlWaWV3
KQpAQCAtMTQ3OSw2ICsxNDkyLDc5IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlCiAKIC8qKgog
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29y
eVRyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWx9IHN0
b3JhZ2VQYW5lbAorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9
IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVn
b3J5VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRmlsZVN5c3RlbSIpLCAiRmlsZVN5c3RlbSIsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRy
ZWUtaXRlbSJdKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0geworICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBX
ZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZXhwYW5k
LmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0oKTsKKyAgICB9LAor
CisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5T
dG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsK
KyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1l
bnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAg
ICAgICBpZiAodGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMucmVmcmVzaEZpbGVTeXN0
ZW0oKTsKKyAgICB9LAorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudSgpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVmcmVzaCBGaWxlU3lzdGVtIExpc3QiKSwgdGhpcy5yZWZyZXNoRmlsZVN5
c3RlbS5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAg
fSwKKworICAgIF9maWxlU3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMuX3N0
b3JhZ2VQYW5lbCwgZmlsZVN5c3RlbSk7CisgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZmlsZVN5
c3RlbVRyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0ZW1SZW1vdmVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlU3lzdGVtID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSB0aGlzLl9maWxlU3lzdGVtVHJlZUVs
ZW1lbnRCeU5hbWUoZmlsZVN5c3RlbS5uYW1lKTsKKyAgICAgICAgaWYgKCFmaWxlU3lzdGVtVHJl
ZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpbGVTeXN0ZW1UcmVlRWxl
bWVudC5jbGVhcigpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGZpbGVTeXN0ZW1UcmVlRWxl
bWVudCk7CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtVHJlZUVsZW1lbnRCeU5hbWU6IGZ1bmN0
aW9uKGZpbGVTeXN0ZW1OYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgY2hpbGQgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnR9ICovIHRoaXMuY2hpbGRy
ZW5baV07CisgICAgICAgICAgICBpZiAoY2hpbGQuZmlsZVN5c3RlbU5hbWUgPT09IGZpbGVTeXN0
ZW1OYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuW2ldOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisKKyAgICByZWZyZXNoRmlsZVN5c3Rl
bTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtTW9kZWwp
IHsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsKCk7CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMuRmls
ZVN5c3RlbUFkZGVkLCB0aGlzLl9maWxlU3lzdGVtQWRkZWQsIHRoaXMpOworICAgICAgICAgICAg
dGhpcy5fZmlsZVN5c3RlbU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1SZW1vdmVkLCB0aGlzLl9maWxlU3lzdGVt
UmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9k
ZWwucmVmcmVzaEZpbGVTeXN0ZW1MaXN0KCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0K
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsfSBtb2RlbApAQCAtMTg4MCw2ICsx
OTY2LDcxIEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yCiAKIC8qKgogICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbH0gc3RvcmFnZVBhbmVsCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQor
ICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFn
ZVBhbmVsLCBmaWxlU3lzdGVtKQoreworICAgIHZhciBkaXNwbGF5TmFtZSA9IGZpbGVTeXN0ZW0u
dHlwZSArICIgLSAiICsgZmlsZVN5c3RlbS5vcmlnaW47CisgICAgV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRpc3BsYXlO
YW1lLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7CisgICAgdGhpcy5fZmlsZVN5
c3RlbSA9IGZpbGVTeXN0ZW07Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1l
bnQucHJvdG90eXBlID0geworICAgIGdldCBmaWxlU3lzdGVtTmFtZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fZmlsZVN5c3RlbS5uYW1lOworICAgIH0sCisKKyAgICBnZXQgaXRlbVVS
TCgpCisgICAgeworICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06Ly8iICsgdGhpcy5fZmlsZVN5
c3RlbS5uYW1lOworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0
YWNoLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRo
aXMpLCB0cnVlKTsKKyAgICB9LAorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCBGaWxlU3lzdGVtIFZpZXciKSwgdGhpcy5fcmVmcmVz
aEZpbGVTeXN0ZW0uYmluZCh0aGlzKSk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQp
OworICAgIH0sCisKKyAgICBfcmVmcmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtVmlldykKKyAgICAgICAgICAgIHRoaXMu
X2ZpbGVTeXN0ZW1WaWV3LnJlZnJlc2goKTsKKyAgICB9LAorCisgICAgb25zZWxlY3Q6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbnNlbGVjdC5jYWxsKHRoaXMpOworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVT
eXN0ZW1WaWV3KSB7CisgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmll
dykgeworICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybigiRmlsZVN5c3RlbVZpZXcgaXMgbm90
IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcodGhpcy5fZmlsZVN5c3RlbSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc3Rv
cmFnZVBhbmVsLnNob3dGaWxlU3lzdGVtKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3KTsKKyAgICB9LAor
CisgICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmZpbGVTeXN0
ZW1WaWV3ICYmIHRoaXMuX3N0b3JhZ2VQYW5lbC52aXNpYmxlVmlldyA9PSB0aGlzLmZpbGVTeXN0
ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLmNsb3NlVmlzaWJsZVZpZXco
KTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3Rv
dHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KICAqLwogV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVZpZXcgPSBmdW5jdGlvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRl
eCBhZGRhMDJjNzhjYjEwNGFjNWVhNzYxYjI3YmJmMmUyNmY0YWI5ZDBiLi4xNDE1MmVmZGVlMGFk
NzgxMzZiYmIxOTM4OTZlN2Q5YTBjYTQ0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDcgKzQ0LDggQEAgdmFyIFByZWZlcmVu
Y2VzID0gewogICAgIGV4cG9zZVdvcmtlcnNJbnNwZWN0aW9uOiBmYWxzZSwKICAgICBhcHBsaWNh
dGlvblRpdGxlOiAiV2ViIEluc3BlY3RvciAtICVzIiwKICAgICBzaG93SGVhcFNuYXBzaG90T2Jq
ZWN0c0hpZGRlblByb3BlcnRpZXM6IGZhbHNlLAotICAgIHNob3dEb2NrVG9SaWdodDogZmFsc2UK
KyAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlLAorICAgIGV4cG9zZUZpbGVTeXN0ZW1JbnNwZWN0
aW9uOiB0cnVlCiB9CiAKIHZhciBDYXBhYmlsaXRpZXMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYjY2ZTE5ZjZhYzU0NWNjMGEyN2Y0
MmYyZjQwODhiZWZhMjYzZWU5NC4uMjI1OWQ5N2M2ZGU1ZWQ5ZDY3NzNlMGZiMzYwM2U5OTdlZmQ5
ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtNTgsNiArNTgsOCBAQAogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwv
ZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rmls
ZU1hbmFnZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxlPgor
ICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkZpbHRlcmVkSXRl
bVNlbGVjdGlvbkRpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwvZmlsZT4KQEAgLTI0Miw2ICsyNDQsNyBAQAog
ICAgIDxmaWxlPkltYWdlcy9lcnJvckljb24ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9l
cnJvck1lZGl1bUljb24ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9lcnJvclJlZERvdC5w
bmc8L2ZpbGU+CisgICAgPGZpbGU+SW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nPC9maWxlPgogICAgIDxm
aWxlPkltYWdlcy9mb3J3YXJkLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZnJhbWUucG5n
PC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9nbG9zc3lIZWFkZXIucG5nPC9maWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXgg
YWQ5MDNmODcyOTYzMWUwOTVlMTQxMjcwNGI5MDUwNzBiNzNmOGMyYy4uNWM0YzZmYjMwNjljYTlh
M2E4MzMxNmYzOWY3MjIzOGMwNTdiNmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjAsNiArMTYwLDkgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VDU1NUb2tl
bml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNvdXJjZUhUTUxUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVDb250ZW50
Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iRmlsZVN5c3RlbU1vZGVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJs
ZVZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcwppbmRleCA0ZDZjYTJiMTI5ZDUzZjY1MjRkNWJi
ZjZmZGJkMDlhYzEyYWMwYmQ0Li45YmU4NzYyNjAxYjAxZjc0OWViODUzMDk1ZTQ0MmQxZmU5YjQy
NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291
cmNlc1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jl
c291cmNlc1BhbmVsLmNzcwpAQCAtMzI2LDcgKzMyNiw2IEBAIGxpLnNlbGVjdGVkIC5iYXNlLXN0
b3JhZ2UtdHJlZS1lbGVtZW50LXN1YnRpdGxlIHsKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2Fw
cGxpY2F0aW9uQ2FjaGUucG5nKTsKIH0KIAotLyogRklYTUU6IE1ha2Ugc2VwYXJhdGUgcG5nIGZv
ciBmaWxlLXN5c3RlbSAqLwotLmZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uIHsK
LSAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2FwcGxpY2F0aW9uQ2FjaGUucG5nKTsKKy5maWxlc3lz
dGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2Zp
bGVzeXN0ZW0ucG5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC91dGlsaXRpZXMuanMKaW5kZXggMWQ3MjI1YjI2ZjhiZWJlM2M5MGRjOWU0ZjVlODViZDAwYmVl
OGRmNy4uODEwZjFkOTlkNjE4NDE2NDk4OGI0ZDU2NzYzMWYwMTdiOGU1ZDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTY3NSw0
ICs2NzUsMjcgQEAgTWFwLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX21hcCA9
IHt9OwogICAgIH0KLX0KK307CisKKyhmdW5jdGlvbigpIHsKK3ZhciBvYmplY3RQcm90b3R5cGUg
PSAvKiogQHR5cGUgeyFPYmplY3R9ICovT2JqZWN0LnByb3RvdHlwZTsKK09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmplY3RQcm90b3R5cGUsICJpc0VtcHR5IiwKK3sKKyAgICB2YWx1ZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9KTsKKworT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdFByb3RvdHlwZSwgImFueU9mIiwKK3sKKyAgICB2YWx1ZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzKQorICAgICAgICAgICAg
cmV0dXJuIHRoaXNbaV07CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30pOworfSkoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
ZmlsZXN5c3RlbS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5NTk3ZjljYjA3YzVkNDhi
ZWQxODk4NGVjNDc0N2Y0YjRmMzQzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCkBAIC0wLDAg
KzEsMiBAQAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzLXBhbmVsLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjRkZjdjNjEyM2NkNDVlNTFhYjAyNDE2ZDNkNmQyNTA5MWExYmZmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9yZXNvdXJjZXMtcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdHMg
RmlsZVN5c3RlbSB0cmVlIGVsZW1lbnQgb24gcmVzb3VyY2VzIHBhbmVsLgorCitlcnJvcjogRXhj
ZXB0aW9uIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbjogVHlwZUVycm9yOiBDYW5ub3QgcmVhZCBwcm9w
ZXJ0eSAncHJvdG90eXBlJyBvZiB1bmRlZmluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXNvdXJjZXMtcGFuZWwuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzLXBhbmVs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzg0Y2I2YzkzZjg2YTViZTY1OTgxOTVmM2NhMjc2ZjY0YTk0NzZm
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzLXBhbmVsLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBF
IGh0bWw+PG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2Fk
ZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBmaWxlU3lzdGVtcyA9
IHt9OworICAgIFByZWZlcmVuY2VzLmV4cG9zZUZpbGVTeXN0ZW1JbnNwZWN0aW9uID0gZmFsc2U7
CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLCAiX2ZpbGVTeXN0ZW1BZGRlZCIsIGZpbGVTeXN0ZW1B
ZGRlZCwgdHJ1ZSk7CisgICAgZnVuY3Rpb24gZmlsZVN5c3RlbUFkZGVkKGV2ZW50KSB7CisgICAg
ICAgIGlmIChmaWxlU3lzdGVtc1tldmVudC5kYXRhLm5hbWVdKQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIlVuZXhwZWN0ZWQgZmlsZVN5c3RlbUFkZGVkIGV2ZW50OiAiICsg
ZXZlbnQuZGF0YS5uYW1lKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZpbGVT
eXN0ZW0gYWRkZWQ6ICIgKyBldmVudC5kYXRhLm5hbWUpOworICAgICAgICBmaWxlU3lzdGVtc1tl
dmVudC5kYXRhLm5hbWVdID0gZXZlbnQuZGF0YTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90
eXBlLCAiX2ZpbGVTeXN0ZW1SZW1vdmVkIiwgZmlsZVN5c3RlbVJlbW92ZWQsIHRydWUpOworICAg
IGZ1bmN0aW9uIGZpbGVTeXN0ZW1SZW1vdmVkKGV2ZW50KSB7CisgICAgICAgIGlmIChmaWxlU3lz
dGVtc1tldmVudC5kYXRhLm5hbWVdKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiRmlsZVN5c3RlbSByZW1vdmVkOiIgKyBldmVudC5kYXRhLm5hbWUpOworICAgICAgICAg
ICAgZGVsZXRlIGZpbGVTeXN0ZW1zW2V2ZW50LmRhdGEubmFtZV07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgcGVyc2lzdGVudEZpbGVTeXN0ZW0gPSBudWxsOworICAgIHZhciB0ZW1wb3Jh
cnlGaWxlU3lzdGVtID0gbnVsbDsKKworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291
cmNlcyIpOworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmZpbGVTeXN0ZW1MaXN0
VHJlZUVsZW1lbnQuZXhwYW5kKCk7CisKKyAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFuZE5hdmln
YXRlSUZyYW1lKCJyZXNvdXJjZXMvcGFnZS13aXRoLW1hbmlmZXN0LnBocD9tYW5pZmVzdElkPTEi
LCApOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpO30sIDApOworfQorPC9zY3JpcHQ+Cis8cD5UZXN0cyBGaWxlU3lzdGVtIHRyZWUgZWxl
bWVudCBvbiByZXNvdXJjZXMgcGFuZWwuPC9wPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148237</attachid>
            <date>2012-06-18 21:01:38 -0700</date>
            <delta_ts>2012-07-02 03:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20120619130137.patch</filename>
            <type>text/plain</type>
            <size>67574</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2MyYmE3ZjU0
NmJmZTI3OGUzMmFkNDg5MzVmYWM3ODFkNTdhN2YxZC4uN2UzMmIzYzM0ZWRhODM0YTVkODJmNTY1
YmYwMmYwYTUxZDU5NDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQyMiw3ICs2NDIyLDkgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkMDZkZGFhYTE0NjJkODlj
YzUxZjlmM2VkNmQ4YmVlNDg5Y2VhZGVjLi5hZjg3N2MwYmY0ZWIwZDE3ZmM2Y2Q0OThhM2Q5ZTY5
NTc1ZTVhYTc1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNzQ4MDYsNiArNzQ4MDYsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3Rl
bVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5j
c3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KaW5kZXggY2YxOThjMGZjYjBhMjRiYTU5MjVmMjhkZDRkN2NiYThiNmQxNmQzMi4uOGEz
YTBhMDg4YjMxOGY4ZmExNmUxMWJiNzMxNTdjOTQ2NDNlOGY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQwOSwxMCArMTQwOSwxOSBAQAogICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwg
ImRlc2NyaXB0aW9uIjogImZpbGVzeXN0ZW06IFVSTCBmb3IgdGhlIGVudHJ5LiIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5LiIgfSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc0RpcmVjdG9yeSIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBkaXJlY3RvcnkuIiB9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgdHlwZSBvZiB0aGUgZW50
cnksIGF2YWlsYWJsZSBmb3IgYSBmaWxlIG9ubHkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlc291cmNlVHlwZSIsICIkcmVmIjogIlBhZ2UuUmVzb3VyY2VUeXBlIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlVHlwZSBvZiB0aGUgZW50cnks
IGF2YWlsYWJsZSBmb3IgYSBmaWxlIG9ubHkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwcmVzZW50cyBhIGJyb3dzZXIgc2lkZSBmaWxl
IG9yIGRpcmVjdG9yeS4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJpZCI6ICJNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0
IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJtb2RpZmljYXRpb25UaW1lIiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAidHlwZSI6ICJudW1iZXIiIH0KICAgICAg
ICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCkBAIC0xNDI2LDIyICsxNDM1
LDcyIEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGV2ZW50cyBm
cm9tIGJhY2tlbmQuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJnZXRGaWxlU3lzdGVtUm9vdCIsCisgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkZW50aWZpZXIgb2YgdGhl
IGNvbW1hbmQuIFRoZSBiYWNrZW5kIHNob3VsZCBwYXNzIGJhY2sgdGhpcyB2YWx1ZSBvbiBjb3Jy
ZXNwb25kaW5nIGdvdEZpbGVTeXN0ZW1Sb290IGV2ZW50LiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJvcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
U2VjdXJpdHkgb3JpZ2luIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4gT25lIG9mIGZyYW1lcyBp
biBjdXJyZW50IHBhZ2UgbmVlZHMgdG8gaGF2ZSB0aGlzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJl
bnVtIjogWyJ0ZW1wb3JhcnkiLCAicGVyc2lzdGVudCJdLCAiZGVzY3JpcHRpb24iOiAiRmlsZVN5
c3RlbSB0eXBlIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4iIH0KKyAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHJvb3QgZGlyZWN0b3J5
IG9mIHRoZSBGaWxlU3lzdGVtIGlmIGV4aXN0cy4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInJlYWREaXJlY3RvcnkiLAogICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0byByZWFkIHRoZSBkaXJlY3RvcnkgY29u
dGVudC4gUmVzdWx0IHNob3VsZCByZXR1cm4gb24gZGlkUmVhZERpcmVjdG9yeSBldmVudCB3aXRo
IHJlcXVlc3QgaWQuIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfQog
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiZ2V0TWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBl
IjogImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5
cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWFkRmlsZSIsCisgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVx
dWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RhcnQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImVuZCIsICJ0eXBlIjogImludGVnZXIiIH0KKyAgICAgICAgICAgICAgICBdCiAg
ICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCiAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ290RmlsZVN5c3RlbVJvb3QiLAorICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJ
ZGVudGlmaWVyIHRoYXQgd2FzIHBhc3NlZCB0byBjb3JyZXNwb25kaW5nIGdldEZpbGVTeXN0ZW1S
b290IGNvbW1hbmQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29k
ZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiMCwgaWYgbm8gZXJyb3IuIE90
aGVyd2lzZSwgZXJyb3JDb2RlIGlzIHNldCB0byBGaWxlRXJyb3I6OkVycm9yQ29kZSB2YWx1ZS4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicm9vdCIsICIkcmVmIjogIkZpbGVT
eXN0ZW0uRW50cnkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMg
cm9vdCBvZiB0aGUgcmVxdWVzdGVkIEZpbGVTeXN0ZW0gaWYgdGhlIGNvbW1hbmQgY29tcGxldGVk
IHN1Y2Nlc3NmdWxseS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9uIGV2ZW50IG9mIGdldEZpbGVTeXN0ZW1Sb290IGNvbW1h
bmQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJkaWRSZWFkRGlyZWN0b3J5IiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRl
Z2VyIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29kZSIsICJkZXNj
cmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRv
IEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIsICJ0eXBlIjogImludGVnZXIiIH0sCiAgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW50cmllcyIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAiJHJlZiI6ICJGaWxlU3lzdGVtLkVudHJ5IiB9LCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiRW50cmllcyBvZiB0aGUgZGlyZWN0b3J5LiIgfQogICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZ290TWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIi
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAi
aW50ZWdlciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIk
cmVmIjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogImRpZFJlYWRGaWxlIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRl
Z2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29kZSIsICJ0eXBl
IjogImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YVVSTCIs
ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0K
ICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IGMwOTQ1NTJm
M2RlNTMzMjNlZTQzY2M1NjQ5ZDMyZGRlYWM2NjlmYzQuLjI5YWZlZjU4NDExMWE0OTY3NDdmNzgw
OTdjNzUzZjMyNzEzY2IyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC0zOSwxMCArMzksMTQgQEAKICNpbmNs
dWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5LmgiCiAjaW5jbHVkZSAiRW50cnlB
cnJheS5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRmlsZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5Lmgi
CiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlci5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNTIsNiArNTYsOSBAQAogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSAiTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTk2
LDExMSArMTAzLDE4MiBAQCB0eXBlZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRl
bmRQcm92aWRlciBGcm9udGVuZFByb3ZpZGVyOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZWFk
RGlyZWN0b3J5VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWREaXJlY3RvcnlUYXNrPiB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZERpcmVjdG9yeVRhc2spOwordGVtcGxhdGU8dHlw
ZW5hbWUgQmFzZUNhbGxiYWNrLCB0eXBlbmFtZSBIYW5kbGVyLCB0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50PgorY2xhc3MgQ2FsbGJhY2tEaXNwYXRjaGVyIDogcHVibGljIEJhc2VD
YWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRh
c2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIs
IGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgIHR5cGVkZWYgUmVzdWx0IChI
YW5kbGVyOjoqSGFuZGxpbmdNZXRob2QpKEFyZ3VtZW50Kik7CisKKyAgICBzdGF0aWMgUmVmUHRy
PENhbGxiYWNrRGlzcGF0Y2hlcjxCYXNlQ2FsbGJhY2ssIEhhbmRsZXIsIFJlc3VsdCwgQXJndW1l
bnQ+ID4gY3JlYXRlKFBhc3NSZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwgSGFuZGxpbmdNZXRob2Qg
aGFuZGxpbmdNZXRob2QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWRE
aXJlY3RvcnlUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2FsbGJhY2tEaXNwYXRjaGVyKGhhbmRsZXIsIGhhbmRsaW5n
TWV0aG9kKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVhZERpcmVjdG9yeVRhc2soKQorICAg
IHZpcnR1YWwgUmVzdWx0IGhhbmRsZUV2ZW50KEFyZ3VtZW50KiBhcmd1bWVudCkgT1ZFUlJJREUK
ICAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7Cisg
ICAgICAgIHJldHVybiAobV9oYW5kbGVyLmdldCgpLT4qbV9oYW5kbGluZ01ldGhvZCkoYXJndW1l
bnQpOwogICAgIH0KIAotICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
cHJpdmF0ZToKKyAgICBDYWxsYmFja0Rpc3BhdGNoZXIoUGFzc1JlZlB0cjxIYW5kbGVyPiBoYW5k
bGVyLCBIYW5kbGluZ01ldGhvZCBoYW5kbGluZ01ldGhvZCkKKyAgICAgICAgOiBtX2hhbmRsZXIo
aGFuZGxlcikKKyAgICAgICAgLCBtX2hhbmRsaW5nTWV0aG9kKGhhbmRsaW5nTWV0aG9kKSB7IH0K
KworICAgIFJlZlB0cjxIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgSGFuZGxpbmdNZXRob2QgbV9o
YW5kbGluZ01ldGhvZDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+CitjbGFzcyBF
dmVudERpc3BhdGNoZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiB2b2lkIChIYW5kbGVyOjoqSGFuZGxpbmdNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50RGlzcGF0Y2hlcj4gY3Jl
YXRlKFBhc3NSZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwgSGFuZGxpbmdNZXRob2QgaGFuZGxpbmdN
ZXRob2QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV2ZW50RGlzcGF0Y2hl
cihoYW5kbGVyLCBoYW5kbGluZ01ldGhvZCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBFdmVudCogZXZlbnQpCisgICAgeworICAgICAgICAobV9oYW5kbGVyLmdldCgpLT4qbV9oYW5k
bGluZ01ldGhvZCkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnQpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGV2ZW50TGlzdGVu
ZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdGhpcyA9PSAmZXZlbnRMaXN0ZW5l
cjsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgRXJyb3JDYWxsYmFjazsKLSAgICBjbGFz
cyBHZXRFbnRyeUNhbGxiYWNrOwotICAgIGNsYXNzIFJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJh
Y2s7CisgICAgRXZlbnREaXNwYXRjaGVyKFBhc3NSZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwgSGFu
ZGxpbmdNZXRob2QgaGFuZGxpbmdNZXRob2QpCisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVu
dExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgLCBtX2hhbmRsZXIoaGFu
ZGxlcikKKyAgICAgICAgLCBtX2hhbmRsaW5nTWV0aG9kKGhhbmRsaW5nTWV0aG9kKSB7IH0KKwor
ICAgIFJlZlB0cjxIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgSGFuZGxpbmdNZXRob2QgbV9oYW5k
bGluZ01ldGhvZDsKK307CiAKLSAgICB2b2lkIGdvdEVudHJ5KEVudHJ5Kik7Ci0gICAgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5Kik7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IFR5cGVQYXJhbSB7IH07CiAKLSAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6
OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkZpbGVT
eXN0ZW06OkVudHJ5PiA+IGVudHJpZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ss
IHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnQ+CitQ
YXNzUmVmUHRyPEJhc2VDYWxsYmFjaz4gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJh
bTxCYXNlQ2FsbGJhY2s+LCBIYW5kbGVyKiBoYW5kbGVyLCBSZXN1bHQgKEhhbmRsZXI6OipoYW5k
bGluZ01ldGhvZCkoQXJndW1lbnQqKSkKK3sKKyAgICByZXR1cm4gQ2FsbGJhY2tEaXNwYXRjaGVy
PEJhc2VDYWxsYmFjaywgSGFuZGxlciwgUmVzdWx0LCBBcmd1bWVudD46OmNyZWF0ZShoYW5kbGVy
LCBoYW5kbGluZ01ldGhvZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+CitQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcihIYW5kbGVyKiBoYW5k
bGVyLCB2b2lkIChIYW5kbGVyOjoqaGFuZGxpbmdNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCopKQoreworICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI8SGFuZGxlcj46OmNy
ZWF0ZShoYW5kbGVyLCBoYW5kbGluZ01ldGhvZCk7Cit9CisKK2NsYXNzIEdldEZpbGVTeXN0ZW1S
b290VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEdldEZpbGVTeXN0ZW1Sb290VGFzayk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJvb3RUYXNrPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdl
dEZpbGVTeXN0ZW1Sb290VGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHR5cGUpKTsK
KyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJp
dmF0ZToKKyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpOworICAgIGJvb2wg
Z290RW50cnkoRW50cnkqKTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJy
b3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50
cnk+IGVudHJ5KQogICAgIHsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1f
ZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kaWRSZWFkRGlyZWN0b3J5KG1fcmVx
dWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIGVudHJpZXMpOworICAgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmdvdEZpbGVTeXN0ZW1Sb290KG1fcmVxdWVz
dElkLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIGVudHJ5KTsKICAgICAgICAgbV9mcm9u
dGVuZFByb3ZpZGVyID0gMDsKICAgICB9CiAKLSAgICBSZWFkRGlyZWN0b3J5VGFzayhQYXNzUmVm
UHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgdXJsKQorICAgIEdldEZpbGVTeXN0ZW1Sb290VGFzayhQYXNzUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRl
cikKICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCi0gICAgICAgICwgbV91cmwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpIHsgfQotCi0gICAgdm9pZCByZWFkRGlyZWN0b3J5RW50cmllcygp
OworICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KIAogICAgIFJlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIEtVUkwg
bV91cmw7Ci0gICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4g
PiBtX2VudHJpZXM7Ci0gICAgUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gbV9kaXJlY3RvcnlSZWFk
ZXI7CisgICAgU3RyaW5nIG1fdHlwZTsKIH07CiAKLWNsYXNzIFJlYWREaXJlY3RvcnlUYXNrOjpF
cnJvckNhbGxiYWNrIDogcHVibGljIFdlYkNvcmU6OkVycm9yQ2FsbGJhY2sgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEVycm9yQ2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNrKHJlYWRE
aXJlY3RvcnlUYXNrKSk7Ci0gICAgfQorYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEhp
dEVycm9yKEZpbGVFcnJvciogZXJyb3IpCit7CisgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2Rl
KCksIDApOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2
ZW50KEZpbGVFcnJvciogZXJyb3IpIE9WRVJSSURFCi0gICAgewotICAgICAgICBpZiAobV9yZWFk
RGlyZWN0b3J5VGFzaykKLSAgICAgICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPnJlcG9ydFJl
c3VsdChlcnJvci0+Y29kZSgpLCAwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cit2b2lkIEdldEZp
bGVTeXN0ZW1Sb290VGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKK3sKKyAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOworICAgIGlmIChtX3R5
cGUgPT0gRE9NRmlsZVN5c3RlbUJhc2U6OnBlcnNpc3RlbnRQYXRoUHJlZml4KQorICAgICAgICB0
eXBlID0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OworICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBE
T01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeCkKKyAgICAgICAgdHlwZSA9IEZp
bGVTeXN0ZW1UeXBlVGVtcG9yYXJ5OworICAgIGVsc2UgeworICAgICAgICByZXBvcnRSZXN1bHQo
RmlsZUVycm9yOjpTWU5UQVhfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotcHJp
dmF0ZToKLSAgICBFcnJvckNhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJl
YWREaXJlY3RvcnlUYXNrKQotICAgICAgICA6IG1fcmVhZERpcmVjdG9yeVRhc2socmVhZERpcmVj
dG9yeVRhc2spIHsgfQotICAgIFJlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gbV9yZWFkRGlyZWN0
b3J5VGFzazsKLX07CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9
IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RW50cnlDYWxsYmFjaz4oKSwgdGhp
cywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6Z290RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJh
bTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRIaXRF
cnJvcik7CisgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFj
a3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCAiLyIpOwogCi1jbGFzcyBSZWFk
RGlyZWN0b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBFbnRyeUNhbGxiYWNrIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNrKTsKKyAgICBMb2NhbEZp
bGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKK30KKworYm9v
bCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK3sKKyAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6
OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKS5zZXRVcmwoZW50cnktPnRvVVJMKCkpLnNldE5h
bWUoIi8iKS5zZXRJc0RpcmVjdG9yeSh0cnVlKSk7CisgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19j
YXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworY2xhc3MgUmVhZERpcmVjdG9yeVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkRGly
ZWN0b3J5VGFzaz4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWREaXJlY3RvcnlUYXNr
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzazo6R2V0
RW50cnlDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWRE
aXJlY3RvcnlUYXNrKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVhZERpcmVjdG9yeVRhc2s6OkdldEVudHJ5Q2FsbGJhY2socmVhZERpcmVjdG9y
eVRhc2spKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5VGFzayhm
cm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVFdmVudChFbnRyeSogZmlsZVN5c3RlbSkgT1ZFUlJJREUKKyAgICB2aXJ0dWFs
IH5SZWFkRGlyZWN0b3J5VGFzaygpCiAgICAgewotICAgICAgICBtX3JlYWREaXJlY3RvcnlUYXNr
LT5nb3RFbnRyeShmaWxlU3lzdGVtKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgfQogCi1wcml2YXRlOgot
ICAgIEdldEVudHJ5Q2FsbGJhY2soUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERp
cmVjdG9yeVRhc2spCi0gICAgICAgIDogbV9yZWFkRGlyZWN0b3J5VGFzayhyZWFkRGlyZWN0b3J5
VGFzaykgeyB9Ci0gICAgUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiBtX3JlYWREaXJlY3RvcnlU
YXNrOwotfTsKKyAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotY2xh
c3MgUmVhZERpcmVjdG9yeVRhc2s6OlJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJhY2sgOiBwdWJs
aWMgRW50cmllc0NhbGxiYWNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWFkRGlyZWN0
b3J5RW50cmllc0NhbGxiYWNrKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFk
RGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjaz4gY3JlYXRlKFBhc3NS
ZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNrKQorcHJpdmF0ZToKKyAg
ICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5RW50cmllc0Nh
bGxiYWNrKHJlYWREaXJlY3RvcnlUYXNrKSk7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+
Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCBi
b29sIGhhbmRsZUV2ZW50KEVudHJ5QXJyYXkqIGVudHJpZXMpIE9WRVJSSURFCisgICAgYm9vbCBn
b3RFbnRyeShFbnRyeSopOworICAgIGJvb2wgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlB
cnJheSopOworCisgICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJy
b3JDb2RlLCBQYXNzUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4g
PiBlbnRyaWVzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGVudHJpZXMpOwotICAgICAgICBtX3Jl
YWREaXJlY3RvcnlUYXNrLT5kaWRSZWFkRGlyZWN0b3J5RW50cmllcyhlbnRyaWVzKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8ICFtX2Zy
b250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGlkUmVhZERpcmVjdG9yeShtX3JlcXVl
c3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBlbnRyaWVzKTsKKyAgICAgICAgbV9m
cm9udGVuZFByb3ZpZGVyID0gMDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgUmVhZERpcmVjdG9y
eUVudHJpZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0
b3J5VGFzaykKLSAgICAgICAgOiBtX3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNr
KSB7IH0KLSAgICBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7
CisgICAgUmVhZERpcmVjdG9yeVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9u
dGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAg
OiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVl
c3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpIHsg
fQorCisgICAgdm9pZCByZWFkRGlyZWN0b3J5RW50cmllcygpOworCisgICAgUmVmUHRyPEZyb250
ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7Cisg
ICAgS1VSTCBtX3VybDsKKyAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06
OkVudHJ5PiA+IG1fZW50cmllczsKKyAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBtX2RpcmVj
dG9yeVJlYWRlcjsKIH07CiAKIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC0yMTQsMjMgKzI5Miwy
NCBAQCB2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IFJlYWREaXJlY3RvcnlUYXNr
OjpHZXRFbnRyeUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2sgPSBSZWFkRGlyZWN0b3J5VGFzazo6RXJyb3JDYWxsYmFjazo6Y3Jl
YXRlKHRoaXMpOworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBj
cmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVudHJ5Q2FsbGJhY2s+KCksIHRoaXMs
ICZSZWFkRGlyZWN0b3J5VGFzazo6Z290RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFcnJv
ckNhbGxiYWNrPigpLCB0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEhpdEVycm9yKTsKICAg
ICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29s
dmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUmVhZERp
cmVjdG9yeVRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgUmVhZERpcmVjdG9yeVRh
c2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9y
eSgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJS
LCAwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAg
ICBtX2RpcmVjdG9yeVJlYWRlciA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkp
LT5jcmVhdGVSZWFkZXIoKTsKICAgICBtX2VudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6Rmls
ZVN5c3RlbTo6RW50cnk+OjpjcmVhdGUoKTsKICAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpyZWFkRGlyZWN0
b3J5RW50cmllcygpCkBAIC0yNDAsMTYgKzMxOSwxNiBAQCB2b2lkIFJlYWREaXJlY3RvcnlUYXNr
OjpyZWFkRGlyZWN0b3J5RW50cmllcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBSZWFkRGlyZWN0b3J5VGFz
azo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gUmVhZERpcmVjdG9yeVRhc2s6OkVycm9y
Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVudHJpZXND
YWxsYmFjaz4oKSwgdGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50
cmllcyk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVD
YWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFk
RGlyZWN0b3J5VGFzazo6ZGlkSGl0RXJyb3IpOwogICAgIG1fZGlyZWN0b3J5UmVhZGVyLT5yZWFk
RW50cmllcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogfQogCi12b2lkIFJlYWRE
aXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVz
KQorYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlB
cnJheSogZW50cmllcykKIHsKICAgICBpZiAoIWVudHJpZXMtPmxlbmd0aCgpKSB7CiAgICAgICAg
IHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oMCksIG1fZW50
cmllcyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpIHsKQEAg
LTI3Niw2ICszNTUsMTk5IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3Rv
cnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJpZXMpCiAgICAgICAgIG1fZW50cmllcy0+YWRkSXRl
bShlbnRyeUZvckZyb250ZW5kKTsKICAgICB9CiAgICAgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworY2xhc3MgR2V0TWV0YWRhdGFUYXNrIDogcHVibGljIFJl
ZkNvdW50ZWQ8R2V0TWV0YWRhdGFUYXNrPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0
TWV0YWRhdGFUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0
YVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlk
ZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRhZGF0YVRhc2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCB1cmwpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5HZXRNZXRhZGF0YVRhc2soKQorICAg
IHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICB9
CisKKyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpCisgICAgeworICAgICAg
ICByZXBvcnRSZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIGJv
b2wgZ290RW50cnkoRW50cnkqKTsKKyAgICBib29sIGdvdE1ldGFkYXRhKE1ldGFkYXRhKik7CisK
KyAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhPiBtZXRhZGF0YSkKKyAg
ICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8ICFtX2Zyb250ZW5kUHJvdmlk
ZXItPmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKS0+Z290TWV0YWRhdGEobV9yZXF1ZXN0SWQsIHN0YXRpY19jYXN0
PGludD4oZXJyb3JDb2RlKSwgbWV0YWRhdGEpOworICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXIg
PSAwOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZXRNZXRhZGF0YVRhc2soUGFzc1JlZlB0cjxG
cm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRl
cikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV91cmwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpIHsgfQorCisgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1f
ZnJvbnRlbmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgS1VSTCBtX3VybDsK
KyAgICBTdHJpbmcgbV9wYXRoOworfTsKKwordm9pZCBHZXRNZXRhZGF0YVRhc2s6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgRmls
ZVN5c3RlbVR5cGUgdHlwZTsKKyAgICBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVt
VVJMKG1fdXJsLCB0eXBlLCBtX3BhdGgpOworCisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RW50cnlD
YWxsYmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6Z290RW50cnkpOworICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVy
KFR5cGVQYXJhbTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRI
aXRFcnJvcik7CisKKyAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNh
bGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIG1fcGF0aCk7CisgICAg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Cit9
CisKK2Jvb2wgR2V0TWV0YWRhdGFUYXNrOjpnb3RFbnRyeShFbnRyeSogZW50cnkpCit7CisgICAg
aWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAg
ICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08TWV0YWRhdGFDYWxs
YmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6Z290TWV0YWRhdGEpOworICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVy
KFR5cGVQYXJhbTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRI
aXRFcnJvcik7CisgICAgZW50cnktPmdldE1ldGFkYXRhKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR2V0TWV0YWRhdGFUYXNrOjpn
b3RNZXRhZGF0YShNZXRhZGF0YSogbWV0YWRhdGEpCit7CisgICAgdXNpbmcgVHlwZUJ1aWxkZXI6
OkZpbGVTeXN0ZW06Ok1ldGFkYXRhOworICAgIFJlZlB0cjxNZXRhZGF0YT4gcmVzdWx0ID0gTWV0
YWRhdGE6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0
YS0+bW9kaWZpY2F0aW9uVGltZSgpKQorICAgICAgICAgICAgLnNldFNpemUobWV0YWRhdGEtPnNp
emUoKSk7CisgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2Rl
PigwKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY2xhc3MgUmVhZEZpbGVUYXNr
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZEZpbGVUYXNrPiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVhZEZpbGVUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFk
RmlsZVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJv
dmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnQsIGludCBl
bmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWRGaWxlVGFzayhmcm9u
dGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCwgc3RhcnQsIGVuZCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgflJlYWRGaWxlVGFzaygpCisgICAgeworICAgICAgICByZXBvcnRSZXN1bHQoRmls
ZUVycm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVy
cm9yKiBlcnJvcikKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAw
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBkaWRIaXRFcnJvckV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopCisgICAgeworICAgICAgICBpZiAo
bV9yZWFkZXIpCisgICAgICAgICAgICByZXBvcnRSZXN1bHQobV9yZWFkZXItPmVycm9yKCktPmNv
ZGUoKSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJy
b3I6OklOVkFMSURfU1RBVEVfRVJSLCAwKTsKKyAgICB9CisKKyAgICBib29sIGdvdEVudHJ5KEVu
dHJ5Kik7CisgICAgYm9vbCBnb3RGaWxlKEZpbGUqKTsKKyAgICB2b2lkIGRpZFJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CisKKyAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxl
RXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyogZGF0YVVSTCkKKyAgICB7
CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIt
PmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZnJvbnRlbmRQcm92
aWRlci0+ZnJvbnRlbmQoKS0+ZGlkUmVhZEZpbGUobV9yZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGlu
dD4oZXJyb3JDb2RlKSwgZGF0YVVSTCk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7
CisgICAgfQorCisgICAgUmVhZEZpbGVUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4g
ZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBz
dGFydCwgaW50IGVuZCkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92
aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV91cmwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpCisgICAgICAgICwgbV9zdGFydChzdGFydCkKKyAgICAgICAg
LCBtX2VuZChlbmQpCisgICAgICAgICwgbV9jdXJyZW50KHN0YXJ0KSB7IH0KKworICAgIFJlZlB0
cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgaW50IG1fcmVxdWVz
dElkOworICAgIEtVUkwgbV91cmw7CisgICAgaW50IG1fc3RhcnQ7CisgICAgaW50IG1fZW5kOwor
ICAgIGludCBtX2N1cnJlbnQ7CisKKyAgICBSZWZQdHI8RmlsZVJlYWRlcj4gbV9yZWFkZXI7Cit9
OworCit2b2lkIFJlYWRGaWxlVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CisKKyAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOworICAgIFN0cmluZyBwYXRoOworICAgIGlm
ICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlwZSwgcGF0
aCkpIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6U1lOVEFYX0VSUiwgMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFbnRyeUNhbGxi
YWNrPigpLCB0aGlzLCAmUmVhZEZpbGVUYXNrOjpnb3RFbnRyeSk7CisgICAgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBh
cmFtPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEhpdEVycm9yKTsK
KyAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJl
c29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOworCisgICAgTG9jYWxGaWxlU3lz
dGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7fQorCitib29sIFJlYWRG
aWxlVGFzazo6Z290RW50cnkoRW50cnkqIGVudHJ5KQoreworICAgIGlmIChlbnRyeS0+aXNEaXJl
Y3RvcnkoKSkgeworICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpUWVBFX01JU01BVENI
X0VSUiwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghZW50cnkt
PmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIHJlcG9y
dFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IGNyZWF0
ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RmlsZUNhbGxiYWNrPigpLCB0aGlzLCAmUmVh
ZEZpbGVUYXNrOjpnb3RGaWxlKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RXJyb3JDYWxsYmFjaz4o
KSwgdGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIHN0YXRpY19jYXN0PEZp
bGVFbnRyeSo+KGVudHJ5KS0+ZmlsZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwor
CisgICAgbV9yZWFkZXIgPSBGaWxlUmVhZGVyOjpjcmVhdGUoZW50cnktPmZpbGVzeXN0ZW0oKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBS
ZWFkRmlsZVRhc2s6OmdvdEZpbGUoRmlsZSogZmlsZSkKK3sKKyAgICBSZWZQdHI8QmxvYj4gYmxv
YiA9IGZpbGUtPnNsaWNlKG1fc3RhcnQsIG1fZW5kKTsKKyAgICBtX3JlYWRlci0+c2V0T25sb2Fk
KGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcih0aGlzLCAmUmVhZEZpbGVUYXNrOjpkaWRSZWFkKSk7Cisg
ICAgbV9yZWFkZXItPnNldE9uZXJyb3IoY3JlYXRlRXZlbnREaXNwYXRjaGVyKHRoaXMsICZSZWFk
RmlsZVRhc2s6OmRpZEhpdEVycm9yRXZlbnQpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIG1fcmVhZGVyLT5yZWFkQXNEYXRhVVJMKGJsb2IuZ2V0KCksIGVjKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBSZWFkRmlsZVRhc2s6OmRpZFJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50KikKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV9yZWFkZXItPnN0cmlu
Z1Jlc3VsdCgpOworICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9y
Q29kZT4oMCksICZyZXN1bHQpOwogfQogCiB9CkBAIC0zMDksNiArNTgxLDE4IEBAIHZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRl
LT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVk
LCBtX2VuYWJsZWQpOwogfQogCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0Rmls
ZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2Zy
b250ZW5kUHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpKTsKKworICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpKSkKKyAgICAgICAg
R2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0
SWQsIHR5cGUpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisgICAg
ICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+Z290RmlsZVN5c3RlbVJvb3QocmVx
dWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5n
KiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFtX2VuYWJs
ZWQgfHwgIW1fZnJvbnRlbmRQcm92aWRlcikKQEAgLTMyMSw2ICs2MDUsMzAgQEAgdm9pZCBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWREaXJlY3RvcnkoRXJyb3JTdHJpbmcqLCBpbnQgcmVx
dWVzdElkLCBjb25zdAogICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRp
ZFJlYWREaXJlY3RvcnkocmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJP
UlRfRVJSKSwgMCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpnZXRNZXRh
ZGF0YShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKworICAgIGlm
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
Zyh1cmwpLmdldCgpKSkKKyAgICAgICAgR2V0TWV0YWRhdGFUYXNrOjpjcmVhdGUobV9mcm9udGVu
ZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5nb3RN
ZXRhZGF0YShyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIp
LCAwKTsKK30KKwordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWRGaWxlKEVycm9y
U3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGFydCwgaW50
IGVuZCkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7
CisKKyAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCisgICAgICAgIFJlYWRGaWxlVGFzazo6Y3JlYXRlKG1f
ZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwsIHN0YXJ0LCBlbmQpLT5zdGFydChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKS0+ZGlkUmVhZEZpbGUocmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZp
bGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNT
RVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCAwODNhYTYzNWI1MmUxOWU5NmRkOTQxYTA4Mzg3ZmQ2
ZTNmYjVkZDZkLi5kMmI1ODAxY2ZlZDZmMmJjYjBjNDY5NDAwNTMyMjYzODNhZDc2MzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oCkBAIC01OSw3ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RmlsZVN5c3RlbVJvb3QoRXJy
b3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShFcnJv
clN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIHVybCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlKEVy
cm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGFydCwg
aW50IGVuZCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUt
ZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5k
LnB5CmluZGV4IGMzMjgxNWJlN2JhNWEwMDhlMzU3M2IyYTJmMTYwZDFlOGI3ZjUxNzEuLmNmM2Jl
MzdmYzYwYjc4Zjg5YTc5NTcxNzhlYWUwNWYxZDViY2MzYzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTIxMSw2ICsyMTEsOCBAQCBtb2R1
bGVzID0gWwogICAgICAgICAgICAgIkRhdGFiYXNlUXVlcnlWaWV3LmpzIiwKICAgICAgICAgICAg
ICJEYXRhYmFzZVRhYmxlVmlldy5qcyIsCiAgICAgICAgICAgICAiRE9NU3RvcmFnZUl0ZW1zVmll
dy5qcyIsCisgICAgICAgICAgICAiRmlsZUNvbnRlbnRWaWV3LmpzIiwKKyAgICAgICAgICAgICJG
aWxlU3lzdGVtVmlldy5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERCVmlld3MuanMiLAogICAg
ICAgICAgICAgIlJlc291cmNlc1BhbmVsLmpzIiwKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODViNGNiZDMxM2U2OTEyOWYwZjUwYjQ1YzZlMWJjNmU1YTFlYzRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZp
ZXcuanMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5WaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkZpbGV9IGZpbGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50VmlldyA9IGZ1bmN0
aW9uKGZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKKworICAgIHRo
aXMuX2lubmVyVmlldyA9IG51bGw7CisgICAgdGhpcy5fZmlsZSA9IGZpbGU7Cit9CisKK1dlYklu
c3BlY3Rvci5GaWxlQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIHdhc1Nob3duOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9maWxlLmdldE1ldGFkYXRhKHRoaXMuX2dvdE1l
dGFkYXRhLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfZ290TWV0YWRhdGE6IGZ1bmN0aW9u
KGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgeworICAgICAgICBpZiAoZXJyb3JDb2RlICE9PSAw
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9maWxlLnJlc291cmNl
VHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3Nob3dWaWV3KG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3KCJEb2N1bWVudFZp
ZXciKSk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZmlsZS5yZXNvdXJjZVR5cGUgPT09IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQpIHsKKyAgICAgICAgfSBlbHNlIGlm
ICh0aGlzLl9maWxlLnJlc291cmNlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
SW1hZ2UpIHsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9maWxlLnJlc291cmNlVHlwZSA9PT0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0KSB7CisgICAgICAgIH0gZWxzZSBpZiAo
dGhpcy5fZmlsZS5yZXNvdXJjZVR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkZv
bnQpIHsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9maWxlLnJlc291cmNlVHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuT3RoZXIpIHsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm47CisgICAgICAgIHN3aXRjaCAoZmlsZS5yZXNvdXJjZVR5cGUpIHsKKyAgICAgICAgY2FzZSAi
dGV4dCI6CisgICAgICAgICAgICB0aGlzLl9zaG93VmlldyhuZXcgV2ViSW5zcGVjdG9yLkVtcHR5
VmlldygiVGV4dCBWaWV3IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImlt
YWdlIjoKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWaWV3KG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlW
aWV3KCJJbWFnZSBWaWV3IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIm1l
ZGlhIjoKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWaWV3KG5ldyBXZWJJbnNwZWN0b3IuRW1wdHlW
aWV3KCJNZWRpYSBWaWV3IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImJp
bmFyeSI6CisgICAgICAgICAgICB0aGlzLl9zaG93VmlldyhuZXcgV2ViSW5zcGVjdG9yLkVtcHR5
VmlldygiQmluYXJ5IFZpZXciKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBfc2hvd1ZpZXc6IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5faW5uZXJWaWV3KQorICAgICAgICAgICAgdGhpcy5faW5uZXJWaWV3LmRldGFjaCgpOwor
ICAgICAgICB0aGlzLl9pbm5lclZpZXcgPSB2aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5l
bGVtZW50KTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworV2ViSW5zcGVj
dG9yLkZpbGVDb250ZW50Vmlldy5Db250ZW50ID0gZnVuY3Rpb24oZmlsZSwgbWV0YWRhdGEpCit7
fQorCitXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnR2aWV3LkNvbnRlbnQucHJvdG90eXBlID0gewor
ICAgIGNvbnRlbnRVUkw6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZmlsZS51cmw7IH0sCisg
ICAgY29udGVudFR5cGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZmlsZS5yZXNvdXJjZVR5
cGU7IH0sCisgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgcmVhZEZpbGUoMCwgbWV0YWRhdGEuc2l6ZSwgZGlkUmVhZCk7CisgICAgICAgIGZ1bmN0
aW9uIGRpZFJlYWQoZXJyb3JDb2RlLCBkYXRhVVJMKQorICAgICAgICB7CisgICAgICAgICAgICBj
YWxsYmFjayhkYXRhVVJMLCB0cnVlLCB0aGlzLl9maWxlLm1pbWVUeXBlKTsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJh
Y2suYmluZChudWxsLCBbXSksIDApOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwppbmRleCAzMGE1YTlh
Mzc4MWRlZDZiMGUwMGMwZTg1NGNkZjU3N2NlYTU1ODU4Li5lY2Q5Y2IxZTA1MThmMGQ5MzI1MzMy
Y2FmOWM3ODU4MDM5MzdkYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMzEsNiArMzEsNyBAQAogLyoqCiAg
KiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQGlt
cGxlbWVudHMge0ZpbGVTeXN0ZW1BZ2VudC5EaXNwYXRjaGVyfQogICovCiBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQogewpAQCAtMTQ3LDEyICsxNDgsOCBAQCBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSA9IHt9OwogCiAgICAgICAgIHZhciB0eXBlcyA9IFsi
cGVyc2lzdGVudCIsICJ0ZW1wb3JhcnkiXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
eXBlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgLy8gRklYTUUoODg2MDIpOiBDaGVjayBp
ZiB0aGUgZmlsZXN5c3RlbSBpcyBpbml0aWFsaXplZCwgYW5kIHNob3cgaXQgb25seSBpZiBpdCB3
YXMuCi0gICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW0odGhpcywgb3JpZ2luLCB0eXBlc1tpXSk7Ci0gICAgICAgICAg
ICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVzW2ldXSA9IGZpbGVTeXN0
ZW07Ci0gICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5nZXRGaWxlU3lzdGVtUm9vdChvcmlnaW4sIHR5
cGVzW2ldLCB0aGlzLl9nb3RGaWxlU3lzdGVtLmJpbmQodGhpcywgb3JpZ2luLCB0eXBlc1tpXSwg
dGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkpOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTE4NiwxMyArMTgzLDU5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90
eXBlID0gewogCiAgICAgcmVmcmVzaEZpbGVTeXN0ZW1MaXN0OiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBmb3IgKHZhciBvcmlnaW4gaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4pCi0g
ICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29y
aWdpbl0pCi0gICAgICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQodGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXSk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKSB7CisgICAgICAgICAgICB0aGlzLl9kZXRh
Y2hGcmFtZVJlY3Vyc2l2ZWx5KFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJh
bWUpOworICAgICAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShXZWJJbnNwZWN0
b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHR5cGUKKyAgICAgKiBAcGFyYW0ge09iamVjdC48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GaWxlU3lzdGVtPn0gc3RvcmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2Rl
CisgICAgICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnk9fSBiYWNrZW5kUm9vdEVudHJ5
CisgICAgICovCisgICAgX2dvdEZpbGVTeXN0ZW06IGZ1bmN0aW9uKG9yaWdpbiwgdHlwZSwgc3Rv
cmUsIGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICB7CisgICAgICAgIGlmIChlcnJv
ckNvZGUgPT09IDAgJiYgYmFja2VuZFJvb3RFbnRyeSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dID09PSBzdG9yZSkgeworICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKHRoaXMsIG9yaWdpbiwg
dHlwZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgICAgICAgICBzdG9yZVt0eXBlXSA9IGZpbGVT
eXN0ZW07CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24oZGlyZWN0b3J5
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5yZWFkRGlyZWN0
b3J5KGRpcmVjdG9yeS51cmwsIHRoaXMuX2RpZFJlYWREaXJlY3RvcnkuYmluZCh0aGlzLCBkaXJl
Y3RvcnksIGNhbGxiYWNrKSk7CisgICAgfSwKKworICAgIF9kaWRSZWFkRGlyZWN0b3J5OiBmdW5j
dGlvbihwYXJlbnREaXJlY3RvcnksIGNhbGxiYWNrLCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVz
KQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCkgeworICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3JDb2RlLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBlbnRyaWVzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YmFja2VuZEVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChiYWNrZW5kRW50
cmllc1tpXS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5KHRoaXMsIHBhcmVudERpcmVjdG9y
eS5maWxlU3lzdGVtLCBiYWNrZW5kRW50cmllc1tpXSkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGVudHJpZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlKHRoaXMsIHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtLCBiYWNrZW5kRW50cmllc1tp
XSkpOworICAgICAgICB9CisKKyAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBlbnRyaWVzKTsK
KyAgICB9LAorCisgICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uKGVudHJ5LCBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5nZXRNZXRhZGF0YShlbnRyeS51cmwsIGNh
bGxiYWNrKTsKKyAgICB9LAogCi0gICAgICAgIGZvciAodmFyIG9yaWdpbiBpbiB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbikKLSAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkKLSAgICAgICAgICAgICAgICB0aGlzLl9maWxlU3lz
dGVtQWRkZWQodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXSk7CisgICAg
cmVhZEZpbGU6IGZ1bmN0aW9uKGZpbGUsIHN0YXJ0LCBlbmQsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlYWRGaWxlKGZpbGUudXJsLCBzdGFydCwgZW5kLCBj
YWxsYmFjayk7CiAgICAgfQogfQogCkBAIC0yMDgsMTEgKzI1MSwxNCBAQCBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxl
U3lzdGVtTW9kZWwKICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5n
fSB0eXBlCisgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZFJvb3RFbnRy
eQogICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0gPSBmdW5jdGlv
bihmaWxlU3lzdGVtTW9kZWwsIG9yaWdpbiwgdHlwZSkKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRmlsZVN5c3RlbSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgb3JpZ2luLCB0eXBl
LCBiYWNrZW5kUm9vdEVudHJ5KQogewogICAgIHRoaXMub3JpZ2luID0gb3JpZ2luOwogICAgIHRo
aXMudHlwZSA9IHR5cGU7CisKKyAgICB0aGlzLnJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3RlbU1vZGVsLCB0aGlzLCBiYWNrZW5kUm9vdEVu
dHJ5KTsKIH0KIAogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3Rv
dHlwZSA9IHsKQEAgLTIyNCwxMCArMjcwLDExNiBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkZpbGVTeXN0ZW0ucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVtTW9kZWwKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lz
dGVtCisgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZEVudHJ5CisgKi8K
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVt
TW9kZWwsIGZpbGVTeXN0ZW0sIGJhY2tlbmRFbnRyeSkKK3sKKyAgICB0aGlzLl9maWxlU3lzdGVt
TW9kZWwgPSBmaWxlU3lzdGVtTW9kZWw7CisgICAgdGhpcy5fZmlsZVN5c3RlbSA9IGZpbGVTeXN0
ZW07CisKKyAgICB0aGlzLl91cmwgPSBiYWNrZW5kRW50cnkudXJsOworICAgIHRoaXMuX25hbWUg
PSBiYWNrZW5kRW50cnkubmFtZTsKKyAgICB0aGlzLl9pc0RpcmVjdG9yeSA9IGJhY2tlbmRFbnRy
eS5pc0RpcmVjdG9yeTsKK30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRW50cnl9IHgKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5FbnRyeX0geQorICogQHJldHVybiB7bnVtYmVyfQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUgPSBmdW5jdGlvbih4LCB5KQoreworICAgIGlmICh4Lmlz
RGlyZWN0b3J5KSB7CisgICAgICAgIGlmICgheS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoeS5pc0RpcmVjdG9yeSkKKyAgICAg
ICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICh4Lm5hbWUgPCB5Lm5hbWUpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICBpZiAoeC5uYW1lID4geS5uYW1lKQorICAgICAgICByZXR1cm4g
MTsKKyAgICByZXR1cm4gMDsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRy
eS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGZpbGVTeXN0ZW1Nb2RlbCgpIHsgcmV0dXJuIHRoaXMu
X2ZpbGVTeXN0ZW1Nb2RlbDsgfSwKKyAgICBnZXQgZmlsZVN5c3RlbSgpIHsgcmV0dXJuIHRoaXMu
X2ZpbGVTeXN0ZW07IH0sCisKKyAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9LAor
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfSwKKyAgICBnZXQgaXNEaXJlY3Rv
cnkoKSB7IHJldHVybiB0aGlzLl9pc0RpcmVjdG9yeTsgfSwKKworICAgIGdldE1ldGFkYXRhOiBm
dW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsLmdl
dE1ldGFkYXRhKHRoaXMsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5
c3RlbQorICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnl9IGJhY2tlbmRFbnRyeQorICov
CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSA9IGZ1bmN0aW9uKGZpbGVT
eXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KQoreworICAgIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY2FsbCh0aGlzLCBmaWxlU3lzdGVtTW9kZWwsIGZpbGVT
eXN0ZW0sIGJhY2tlbmRFbnRyeSk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RGlyZWN0b3J5LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9
IGNhbGxiYWNrCisgICAgICovCisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24oY2FsbGJhY2sp
CisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZWFkRGlyZWN0b3J5KHRoaXMs
IGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGly
ZWN0b3J5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fQorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgKiBAcGFyYW0ge0Zp
bGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZEVudHJ5CisgKi8KK1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwg
YmFja2VuZEVudHJ5KQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnku
Y2FsbCh0aGlzLCBmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIGJhY2tlbmRFbnRyeSk7CisK
KyAgICB0aGlzLl9taW1lVHlwZSA9IGJhY2tlbmRFbnRyeS5taW1lVHlwZTsKKyAgICB0aGlzLl9y
ZXNvdXJjZVR5cGUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlc1tiYWNrZW5kRW50cnkucmVz
b3VyY2VUeXBlXTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3Rv
dHlwZSA9IHsKKyAgICBnZXQgbWltZVR5cGUoKSB7IHJldHVybiB0aGlzLl9taW1lVHlwZTsgfSwK
KyAgICBnZXQgcmVzb3VyY2VUeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VUeXBlOyB9LAor
CisgICAgcmVhZEZpbGU6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgdGhpcy5maWxlU3lzdGVtTW9kZWwucmVhZEZpbGUodGhpcywgc3RhcnQsIGVuZCwgY2Fs
bGJhY2spOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnBy
b3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqLwogV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKKyAgICB0aGlzLl9wZW5kaW5nR2V0
RmlsZVN5c3RlbVJvb3RSZXF1ZXN0cyA9IHt9OwogICAgIHRoaXMuX3BlbmRpbmdSZWFkRGlyZWN0
b3J5UmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9wZW5kaW5nR2V0TWV0YWRhdGFSZXF1ZXN0cyA9
IHt9OworICAgIHRoaXMuX3BlbmRpbmdSZWFkRmlsZVJlcXVlc3RzID0ge307CiAKICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3RlbURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKSk7CiAgICAgRmlsZVN5c3RlbUFnZW50LmVuYWJs
ZSgpOwpAQCAtMjQ1LDEyICszOTcsMzggQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lzdGVtQWdlbnQuRW50cnkpfSBjYWxsYmFjaworICAg
ICAqLworICAgIGdldEZpbGVTeXN0ZW1Sb290OiBmdW5jdGlvbihvcmlnaW4sIHR5cGUsIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOwor
ICAgICAgICB0aGlzLl9wZW5kaW5nR2V0RmlsZVN5c3RlbVJvb3RSZXF1ZXN0c1tyZXF1ZXN0SWRd
ID0gY2FsbGJhY2s7CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5nZXRGaWxlU3lzdGVtUm9vdChy
ZXF1ZXN0SWQsIG9yaWdpbiwgdHlwZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisg
ICAgICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnk9fSBiYWNrZW5kUm9vdEVudHJ5Cisg
ICAgICovCisgICAgX2dvdEZpbGVTeXN0ZW1Sb290OiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9y
Q29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IHRo
aXMuX3BlbmRpbmdHZXRGaWxlU3lzdGVtUm9vdFJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAg
IGlmICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9wZW5kaW5nR2V0RmlsZVN5c3RlbVJvb3RSZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICBj
YWxsYmFjayhlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOworICAgIH0sCisKKyAgICAvKioK
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1i
ZXIsIEFycmF5LjxGaWxlU3lzdGVtQWdlbnQuRW50cnk+PSl9IGNhbGxiYWNrCiAgICAgICovCiAg
ICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAg
IHZhciByZXF1ZXN0SWQgPSB0aGlzLnJlcXVlc3RJZCgpOworICAgICAgICB2YXIgcmVxdWVzdElk
ID0gdGhpcy5fcmVxdWVzdElkKCk7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWFkRGlyZWN0b3J5
UmVxdWVzdHNbcmVxdWVzdElkXSA9IGNhbGxiYWNrOwogICAgICAgICBGaWxlU3lzdGVtQWdlbnQu
cmVhZERpcmVjdG9yeShyZXF1ZXN0SWQsIHVybCk7CiAgICAgfSwKQEAgLTI2Nyw2ICs0NDUsNTMg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVhZERpcmVj
dG9yeVJlcXVlc3RzW3JlcXVlc3RJZF07CiAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgYmFj
a2VuZEVudHJpZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dXJsCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5NZXRh
ZGF0YT0pfSBjYWxsYmFjaworICAgICAqLworICAgIGdldE1ldGFkYXRhOiBmdW5jdGlvbih1cmws
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJ
ZCgpOworICAgICAgICB0aGlzLl9wZW5kaW5nR2V0TWV0YWRhdGFSZXF1ZXN0c1tyZXF1ZXN0SWRd
ID0gY2FsbGJhY2s7CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5nZXRNZXRhZGF0YShyZXF1ZXN0
SWQsIHVybCk7CisgICAgfSwKKworICAgIF9nb3RNZXRhZGF0YTogZnVuY3Rpb24ocmVxdWVzdElk
LCBlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhp
cy5fcGVuZGluZ0dldE1ldGFkYXRhUmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFj
YWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRp
bmdHZXRNZXRhZGF0YVJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGNhbGxiYWNrKGVycm9y
Q29kZSwgbWV0YWRhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdXJsCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0CisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGVuZAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBzdHJpbmcpfSBjYWxsYmFj
aworICAgICAqLworICAgIHJlYWRGaWxlOiBmdW5jdGlvbih1cmwsIHN0YXJ0LCBlbmQsIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOwor
ICAgICAgICB0aGlzLl9wZW5kaW5nUmVhZEZpbGVSZXF1ZXN0c1tyZXF1ZXN0SWRdID0gY2FsbGJh
Y2s7CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRmlsZShyZXF1ZXN0SWQsIHVybCwgc3Rh
cnQsIGVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1
ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtz
dHJpbmc9fSBkYXRhVVJMCisgICAgICovCisgICAgX2RpZFJlYWRGaWxlOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIGVycm9yQ29kZSwgZGF0YVVSTCkKKyAgICB7CisgICAgICAgIHZhciBjYWxsYmFjayA9
IC8qKiBAdHlwZSB7ZnVuY3Rpb24obnVtYmVyLCBzdHJpbmc9KX0gKi8gdGhpcy5fcGVuZGluZ1Jl
YWRGaWxlUmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdSZWFkRmlsZVJlcXVl
c3RzW3JlcXVlc3RJZF07CisgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgZGF0YVVSTCk7CiAg
ICAgfQogfQogCkBAIC0yODQsMTAgKzUwOSw0MCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
c3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBy
ZXF1ZXN0SWQKICAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFt
IHtGaWxlU3lzdGVtQWdlbnQuRW50cnk9fSBiYWNrZW5kUm9vdEVudHJ5CisgICAgICovCisgICAg
Z290RmlsZVN5c3RlbVJvb3Q6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBiYWNrZW5k
Um9vdEVudHJ5KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9nb3RGaWxlU3lz
dGVtUm9vdChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gZXJyb3JDb2RlCiAgICAgICogQHBhcmFtIHtBcnJheS48RmlsZVN5c3RlbUFn
ZW50LkVudHJ5Pj19IGJhY2tlbmRFbnRyaWVzCiAgICAgICovCiAgICAgZGlkUmVhZERpcmVjdG9y
eTogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVzKQogICAgIHsK
ICAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9kaWRSZWFkRGlyZWN0b3J5KHJlcXVlc3RJZCwg
ZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2Rl
CisgICAgICogQHBhcmFtIHtGaWxlU3lzdGVtVmlldy5NZXRhZGF0YT19IG1ldGFkYXRhCisgICAg
ICovCisgICAgZ290TWV0YWRhdGE6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRh
ZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fZ290TWV0YWRhdGEocmVx
dWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNv
ZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRhdGFVUkwKKyAgICAgKi8KKyAgICBkaWRSZWFk
RmlsZTogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIGRhdGFVUkwpCisgICAgeworICAg
ICAgICB0aGlzLl9hZ2VudFdyYXBwZXIuX2RpZFJlYWRGaWxlKHJlcXVlc3RJZCwgZXJyb3JDb2Rl
LCBkYXRhVVJMKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWFmMDMzNDM3NTQ5MTUw
Yjk1MjQwYjFhZWI5YmJkMTVmYjg5NTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpAQCAtMCwwICsxLDE2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmll
d30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBm
aWxlU3lzdGVtCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1bmN0aW9uKGZp
bGVTeXN0ZW0pCit7CisgICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5jYWxsKHRoaXMsIFdlYklu
c3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsICJGaWxlU3lzdGVtVmlld1Np
ZGViYXJXaWR0aCIpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJmaWxlLXN5c3Rl
bS12aWV3Iik7CisKKyAgICB2YXIgZGlyZWN0b3J5VHJlZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQu
Y3JlYXRlQ2hpbGQoIm9sIiwgImZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUiKTsKKyAgICB0aGlz
LmRpcmVjdG9yeVRyZWUgPSBuZXcgVHJlZU91dGxpbmUoZGlyZWN0b3J5VHJlZUVsZW1lbnQpOwor
ICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQoZGlyZWN0b3J5VHJlZUVsZW1lbnQp
OworICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9z
dXJlIik7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaWRlYmFyIik7
CisKKyAgICB0aGlzLmRpcmVjdG9yeVRyZWUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5FbnRyeSh0aGlzLCBmaWxlU3lzdGVtLnJvb3QpKTsKKyAgICB0aGlzLnZp
c2libGVWaWV3ID0gbnVsbDsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3Rv
dHlwZSA9IHsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZp
ZXcKKyAgICAgKi8KKyAgICBzaG93VmlldzogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLnZpc2libGVWaWV3ID09PSB2aWV3KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAodGhpcy52aXNpYmxlVmlldykKKyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcu
ZGV0YWNoKCk7CisgICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSB2aWV3OworICAgICAgICB2aWV3
LnNob3codGhpcy5tYWluRWxlbWVudCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJv
dG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1RyZWVFbGVtZW50
fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXd9IGZpbGVTeXN0ZW1WaWV3
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5Cisg
Ki8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0
ZW1WaWV3LCBlbnRyeSkKK3sKKyAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGVudHJ5Lm5hbWUs
IG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5KTsKKworICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7Cisg
ICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtVmlldzsKK30KKworV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBvbmF0dGFjaDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMubGlzdEl0ZW1FbGVt
ZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2VsZWN0aW9uIik7CisgICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50Lmluc2VydEJlZm9yZShzZWxlY3Rpb24sIHRoaXMubGlzdEl0ZW1FbGVtZW50LmZp
cnN0Q2hpbGQpOworCisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMp
LCB0cnVlKTsKKyAgICB9LAorCisgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB2YXIgZmlsZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlfSAqLyB0aGlzLl9lbnRyeTsKKyAgICAgICAgaWYgKCF0aGlzLl92aWV3KQorICAgICAg
ICAgICAgdGhpcy5fdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3KGZpbGUp
OworICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5zaG93Vmlldyh0aGlzLl92aWV3KTsKKyAg
ICB9LAorCisgICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVm
cmVzaCgpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksIHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9kaWRSZWFkRGlyZWN0
b3J5OiBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgeworICAgICAgICBpZiAoZXJy
b3JDb2RlID09PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikgeworICAgICAgICAgICAgaWYgKHRo
aXMucGFyZW50ICE9PSB0aGlzLnRyZWVPdXRsaW5lKQorICAgICAgICAgICAgICAgIHRoaXMucGFy
ZW50LnJlZnJlc2goKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChlcnJvckNvZGUgIT09IDApIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkZhaWxl
ZCB0byByZWFkIGRpcmVjdG9yeTogIiArIGVycm9yQ29kZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBlbnRyaWVzLnNvcnQoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FbnRyeS5jb21wYXJlKTsKKyAgICAgICAgdmFyIG9sZENoaWxkcmVuID0gdGhpcy5j
aGlsZHJlbi5zbGljZSgwKTsKKworICAgICAgICB2YXIgbmV3RW50cnlJbmRleCA9IDA7CisgICAg
ICAgIHZhciBvbGRDaGlsZEluZGV4ID0gMDsKKyAgICAgICAgdmFyIGN1cnJlbnRUcmVlSXRlbSA9
IDA7CisgICAgICAgIHdoaWxlIChuZXdFbnRyeUluZGV4IDwgZW50cmllcy5sZW5ndGggJiYgb2xk
Q2hpbGRJbmRleCA8IG9sZENoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGVudHJp
ZXNbbmV3RW50cnlJbmRleF0ubmFtZSA9PT0gb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0uX2Vu
dHJ5Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5y
ZWZyZXNoKCk7CisgICAgICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OworICAgICAgICAgICAg
ICAgICsrb2xkQ2hpbGRJbmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGVudHJpZXNbbmV3RW50cnlJbmRleF0ubmFtZSA8IG9sZENoaWxkcmVuW29sZENoaWxkSW5k
ZXhdLl9lbnRyeS5uYW1lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LCBl
bnRyaWVzWzBdKSwgY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICAgICArK25ld0VudHJ5
SW5kZXg7CisgICAgICAgICAgICAgICAgKytjdXJyZW50VHJlZUl0ZW07CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hp
bGRBdEluZGV4KGN1cnJlbnRUcmVlSXRlbSk7CisgICAgICAgICAgICArK29sZENoaWxkSW5kZXg7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICg7IG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0
aDsgKytuZXdFbnRyeUluZGV4KQorICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LCBlbnRy
aWVzW25ld0VudHJ5SW5kZXhdKSk7CisKKyAgICAgICAgZm9yICg7IG9sZENoaWxkSW5kZXggPCBv
bGRDaGlsZHJlbi5sZW5ndGg7ICsrb2xkQ2hpbGRJbmRleCkKKyAgICAgICAgICAgIHRoaXMucmVt
b3ZlQ2hpbGQob2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0pOworICAgIH0sCisKKyAgICByZWZy
ZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0
b3J5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9lbnRyeS5yZWFkRGlyZWN0
b3J5KHRoaXMuX2RpZFJlYWREaXJlY3RvcnkuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVF
bGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDU4ZTkzNjFkN2Q4NWIzYTMwMTE4M2QxZTNj
NzgzOGFiMWEyMmUzOGMuLmM0NzFiNmFjN2ZmMzA4N2RiODkwMGEyODA4YjI2YzcwM2QwN2QyZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcwpAQCAtNDYyLDYgKzQ2MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2FwcGxp
Y2F0aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqICBA
cGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd0ZpbGVTeXN0
ZW06IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHZp
ZXcpOworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29yeU5h
bWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTE1MjUsNyAr
MTUzMyw2IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IHRoaXMuX2ZpbGVTeXN0
ZW1UcmVlRWxlbWVudEJ5TmFtZShmaWxlU3lzdGVtLm5hbWUpOwogICAgICAgICBpZiAoIWZpbGVT
eXN0ZW1UcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZmlsZVN5c3Rl
bVRyZWVFbGVtZW50LmNsZWFyKCk7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoZmlsZVN5c3Rl
bVRyZWVFbGVtZW50KTsKICAgICB9LAogCkBAIC0xOTc4LDYgKzE5ODUsNDQgQEAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwo
KQogICAgIHsKICAgICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0
ZW0ubmFtZTsKKyAgICB9LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFj
aC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlz
KSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBWaWV3IiksIHRoaXMuX3JlZnJlc2hG
aWxlU3lzdGVtLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
KyAgICB9LAorCisgICAgX3JlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtVmlldy5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5w
cm90b3R5cGUub25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lz
dGVtVmlldykgeworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcp
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oIkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBh
dmFpbGFibGUuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1WaWV3KHRoaXMuX2ZpbGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3N0b3Jh
Z2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKwor
ICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVt
VmlldyAmJiB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVt
VmlldykKKyAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKaW5kZXggOGY4MjIxYTYzZTExYmRlYzczZDU1ZTkwMmRiYjJjZTUzMGZkM2ZjYy4uZDQx
ZDM5ODY1ZWVmZTQyOTk0YWVlOWNjNWQ2MTI0NWQxZTU3ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTksNiArNTksNyBAQAogICAg
IDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5q
czwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+
RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9u
RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkdvVG9MaW5lRGlhbG9nLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZGJkN2M1YTVkNWJjNTBhZWVkYzQ3ZWNi
ZjdkMjFlY2I0YzE4YWU4Zi4uOWY2YmEwZTliYjA1Njg3YTI5YzRhYzZiOTE2OWJkOTFiMzIzNTIw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCkBAIC0xNjEsNyArMTYxLDkgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VDU1NUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUhUTUxUb2tlbml6ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNv
dXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbU1vZGVsLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lz
dGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwppbmRleCAzMDg2M2Q3ZjU0MWM1ODlkODQ1NGVhY2ZlZDBl
N2I4MmVlZmEwNjZhLi41YzExM2FkODMwMTg4YWVmNmU4ZTZlMDA1YTdlYmRkNjc3Mzk0ZDgzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2Zp
bGVzeXN0ZW0tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpAQCAtMjksMTQgKzI5LDE4IEBAIHZhciBpbml0
aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVGaWxlKHVuZXNjYXBlKFwiIiArIGVzY2FwZShwYXRoKSAr
ICJcIiksICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIiki
KTsKICAgICB9OwogCisgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUgPSBmdW5jdGlvbihwYXRo
LCBjb250ZW50LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoIndyaXRlRmlsZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUocGF0aCkgKyAiXCIpLCB1
bmVzY2FwZShcIiIgKyBlc2NhcGUoY29udGVudCkgKyAiXCIpLCAiICsgSW5zcGVjdG9yVGVzdC5y
ZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7CisgICAgfTsKKwogICAgIEluc3BlY3Rv
clRlc3QuY2xlYXJGaWxlU3lzdGVtID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbGVhckZpbGVTeXN0ZW0oIiArIEluc3Bl
Y3RvclRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwogICAgIH07CiAKLSAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVzdWx0ID0gZnVuY3Rpb24ocmVxdWVz
dElkLCBlcnJvckNvZGUsIGVudHJpZXMpCisgICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVj
dG9yeVJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKICAgICB7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXF1ZXN0SWQ6ICIgKyByZXF1ZXN0SWQpOwogICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsK
IAogICAgICAgICBpZiAoIWVudHJpZXMpIHsKQEAgLTgzLDYgKzg3LDMwIEBAIGZ1bmN0aW9uIGNy
ZWF0ZUZpbGUocGF0aCwgY2FsbGJhY2spCiAgICAgfQogfQogCitmdW5jdGlvbiB3cml0ZUZpbGUo
cGF0aCwgY29udGVudCwgY2FsbGJhY2spCit7CisgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxLCBnb3RGaWxlU3lzdGVtKTsKKworICAgIGZ1bmN0aW9uIGdvdEZpbGVTeXN0
ZW0oZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHBh
dGgsIHtjcmVhdGU6dHJ1ZX0sIGdvdEZpbGVFbnRyeSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Z290RmlsZUVudHJ5KGZpbGVFbnRyeSkKKyAgICB7CisgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVX
cml0ZXIoZ290V3JpdGVyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnb3RXcml0ZXIod3JpdGVy
KQorICAgIHsKKyAgICAgICAgd3JpdGVyLndyaXRlKG5ldyBCbG9iKFtjb250ZW50XSkpOworICAg
ICAgICB3cml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdyaXRl
ci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH07CisgICAgfQorfQorCiBmdW5jdGlvbiBjbGVhckZpbGVTeXN0ZW0oY2FsbGJh
Y2spCiB7CiAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbToi
ICsgbG9jYXRpb24ub3JpZ2luICsgIi90ZW1wb3JhcnkvIiwgZ290Um9vdCwgb25FcnJvcik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dl
dC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NzNmZmY1ZjA3Y2NiMjFhOTEwYTllYmViMGJhNWE4ODNiYjQyNjYyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9n
ZXQtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIGdl
dEZpbGVTeXN0ZW1Sb290LgorCitQQVNTOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvIGlzIGZvdW5kLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9v
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFlNjNlY2QxOWU0ZjliODE0M2FlOTc0NzZjYjU5ZDQ0OTI2OWYx
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURP
Q1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHJlcXVlc3RN
YW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIoKTsKKwor
ICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXAxKTsKKworICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQVBJIHRvIGRlbGV0ZSBhIEZp
bGVTeXN0ZW0gY29tcGxldGVseSBhbmQgdGVzdCBnZXRGaWxlU3lzdGVtUm9vdCBmb3IKKyAgICAg
ICAgLy8gdW5pbml0aWFsaXplZCBGaWxlU3lzdGVtLgorICAgICAgICBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUZpbGUoIi9ob2dlIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
KyAgICB7CisgICAgICAgIHJlcXVlc3RNYW5hZ2VyLmdldEZpbGVTeXN0ZW1Sb290KCJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5Iiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXAzKGVycm9yQ29kZSwgcm9vdEVudHJ5KQorICAgIHsKKyAgICAgICAgaWYgKGVycm9y
Q29kZSA9PT0gMCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQQVNTOiAi
ICsgcm9vdEVudHJ5LnVybCArICIgaXMgZm91bmQuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMOiBlcnJvckNvZGUgPSAiICsgZXJyb3JD
b2RlKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoZXJyb3JDb2RlLCBmaWxlU3lzdGVtKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgorPHA+VGVzdHMgZ2V0RmlsZVN5c3RlbVJvb3QuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
YWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAppbmRleCAzODVhMGEzMTA4MDRkMzc4OTFiODExNjk5
NGYzM2M5N2E1MjU2N2ZmLi4wYTBjNzM1OTI4NDUyOThlYjk2ODllM2Q0ZjVlMWNiMTZmM2E5YWMx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDUgQEAKIFRlc3RzIHJlYWREaXJlY3RvcnkuCiAKLXJlcXVlc3RJZDogMQogZXJyb3JDb2Rl
OiAwCiBlbnRyaWVzOgogICAwOgpAQCAtMTMsNyArMTIsNiBAQCBlbnRyaWVzOgogICAgIHVybDog
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQogICAg
IG5hbWU6IGZ1Z2EKICAgICBpc0RpcmVjdG9yeTogdHJ1ZQotcmVxdWVzdElkOiAxCiBlcnJvckNv
ZGU6IDEKIGVudHJpZXM6IChudWxsKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwKaW5k
ZXggOTVmMDlmMDg5Y2MyNTIxOTMzZWI1MjQ0NTQwYmRmYTkyOTcxMDhiOC4uYTk0NTk1MzIxN2Vm
NzIzNzg4NjVkZGNmM2JhZTMxNzMwNWE5NzAzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rvcnku
aHRtbApAQCAtNSwxNiArNSw3IEBACiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIiwgcnVuVGVzdCk7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICAvLyBGSVhNRTog
UmVwbGFjZSBGaWxlU3lzdGVtRGlzcGF0Y2hlciB3aXRoIEZpbGVTeXN0ZW1EaXNwYXRjaGVyIGlt
cGxlbWVudGF0aW9uIGFmdGVyIGl0IGxhbmRlZC4KLSAgICBmdW5jdGlvbiBGaWxlU3lzdGVtRGlz
cGF0Y2hlcigpIHt9Ci0gICAgRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90eXBlID0gewotICAg
ICAgICBkaWRSZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZW50
cmllcykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgfTsKLQotICAgIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcihuZXcgRmlsZVN5c3RlbURpc3BhdGNoZXIo
KSk7Ci0gICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOworICAgIHZhciByZXF1ZXN0TWFuYWdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CiAKICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7CiAKQEAgLTM1LDIyICsyNiwxOCBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihGaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUs
ICJkaWRSZWFkRGlyZWN0b3J5Iiwgc3RlcDUsIGZhbHNlKTsKLSAgICAgICAgLy8gRklYTUU6IENh
bGwgRmlsZVN5c3RlbURpc3BhdGNoZXIgdGhyb3VnaCBGaWxlU3lzdGVtRGlzcGF0Y2hlciBpbXBs
ZW1lbnRhdGlvbiBhZnRlciBpdCBsYW5kZWQuCi0gICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFk
RGlyZWN0b3J5KDEsICJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
aG9nZSIpOworICAgICAgICByZXF1ZXN0TWFuYWdlci5yZWFkRGlyZWN0b3J5KCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHN0ZXA1KTsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBzdGVwNShyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZW50cmllcykKKyAgICBm
dW5jdGlvbiBzdGVwNShlcnJvckNvZGUsIGVudHJpZXMpCiAgICAgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVzdWx0KHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBlbnRy
aWVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3VsdChlcnJv
ckNvZGUsIGVudHJpZXMpOwogCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihGaWxl
U3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkaWRSZWFkRGlyZWN0b3J5Iiwgc3RlcDYsIGZh
bHNlKTsKLSAgICAgICAgLy8gRklYTUU6IENhbGwgRmlsZVN5c3RlbURpc3BhdGNoZXIgdGhyb3Vn
aCBGaWxlU3lzdGVtRGlzcGF0Y2hlciBpbXBsZW1lbnRhdGlvbiBhZnRlciBpdCBsYW5kZWQuCi0g
ICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRGlyZWN0b3J5KDEsICJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIik7CisgICAgICAgIHJlcXVlc3RNYW5hZ2Vy
LnJlYWREaXJlY3RvcnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9mb28iLCBzdGVwNik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RlcDYocmVxdWVzdElkLCBl
cnJvckNvZGUsIGVudHJpZXMpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVj
dG9yeVJlc3VsdChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgZnVuY3Rpb24g
c3RlcDYoZXJyb3JDb2RlLCBlbnRyaWVzKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJl
YWREaXJlY3RvcnlSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsKIAogICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZp
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNjQ1M2Y3ODkxYTc5MGNkZDEwYzllZTFmMDk4
NDA3ZWU0NWZiNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUZXN0cyByZWFkRmlsZS4KKworZXJyb3JDb2RlID0gMAorZGF0YVVSTCA9IGRhdGE6O2Jhc2U2
NCxlVzg9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNzU3NWE5OTEyNjRjMGY4
OWU0NjkwZjg2NTY2NTYzYTZiZDY2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sCkBAIC0wLDAgKzEs
NDQgQEAKKzwhRE9DVFlQRSBodG1sPjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3Rl
bS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2
YXIgcmVxdWVzdE1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlcigpOworICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXAxKTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGly
ZWN0b3J5KCIvaG9nZSIsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UvZnVnYSIsICJwaXlv
Iiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAg
IHJlcXVlc3RNYW5hZ2VyLnJlYWRGaWxlKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvaG9nZS9mdWdhIiwgMiwgNCwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA0KGVycm9yQ29kZSwgZGF0YVVSTCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJlcnJvckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGRh
dGFVUkwpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGF0YVVSTCA9ICIg
KyBkYXRhVVJMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImRhdGFVUkwgPSAobnVsbCkiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFy
RmlsZVN5c3RlbShzdGVwNSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgorPHA+VGVzdHMgcmVhZEZpbGUuPC9wPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150388</attachid>
            <date>2012-07-02 03:27:04 -0700</date>
            <delta_ts>2012-07-02 03:27:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68203-20120702192703.patch</filename>
            <type>text/plain</type>
            <size>37127</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmU0YTA5NWI3
ZDIyNzhkMmJlOWY1YTcwMGIxYWRmMGU5MDkyYjY5My4uMTM5MjRiZGMzYzZhZWUyNjQ1MWI3Yjk1
MGRhM2FjMGI2YzQxNjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjI1Niw2ICs2MjU2LDcgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5n
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFw
cGluZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EaWFsb2cuanMnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVudFZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01FeHRlbnNpb24uanMnLApAQCAt
NjI3NCw2ICs2Mjc1LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvblJlZ2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZU1hbmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRl
bnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmll
dy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxl
Y3Rpb25EaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA3Mjk2NjYzY2RkMDdjOGRjZjM4YzczMDgxODU2OGJmY2FmNGM0Y2YxLi4x
ZTI2MGY2NTRmZDk4YTNkMmM1YzU2NDk2OTM2Y2RmZTU2MjA4Mzk2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzQ4NTAsNiArNzQ4NTAsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcRGlyZWN0b3J5Q29udGVudFZpZXcuanMiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXERPTUFnZW50LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNzQ5MjIsNiArNzQ5
MjYsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZUNvbnRlbnRWaWV3LmpzIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxGaWxlTWFuYWdlci5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA4NTE2MDZlYzgwYjY0MDk1ZmYzZjcxNGQ1
MmEwMzQ1NmY5NjczMjM3Li4zNzExY2YzZjMyYTgwZDcxNmRhMzY3M2NmODQwZDliNjcxYzdlZjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNDcxLDYgKzE0
NzEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJl
ZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZGVudGlmaWVyLiBDb3Jy
ZXNwb25kaW5nIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgc2hvdWxkIGhhdmUgc2FtZSByZXF1ZXN0
SWQgd2l0aCB0aGlzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJldHVybnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGFzIG1ldGFkYXRhUmVj
ZWl2ZWQgZXZlbnQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJyZXF1ZXN0RmlsZUNvbnRlbnQiLAorICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2YgdGhlIGZpbGUgdGhhdCB0aGUgZnJvbnRl
bmQgaXMgcmVxdWVzdGluZyB0byByZWFkIGZyb20uIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN0YXJ0IiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJTcGVjaWZpZXMgdGhlIHN0YXJ0IG9mIHJhbmdlIHRvIHJlYWQuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZCIsICJ0eXBlIjogImludGVnZXIiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lmaWVzIHRoZSBlbmQgb2YgcmFu
Z2UgdG8gcmVhZCBleGNsdXNpdmVseS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50
aWZpZXIuIENvcnJlc3BvbmRpbmcgZmlsZUNvbnRlbnRSZWNlaXZlZCBldmVudCBzaG91bGQgaGF2
ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBjb250ZW50IG9mIHRoZSBmaWxlIGFz
IGZpbGVDb250ZW50UmVjZWl2ZWQgZXZlbnQuIFJlc3VsdCBzaG91bGQgYmUgc2xpY2VkIGludG8g
W3N0YXJ0LCBlbmQpLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50
cyI6IFsKQEAgLTE0OTUsMTEgKzE1MDcsMjAgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJtZXRhZGF0YVJlY2VpdmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdh
cyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9uZGluZyBnZXRNZXRhZGF0YSBy
ZXF1ZXN0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0
IHdhcyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0TWV0
YWRhdGEgY29tbWFuZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JD
b2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4g
T3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVl
LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIkcmVmIjog
IkZpbGVTeXN0ZW0uTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
Q29udGFpbnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBz
dWNjZXNzZnVsbHkuIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiBnZXRNZXRhZGF0YSBjb21tYW5kLiIKKyAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiByZXF1ZXN0
TWV0YWRhdGEgY29tbWFuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogImZpbGVDb250ZW50UmVjZWl2ZWQiLAorICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJ
ZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVy
IHRoYXQgd2FzIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlcXVl
c3RGaWxlQ29udGVudCBjb21tYW5kLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIjAsIGlmIG5v
IGVycm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8gRmlsZUVycm9yOjpFcnJvckNv
ZGUgdmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFp
bnMgY29udGVudCBvZiB0aGUgZmlsZSBhcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuIiB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlv
biBldmVudCBvZiByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4iCiAgICAgICAgICAgICB9CiAg
ICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCAwNjIwNmRlMjYzZDY2MTg3OTliYzlkY2Yw
OTYxZDE3ZjMzNDgyY2Y2Li5hZGFmZWVhN2ZhZjVlNGE0YTc3MTkxODAyYmU5ZTIxZDhhMDQ0ODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmNwcApAQCAtMzQsMTUgKzM0LDIwIEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCIKIAorI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUFycmF5LmgiCiAj
aW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJGaWxlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlRW50cnkuaCIKICNpbmNsdWRl
ICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCkBAIC01NCw2ICs1OSw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CkBAIC00MDAs
NiArNDA2LDEyOSBAQCBib29sIEdldE1ldGFkYXRhVGFzazo6ZGlkR2V0TWV0YWRhdGEoTWV0YWRh
dGEqIG1ldGFkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCitjbGFzcyBSZWFkRmlsZVRhc2sg
OiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZEZp
bGVUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRmlsZVRhc2s+IGNy
ZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWRGaWxlVGFzayhmcm9u
dGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCwgc3RhcnQsIGVuZCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgflJlYWRGaWxlVGFzaygpCisgICAgeworICAgICAgICByZXBvcnRSZXN1bHQoRmls
ZUVycm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworCisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
ID09ICZvdGhlcjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgICAgICAg
ICBkaWRSZWFkKCk7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmVycm9yRXZlbnQpCisgICAgICAgICAgICBkaWRIaXRFcnJvcihtX3JlYWRlci0+ZXJyb3Io
KS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVy
cm9yKiBlcnJvcikKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAw
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBkaWRHZXRFbnRyeShF
bnRyeSopOworICAgIGJvb2wgZGlkR2V0RmlsZShGaWxlKik7CisgICAgdm9pZCBkaWRSZWFkKCk7
CisKKyAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJv
dmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5maWxlQ29udGVu
dFJlY2VpdmVkKG1fcmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIHJlc3Vs
dCk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgfQorCisgICAgUmVhZEZp
bGVUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCkKKyAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlz
dGVuZXJUeXBlKQorICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVy
KQorICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKKyAgICAgICAgLCBtX3VybChQYXJz
ZWRVUkxTdHJpbmcsIHVybCkKKyAgICAgICAgLCBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAsIG1f
ZW5kKGVuZCkKKyAgICAgICAgLCBtX2N1cnJlbnQoc3RhcnQpIHsgfQorCisgICAgUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7
CisgICAgS1VSTCBtX3VybDsKKyAgICBpbnQgbV9zdGFydDsKKyAgICBsb25nIGxvbmcgbV9lbmQ7
CisgICAgbG9uZyBsb25nIG1fY3VycmVudDsKKworICAgIFJlZlB0cjxGaWxlUmVhZGVyPiBtX3Jl
YWRlcjsKK307CisKK3ZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKKworICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7CisgICAgU3RyaW5nIHBhdGg7
CisgICAgaWYgKCFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKG1fdXJsLCB0
eXBlLCBwYXRoKSkgeworICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpTWU5UQVhfRVJS
LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJh
Y2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9y
eTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEhpdEVycm9y
KTsKKyAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9
IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOworCisgICAgTG9jYWxGaWxl
U3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wg
UmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCit7CisgICAgaWYgKGVudHJ5
LT5pc0RpcmVjdG9yeSgpKSB7CisgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVf
TUlTTUFUQ0hfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYg
KCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAg
ICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
ID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxGaWxlQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywg
JlJlYWRGaWxlVGFzazo6ZGlkR2V0RmlsZSk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+Ojpj
cmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIHN0YXRpY19jYXN0
PEZpbGVFbnRyeSo+KGVudHJ5KS0+ZmlsZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OworCisgICAgbV9yZWFkZXIgPSBGaWxlUmVhZGVyOjpjcmVhdGUoZW50cnktPmZpbGVzeXN0ZW0o
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUoRmlsZSogZmlsZSkKK3sKKyAgICBSZWZQdHI8Qmxv
Yj4gYmxvYiA9IGZpbGUtPnNsaWNlKG1fc3RhcnQsIG1fZW5kKTsKKyAgICBtX3JlYWRlci0+c2V0
T25sb2FkKHRoaXMpOworICAgIG1fcmVhZGVyLT5zZXRPbmVycm9yKHRoaXMpOworCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9yZWFkZXItPnJlYWRBc0FycmF5QnVmZmVyKGJsb2Iu
Z2V0KCksIGVjKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWFkRmlsZVRhc2s6OmRp
ZFJlYWQoKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gbV9yZWFkZXItPmFy
cmF5QnVmZmVyUmVzdWx0KCk7CisgICAgU3RyaW5nIGVuY29kZWRSZXN1bHQgPSBiYXNlNjRFbmNv
ZGUoc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3Ro
KCkpOworICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4o
MCksICZlbmNvZGVkUmVzdWx0KTsKK30KKwogfQogCiAvLyBzdGF0aWMKQEAgLTQ3OCw2ICs2MDcs
MjIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYKICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVy
LT5mcm9udGVuZCgpLT5tZXRhZGF0YVJlY2VpdmVkKCpyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGlu
dD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQqIGVuZCwgaW50KiByZXF1ZXN0
SWQpCit7CisgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJvbnRlbmRQcm92aWRlcikgeworICAg
ICAgICAqZXJyb3IgPSAiRmlsZVN5c3RlbSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQo
KSk7CisKKyAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7CisKKyAgICBpZiAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJs
KS5nZXQoKSkpCisgICAgICAgIFJlYWRGaWxlVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRl
ciwgKnJlcXVlc3RJZCwgdXJsLCBzdGFydCA/ICpzdGFydCA6IDAsIGVuZCA/ICplbmQgOiBzdGQ6
Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgZWxzZQorICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5k
KCktPmZpbGVDb250ZW50UmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxl
RXJyb3I6OkFCT1JUX0VSUiksIDApOworfQorCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIEFTU0VS
VChmcm9udGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmgKaW5kZXggODJmOTVjNGI2ZmU4ZmQzMWI4NzkyMWI1MzdmYzczZjBl
N2E1Y2M3MC4uMGU1NmIzOGY5OTM5MWU5YjhiNzM3YWJkMDFhMDFiNjQxZTRlOWE3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
aApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxl
U3lzdGVtUm9vdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGludCogcmVx
dWVzdElkKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCkg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKaW5kZXggMDIxNzg0OGY4NDU2NDJlYjkzYjFmYTU3ZGYzMmE5YmI4YzMxNzFjNC4uZGMzODk5
NmVkMzYwYzVkNzliMTMzNTVjNTVlNmZjYWE3ZGZkZGQ2YiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMjEwLDcgKzIxMCw5IEBAIG1vZHVs
ZXMgPSBbCiAgICAgICAgICAgICAiQ29va2llSXRlbXNWaWV3LmpzIiwKICAgICAgICAgICAgICJE
YXRhYmFzZVF1ZXJ5Vmlldy5qcyIsCiAgICAgICAgICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMi
LAorICAgICAgICAgICAgIkRpcmVjdG9yeUNvbnRlbnRWaWV3LmpzIiwKICAgICAgICAgICAgICJE
T01TdG9yYWdlSXRlbXNWaWV3LmpzIiwKKyAgICAgICAgICAgICJGaWxlQ29udGVudFZpZXcuanMi
LAogICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwKICAgICAgICAgICAgICJJbmRleGVk
REJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2VzUGFuZWwuanMiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EaXJlY3RvcnlDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVu
dFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA5OTUyMTg0MTU0ZjdiYTFkMTQyNTNhNDlhMzZkMGU2MTM3
NmQxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGlyZWN0b3J5Q29udGVudFZpZXcuanMKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5EYXRhR3JpZH0KKyAqLworV2ViSW5z
cGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oKQoreworICAgIGNvbnN0IGlu
ZGV4ZXMgPSBXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlczsK
KyAgICB2YXIgY29sdW1ucyA9IHt9OworICAgIGNvbHVtbnNbaW5kZXhlcy5OYW1lXSA9IHt9Owor
ICAgIGNvbHVtbnNbaW5kZXhlcy5OYW1lXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TmFtZSIpOworICAgIGNvbHVtbnNbaW5kZXhlcy5OYW1lXS5zb3J0ID0gImFzY2VuZGluZyI7Cisg
ICAgY29sdW1uc1tpbmRleGVzLk5hbWVdLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICBjb2x1bW5zW2lu
ZGV4ZXMuTmFtZV0ud2lkdGggPSAiMjAlIjsKKyAgICBjb2x1bW5zW2luZGV4ZXMuVVJMXSA9IHt9
OworICAgIGNvbHVtbnNbaW5kZXhlcy5VUkxdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJVUkwiKTsKKyAgICBjb2x1bW5zW2luZGV4ZXMuVVJMXS5zb3J0YWJsZSA9IHRydWU7CisgICAg
Y29sdW1uc1tpbmRleGVzLlVSTF0ud2lkdGggPSAiMjAlIjsKKyAgICBjb2x1bW5zW2luZGV4ZXMu
VHlwZV0gPSB7fTsKKyAgICBjb2x1bW5zW2luZGV4ZXMuVHlwZV0udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlR5cGUiKTsKKyAgICBjb2x1bW5zW2luZGV4ZXMuVHlwZV0uc29ydGFibGUg
PSB0cnVlOworICAgIGNvbHVtbnNbaW5kZXhlcy5UeXBlXS53aWR0aCA9ICIxNSUiOworICAgIGNv
bHVtbnNbaW5kZXhlcy5TaXplXSA9IHt9OworICAgIGNvbHVtbnNbaW5kZXhlcy5TaXplXS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOworICAgIGNvbHVtbnNbaW5kZXhlcy5T
aXplXS5zb3J0YWJsZSA9IHRydWU7CisgICAgY29sdW1uc1tpbmRleGVzLlNpemVdLndpZHRoID0g
IjEwJSI7CisgICAgY29sdW1uc1tpbmRleGVzLk1vZGlmaWNhdGlvblRpbWVdID0ge307CisgICAg
Y29sdW1uc1tpbmRleGVzLk1vZGlmaWNhdGlvblRpbWVdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJNb2RpZmljYXRpb24gVGltZSIpOworICAgIGNvbHVtbnNbaW5kZXhlcy5Nb2RpZmlj
YXRpb25UaW1lXS5zb3J0YWJsZSA9IHRydWU7CisgICAgY29sdW1uc1tpbmRleGVzLk1vZGlmaWNh
dGlvblRpbWVdLndpZHRoID0gIjI1JSI7CisKKyAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2Fs
bCh0aGlzLCBjb2x1bW5zKTsKKyAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hh
bmdlZCIsIHRoaXMuX3NvcnQsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29u
dGVudFZpZXcuY29sdW1uSW5kZXhlcyA9IHsKKyAgICBOYW1lOiAiMCIsCisgICAgVVJMOiAiMSIs
CisgICAgVHlwZTogIjIiLAorICAgIFNpemU6ICIzIiwKKyAgICBNb2RpZmljYXRpb25UaW1lOiAi
NCIKK30KKworV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkRpcmVjdG9yeT59IGVudHJpZXMKKyAgICAgKi8KKyAgICBzaG93RW50cmllczogZnVuY3Rp
b24oZW50cmllcykKKyAgICB7CisgICAgICAgIGNvbnN0IGluZGV4ZXMgPSBXZWJJbnNwZWN0b3Iu
RGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlczsKKyAgICAgICAgdGhpcy5yb290Tm9k
ZSgpLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmll
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMucm9vdE5vZGUoKS5hcHBlbmRDaGlsZChu
ZXcgV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUoZW50cmllc1tpXSkpOwor
ICAgIH0sCisKKyAgICBfc29ydDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zb3J0
Tm9kZXMoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUuY29tcGFyYXRvcih0
aGlzLnNvcnRDb2x1bW5JZGVudGlmaWVyKSwgdGhpcy5zb3J0T3JkZXIgPT09ICJkZXNjZW5kaW5n
Iik7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGU7CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZX0K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0gZW50cnkKKyAq
LworV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUgPSBmdW5jdGlvbihlbnRy
eSkKK3sKKyAgICBjb25zdCBpbmRleGVzID0gV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRW
aWV3LmNvbHVtbkluZGV4ZXM7CisgICAgdmFyIGRhdGEgPSB7fTsKKyAgICBkYXRhW2luZGV4ZXMu
TmFtZV0gPSBlbnRyeS5uYW1lOworICAgIGRhdGFbaW5kZXhlcy5VUkxdID0gZW50cnkudXJsOwor
ICAgIGRhdGFbaW5kZXhlcy5UeXBlXSA9IGVudHJ5LmlzRGlyZWN0b3J5ID8gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEaXJlY3RvcnkiKSA6IGVudHJ5Lm1pbWVUeXBlOworICAgIGRhdGFbaW5kZXhl
cy5TaXplXSA9ICIiOworICAgIGRhdGFbaW5kZXhlcy5Nb2RpZmljYXRpb25UaW1lXSA9ICIiOwor
CisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEpOworICAgIHRo
aXMuX2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fbWV0YWRhdGEgPSBudWxsOworCisgICAgdGhp
cy5fZW50cnkucmVxdWVzdE1ldGFkYXRhKHRoaXMuX21ldGFkYXRhUmVjZWl2ZWQuYmluZCh0aGlz
KSk7Cit9CisKK1dlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5Ob2RlLmNvbXBhcmF0
b3IgPSBmdW5jdGlvbihtb2RlKQoreworICAgIGNvbnN0IGluZGV4ZXMgPSBXZWJJbnNwZWN0b3Iu
RGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlczsKKyAgICBzd2l0Y2ggKG1vZGUpIHsK
KyAgICBjYXNlIGluZGV4ZXMuTmFtZToKKyAgICBjYXNlIGluZGV4ZXMuVVJMOgorICAgICAgICBy
ZXR1cm4gZW50cnlDb21wYXJlOworICAgIGNhc2UgaW5kZXhlcy5UeXBlOgorICAgICAgICByZXR1
cm4gdHlwZUNvbXBhcmU7CisgICAgY2FzZSBpbmRleGVzLlNpemU6CisgICAgICAgIHJldHVybiBz
aXplQ29tcGFyZTsKKyAgICBjYXNlIGluZGV4ZXMuTW9kaWZpY2F0aW9uVGltZToKKyAgICAgICAg
cmV0dXJuIG1vZGlmaWNhdGlvblRpbWVDb21wYXJlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVu
dHJ5Q29tcGFyZSh4LCB5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSh4Ll9lbnRyeSwgeS5fZW50cnkpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHR5cGVDb21wYXJlKHgsIHkpCisgICAgeworICAgICAgICBpZiAoeC5fZW50
cnkuaXNEaXJlY3RvcnkgIT0geS5fZW50cnkuaXNEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1
cm4geS5fZW50cnkuaXNEaXJlY3RvcnkgPyAxIDogLTE7CisgICAgICAgIGlmICh4Ll9lbnRyeS5p
c0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geC5fZW50
cnkubWltZVR5cGUubG9jYWxlQ29tcGFyZSh5Ll9lbnRyeS5taW1lVHlwZSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc2l6ZUNvbXBhcmUoeCwgeSkKKyAgICB7CisgICAgICAgIHJldHVybiAoeC5f
bWV0YWRhdGEgPyB4Ll9tZXRhZGF0YS5zaXplIHx8IDAgOiAwKSAtICh5Ll9tZXRhZGF0YSA/IHku
X21ldGFkYXRhLnNpemUgfHwgMCA6IDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1vZGlmaWNh
dGlvblRpbWVDb21wYXJlKHgsIHkpCisgICAgeworICAgICAgICByZXR1cm4gKHguX21ldGFkYXRh
ID8geC5fbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA6IDApIC0gKHkuX21ldGFkYXRhID8geS5f
bWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA6IDApOworICAgIH0KK30KKworV2ViSW5zcGVjdG9y
LkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2Vu
dC5NZXRhZGF0YX0gbWV0YWRhdGEKKyAgICAgKi8KKyAgICBfbWV0YWRhdGFSZWNlaXZlZDogZnVu
Y3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIGNvbnN0IGluZGV4ZXMg
PSBXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlczsKKyAgICAg
ICAgaWYgKGVycm9yQ29kZSAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLl9tZXRhZGF0YSA9IG1ldGFkYXRhOworICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTsK
KyAgICAgICAgaWYgKCJzaXplIiBpbiBtZXRhZGF0YSkKKyAgICAgICAgICAgIGRhdGFbaW5kZXhl
cy5TaXplXSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKG1ldGFkYXRhLnNpemUpOworICAgICAgICBk
YXRhW2luZGV4ZXMuTW9kaWZpY2F0aW9uVGltZV0gPSBuZXcgRGF0ZShtZXRhZGF0YS5tb2RpZmlj
YXRpb25UaW1lKS50b0dNVFN0cmluZygpOworICAgICAgICB0aGlzLmRhdGEgPSBkYXRhOworICAg
IH0KK30KKworV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYjY5NTgxM2NjZDg2YTVmNjlkMWZmN2RmMzc3ZTU2ZmQ4NmUxYjBhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
Q29udGVudFZpZXcuanMKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGV9IGZpbGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmll
dyA9IGZ1bmN0aW9uKGZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsK
KworICAgIHRoaXMuX2lubmVyVmlldyA9IG51bGw7CisgICAgdGhpcy5fZmlsZSA9IGZpbGU7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIHdhc1No
b3duOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9maWxlLnJlcXVlc3RNZXRhZGF0
YSh0aGlzLl9tZXRhZGF0YVJlY2VpdmVkLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfbWV0
YWRhdGFSZWNlaXZlZDogZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAg
ICAgIGlmIChlcnJvckNvZGUgIT09IDApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
ciBjb250ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcuQ29udGVudCh0aGlz
Ll9maWxlLCBtZXRhZGF0YSk7CisKKworICAgICAgICBpZiAodGhpcy5fZmlsZS5yZXNvdXJjZVR5
cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50CisgICAgICAgICAgICB8
fCB0aGlzLl9maWxlLnJlc291cmNlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
U3R5bGVzaGVldAorICAgICAgICAgICAgfHwgdGhpcy5fZmlsZS5yZXNvdXJjZVR5cGUgPT09IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCkKKyAgICAgICAgICAgIHRoaXMuX3Nob3dW
aWV3KG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUoY29udGVudCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0aGlzLl9zaG93VmlldyhuZXcgV2ViSW5zcGVjdG9yLkVtcHR5Vmlldygi
QmluYXJ5IEZpbGUiKSk7CisgICAgfSwKKworICAgIF9zaG93VmlldzogZnVuY3Rpb24odmlldykK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9pbm5lclZpZXcpCisgICAgICAgICAgICB0aGlzLl9p
bm5lclZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMuX2lubmVyVmlldyA9IHZpZXc7CisgICAg
ICAgIHZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZp
bGVDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3Bl
Y3Rvci5Db250ZW50UHJvdmlkZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRmlsZX0gZmlsZQorICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuTWV0YWRhdGF9IG1l
dGFkYXRhCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcuQ29udGVudCA9IGZ1bmN0
aW9uKGZpbGUsIG1ldGFkYXRhKQoreworICAgIHRoaXMuX2ZpbGUgPSBmaWxlOworICAgIHRoaXMu
X21ldGFkYXRhID0gbWV0YWRhdGE7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcu
Q29udGVudC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7P3N0cmluZ30K
KyAgICAgKi8KKyAgICBjb250ZW50VVJMOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fZmlsZS51cmw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5SZXNvdXJjZVR5cGV9CisgICAgICovCisgICAgY29udGVudFR5cGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlLnJlc291cmNlVHlwZTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLCBib29sZWFu
LCBzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlv
bihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBzaXplID0gLyoqIEB0eXBlIHtudW1iZXJ9
ICovIHRoaXMuX21ldGFkYXRhLnNpemU7CisgICAgICAgIHRoaXMuX2ZpbGUucmVxdWVzdEZpbGVD
b250ZW50KDAsIHNpemUsIGZpbGVDb250ZW50UmVjZWl2ZWQuYmluZChudWxsLCB0aGlzLl9maWxl
Lm1pbWVUeXBlKSk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBt
aW1lVHlwZQorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICAgICAq
IEBwYXJhbSB7c3RyaW5nPX0gY29udGVudAorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24g
ZmlsZUNvbnRlbnRSZWNlaXZlZChtaW1lVHlwZSwgZXJyb3JDb2RlLCBjb250ZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoZXJyb3JDb2RlICE9PSAwIHx8ICFjb250ZW50KQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHRydWUsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3aW5kb3cuYXRvYihjb250ZW50KSwgdHJ1ZSwg
bWltZVR5cGUpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2ZQorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sK
KyAgICAgKi8KKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJh
Y2suYmluZChudWxsLCBbXSksIDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKaW5kZXggOGJhNTkxZmM0
ZWYwNmIxZGZkYWQ1NGZiOWI0Nzc4Y2UxYzg5NTE0Zi4uNDE5MzllZWEyNmI0MmVhYzFkOWY5OWI5
ZGVmYzU4NThiM2M3ZTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAgLTIzNyw5ICsyMzcsMjQgQEAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNhbGxiYWNrKGVy
cm9yQ29kZSwgZW50cmllcyk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0gZW50cnkKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKG51bWJlciwgRmlsZVN5c3RlbUFnZW50Lk1ldGFkYXRhPSl9IGNhbGxiYWNrCisgICAg
ICovCiAgICAgcmVxdWVzdE1ldGFkYXRhOiBmdW5jdGlvbihlbnRyeSwgY2FsbGJhY2spCiAgICAg
ewogICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIucmVxdWVzdE1ldGFkYXRhKGVudHJ5LnVybCwg
Y2FsbGJhY2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gZmlsZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFy
dAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51
bWJlciwgc3RyaW5nPSl9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdEZpbGVDb250ZW50
OiBmdW5jdGlvbihmaWxlLCBzdGFydCwgZW5kLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX2FnZW50V3JhcHBlci5yZXF1ZXN0RmlsZUNvbnRlbnQoZmlsZS51cmwsIHN0YXJ0LCBlbmQs
IGNhbGxiYWNrKTsKICAgICB9CiB9CiAKQEAgLTQwNyw2ICs0MjIsMTYgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZSA9IHsKICAgICBnZXQgcmVzb3VyY2VUeXBl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVR5cGU7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBlbmQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgc3RyaW5nPSl9IGNhbGxi
YWNrCisgICAgICovCisgICAgcmVxdWVzdEZpbGVDb250ZW50OiBmdW5jdGlvbihzdGFydCwgZW5k
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RG
aWxlQ29udGVudCh0aGlzLCBzdGFydCwgZW5kLCBjYWxsYmFjayk7CiAgICAgfQogfQogCkBAIC00
MjAsNiArNDQ1LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLl9wZW5kaW5nRmlsZVN5c3RlbVJvb3RSZXF1ZXN0cyA9IHt9Owog
ICAgIHRoaXMuX3BlbmRpbmdEaXJlY3RvcnlDb250ZW50UmVxdWVzdHMgPSB7fTsKICAgICB0aGlz
Ll9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0cyA9IHt9OworICAgIHRoaXMuX3BlbmRpbmdGaWxlQ29u
dGVudFJlcXVlc3RzID0ge307CiAKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5
c3RlbURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlz
KSk7CiAgICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOwpAQCAtNTEwLDYgKzUzNiwzOCBAQCBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVl
c3RzW3JlcXVlc3RJZF07CiAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbWV0YWRhdGEpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHN0YXJ0CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZAorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHJl
cXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24odXJsLCBzdGFydCwgZW5kLCBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHZhciBzdG9yZSA9IHRoaXMuX3BlbmRpbmdGaWxlQ29udGVudFJlcXVlc3Rz
OworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVDb250ZW50KHVybCwgc3RhcnQs
IGVuZCwgcmVxdWVzdEFjY2VwdGVkKTsKKworICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNjZXB0
ZWQoZXJyb3IsIHJlcXVlc3RJZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFlcnJvcikK
KyAgICAgICAgICAgICAgICBzdG9yZVtyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNv
bnRlbnQKKyAgICAgKi8KKyAgICBfZmlsZUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVz
dElkLCBlcnJvckNvZGUsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSAv
KiogQHR5cGUge2Z1bmN0aW9uKG51bWJlciwgc3RyaW5nPSl9ICovIHRoaXMuX3BlbmRpbmdGaWxl
Q29udGVudFJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGlmICghY2FsbGJhY2spCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nRmlsZUNvbnRlbnRS
ZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIGNvbnRlbnQp
OwogICAgIH0KIH0KIApAQCAtNTUyLDUgKzYxMCwxNSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIG1ldGFkYXRhUmVjZWl2ZWQ6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSkKICAgICB7CiAgICAgICAgIHRoaXMuX2Fn
ZW50V3JhcHBlci5fbWV0YWRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRh
dGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElk
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAgICAqIEBwYXJhbSB7c3RyaW5n
PX0gY29udGVudAorICAgICAqLworICAgIGZpbGVDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKHJl
cXVlc3RJZCwgZXJyb3JDb2RlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRX
cmFwcGVyLl9maWxlQ29udGVudFJlY2VpdmVkKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBjb250ZW50
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlU3lzdGVtVmlldy5qcwppbmRleCA3NmY0YzdhNzFhNDhlNTg3YmM0ODUyY2YyMTEwNzk1
ZGE4YTcyNGY3Li5jMjBmNzI0MjNhMTkzMjA2NzM4MzQyNjFjMzU2YWNhOWRkYTMzZjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZp
ZXcuanMKQEAgLTM5LDE4ICszOSwyNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBm
dW5jdGlvbihmaWxlU3lzdGVtKQogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJmaWxl
LXN5c3RlbS12aWV3Iik7CiAKICAgICB2YXIgZGlyZWN0b3J5VHJlZUVsZW1lbnQgPSB0aGlzLmVs
ZW1lbnQuY3JlYXRlQ2hpbGQoIm9sIiwgImZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUiKTsKLSAg
ICB0aGlzLmRpcmVjdG9yeVRyZWUgPSBuZXcgVHJlZU91dGxpbmUoZGlyZWN0b3J5VHJlZUVsZW1l
bnQpOworICAgIHRoaXMuX2RpcmVjdG9yeVRyZWUgPSBuZXcgVHJlZU91dGxpbmUoZGlyZWN0b3J5
VHJlZUVsZW1lbnQpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQoZGlyZWN0
b3J5VHJlZUVsZW1lbnQpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
b3V0bGluZS1kaXNjbG9zdXJlIik7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJzaWRlYmFyIik7CiAKICAgICB2YXIgcm9vdEl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1WaWV3LkVudHJ5VHJlZUVsZW1lbnQodGhpcywgZmlsZVN5c3RlbS5yb290KTsKICAg
ICByb290SXRlbS5leHBhbmRlZCA9IHRydWU7Ci0gICAgdGhpcy5kaXJlY3RvcnlUcmVlLmFwcGVu
ZENoaWxkKHJvb3RJdGVtKTsKKyAgICB0aGlzLl9kaXJlY3RvcnlUcmVlLmFwcGVuZENoaWxkKHJv
b3RJdGVtKTsKICAgICB0aGlzLl92aXNpYmxlVmlldyA9IG51bGw7CisKKyAgICB0aGlzLl9yZWZy
ZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7
CisgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbi52aXNpYmxlID0gdHJ1ZTsKKyAgICB0aGlzLl9yZWZy
ZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaCwgdGhpcyk7
CiB9CiAKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7CisgICAgZ2V0
IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1
dHRvbi5lbGVtZW50XTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVmlld30gdmlldwogICAgICAqLwpAQCAtNjIsNiArNzEsMTEgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVW
aWV3LmRldGFjaCgpOwogICAgICAgICB0aGlzLl92aXNpYmxlVmlldyA9IHZpZXc7CiAgICAgICAg
IHZpZXcuc2hvdyh0aGlzLm1haW5FbGVtZW50KTsKKyAgICB9LAorCisgICAgX3JlZnJlc2g6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RpcmVjdG9yeVRyZWUuY2hpbGRyZW5bMF0u
cmVmcmVzaCgpOwogICAgIH0KIH0KIApAQCAtOTAsNiArMTA0LDIxIEBAIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9o
YW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwogICAgIH0sCiAKKyAgICBv
bnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl92aWV3KSB7Cisg
ICAgICAgICAgICBpZiAodGhpcy5fZW50cnkuaXNEaXJlY3RvcnkpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZGlyZWN0b3J5ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkRpcmVjdG9yeX0gKi8gdGhpcy5fZW50cnk7CisgICAgICAgICAgICAgICAgdGhpcy5fdmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gKi8gdGhpcy5fZW50cnk7CisgICAgICAgICAgICAgICAg
dGhpcy5fdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3KGZpbGUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LnNob3dW
aWV3KHRoaXMuX3ZpZXcpOworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB9LAorCiAgICAg
b25wb3B1bGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CkBA
IC0xMjMsNiArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgZW50cmllcy5zb3J0KFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk7CisgICAgICAgIGlmICh0
aGlzLl92aWV3KQorICAgICAgICAgICAgdGhpcy5fdmlldy5zaG93RW50cmllcyhlbnRyaWVzKTsK
KwogICAgICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOwogCiAg
ICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0gMDsKQEAgLTEzNCw4ICsxNjYsOCBAQCBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB2YXIgb3JkZXIgPSBuZXdFbnRyeS5uYW1lLmxvY2FsZUNvbXBhcmUob2xkQ2hpbGQu
X2VudHJ5Lm5hbWUpOwogCiAgICAgICAgICAgICBpZiAob3JkZXIgPT09IDApIHsKLSAgICAgICAg
ICAgICAgICBpZiAob2xkQ2hpbGQuX2VudHJ5LmlzRGlyZWN0b3J5ICYmIG9sZENoaWxkLmV4cGFu
ZGVkKQotICAgICAgICAgICAgICAgICAgICBvbGRDaGlsZC5yZWZyZXNoKCk7CisgICAgICAgICAg
ICAgICAgaWYgKG9sZENoaWxkLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICAg
ICAgb2xkQ2hpbGQuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICArK25ld0VudHJ5SW5kZXg7CiAgICAgICAgICAgICAgICAgKytvbGRDaGlsZEluZGV4OwogICAg
ICAgICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggZWU1ZmM1MDMzZjgz
MzZiNDI2MzZlYTAzYzFlODUxZDQ0ODY3OTljMi4uODg4NDk1N2RmOGY3Y2Q4NDI4NGVlMTk5YjBj
YzRlNzQ4ZmFiN2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xNzMxLDcgKzE3MzEsNiBAQCBXZWJJbnNwZWN0
b3IuSURCT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfdXBkYXRl
VG9vbHRpcDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgCiAgICAgICAgIHZhciBrZXlQYXRo
U3RyaW5nID0gdGhpcy5fb2JqZWN0U3RvcmUua2V5UGF0aFN0cmluZzsKICAgICAgICAgdmFyIHRv
b2x0aXBTdHJpbmcgPSBrZXlQYXRoU3RyaW5nICE9PSBudWxsID8gKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiS2V5IHBhdGg6ICIpICsga2V5UGF0aFN0cmluZykgOiAiIjsKICAgICAgICAgaWYgKHRo
aXMuX29iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggZDQxZDM5ODY1ZWVmZTQyOTk0YWVlOWNjNWQ2
MTI0NWQxZTU3ZTQyNC4uMDVjNjlkMzgzMWNhODYzZDgwODIzYTFhN2IwMmIyYmQ2NjUzZWQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAt
NDAsNiArNDAsNyBAQAogICAgIDxmaWxlPkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzPC9maWxl
PgogICAgIDxmaWxlPkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qczwvZmlsZT4KICAgICA8ZmlsZT5E
aWFsb2cuanM8L2ZpbGU+CisgICAgPGZpbGU+RGlyZWN0b3J5Q29udGVudFZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RE9NQWdlbnQuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NQnJlYWtwb2ludHNT
aWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01FeHRlbnNpb24uanM8L2ZpbGU+CkBA
IC01Nyw2ICs1OCw3IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uUGFuZWwuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lv
blNlcnZlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlQ29udGVudFZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5c3RlbU1vZGVs
LmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNDcw
NThjYTVjZjE0MDBhOWQ2MGViMzljMjEwNzFkZTE0MjU1NGJmMS4uYjNkM2QxNjAxNzc0ZDliMWFm
ZWEzOGVmYzAwNTY4YzY3MjU5ZjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjEsNiArMTYxLDggQEAgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VDU1NUb2tlbml6
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlNvdXJjZUhUTUxUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRpcmVjdG9yeUNvbnRl
bnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJGaWxlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Nb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbAppbmRleCAxMDE4ZWYzMTI1
ODU5OTUzYWNmYjgyMDVhOTkzNjE3MjlkYzJhNjkwLi5mZmUxZDcwZjJjZDJlMGU5NGQ3NTFmYjQ4
NWY4MWMyN2VlYzliY2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS5odG1sCkBAIC01Miw3
ICs1Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmaWxlU3lzdGVtSXRlbS5z
ZWxlY3QoKTsKICAgICAgICAgICAgIGZpbGVTeXN0ZW1WaWV3ID0gZmlsZVN5c3RlbUl0ZW0uX2Zp
bGVTeXN0ZW1WaWV3OwotICAgICAgICAgICAgZGlyZWN0b3J5VHJlZSA9IGZpbGVTeXN0ZW1WaWV3
LmRpcmVjdG9yeVRyZWU7CisgICAgICAgICAgICBkaXJlY3RvcnlUcmVlID0gZmlsZVN5c3RlbVZp
ZXcuX2RpcmVjdG9yeVRyZWU7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2FsbE9uUmVx
dWVzdENvbXBsZXRlZCh0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVhZC1maWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzg5Nzc0OTgzYTUyYmM4MDhhMmIw
YmU4MDJiYTI4YjUyODUwZTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorVGVzdHMgcmVhZEZpbGUuCisKK2Vycm9yQ29kZSA9IDAKK2NvbnRlbnQgPSAiVUVG
VFV3PT0iIFtQQVNTXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDM0MWQ4YmM2
ODYyMzljZTg2ZGNlMjFlNDkyZWM5ZTIzMGNjNzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbApAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHJlcXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIoKTsKKyAgICBJbnNwZWN0b3JUZXN0LmNsZWFy
RmlsZVN5c3RlbShzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCBzdGVwMik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0
ZUZpbGUoIi9ob2dlL2Z1Z2EiLCAicGlQQVNTeW8iLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgcmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVD
b250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9m
dWdhIiwgMiwgNiwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KGVycm9yQ29k
ZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJv
ckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGNvbnRlbnQpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudCA9IFwiIiArIGNvbnRlbnQgKyAiXCIg
WyIgKyBhdG9iKGNvbnRlbnQpICsgIl0iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbnRlbnQgPSAobnVsbCkiKTsKKworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgcmVhZEZpbGUuPC9w
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>