<?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>81590</bug_id>
          
          <creation_ts>2012-03-19 16:31:28 -0700</creation_ts>
          <short_desc>Remove support for &quot;magic&quot; iframe</short_desc>
          <delta_ts>2012-03-20 10:44:21 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>81453</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>inferno</cc>
    
    <cc>japhet</cc>
    
    <cc>jberlin</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582424</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 16:31:28 -0700</bug_when>
    <thetext>Remove support for &quot;magic&quot; iframe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582435</commentid>
    <comment_count>1</comment_count>
      <attachid>132713</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 16:36:59 -0700</bug_when>
    <thetext>Created attachment 132713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582439</commentid>
    <comment_count>2</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-03-19 16:39:46 -0700</bug_when>
    <thetext>This will be SOSO awesome if it lands before next Tuesday m19 branch point :)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582452</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 16:48:28 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582453</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 16:48:50 -0700</bug_when>
    <thetext>Attachment 132713 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;ownerElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582477</commentid>
    <comment_count>5</comment_count>
      <attachid>132713</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-03-19 17:00:40 -0700</bug_when>
    <thetext>Comment on attachment 132713
Patch

Thanks a lot Adam for doing this patch!

WebFrameLoader::didAdoptURLLoader(..) should also be removed.
There are layout tests as well, but they should fail on EWS and their names are very obviously-magic-iframe-related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582502</commentid>
    <comment_count>6</comment_count>
      <attachid>132713</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 17:24:31 -0700</bug_when>
    <thetext>Comment on attachment 132713
Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:-289
&gt; -    // This frame adopted the resource that is being loaded. This happens when
&gt; -    // an iframe, that is loading a subresource, is transferred between windows.
&gt; -    virtual void didAdoptURLLoader(WebURLLoader*) { }

Yeah, we need to remove the implementation of this function on the Chromium side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582709</commentid>
    <comment_count>7</comment_count>
      <attachid>132713</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-19 21:02:32 -0700</bug_when>
    <thetext>Comment on attachment 132713
Patch

Attachment 132713 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11994070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582713</commentid>
    <comment_count>8</comment_count>
      <attachid>132713</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-19 21:05:31 -0700</bug_when>
    <thetext>Comment on attachment 132713
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:-289
&gt;&gt; -    virtual void didAdoptURLLoader(WebURLLoader*) { }
&gt; 
&gt; Yeah, we need to remove the implementation of this function on the Chromium side.

LGTM for nuking this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582714</commentid>
    <comment_count>9</comment_count>
      <attachid>132751</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 21:06:01 -0700</bug_when>
    <thetext>Created attachment 132751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582717</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 21:09:59 -0700</bug_when>
    <thetext>Attachment 132751 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;ownerElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582718</commentid>
    <comment_count>11</comment_count>
      <attachid>132752</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 21:13:39 -0700</bug_when>
    <thetext>Created attachment 132752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582721</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 21:17:56 -0700</bug_when>
    <thetext>Attachment 132752 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/FrameLoaderClient.h:259:  The parameter name &quot;ownerElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582730</commentid>
    <comment_count>13</comment_count>
      <attachid>132752</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-19 21:27:07 -0700</bug_when>
    <thetext>Comment on attachment 132752
Patch

Huge win!  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582781</commentid>
    <comment_count>14</comment_count>
      <attachid>132752</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 22:58:57 -0700</bug_when>
    <thetext>Comment on attachment 132752
Patch

Clearing flags on attachment: 132752

Committed r111361: &lt;http://trac.webkit.org/changeset/111361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582782</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 22:59:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583178</commentid>
    <comment_count>16</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-20 10:12:21 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 132752 [details])
&gt; Clearing flags on attachment: 132752
&gt; 
&gt; Committed r111361: &lt;http://trac.webkit.org/changeset/111361&gt;

It appears that you removed all the fast/frames/iframe-reparenting* tests except iframe-reparenting-unique-name.html. Was it intentional to leave that one in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583211</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-20 10:44:21 -0700</bug_when>
    <thetext>&gt; Was it intentional to leave that one in?

Yeah, that test still seems to make sense without the feature.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132713</attachid>
            <date>2012-03-19 16:36:59 -0700</date>
            <delta_ts>2012-03-19 21:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81590-20120319163658.patch</filename>
            <type>text/plain</type>
            <size>49119</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAzLTE5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJt
YWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZSwgd2hpY2gg
cHJldmlvdXNseSBhbGxvd2VkCisgICAgICAgIGFuIGlmcmFtZSB0byBiZSB0cmFuc2ZlcmVkIGZy
b20gb25lIGRvY3VtZW50IHRvIGFub3RoZXIgd2l0aG91dAorICAgICAgICByZWxvYWRpbmcgdGhl
IGlmcmFtZS4gIFRoZSBpZGVhIGJlaGluZCB0aGlzIGZlYXR1cmUgd2FzIHRvIGxldCBzaXRlcwor
ICAgICAgICBjcmVhdGUgInBvcCBvdXQiIHdpbmRvd3MgdGhhdCBjb3VsZCBvdXRsaXZlIHRoZWly
IHBhcmVudHMgYnkKKyAgICAgICAgdHJhbnNmZXJpbmcgc3RhdGUgdG8gdGhlc2Ugd2luZG93cyB2
aWEgdGhlc2UgbWFnaWMgaWZyYW1lcy4KKworICAgICAgICBVbmZvcnVudGF0ZWx5LCB0aGlzIGZl
YXR1cmUgd2FzIG5ldmVyIGltcGxlbWVudGVkIGJ5IG90aGVyIGJyb3dzZXJzIGFuZAorICAgICAg
ICBoYXMgYmVlbiB0aGUgc291cmNlIG9mIGEgc2VyaWVzIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxp
dGllcy4gIEFsdGhvdWdoCisgICAgICAgIHdlIGhhdmUgZml4ZWQgZWFjaCB2dWxuZXJhYmlsaXR5
IGFzIGl0IGhhcyBiZWVuIGRpc2NvdmVyZWQsIHRoZSBmZWF0dXJlCisgICAgICAgIGlzIHN0aWxs
IGEgY29tcGxleCBjb3JuZXIgY2FzZSB0aGF0IGlzbid0IHdpZGVseSBleGVyY2lzZWQgb24gdGhl
IHdlYi4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCBpdCdzIGxpa2VseSB0byBoYXZlIG1vcmUg
dnVsbmVyYWJpbGl0aWVzIGluIHRoZQorICAgICAgICBmdXR1cmUuCisKKyAgICAgICAgSSdtIG5v
dCBhd2FyZSBvZiBhbnkgd2ViIHNpdGVzIHRoYXQgdXNlIHRoaXMgZmVhdHVyZSBhbnltb3JlLiAg
VGhlcmUKKyAgICAgICAgd2VyZSBhIGhhbmRmdWwgb2YgdGhlbSwgYnV0IHdlIGFwcGVhciB0byBo
YXZlIGJlZW4gc3VjY2Vzc2Z1bCBpbgorICAgICAgICBldmFuZ2FsaXppbmcgdGhlbSB0byBtb3Zl
IGF3YXkgZnJvbSAibWFnaWMiIGlmcmFtZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OkhUTUxGcmFtZUVsZW1lbnRCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoSFRN
TEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoK
KyAgICAgICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaDoKKyAgICAgICAgKFJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKEZyYW1lKToKKwogMjAxMi0wMy0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODQ4NTc1PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTE2CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MSwxNSArOTQxLDYgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6YWRvcHROb2RlKFBhcwogICAgICAgICBicmVhazsKICAgICB9ICAgICAgIAog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlmIChzb3VyY2UtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkg
ewotICAgICAgICAgICAgSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSA9IHN0YXRpY19jYXN0PEhU
TUxJRnJhbWVFbGVtZW50Kj4oc291cmNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YoaWZyYW1lLT5jb250ZW50RnJhbWUo
KSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmcmFtZS0+
c2V0UmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUoYXR0YWNoZWQoKSAmJiBzb3VyY2UtPmF0
dGFjaGVkKCkgJiYgaWZyYW1lLT5jYW5SZW1haW5BbGl2ZU9uUmVtb3ZhbEZyb21UcmVlKCkpOwot
ICAgICAgICB9Ci0KICAgICAgICAgaWYgKHNvdXJjZS0+cGFyZW50Tm9kZSgpKQogICAgICAgICAg
ICAgc291cmNlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKHNvdXJjZS5nZXQoKSwgZWMpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNDEgKzQ0LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotLy8gSGVscGVyIHRv
IGNoZWNrIGlmIHRoZSBGcmFtZSdzIGRvY3VtZW50IGNvbnRhaW5zIGVsZW1lbnRzIHRoYXQgY2Fu
IGluc3RhbnRpYXRlIHBsdWdpbnMuCi0vLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIGZvciBuZXN0
ZWQgRnJhbWVzIHRvby4KLXN0YXRpYyBib29sIGhhc1BsdWdpbkVsZW1lbnRzKEZyYW1lKiBmcmFt
ZSkKLXsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBT
ZWFyY2ggZm9yIGEgcGx1Z2luIGVsZW1lbnQgaW4gdGhpcyBkb2N1bWVudC4KLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBk
b2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZShkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKGVt
YmVkVGFnKSB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIERvIHRoZSBzYW1lIGZvciB0aGUgbmVzdGVk
IGZyYW1lcy4KLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBpZiAoaGFzUGx1Z2luRWxlbWVudHMoY2hpbGQpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6SFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEZyYW1lT3duZXJFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV9zY3JvbGxpbmcoU2Nyb2xsYmFyQXV0bykKICAgICAsIG1fbWFyZ2lu
V2lkdGgoLTEpCiAgICAgLCBtX21hcmdpbkhlaWdodCgtMSkKLSAgICAsIG1fY2hlY2tJbkRvY3Vt
ZW50VGltZXIodGhpcywgJkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjaGVja0luRG9jdW1lbnRUaW1l
ckZpcmVkKQogICAgICwgbV92aWV3U291cmNlKGZhbHNlKQotICAgICwgbV9yZW1haW5zQWxpdmVP
blJlbW92YWxGcm9tVHJlZShmYWxzZSkKIHsKIH0KIApAQCAtMTgwLDI0ICsxNTEsMTAgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZQogICAgIG9wZW5VUkwoKTsKIH0K
IAotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZygpCi17Ci0g
ICAgQVNTRVJUKG1fcmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUpOwotCi0gICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKQotICAgICAgICBmcmFtZS0+dHJhbnNmZXJDaGls
ZEZyYW1lVG9OZXdEb2N1bWVudCgpOwotfQotCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpp
bnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogCi0gICAgaWYgKG1fcmVtYWluc0FsaXZlT25SZW1vdmFsRnJv
bVRyZWUpIHsKLSAgICAgICAgdXBkYXRlT25SZXBhcmVudGluZygpOwotICAgICAgICBtX3JlbWFp
bnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlID0gZmFsc2U7Ci0gICAgICAgIG1fY2hlY2tJbkRvY3Vt
ZW50VGltZXIuc3RvcCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIC8vIERvY3VtZW50
RnJhZ21lbnRzIGRvbid0IGtpY2sgb2YgYW55IGxvYWRzLgogICAgIGlmICghZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDQ3ICsyMzQsNiBAQCBpbnQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmhlaWdodCgpCiAgICAgcmV0dXJuIHJlbmRlckJveCgpLT5oZWlnaHQo
KTsKIH0KIAotLy8gU29tZSB0eXBlcyBvZiBjb250ZW50IGNhbiByZXN0cmljdCB0aGUgYWJpbGl0
eSB0byBtb3ZlIHRoZSBpZnJhbWVzIGJldHdlZW4gcGFnZXMuCi0vLyBGb3IgZXhhbXBsZSwgdGhl
IHBsdWdpbiBpbmZyYXN0cnVjdHVyZSBvZiBhbiBlbWJlZGRlciBtYXkgYXNzb2NpYXRlIHRoZSBw
bHVnaW4gaW5zdGFuY2VzCi0vLyB3aXRoIHRoZSB0b3AtbGV2ZWwgRnJhbWUgZm9yIHRyYWNraW5n
IHZhcmlvdXMgcmVzb3VyY2VzIGFuZCBmYWlsdXJlIHRvIHRyYW5zZmVyIHRob3NlCi0vLyByZXNv
dXJjZXMgY29ycmVjdGx5IG1heSBsZWFkIHRvIGNyYXNoZXMgYW5kIG90aGVyIGlsbCBlZmZlY3Rz
IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyNjcpCi1ib29sIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpjYW5SZW1haW5BbGl2ZU9uUmVtb3ZhbEZyb21UcmVlKCkKLXsK
LSAgICByZXR1cm4gIWhhc1BsdWdpbkVsZW1lbnRzKGNvbnRlbnRGcmFtZSgpKTsKLX0KLQotdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0UmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUo
Ym9vbCB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoIXZhbHVlIHx8IGNhblJlbWFpbkFsaXZlT25SZW1v
dmFsRnJvbVRyZWUoKSk7Ci0gICAgbV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSA9IHZh
bHVlOwotCi0gICAgLy8gVGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IEpTIHdpbGwgZG8gZG9j
dW1lbnQuYWRvcHROb2RlKCkgb24gdGhpcyBlbGVtZW50IGJ1dCB3aWxsIG5vdCBpbnNlcnQgaXQg
aW50byB0aGUgdHJlZS4KLSAgICAvLyBTdGFydCB0aGUgYXN5bmMgdGltZXIgdGhhdCBpcyBub3Jt
YWxseSBzdG9wcGVkIGJ5IGF0dGFjaCgpLiBJZiBpdCdzIG5vdCBzdG9wcGVkIGFuZCBmaXJlcywg
aXQnbGwgdW5sb2FkIHRoZSBmcmFtZS4KLSAgICBpZiAodmFsdWUpCi0gICAgICAgIG1fY2hlY2tJ
bkRvY3VtZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwotICAgIGVsc2UgewotICAgICAgICBtX2No
ZWNrSW5Eb2N1bWVudFRpbWVyLnN0b3AoKTsKLSAgICAgICAgd2lsbFJlbW92ZSgpOwotICAgIH0K
LX0KLQotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6Y2hlY2tJbkRvY3VtZW50VGltZXJGaXJl
ZChUaW1lcjxIVE1MRnJhbWVFbGVtZW50QmFzZT4qKQotewotICAgIEFTU0VSVCghYXR0YWNoZWQo
KSk7Ci0gICAgQVNTRVJUKG1fcmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUpOwotCi0gICAg
bV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSA9IGZhbHNlOwotICAgIHdpbGxSZW1vdmUo
KTsKLX0KLQotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6d2lsbFJlbW92ZSgpCi17Ci0gICAg
aWYgKG1fcmVtYWluc0FsaXZlT25SZW1vdmFsRnJvbVRyZWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6d2lsbFJlbW92ZSgpOwotfQotCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YWxsb3dGdWxsU2Ny
ZWVuKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQCBwdWJsaWM6
CiAgICAgaW50IHdpZHRoKCk7CiAgICAgaW50IGhlaWdodCgpOwogCi0gICAgYm9vbCBjYW5SZW1h
aW5BbGl2ZU9uUmVtb3ZhbEZyb21UcmVlKCk7Ci0gICAgdm9pZCBzZXRSZW1haW5zQWxpdmVPblJl
bW92YWxGcm9tVHJlZShib29sKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdmly
dHVhbCBib29sIGFsbG93RnVsbFNjcmVlbigpIGNvbnN0OwogI2VuZGlmCkBAIC02NiwxMCArNjQs
NiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZUVsZW1lbnRCYXNlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKLSAgICB2b2lk
IGNoZWNrSW5Eb2N1bWVudFRpbWVyRmlyZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+Kik7
Ci0gICAgdm9pZCB1cGRhdGVPblJlcGFyZW50aW5nKCk7Ci0KICAgICBib29sIHZpZXdTb3VyY2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U291cmNlOyB9CiAKICAgICB2b2lkIHNldE5hbWVB
bmRPcGVuVVJMKCk7CkBAIC04MywyMCArNzcsNyBAQCBwcml2YXRlOgogICAgIGludCBtX21hcmdp
bldpZHRoOwogICAgIGludCBtX21hcmdpbkhlaWdodDsKIAotICAgIC8vIFRoaXMgaXMgYSBwZXJm
b3JtYW5jZSBvcHRpbWl6YXRpb24gc29tZSBjYWxsICJtYWdpYyBpZnJhbWUiIHdoaWNoIGF2b2lk
cwotICAgIC8vIHRlYXJpbmcgZG93biB0aGUgZnJhbWUgaGllcmFyY2h5IHdoZW4gYSB3ZWIgcGFn
ZSBjYWxscyBhZG9wdE5vZGUgb24gYQotICAgIC8vIGZyYW1lIG93bmluZyBlbGVtZW50IGJ1dCBk
b2VzIG5vdCBpbW1lZGlhdGVseSBpbnNlcnQgaXQgaW50byB0aGUgbmV3Ci0gICAgLy8gZG9jdW1l
bnQgYmVmb3JlIEphdmFTY3JpcHQgeWllbGRzIHRvIFdlYkNvcmUuICBJZiB0aGUgZWxlbWVudCBp
cyBub3QgeWV0Ci0gICAgLy8gaW4gYSBkb2N1bWVudCBieSB0aGUgdGltZSB0aGlzIHRpbWVyIGZp
cmVzLCB0aGUgZnJhbWUgaGllcmFyY2h5IHRlYXJkb3duCi0gICAgLy8gd2lsbCBjb250aW51ZS4g
IFRoaXMgY2FuIGFsc28gYmUgc2VlbiBhcyBpbXBsZW1lbnRhdGlvbiBvZjoKLSAgICAvLyAiUmVt
b3ZpbmcgYW4gaWZyYW1lIGZyb20gYSBEb2N1bWVudCBkb2VzIG5vdCBjYXVzZSBpdHMgYnJvd3Np
bmcgY29udGV4dAotICAgIC8vIHRvIGJlIGRpc2NhcmRlZC4gSW5kZWVkLCBhbiBpZnJhbWUncyBi
cm93c2luZyBjb250ZXh0IGNhbiBzdXJ2aXZlIGl0cwotICAgIC8vIG9yaWdpbmFsIHBhcmVudCBE
b2N1bWVudCBpZiBpdHMgaWZyYW1lIGlzIG1vdmVkIHRvIGFub3RoZXIgRG9jdW1lbnQuIgotICAg
IC8vIEZyb20gSFRNTDU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1pZnJhbWUtZWxlbWVudC5odG1sI3RoZS1pZnJhbWUtZWxl
bWVudAotICAgIFRpbWVyPEhUTUxGcmFtZUVsZW1lbnRCYXNlPiBtX2NoZWNrSW5Eb2N1bWVudFRp
bWVyOwotCiAgICAgYm9vbCBtX3ZpZXdTb3VyY2U7Ci0gICAgYm9vbCBtX3JlbWFpbnNBbGl2ZU9u
UmVtb3ZhbEZyb21UcmVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTAsMjQgKzg1MCw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlTG9h
ZGVyRmkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGVja0xvYWRDb21wbGV0ZSgpOyAgICAK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VzRnJvbVBh
Z2UoUGFnZSogb2xkUGFnZSkKLXsKLSAgICBBU1NFUlQob2xkUGFnZSAhPSBtX2ZyYW1lLT5wYWdl
KCkpOwotCi0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lTG9hZGVyKCk7Ci0gICAgQVNT
RVJUKGxvYWRlcik7Ci0KLSAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCi0gICAgICAg
IGxvYWRlci0+ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKG1fbWFpblJl
c291cmNlTG9hZGVyLmdldCgpLCBvcmlnaW5hbFJlcXVlc3QoKSwgb2xkUGFnZSk7Ci0KLSAgICBp
ZiAoaXNMb2FkaW5nU3VicmVzb3VyY2VzKCkpIHsKLSAgICAgICAgUmVzb3VyY2VMb2FkZXJTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdWJyZXNvdXJjZUxvYWRlcnMuYmVnaW4oKTsKLSAgICAg
ICAgUmVzb3VyY2VMb2FkZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3VicmVzb3VyY2VM
b2FkZXJzLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAg
ICAgbG9hZGVyLT5kaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoKCppdCku
Z2V0KCksICgqaXQpLT5vcmlnaW5hbFJlcXVlc3QoKSwgb2xkUGFnZSk7Ci0gICAgfQotfQotCiB2
b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkK
IHsKICAgICBpZiAoIWRvZXNQcm9ncmVzc2l2ZUxvYWQobV9yZXNwb25zZS5taW1lVHlwZSgpKSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDEx
MTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjEsOCArMjIxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3VicmVzb3VyY2VMb2FkZXJGaW5pc2hlZExvYWRpbmdPbmVQYXJ0KFJlc291cmNlTG9h
ZGVyKik7CiAKLSAgICAgICAgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9tUGFnZShQ
YWdlKik7Ci0KICAgICAgICAgdm9pZCBtYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50
KCk7CiAKICAgICAgICAgdm9pZCBzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGJvb2wgZGVm
ZXIpIHsgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkID0gZGVmZXI7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDggKzM3
NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSB7IHJldHVybiAwOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSop
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopIHsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4gMDsgfQogI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDIyICsxNjQ2LDYgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6ZnJhbWVIYXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlTWFj
aGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSB8fCAobV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyICYmICFtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkpOyAKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2Vz
RnJvbVBhZ2UoUGFnZSogb2xkUGFnZSkKLXsKLSAgICBBU1NFUlQob2xkUGFnZSAhPSBtX2ZyYW1l
LT5wYWdlKCkpOwotICAgIGlmIChpc0xvYWRpbmcoKSkgewotICAgICAgICBhY3RpdmVEb2N1bWVu
dExvYWRlcigpLT50cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9tUGFnZShvbGRQYWdlKTsKLSAg
ICAgICAgb2xkUGFnZS0+cHJvZ3Jlc3MoKS0+cHJvZ3Jlc3NDb21wbGV0ZWQobV9mcmFtZSk7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCkt
PnByb2dyZXNzKCktPnByb2dyZXNzU3RhcnRlZChtX2ZyYW1lKTsKLSAgICB9Ci19Ci0KLXZvaWQg
RnJhbWVMb2FkZXI6OmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNv
dXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhZ2Uq
IG9sZFBhZ2UpCi17Ci0gICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNv
dXJjZUZyb21QYWdlKGxvYWRlciwgcmVxdWVzdCwgb2xkUGFnZSk7Ci19Ci0KIHZvaWQgRnJhbWVM
b2FkZXI6OnNldERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAg
aWYgKCFsb2FkZXIgJiYgIW1fZG9jdW1lbnRMb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lzTG9h
ZGluZ01haW5SZXNvdXJjZTsgfQogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgYm9v
bCBmcmFtZUhhc0xvYWRlZCgpIGNvbnN0OwotICAgIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VzRnJvbVBhZ2UoUGFnZSopOwotICAgIHZvaWQgZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNv
dXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFn
ZSopOwogCiAgICAgaW50IG51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2Up
IGNvbnN0OwogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTYsMTAgKzI1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2Fk
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0
ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJn
aW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
VHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKiBvbGRQYWdlKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSogb2xkUGFnZSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJn
aW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpID0gMDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTQgKzE0NCw2IEBAIHZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmkKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBm
aW5pc2hUaW1lKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hUcmFu
c2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSogb2xkUGFnZSkKLXsKLSAgICBBU1NFUlQo
b2xkUGFnZSAhPSBtX2ZyYW1lLT5wYWdlKCkpOwotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShsb2FkZXIsIHJlcXVlc3QsIG9s
ZFBhZ2UpOwotCi0gICAgb2xkUGFnZS0+cHJvZ3Jlc3MoKS0+Y29tcGxldGVQcm9ncmVzcyhsb2Fk
ZXItPmlkZW50aWZpZXIoKSk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2
aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgdm9pZCBkaXNw
YXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7CiAKICAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNyw2MiArNzE3LDYgQEAgdm9pZCBGcmFt
ZTo6ZGlzY29ubmVjdE93bmVyRWxlbWVudCgpCiAgICAgbV9vd25lckVsZW1lbnQgPSAwOwogfQog
Ci0vLyBUaGUgZnJhbWUgaXMgbW92ZWQgaW4gRE9NLCBwb3RlbnRpYWxseSB0byBhbm90aGVyIHBh
Z2UuCi12b2lkIEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKLXsKLSAg
ICBBU1NFUlQobV9vd25lckVsZW1lbnQpOwotICAgIEZyYW1lKiBuZXdQYXJlbnQgPSBtX293bmVy
RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBBU1NFUlQobmV3UGFyZW50KTsKLSAg
ICBib29sIGRpZFRyYW5zZmVyID0gZmFsc2U7Ci0KLSAgICAvLyBTd2l0Y2ggcGFnZS4KLSAgICBQ
YWdlKiBuZXdQYWdlID0gbmV3UGFyZW50LT5wYWdlKCk7Ci0gICAgUGFnZSogb2xkUGFnZSA9IG1f
cGFnZTsKLSAgICBpZiAobV9wYWdlICE9IG5ld1BhZ2UpIHsKLSAgICAgICAgaWYgKG1fcGFnZSkg
ewotICAgICAgICAgICAgaWYgKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFt
ZSgpID09IHRoaXMpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
c2V0Rm9jdXNlZEZyYW1lKDApOwotCi0gICAgICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFt
ZUNvdW50KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobV9kb21XaW5kb3cpIHsKLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAg
ICAgICAgICAgbV9kb21XaW5kb3ctPnJlc2V0Tm90aWZpY2F0aW9ucygpOwotI2VuZGlmCi0gICAg
ICAgIH0KLQotICAgICAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVy
YXRvciBzdG9wID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5lbmQoKTsKLSAgICAgICAgZm9yIChI
YXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBpdCA9IG1fZGVzdHJ1
Y3Rpb25PYnNlcnZlcnMuYmVnaW4oKTsgaXQgIT0gc3RvcDsgKytpdCkKLSAgICAgICAgICAgICgq
aXQpLT53aWxsRGV0YWNoUGFnZSgpOwotCi0gICAgICAgIG1fcGFnZSA9IG5ld1BhZ2U7Ci0KLSAg
ICAgICAgaWYgKG5ld1BhZ2UpCi0gICAgICAgICAgICBuZXdQYWdlLT5pbmNyZW1lbnRGcmFtZUNv
dW50KCk7Ci0KLSAgICAgICAgZGlkVHJhbnNmZXIgPSB0cnVlOwotICAgIH0KLQotICAgIC8vIFVw
ZGF0ZSB0aGUgZnJhbWUgdHJlZS4KLSAgICBkaWRUcmFuc2ZlciA9IG5ld1BhcmVudC0+dHJlZSgp
LT50cmFuc2ZlckNoaWxkKHRoaXMpIHx8IGRpZFRyYW5zZmVyOwotCi0gICAgLy8gQXZvaWQgdW5u
ZWNlc3NhcnkgY2FsbHMgdG8gY2xpZW50IGFuZCBmcmFtZSBzdWJ0cmVlIGlmIHRoZSBmcmFtZSBl
bmRlZAotICAgIC8vIHVwIG9uIHRoZSBzYW1lIHBhZ2UgYW5kIHVuZGVyIHRoZSBzYW1lIHBhcmVu
dCBmcmFtZS4KLSAgICBpZiAoZGlkVHJhbnNmZXIpIHsKLSAgICAgICAgLy8gTGV0IGV4dGVybmFs
IGNsaWVudHMgdXBkYXRlIHRoZW1zZWx2ZXMuCi0gICAgICAgIGxvYWRlcigpLT5jbGllbnQoKS0+
ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChvbGRQYWdlKTsKLQotICAgICAgICAv
LyBVcGRhdGUgcmVzb3VyY2UgdHJhY2tpbmcgbm93IHRoYXQgZnJhbWUgY291bGQgYmUgaW4gYSBk
aWZmZXJlbnQgcGFnZS4KLSAgICAgICAgaWYgKG9sZFBhZ2UgIT0gbmV3UGFnZSkKLSAgICAgICAg
ICAgIGxvYWRlcigpLT50cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9tUGFnZShvbGRQYWdlKTsK
LQotICAgICAgICAvLyBEbyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBjaGlsZHJlbi4KLSAgICAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIGNoaWxkLT50cmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7Ci0gICAgfQotfQotCiBTdHJpbmcgRnJhbWU6OmRv
Y3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50VHlwZSogZG9jdHlw
ZSA9IGRvY3VtZW50KCktPmRvY3R5cGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9u
IDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDggKzExMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVuZGVyVmll
dyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8vIFJvb3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZv
ciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRoaXMgZnJhbWUuCiAgICAgICAgIFJlbmRlclBh
cnQqIG93bmVyUmVuZGVyZXIoKSBjb25zdDsgLy8gUmVuZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRo
YXQgY29udGFpbnMgdGhpcyBmcmFtZS4KIAotICAgICAgICB2b2lkIHRyYW5zZmVyQ2hpbGRGcmFt
ZVRvTmV3RG9jdW1lbnQoKTsKLQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAg
ICAgICB2b2lkIGRpc3BhdGNoVmlzaWJpbGl0eVN0YXRlQ2hhbmdlRXZlbnQoKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50
IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaWREZXRlY3RYU1MpOgorCiAyMDEyLTAzLTE5
ICBUeWxlciBBYmJvdHQgIDx0YWJib3R0QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IHNwZWVkIHVwIHRleHQgc2VsZWN0aW9uIGZvciBsYXJnZSBzZWxlY3Rpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTExMjQz
KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MCwxNyArNzQwLDYgQEAg
UGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFjawogICAgIHJldHVybiBjaGls
ZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSogLypvbGRQYWdlKi8pCi17
Ci0gICAgUGFnZSogbmV3UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBtX3dlYlBhZ2VQcml2
YXRlID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50QmxhY2tCZXJyeSo+KG5ld1BhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKSktPndlYlBhZ2VQcml2YXRlKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmlu
ZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCopOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CkBAIC0xNjQs
OCArMTYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkV4dGVybmFsbHko
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgZmluYWxQYWdlVXJs
LCBjb25zdCBTdHJpbmcmIGljb25VcmwpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGlu
Z1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KEhUTUxGb3JtRWxlbWVudCopIHsg
bm90SW1wbGVtZW50ZWQoKTsgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJh
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lQ2xpZW50KToK
KyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoRnJh
bWVMb2FkZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMy0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdURiBoZWFkZXIgaW5jbHVkZSBkaXNjaXBsaW5lIGlu
IENocm9taXVtIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTAg
KzI4NCw2IEBAIHB1YmxpYzoKICAgICAvLyBBIHJlZmxlY3RlZCBYU1Mgd2FzIGVuY291bnRlcmVk
IGluIHRoZSBwYWdlIGFuZCBzdXBwcmVzc2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoV2ViRnJhbWUqLCBjb25zdCBXZWJVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgeyB9
CiAKLSAgICAvLyBUaGlzIGZyYW1lIGFkb3B0ZWQgdGhlIHJlc291cmNlIHRoYXQgaXMgYmVpbmcg
bG9hZGVkLiBUaGlzIGhhcHBlbnMgd2hlbgotICAgIC8vIGFuIGlmcmFtZSwgdGhhdCBpcyBsb2Fk
aW5nIGEgc3VicmVzb3VyY2UsIGlzIHRyYW5zZmVycmVkIGJldHdlZW4gd2luZG93cy4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRvcHRVUkxMb2FkZXIoV2ViVVJMTG9hZGVyKikgeyB9Ci0KICAgICAv
LyBTY3JpcHQgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNjcmlwdCBpbiB0aGUgcGFnZSB0cmllZCB0byBhbGxv
Y2F0ZSB0b28gbXVjaCBtZW1vcnkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NTksMzMgKzE0NTksNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFt
ZUxvYWRlckNsaWVudEltcGw6CiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNyZWF0ZUNoaWxkRnJh
bWUoZnJhbWVSZXF1ZXN0LCBvd25lckVsZW1lbnQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAg
ICBBU1NFUlQobV93ZWJGcmFtZS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkpOwotCi0gICAgV2Vi
RnJhbWVJbXBsKiBuZXdQYXJlbnQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dlYkZy
YW1lLT5wYXJlbnQoKSk7Ci0gICAgaWYgKCFuZXdQYXJlbnQgfHwgIW5ld1BhcmVudC0+Y2xpZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJlcGxhY2UgdGhlIGNsaWVudCBzaW5jZSB0
aGUgb2xkIGNsaWVudCBtYXkgYmUgZGVzdHJveWVkIHdoZW4gdGhlCi0gICAgLy8gcHJldmlvdXMg
cGFnZSBpcyBjbG9zZWQuCi0gICAgbV93ZWJGcmFtZS0+c2V0Q2xpZW50KG5ld1BhcmVudC0+Y2xp
ZW50KCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNmZXJMb2FkaW5n
UmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFBhZ2UqIG9sZFBhZ2UpCi17Ci0gICAgYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QobG9hZGVyLT5pZGVudGlmaWVyKCksIGxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgcmVxdWVzdCk7Ci0KLSAgICBXZWJGcmFtZUltcGwqIG9sZFdlYkZyYW1lID0gV2ViRnJh
bWVJbXBsOjpmcm9tRnJhbWUob2xkUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmIChvbGRXZWJG
cmFtZSAmJiBvbGRXZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG9sZFdlYkZyYW1lLT5jbGll
bnQoKS0+cmVtb3ZlSWRlbnRpZmllckZvclJlcXVlc3QobG9hZGVyLT5pZGVudGlmaWVyKCkpOwot
Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCk7Ci0gICAgV2Vi
VVJMTG9hZGVyKiB3ZWJVUkxMb2FkZXIgPSBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpGcm9tUmVz
b3VyY2VIYW5kbGUoaGFuZGxlKS0+bG9hZGVyKCk7Ci0gICAgaWYgKHdlYlVSTExvYWRlciAmJiBt
X3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZEFk
b3B0VVJMTG9hZGVyKHdlYlVSTExvYWRlcik7Ci19Ci0KIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZVBsdWdpbigKICAgICBjb25zdCBJbnRTaXplJiBzaXpl
LCAvLyBGSVhNRTogaG93IGRvIHdlIHVzZSB0aGlzPwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
OCArMTc3LDYgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywKICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1
bWVudChXZWJDb3JlOjpQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jl
c291cmNlRnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQYWdlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mLApJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTExMjY3KQorKysgU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMg
dGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGll
bnRFZmwpOgorCiAyMDEyLTAzLTE2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSQpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjksMzAgKzMyOSw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjoK
ICAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKG1fdmlldywgbV9mcmFtZSwgbmFtZSwg
b3duZXJFbGVtZW50LCB1cmwsIHJlZmVycmVyKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAgICBB
U1NFUlQobV9mcmFtZSk7Ci0KLSAgICBGcmFtZSogY3VycmVudEZyYW1lID0gRVdLUHJpdmF0ZTo6
Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIEV2YXNfT2JqZWN0KiBjdXJyZW50VmlldyA9IGV3a19m
cmFtZV92aWV3X2dldChtX2ZyYW1lKTsKLSAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBjdXJyZW50
RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7Ci0KLSAgICBGcmFtZUxvYWRlckNsaWVudEVmbCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGllbnRFZmwqPihwYXJlbnRGcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpKTsKLSAgICBFdmFzX09iamVjdCogY2xpZW50RnJhbWUgPSBjbGllbnQg
PyBjbGllbnQtPndlYkZyYW1lKCkgOiAwOwotICAgIEV2YXNfT2JqZWN0KiBjbGllbnRWaWV3ID0g
ZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNsaWVudEZyYW1lKTsKLQotICAgIGlmIChjdXJyZW50VmlldyAh
PSBjbGllbnRWaWV3KSB7Ci0gICAgICAgIGV3a19mcmFtZV92aWV3X3NldChtX2ZyYW1lLCBjbGll
bnRWaWV3KTsKLSAgICAgICAgbV92aWV3ID0gY2xpZW50VmlldzsKLSAgICB9Ci0KLSAgICBBU1NF
UlQoZXdrX3ZpZXdfY29yZV9wYWdlX2dldChld2tfZnJhbWVfdmlld19nZXQobV9mcmFtZSkpID09
IGN1cnJlbnRGcmFtZS0+cGFnZSgpKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFBhZ2UqKQotewotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBBU1NF
UlQoIW1fcGx1Z2luVmlldyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExMTI0MykK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw4ICsxMzIsNiBAQCBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEVmbCA6IHB1YmxpYyBGcmFtCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoUGFnZSopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZy
b21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6UGFnZSopOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdp
bihXaWRnZXQqIHBsdWdpbldpZGdldCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTEyNjcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJD
bGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKEZy
YW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wMy0xNiAgVmljdG9yIEx1Y2VybyAgPHZpY3Rvci5s
dWNlcm9AaXBhcnRuZXIuY2w+CiAKICAgICAgICAgW0dUS10gV2ViS2l0V2ViUmVzb3VyY2U6Omxv
YWQtZmFpbGVkIHVzZXMgdGhlIHdyb25nIG1hcnNoYWxsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDM1ICs1MzIs
NiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlCiAgICAgcmV0dXJu
IGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRU
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKQotewotICAgIEFT
U0VSVChtX2ZyYW1lKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgZnJhbWUncyB3ZWJ2aWV3IHRvIHRo
ZSBuZXcgcGFyZW50J3Mgd2Vidmlldy4KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX2Zy
YW1lKTsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2Zy
YW1lKTsKLQotICAgIEZyYW1lKiBwYXJlbnRDb3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS0+
cGFyZW50KCk7Ci0gICAgV2ViS2l0V2ViRnJhbWUqIHBhcmVudEtpdEZyYW1lID0ga2l0KHBhcmVu
dENvcmVGcmFtZSk7Ci0gICAgV2ViS2l0V2ViVmlldyogcGFyZW50V2ViVmlldyA9IGdldFZpZXdG
cm9tRnJhbWUocGFyZW50S2l0RnJhbWUpOwotICAgIGlmICh3ZWJWaWV3ICE9IHBhcmVudFdlYlZp
ZXcpCi0gICAgICAgIG1fZnJhbWUtPnByaXYtPndlYlZpZXcgPSBwYXJlbnRXZWJWaWV3OwotCi0g
ICAgQVNTRVJUKGNvcmUoZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSkgPT0gY29yZUZyYW1lLT5w
YWdlKCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNv
dXJjZUZyb21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UGFnZSogb2xkUGFnZSkKLXsK
LSAgICBBU1NFUlQob2xkUGFnZSAhPSBjb3JlKG1fZnJhbWUpLT5wYWdlKCkpOwotCi0gICAgR093
blB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhsb2FkZXItPmlkZW50aWZpZXIo
KSkpOwotICAgIEFTU0VSVCghd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZShnZXRWaWV3RnJv
bUZyYW1lKG1fZnJhbWUpLCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKSk7Ci0KLSAgICBhc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChsb2FkZXItPmlkZW50aWZpZXIoKSwgbG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKLQotICAgIHdlYmtpdF93ZWJfdmlld19yZW1vdmVf
cmVzb3VyY2Uoa2l0KG9sZFBhZ2UpLCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKLX0KLQogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpCiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpblZpZXcpOwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsOCArMTE1LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRv
TmV3RG9jdW1lbnQoV2ViQ29yZTo6UGFnZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNm
ZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRn
ZXQpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiBwYXJhbVZhbHVlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQg
bWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisKIDIwMTItMDMtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAyNzk5Nz4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsOCArMTk4LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxs
b3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdl
YkNvcmU6OlBhZ2UqIG9sZFBhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
ckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UGFnZSogb2xkUGFnZSk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25z
dCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzODYsMjIgKzEzODYsNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSogb2xkUGFnZSkKLXsKLX0KLQot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFn
ZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgUGFnZSogb2xkUGFnZSkKLXsKLSAgICBBU1NFUlQob2xkUGFnZSAhPSBjb3JlKG1f
d2ViRnJhbWUuZ2V0KCkpLT5wYWdlKCkpOwotCi0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
ID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgQVNTRVJUKCFbZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKSBfb2JqZWN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyXSk7Ci0KLSAgICBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIG9yaWdpbmFsUmVxdWVzdCk7Ci0KLSAgICBba2l0KG9sZFBhZ2UpIF9yZW1vdmVP
YmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXJdOwotfQotCiBPYmplY3RDb250ZW50VHlwZSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZy
YW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAg
ICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQpOgorCiAyMDEyLTAzLTE2ICBUZWVtdSBLYXRhamlz
dG8gIDx0ZWVtdS5rYXRhamlzdG9AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQg
ZG9jdW1lbnRhdGlvbiBtaXNzaW5nIGEgZmV3IHNpbmNlIDQuNiBpbmZvcm1hdGlvbgpJbmRleDog
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY2
LDI4ICsxMzY2LDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Ywog
ICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSopCi17
Ci0gICAgQVNTRVJUKG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKLQotICAgIGlmICghbV93ZWJG
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV93ZWJG
cmFtZS0+ZC0+ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7Ci0gICAgQVNTRVJUKHBhcmVudEZyYW1l
KTsKLQotICAgIGlmIChRV2ViRnJhbWUqIHBhcmVudCA9IFFXZWJGcmFtZVByaXZhdGU6OmtpdChw
YXJlbnRGcmFtZSkpIHsKLSAgICAgICAgbV93ZWJGcmFtZS0+ZC0+c2V0UGFnZShwYXJlbnQtPnBh
Z2UoKSk7Ci0KLSAgICAgICAgaWYgKG1fd2ViRnJhbWUtPnBhcmVudCgpICE9IHFvYmplY3RfY2Fz
dDxRT2JqZWN0Kj4ocGFyZW50KSkKLSAgICAgICAgICAgIG1fd2ViRnJhbWUtPnNldFBhcmVudChw
YXJlbnQpOwotICAgIH0KLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp0cmFuc2Zlckxv
YWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFnZSopCi17Ci19Ci0KIE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgLy8gcURl
YnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnN0cmluZygpPDwiLCBtaW1l
ID0gIjw8bWltZVR5cGVJbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDggKzIwNyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Ny
b2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
bW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0
aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOgorCiAyMDEyLTAzLTEz
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBOT1RJRklD
QVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsMzMgKzc2Miw2IEBA
IFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKLSAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0ga2l0KGNvcmVGcmFtZS0+cGFnZSgpKTsKLSAgICBpZiAobV93ZWJGcmFtZS0+
d2ViVmlldygpICE9IHdlYlZpZXcpCi0gICAgICAgIG1fd2ViRnJhbWUtPnNldFdlYlZpZXcod2Vi
Vmlldyk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zZmVyTG9hZGluZ1Jl
c291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQotewotICAgIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KGxvYWRlci0+aWRlbnRpZmllcigpLCBsb2FkZXItPmRvY3VtZW50TG9hZGVy
KCksIHJlcXVlc3QpOwotCi0gICAgV2ViVmlldyogb2xkV2ViVmlldyA9IGtpdChvbGRQYWdlKTsK
LSAgICBpZiAoIW9sZFdlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2Vi
UmVzb3VyY2VMb2FkRGVsZWdhdGU+IG9sZFJlc291cmNlTG9hZERlbGVnYXRlOwotICAgIGlmIChG
QUlMRUQob2xkV2ViVmlldy0+cmVzb3VyY2VMb2FkRGVsZWdhdGUoJm9sZFJlc291cmNlTG9hZERl
bGVnYXRlKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGVQcml2YXRlMj4gb2xkUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlMihRdWVyeSwg
b2xkUmVzb3VyY2VMb2FkRGVsZWdhdGUpOwotICAgIGlmICghb2xkUmVzb3VyY2VMb2FkRGVsZWdh
dGVQcml2YXRlMikKLSAgICAgICAgcmV0dXJuOwotICAgIG9sZFJlc291cmNlTG9hZERlbGVnYXRl
UHJpdmF0ZTItPnJlbW92ZUlkZW50aWZpZXJGb3JSZXF1ZXN0KG9sZFdlYlZpZXcsIGxvYWRlci0+
aWRlbnRpZmllcigpKTsKLX0KLQogUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
Y3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJD
b3JlOjpQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJv
bVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpQYWdlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgYm9vbCBsb2FkTWFudWFsbHkpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdp
YyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBGcmFtZUxvYWRlckNsaWVudCBtZXRob2RzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UpOgorCiAyMDEyLTAz
LTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBOT1RJ
RklDQVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V2luQ0UuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzIsMTQgKzE3Miw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UK
ICAgICByZXR1cm4gbV93ZWJWaWV3LT5jcmVhdGVGcmFtZSh1cmwsIG5hbWUsIG93bmVyRWxlbWVu
dCwgcmVmZXJyZXIsIGFsbG93c1Njcm9sbGluZywgbWFyZ2luV2lkdGgsIG1hcmdpbkhlaWdodCk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudChQYWdlKikKLXsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQp
CiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpblZpZXcpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNv
cmU6OlBhZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9t
UGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gMTExMjY3KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlm
cmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEyLTAzLTE1ICBLZXZpbiBPbGxp
dmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIE1vdmUgd3ggcG9ydCB0
byB1c2luZyBleHBvcnQgbWFjcm9zCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMTEyNDMp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkwMCwxNCArOTAwLDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4g
RnJhbWVMb2FkZXJDbGllbnRXeDo6YwogICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KFBhZ2UqKQotewotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQYWdlKikKLXsKLX0KLQogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnRXeDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBj
b3B5KQpAQCAtMjExLDggKzIxMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KFBhZ2UqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJv
bVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVh
bGx5KSA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQq
IHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxs
SGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132751</attachid>
            <date>2012-03-19 21:06:01 -0700</date>
            <delta_ts>2012-03-19 21:13:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81590-20120319210600.patch</filename>
            <type>text/plain</type>
            <size>79665</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAzLTE5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJt
YWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZSwgd2hpY2gg
cHJldmlvdXNseSBhbGxvd2VkCisgICAgICAgIGFuIGlmcmFtZSB0byBiZSB0cmFuc2ZlcmVkIGZy
b20gb25lIGRvY3VtZW50IHRvIGFub3RoZXIgd2l0aG91dAorICAgICAgICByZWxvYWRpbmcgdGhl
IGlmcmFtZS4gIFRoZSBpZGVhIGJlaGluZCB0aGlzIGZlYXR1cmUgd2FzIHRvIGxldCBzaXRlcwor
ICAgICAgICBjcmVhdGUgInBvcCBvdXQiIHdpbmRvd3MgdGhhdCBjb3VsZCBvdXRsaXZlIHRoZWly
IHBhcmVudHMgYnkKKyAgICAgICAgdHJhbnNmZXJpbmcgc3RhdGUgdG8gdGhlc2Ugd2luZG93cyB2
aWEgdGhlc2UgbWFnaWMgaWZyYW1lcy4KKworICAgICAgICBVbmZvcnVudGF0ZWx5LCB0aGlzIGZl
YXR1cmUgd2FzIG5ldmVyIGltcGxlbWVudGVkIGJ5IG90aGVyIGJyb3dzZXJzIGFuZAorICAgICAg
ICBoYXMgYmVlbiB0aGUgc291cmNlIG9mIGEgc2VyaWVzIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxp
dGllcy4gIEFsdGhvdWdoCisgICAgICAgIHdlIGhhdmUgZml4ZWQgZWFjaCB2dWxuZXJhYmlsaXR5
IGFzIGl0IGhhcyBiZWVuIGRpc2NvdmVyZWQsIHRoZSBmZWF0dXJlCisgICAgICAgIGlzIHN0aWxs
IGEgY29tcGxleCBjb3JuZXIgY2FzZSB0aGF0IGlzbid0IHdpZGVseSBleGVyY2lzZWQgb24gdGhl
IHdlYi4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCBpdCdzIGxpa2VseSB0byBoYXZlIG1vcmUg
dnVsbmVyYWJpbGl0aWVzIGluIHRoZQorICAgICAgICBmdXR1cmUuCisKKyAgICAgICAgSSdtIG5v
dCBhd2FyZSBvZiBhbnkgd2ViIHNpdGVzIHRoYXQgdXNlIHRoaXMgZmVhdHVyZSBhbnltb3JlLiAg
VGhlcmUKKyAgICAgICAgd2VyZSBhIGhhbmRmdWwgb2YgdGhlbSwgYnV0IHdlIGFwcGVhciB0byBo
YXZlIGJlZW4gc3VjY2Vzc2Z1bCBpbgorICAgICAgICBldmFuZ2FsaXppbmcgdGhlbSB0byBtb3Zl
IGF3YXkgZnJvbSAibWFnaWMiIGlmcmFtZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OkhUTUxGcmFtZUVsZW1lbnRCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoSFRN
TEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoK
KyAgICAgICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaDoKKyAgICAgICAgKFJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKEZyYW1lKToKKwogMjAxMi0wMy0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODQ4NTc1PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTE2CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MSwxNSArOTQxLDE0IEBAIFBhc3NSZWZQdHI8Tm9k
ZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXMKICAgICAgICAgYnJlYWs7CiAgICAgfSAgICAgICAK
ICAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogV2hhdCBhYm91dCA8ZnJhbWU+IGFuZCA8
b2JqZWN0Pj8KICAgICAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CiAg
ICAgICAgICAgICBIVE1MSUZyYW1lRWxlbWVudCogaWZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTElG
cmFtZUVsZW1lbnQqPihzb3VyY2UuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihpZnJhbWUtPmNvbnRlbnRGcmFtZSgpKSkg
ewogICAgICAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWZyYW1lLT5zZXRS
ZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZShhdHRhY2hlZCgpICYmIHNvdXJjZS0+YXR0YWNo
ZWQoKSAmJiBpZnJhbWUtPmNhblJlbWFpbkFsaXZlT25SZW1vdmFsRnJvbVRyZWUoKSk7CiAgICAg
ICAgIH0KLQogICAgICAgICBpZiAoc291cmNlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBz
b3VyY2UtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQoc291cmNlLmdldCgpLCBlYyk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJ
KHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw0MSArNDQsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi0vLyBIZWxwZXIgdG8gY2hl
Y2sgaWYgdGhlIEZyYW1lJ3MgZG9jdW1lbnQgY29udGFpbnMgZWxlbWVudHMgdGhhdCBjYW4gaW5z
dGFudGlhdGUgcGx1Z2lucy4KLS8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgZm9yIG5lc3RlZCBG
cmFtZXMgdG9vLgotc3RhdGljIGJvb2wgaGFzUGx1Z2luRWxlbWVudHMoRnJhbWUqIGZyYW1lKQot
ewotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFNlYXJj
aCBmb3IgYSBwbHVnaW4gZWxlbWVudCBpbiB0aGlzIGRvY3VtZW50LgotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3Vt
ZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGRv
Y3VtZW50KSkgewotICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoZW1iZWRU
YWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gRG8gdGhlIHNhbWUgZm9yIHRoZSBuZXN0ZWQgZnJh
bWVzLgotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
IGlmIChoYXNQbHVnaW5FbGVtZW50cyhjaGlsZCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRnJhbWVPd25lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX3Njcm9sbGluZyhTY3JvbGxiYXJBdXRvKQogICAgICwgbV9tYXJnaW5XaWR0
aCgtMSkKICAgICAsIG1fbWFyZ2luSGVpZ2h0KC0xKQotICAgICwgbV9jaGVja0luRG9jdW1lbnRU
aW1lcih0aGlzLCAmSFRNTEZyYW1lRWxlbWVudEJhc2U6OmNoZWNrSW5Eb2N1bWVudFRpbWVyRmly
ZWQpCiAgICAgLCBtX3ZpZXdTb3VyY2UoZmFsc2UpCi0gICAgLCBtX3JlbWFpbnNBbGl2ZU9uUmVt
b3ZhbEZyb21UcmVlKGZhbHNlKQogewogfQogCkBAIC0xODAsMjQgKzE1MSwxMCBAQCB2b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlCiAgICAgb3BlblVSTCgpOwogfQogCi12
b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1cGRhdGVPblJlcGFyZW50aW5nKCkKLXsKLSAgICBB
U1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSk7Ci0KLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gY29udGVudEZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KCk7Ci19Ci0KIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCk7CiAKLSAgICBpZiAobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJl
ZSkgewotICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5nKCk7Ci0gICAgICAgIG1fcmVtYWluc0Fs
aXZlT25SZW1vdmFsRnJvbVRyZWUgPSBmYWxzZTsKLSAgICAgICAgbV9jaGVja0luRG9jdW1lbnRU
aW1lci5zdG9wKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgLy8gRG9jdW1lbnRGcmFn
bWVudHMgZG9uJ3Qga2ljayBvZiBhbnkgbG9hZHMuCiAgICAgaWYgKCFkb2N1bWVudCgpLT5mcmFt
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzcsNDcgKzIzNCw2IEBAIGludCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6aGVpZ2h0KCkKICAgICByZXR1cm4gcmVuZGVyQm94KCktPmhlaWdodCgpOwog
fQogCi0vLyBTb21lIHR5cGVzIG9mIGNvbnRlbnQgY2FuIHJlc3RyaWN0IHRoZSBhYmlsaXR5IHRv
IG1vdmUgdGhlIGlmcmFtZXMgYmV0d2VlbiBwYWdlcy4KLS8vIEZvciBleGFtcGxlLCB0aGUgcGx1
Z2luIGluZnJhc3RydWN0dXJlIG9mIGFuIGVtYmVkZGVyIG1heSBhc3NvY2lhdGUgdGhlIHBsdWdp
biBpbnN0YW5jZXMKLS8vIHdpdGggdGhlIHRvcC1sZXZlbCBGcmFtZSBmb3IgdHJhY2tpbmcgdmFy
aW91cyByZXNvdXJjZXMgYW5kIGZhaWx1cmUgdG8gdHJhbnNmZXIgdGhvc2UKLS8vIHJlc291cmNl
cyBjb3JyZWN0bHkgbWF5IGxlYWQgdG8gY3Jhc2hlcyBhbmQgb3RoZXIgaWxsIGVmZmVjdHMgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODI2NykKLWJvb2wgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmNhblJlbWFpbkFsaXZlT25SZW1vdmFsRnJvbVRyZWUoKQotewotICAg
IHJldHVybiAhaGFzUGx1Z2luRWxlbWVudHMoY29udGVudEZyYW1lKCkpOwotfQotCi12b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRSZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZShib29s
IHZhbHVlKQotewotICAgIEFTU0VSVCghdmFsdWUgfHwgY2FuUmVtYWluQWxpdmVPblJlbW92YWxG
cm9tVHJlZSgpKTsKLSAgICBtX3JlbWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlID0gdmFsdWU7
Ci0KLSAgICAvLyBUaGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgSlMgd2lsbCBkbyBkb2N1bWVu
dC5hZG9wdE5vZGUoKSBvbiB0aGlzIGVsZW1lbnQgYnV0IHdpbGwgbm90IGluc2VydCBpdCBpbnRv
IHRoZSB0cmVlLgotICAgIC8vIFN0YXJ0IHRoZSBhc3luYyB0aW1lciB0aGF0IGlzIG5vcm1hbGx5
IHN0b3BwZWQgYnkgYXR0YWNoKCkuIElmIGl0J3Mgbm90IHN0b3BwZWQgYW5kIGZpcmVzLCBpdCds
bCB1bmxvYWQgdGhlIGZyYW1lLgotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgbV9jaGVja0luRG9j
dW1lbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fY2hlY2tJ
bkRvY3VtZW50VGltZXIuc3RvcCgpOwotICAgICAgICB3aWxsUmVtb3ZlKCk7Ci0gICAgfQotfQot
Ci12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjaGVja0luRG9jdW1lbnRUaW1lckZpcmVkKFRp
bWVyPEhUTUxGcmFtZUVsZW1lbnRCYXNlPiopCi17Ci0gICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsK
LSAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSk7Ci0KLSAgICBtX3Jl
bWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlID0gZmFsc2U7Ci0gICAgd2lsbFJlbW92ZSgpOwot
fQotCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp3aWxsUmVtb3ZlKCkKLXsKLSAgICBpZiAo
bV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50Ojp3aWxsUmVtb3ZlKCk7Ci19Ci0KICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiBib29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphbGxvd0Z1bGxTY3JlZW4o
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJh
c2UuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw2IEBAIHB1YmxpYzoKICAg
ICBpbnQgd2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0KCk7CiAKLSAgICBib29sIGNhblJlbWFpbkFs
aXZlT25SZW1vdmFsRnJvbVRyZWUoKTsKLSAgICB2b2lkIHNldFJlbWFpbnNBbGl2ZU9uUmVtb3Zh
bEZyb21UcmVlKGJvb2wpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dGdWxsU2NyZWVuKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTY2LDEwICs2NCw2IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpOwotICAgIHZvaWQgY2hl
Y2tJbkRvY3VtZW50VGltZXJGaXJlZChUaW1lcjxIVE1MRnJhbWVFbGVtZW50QmFzZT4qKTsKLSAg
ICB2b2lkIHVwZGF0ZU9uUmVwYXJlbnRpbmcoKTsKLQogICAgIGJvb2wgdmlld1NvdXJjZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdTb3VyY2U7IH0KIAogICAgIHZvaWQgc2V0TmFtZUFuZE9w
ZW5VUkwoKTsKQEAgLTgzLDIwICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luV2lk
dGg7CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogCi0gICAgLy8gVGhpcyBpcyBhIHBlcmZvcm1h
bmNlIG9wdGltaXphdGlvbiBzb21lIGNhbGwgIm1hZ2ljIGlmcmFtZSIgd2hpY2ggYXZvaWRzCi0g
ICAgLy8gdGVhcmluZyBkb3duIHRoZSBmcmFtZSBoaWVyYXJjaHkgd2hlbiBhIHdlYiBwYWdlIGNh
bGxzIGFkb3B0Tm9kZSBvbiBhCi0gICAgLy8gZnJhbWUgb3duaW5nIGVsZW1lbnQgYnV0IGRvZXMg
bm90IGltbWVkaWF0ZWx5IGluc2VydCBpdCBpbnRvIHRoZSBuZXcKLSAgICAvLyBkb2N1bWVudCBi
ZWZvcmUgSmF2YVNjcmlwdCB5aWVsZHMgdG8gV2ViQ29yZS4gIElmIHRoZSBlbGVtZW50IGlzIG5v
dCB5ZXQKLSAgICAvLyBpbiBhIGRvY3VtZW50IGJ5IHRoZSB0aW1lIHRoaXMgdGltZXIgZmlyZXMs
IHRoZSBmcmFtZSBoaWVyYXJjaHkgdGVhcmRvd24KLSAgICAvLyB3aWxsIGNvbnRpbnVlLiAgVGhp
cyBjYW4gYWxzbyBiZSBzZWVuIGFzIGltcGxlbWVudGF0aW9uIG9mOgotICAgIC8vICJSZW1vdmlu
ZyBhbiBpZnJhbWUgZnJvbSBhIERvY3VtZW50IGRvZXMgbm90IGNhdXNlIGl0cyBicm93c2luZyBj
b250ZXh0Ci0gICAgLy8gdG8gYmUgZGlzY2FyZGVkLiBJbmRlZWQsIGFuIGlmcmFtZSdzIGJyb3dz
aW5nIGNvbnRleHQgY2FuIHN1cnZpdmUgaXRzCi0gICAgLy8gb3JpZ2luYWwgcGFyZW50IERvY3Vt
ZW50IGlmIGl0cyBpZnJhbWUgaXMgbW92ZWQgdG8gYW5vdGhlciBEb2N1bWVudC4iCi0gICAgLy8g
RnJvbSBIVE1MNTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdGhlLWlmcmFtZS1lbGVtZW50Lmh0bWwjdGhlLWlmcmFtZS1lbGVtZW50
Ci0gICAgVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+IG1fY2hlY2tJbkRvY3VtZW50VGltZXI7
Ci0KICAgICBib29sIG1fdmlld1NvdXJjZTsKLSAgICBib29sIG1fcmVtYWluc0FsaXZlT25SZW1v
dmFsRnJvbVRyZWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1MCwyNCArODUwLDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VMb2FkZXJG
aQogICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNoZWNrTG9hZENvbXBsZXRlKCk7ICAgIAogfQog
Ci12b2lkIERvY3VtZW50TG9hZGVyOjp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9tUGFnZShQ
YWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQYWdlICE9IG1fZnJhbWUtPnBhZ2UoKSk7
Ci0KLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWVMb2FkZXIoKTsKLSAgICBBU1NFUlQo
bG9hZGVyKTsKLQotICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKLSAgICAgICAgbG9h
ZGVyLT5kaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UobV9tYWluUmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIG9yaWdpbmFsUmVxdWVzdCgpLCBvbGRQYWdlKTsKLQotICAgIGlmIChp
c0xvYWRpbmdTdWJyZXNvdXJjZXMoKSkgewotICAgICAgICBSZXNvdXJjZUxvYWRlclNldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3N1YnJlc291cmNlTG9hZGVycy5iZWdpbigpOwotICAgICAgICBS
ZXNvdXJjZUxvYWRlclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdWJyZXNvdXJjZUxvYWRl
cnMuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBs
b2FkZXItPmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZSgoKml0KS5nZXQo
KSwgKCppdCktPm9yaWdpbmFsUmVxdWVzdCgpLCBvbGRQYWdlKTsKLSAgICB9Ci19Ci0KIHZvaWQg
RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogewog
ICAgIGlmICghZG9lc1Byb2dyZXNzaXZlTG9hZChtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMTExMjQz
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMSw4ICsyMjEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9p
ZCBzdWJyZXNvdXJjZUxvYWRlckZpbmlzaGVkTG9hZGluZ09uZVBhcnQoUmVzb3VyY2VMb2FkZXIq
KTsKIAotICAgICAgICB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKFBhZ2Uq
KTsKLQogICAgICAgICB2b2lkIG1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKTsK
IAogICAgICAgICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBkZWZlcikg
eyBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgPSBkZWZlcjsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsOCArMzc0LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKikgeyB9CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50
U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IHJldHVybiAwOyB9CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDYsMjIgKzE2NDYsNiBAQCBib29sIEZyYW1l
TG9hZGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpIHx8IChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIgJiYgIW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSk7IAogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9t
UGFnZShQYWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQYWdlICE9IG1fZnJhbWUtPnBh
Z2UoKSk7Ci0gICAgaWYgKGlzTG9hZGluZygpKSB7Ci0gICAgICAgIGFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKG9sZFBhZ2UpOwotICAgICAg
ICBvbGRQYWdlLT5wcm9ncmVzcygpLT5wcm9ncmVzc0NvbXBsZXRlZChtX2ZyYW1lKTsKLSAgICAg
ICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+cHJv
Z3Jlc3MoKS0+cHJvZ3Jlc3NTdGFydGVkKG1fZnJhbWUpOwotICAgIH0KLX0KLQotdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSogb2xk
UGFnZSkKLXsKLSAgICBub3RpZmllcigpLT5kaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UobG9hZGVyLCByZXF1ZXN0LCBvbGRQYWdlKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRl
cjo6c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAo
IWxvYWRlciAmJiAhbV9kb2N1bWVudExvYWRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2FkaW5n
TWFpblJlc291cmNlOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICBib29sIGZy
YW1lSGFzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNG
cm9tUGFnZShQYWdlKik7Ci0gICAgdm9pZCBkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7
CiAKICAgICBpbnQgbnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29u
c3Q7CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niwx
MCArMjU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFu
c2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqIG9sZFBhZ2UpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKiBvbGRQYWdlKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAJ
KHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxNCArMTQ0LDYgQEAgdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaQogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQ
YWdlICE9IG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT50cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKGxvYWRlciwgcmVxdWVzdCwgb2xkUGFn
ZSk7Ci0KLSAgICBvbGRQYWdlLT5wcm9ncmVzcygpLT5jb21wbGV0ZVByb2dyZXNzKGxvYWRlci0+
aWRlbnRpZmllcigpKTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCShyZXZpc2lv
biAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICB2b2lkIGRpc3BhdGNo
VHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFBhZ2UqKTsKIAogICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDYyICs3MTcsNiBAQCB2b2lkIEZyYW1lOjpk
aXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICBtX293bmVyRWxlbWVudCA9IDA7CiB9CiAKLS8v
IFRoZSBmcmFtZSBpcyBtb3ZlZCBpbiBET00sIHBvdGVudGlhbGx5IHRvIGFub3RoZXIgcGFnZS4K
LXZvaWQgRnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQotewotICAgIEFT
U0VSVChtX293bmVyRWxlbWVudCk7Ci0gICAgRnJhbWUqIG5ld1BhcmVudCA9IG1fb3duZXJFbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIEFTU0VSVChuZXdQYXJlbnQpOwotICAgIGJv
b2wgZGlkVHJhbnNmZXIgPSBmYWxzZTsKLQotICAgIC8vIFN3aXRjaCBwYWdlLgotICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBuZXdQYXJlbnQtPnBhZ2UoKTsKLSAgICBQYWdlKiBvbGRQYWdlID0gbV9wYWdl
OwotICAgIGlmIChtX3BhZ2UgIT0gbmV3UGFnZSkgewotICAgICAgICBpZiAobV9wYWdlKSB7Ci0g
ICAgICAgICAgICBpZiAobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCkg
PT0gdGhpcykKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRG
b2N1c2VkRnJhbWUoMCk7Ci0KLSAgICAgICAgICAgICBtX3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291
bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2RvbVdpbmRvdykgewotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgICAg
ICAgICBtX2RvbVdpbmRvdy0+cmVzZXROb3RpZmljYXRpb25zKCk7Ci0jZW5kaWYKLSAgICAgICAg
fQotCi0gICAgICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9y
IHN0b3AgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hT
ZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIGl0ID0gbV9kZXN0cnVjdGlv
bk9ic2VydmVycy5iZWdpbigpOyBpdCAhPSBzdG9wOyArK2l0KQotICAgICAgICAgICAgKCppdCkt
PndpbGxEZXRhY2hQYWdlKCk7Ci0KLSAgICAgICAgbV9wYWdlID0gbmV3UGFnZTsKLQotICAgICAg
ICBpZiAobmV3UGFnZSkKLSAgICAgICAgICAgIG5ld1BhZ2UtPmluY3JlbWVudEZyYW1lQ291bnQo
KTsKLQotICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRl
IHRoZSBmcmFtZSB0cmVlLgotICAgIGRpZFRyYW5zZmVyID0gbmV3UGFyZW50LT50cmVlKCktPnRy
YW5zZmVyQ2hpbGQodGhpcykgfHwgZGlkVHJhbnNmZXI7Ci0KLSAgICAvLyBBdm9pZCB1bm5lY2Vz
c2FyeSBjYWxscyB0byBjbGllbnQgYW5kIGZyYW1lIHN1YnRyZWUgaWYgdGhlIGZyYW1lIGVuZGVk
Ci0gICAgLy8gdXAgb24gdGhlIHNhbWUgcGFnZSBhbmQgdW5kZXIgdGhlIHNhbWUgcGFyZW50IGZy
YW1lLgotICAgIGlmIChkaWRUcmFuc2ZlcikgewotICAgICAgICAvLyBMZXQgZXh0ZXJuYWwgY2xp
ZW50cyB1cGRhdGUgdGhlbXNlbHZlcy4KLSAgICAgICAgbG9hZGVyKCktPmNsaWVudCgpLT5kaWRU
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KG9sZFBhZ2UpOwotCi0gICAgICAgIC8vIFVw
ZGF0ZSByZXNvdXJjZSB0cmFja2luZyBub3cgdGhhdCBmcmFtZSBjb3VsZCBiZSBpbiBhIGRpZmZl
cmVudCBwYWdlLgotICAgICAgICBpZiAob2xkUGFnZSAhPSBuZXdQYWdlKQotICAgICAgICAgICAg
bG9hZGVyKCktPnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKG9sZFBhZ2UpOwotCi0g
ICAgICAgIC8vIERvIHRoZSBzYW1lIGZvciBhbGwgdGhlIGNoaWxkcmVuLgotICAgICAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgY2hpbGQtPnRyYW5zZmVyQ2hp
bGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKLSAgICB9Ci19Ci0KIFN0cmluZyBGcmFtZTo6ZG9jdW1l
bnRUeXBlU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0g
ZG9jdW1lbnQoKS0+ZG9jdHlwZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTEx
MjQzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsOCArMTEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZW5kZXJWaWV3KiBj
b250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVuZGVyIHRyZWUgZm9yIHRo
ZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICAgICAgUmVuZGVyUGFydCog
b3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBmb3IgdGhlIGVsZW1lbnQgdGhhdCBj
b250YWlucyB0aGlzIGZyYW1lLgogCi0gICAgICAgIHZvaWQgdHJhbnNmZXJDaGlsZEZyYW1lVG9O
ZXdEb2N1bWVudCgpOwotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgICAg
IHZvaWQgZGlzcGF0Y2hWaXNpYmlsaXR5U3RhdGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0
aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAg
ICAgKEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpZERldGVjdFhTUyk6CisKIDIwMTItMDMtMTkgIFR5
bGVyIEFiYm90dCAgPHRhYmJvdHRAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gc3Bl
ZWQgdXAgdGV4dCBzZWxlY3Rpb24gZm9yIGxhcmdlIHNlbGVjdGlvbnMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisr
KyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDE3ICs3NDAsNiBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudEJsYWNrCiAgICAgcmV0dXJuIGNoaWxkRnJh
bWUucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlk
VHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKiAvKm9sZFBhZ2UqLykKLXsKLSAg
ICBQYWdlKiBuZXdQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIG1fd2ViUGFnZVByaXZhdGUg
PSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRCbGFja0JlcnJ5Kj4obmV3UGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpKS0+d2ViUGFnZVByaXZhdGUoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnk6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgU3RyaW5nIG1p
bWVUeXBlID0gbWltZVR5cGVJbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4LDcgKzE0OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxl
dEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KQEAgLTE2NCw4ICsx
NjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShjb25z
dCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmwsIGNv
bnN0IFN0cmluZyYgaWNvblVybCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVz
b3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBh
Z2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVu
dCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhJY29uVHlwZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9OwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoSFRNTEZvcm1FbGVtZW50KikgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gMTExMjY3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJh
bWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAq
IHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVDbGllbnQpOgorICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxv
YWRlckNsaWVudEltcGwpOgorCiAyMDEyLTAzLTE5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggV1RGIGhlYWRlciBpbmNsdWRlIGRpc2NpcGxpbmUgaW4gQ2hy
b21pdW0gV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxMCArMjg0
LDYgQEAgcHVibGljOgogICAgIC8vIEEgcmVmbGVjdGVkIFhTUyB3YXMgZW5jb3VudGVyZWQgaW4g
dGhlIHBhZ2UgYW5kIHN1cHByZXNzZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhX
ZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSB7IH0KIAot
ICAgIC8vIFRoaXMgZnJhbWUgYWRvcHRlZCB0aGUgcmVzb3VyY2UgdGhhdCBpcyBiZWluZyBsb2Fk
ZWQuIFRoaXMgaGFwcGVucyB3aGVuCi0gICAgLy8gYW4gaWZyYW1lLCB0aGF0IGlzIGxvYWRpbmcg
YSBzdWJyZXNvdXJjZSwgaXMgdHJhbnNmZXJyZWQgYmV0d2VlbiB3aW5kb3dzLgotICAgIHZpcnR1
YWwgdm9pZCBkaWRBZG9wdFVSTExvYWRlcihXZWJVUkxMb2FkZXIqKSB7IH0KLQogICAgIC8vIFNj
cmlwdCBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLy8gU2NyaXB0IGluIHRoZSBwYWdlIHRyaWVkIHRvIGFsbG9jYXRl
IHRvbyBtdWNoIG1lbW9yeS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTExMjQzKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1OSwzMyArMTQ1OSw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDoKICAgICByZXR1cm4gbV93ZWJGcmFtZS0+Y3JlYXRlQ2hpbGRGcmFtZShm
cmFtZVJlcXVlc3QsIG93bmVyRWxlbWVudCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqKQotewotICAgIEFT
U0VSVChtX3dlYkZyYW1lLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKSk7Ci0KLSAgICBXZWJGcmFt
ZUltcGwqIG5ld1BhcmVudCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViRnJhbWUt
PnBhcmVudCgpKTsKLSAgICBpZiAoIW5ld1BhcmVudCB8fCAhbmV3UGFyZW50LT5jbGllbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUmVwbGFjZSB0aGUgY2xpZW50IHNpbmNlIHRoZSBv
bGQgY2xpZW50IG1heSBiZSBkZXN0cm95ZWQgd2hlbiB0aGUKLSAgICAvLyBwcmV2aW91cyBwYWdl
IGlzIGNsb3NlZC4KLSAgICBtX3dlYkZyYW1lLT5zZXRDbGllbnQobmV3UGFyZW50LT5jbGllbnQo
KSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp0cmFuc2ZlckxvYWRpbmdSZXNv
dXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUGFnZSogb2xkUGFnZSkKLXsKLSAgICBhc3NpZ25JZGVudGlmaWVyVG9Jbml0
aWFsUmVxdWVzdChsb2FkZXItPmlkZW50aWZpZXIoKSwgbG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCByZXF1ZXN0KTsKLQotICAgIFdlYkZyYW1lSW1wbCogb2xkV2ViRnJhbWUgPSBXZWJGcmFtZUlt
cGw6OmZyb21GcmFtZShvbGRQYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKG9sZFdlYkZyYW1l
ICYmIG9sZFdlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgb2xkV2ViRnJhbWUtPmNsaWVudCgp
LT5yZW1vdmVJZGVudGlmaWVyRm9yUmVxdWVzdChsb2FkZXItPmlkZW50aWZpZXIoKSk7Ci0KLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbG9hZGVyLT5oYW5kbGUoKTsKLSAgICBXZWJVUkxM
b2FkZXIqIHdlYlVSTExvYWRlciA9IFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OkZyb21SZXNvdXJj
ZUhhbmRsZShoYW5kbGUpLT5sb2FkZXIoKTsKLSAgICBpZiAod2ViVVJMTG9hZGVyICYmIG1fd2Vi
RnJhbWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQWRvcHRV
UkxMb2FkZXIod2ViVVJMTG9hZGVyKTsKLX0KLQogUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6Y3JlYXRlUGx1Z2luKAogICAgIGNvbnN0IEludFNpemUmIHNpemUsIC8v
IEZJWE1FOiBob3cgZG8gd2UgdXNlIHRoaXM/CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1l
bnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw4ICsx
NzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLAogICAgICAgICBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KFdlYkNvcmU6OlBhZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VGcm9tUGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLAog
ICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92
ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0
IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEVm
bCk6CisKIDIwMTItMDMtMTYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBmb3IgQmF0dGVyeSBTdGF0dXMgQVBJCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwz
MCArMzI5LDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OgogICAg
IHJldHVybiBld2tfdmlld19mcmFtZV9jcmVhdGUobV92aWV3LCBtX2ZyYW1lLCBuYW1lLCBvd25l
ckVsZW1lbnQsIHVybCwgcmVmZXJyZXIpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqKQotewotICAgIEFTU0VS
VChtX2ZyYW1lKTsKLQotICAgIEZyYW1lKiBjdXJyZW50RnJhbWUgPSBFV0tQcml2YXRlOjpjb3Jl
RnJhbWUobV9mcmFtZSk7Ci0gICAgRXZhc19PYmplY3QqIGN1cnJlbnRWaWV3ID0gZXdrX2ZyYW1l
X3ZpZXdfZ2V0KG1fZnJhbWUpOwotICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZS0+dHJlZSgpLT5wYXJlbnQoKTsKLQotICAgIEZyYW1lTG9hZGVyQ2xpZW50RWZsKiBjbGllbnQg
PSBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEVmbCo+KHBhcmVudEZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCkpOwotICAgIEV2YXNfT2JqZWN0KiBjbGllbnRGcmFtZSA9IGNsaWVudCA/IGNs
aWVudC0+d2ViRnJhbWUoKSA6IDA7Ci0gICAgRXZhc19PYmplY3QqIGNsaWVudFZpZXcgPSBld2tf
ZnJhbWVfdmlld19nZXQoY2xpZW50RnJhbWUpOwotCi0gICAgaWYgKGN1cnJlbnRWaWV3ICE9IGNs
aWVudFZpZXcpIHsKLSAgICAgICAgZXdrX2ZyYW1lX3ZpZXdfc2V0KG1fZnJhbWUsIGNsaWVudFZp
ZXcpOwotICAgICAgICBtX3ZpZXcgPSBjbGllbnRWaWV3OwotICAgIH0KLQotICAgIEFTU0VSVChl
d2tfdmlld19jb3JlX3BhZ2VfZ2V0KGV3a19mcmFtZV92aWV3X2dldChtX2ZyYW1lKSkgPT0gY3Vy
cmVudEZyYW1lLT5wYWdlKCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjp0cmFu
c2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUGFnZSopCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogewogICAgIEFTU0VSVCgh
bV9wbHVnaW5WaWV3KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gMTExMjQzKQorKysg
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDggKzEzMiw2IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
RWZsIDogcHVibGljIEZyYW0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVp
Z2h0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVu
dChQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBh
Z2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpQYWdlKik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdp
ZGdldCogcGx1Z2luV2lkZ2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2
NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlckNsaWVu
dCBtZXRob2RzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnQpOgorCiAyMDEyLTAzLTE2ICBWaWN0b3IgTHVjZXJvICA8dmljdG9yLmx1Y2Vy
b0BpcGFydG5lci5jbD4KIAogICAgICAgICBbR1RLXSBXZWJLaXRXZWJSZXNvdXJjZTo6bG9hZC1m
YWlsZWQgdXNlcyB0aGUgd3JvbmcgbWFyc2hhbGxlcgpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsMzUgKzUzMiw2IEBA
IFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmUKICAgICByZXR1cm4gY2hp
bGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6UGFnZSopCi17Ci0gICAgQVNTRVJU
KG1fZnJhbWUpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBmcmFtZSdzIHdlYnZpZXcgdG8gdGhlIG5l
dyBwYXJlbnQncyB3ZWJ2aWV3LgotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fZnJhbWUp
OwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
OwotCi0gICAgRnJhbWUqIHBhcmVudENvcmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKTsKLSAgICBXZWJLaXRXZWJGcmFtZSogcGFyZW50S2l0RnJhbWUgPSBraXQocGFyZW50Q29y
ZUZyYW1lKTsKLSAgICBXZWJLaXRXZWJWaWV3KiBwYXJlbnRXZWJWaWV3ID0gZ2V0Vmlld0Zyb21G
cmFtZShwYXJlbnRLaXRGcmFtZSk7Ci0gICAgaWYgKHdlYlZpZXcgIT0gcGFyZW50V2ViVmlldykK
LSAgICAgICAgbV9mcmFtZS0+cHJpdi0+d2ViVmlldyA9IHBhcmVudFdlYlZpZXc7Ci0KLSAgICBB
U1NFUlQoY29yZShnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKSA9PSBjb3JlRnJhbWUtPnBhZ2Uo
KSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQYWdlKiBvbGRQYWdlKQotewotICAg
IEFTU0VSVChvbGRQYWdlICE9IGNvcmUobV9mcmFtZSktPnBhZ2UoKSk7Ci0KLSAgICBHT3duUHRy
PGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5nKGxvYWRlci0+aWRlbnRpZmllcigpKSk7
Ci0gICAgQVNTRVJUKCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKGdldFZpZXdGcm9tRnJh
bWUobV9mcmFtZSksIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCkpKTsKLQotICAgIGFzc2lnbklkZW50
aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGxvYWRlci0+aWRlbnRpZmllcigpLCBsb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCksIHJlcXVlc3QpOwotCi0gICAgd2Via2l0X3dlYl92aWV3X3JlbW92ZV9yZXNv
dXJjZShraXQob2xkUGFnZSksIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOwotfQotCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdl
dCkKIHsKICAgICBBU1NFUlQoIW1fcGx1Z2luVmlldyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJl
dmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw4ICsxMTUsNiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdE
b2N1bWVudChXZWJDb3JlOjpQYWdlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zlckxv
YWRpbmdSZXNvdXJjZUZyb21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UGFnZSopOwogICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFB
cHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRF
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IHBhcmFtVmFsdWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlckNsaWVudCBtZXRo
b2RzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbToKKwogMjAxMi0wMy0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDI3OTk3PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDEyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw4ICsxOTgsNiBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVG
cmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29y
ZTo6UGFnZSogb2xkUGFnZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9h
ZGluZ1Jlc291cmNlRnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQYWdlKiBvbGRQYWdlKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0
YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTM4NiwyMiArMTM4Niw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjoKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKiBvbGRQYWdlKQotewotfQotCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJl
c291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBQYWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQYWdlICE9IGNvcmUobV93ZWJG
cmFtZS5nZXQoKSktPnBhZ2UoKSk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBs
b2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICBBU1NFUlQoIVtnZXRXZWJWaWV3KG1fd2ViRnJhbWUu
Z2V0KCkpIF9vYmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXJdKTsKLQotICAgIGFzc2lnbklk
ZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgb3JpZ2luYWxSZXF1ZXN0KTsKLQotICAgIFtraXQob2xkUGFnZSkgX3JlbW92ZU9iamVj
dEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl07Ci19Ci0KIE9iamVjdENvbnRlbnRUeXBlIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gMTExMjY3KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVM
b2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAg
ICAoRnJhbWVMb2FkZXJDbGllbnRRdCk6CisKIDIwMTItMDMtMTYgIFRlZW11IEthdGFqaXN0byAg
PHRlZW11LmthdGFqaXN0b0BkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBRdFdlYktpdCBkb2N1
bWVudGF0aW9uIG1pc3NpbmcgYSBmZXcgc2luY2UgNC42IGluZm9ybWF0aW9uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjYsMjgg
KzEzNjYsNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjCiAgICAg
cmV0dXJuIGZyYW1lRGF0YS5mcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAg
ICBBU1NFUlQobV9mcmFtZS0+b3duZXJFbGVtZW50KCkpOwotCi0gICAgaWYgKCFtX3dlYkZyYW1l
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX3dlYkZyYW1l
LT5kLT5mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKLSAgICBBU1NFUlQocGFyZW50RnJhbWUpOwot
Ci0gICAgaWYgKFFXZWJGcmFtZSogcGFyZW50ID0gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KHBhcmVu
dEZyYW1lKSkgewotICAgICAgICBtX3dlYkZyYW1lLT5kLT5zZXRQYWdlKHBhcmVudC0+cGFnZSgp
KTsKLQotICAgICAgICBpZiAobV93ZWJGcmFtZS0+cGFyZW50KCkgIT0gcW9iamVjdF9jYXN0PFFP
YmplY3QqPihwYXJlbnQpKQotICAgICAgICAgICAgbV93ZWJGcmFtZS0+c2V0UGFyZW50KHBhcmVu
dCk7Ci0gICAgfQotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zZmVyTG9hZGlu
Z1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYWdlKikKLXsKLX0KLQogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
SW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICAvLyBxRGVidWco
KTw8IiArKysrKysrKysrKysrKysrIHVybCBpcyAiPDx1cmwuc3RyaW5nKCk8PCIsIG1pbWUgPSAi
PDxtaW1lVHlwZUluOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDcsOCArMjA3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6UGFnZSopOwotICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6
UGFnZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdl
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3Zl
IHN1cHBvcnQgZm9yICJtYWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlckNsaWVudCBtZXRob2RzIHRoYXQg
bm8gbG9uZ2VyIGV4aXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudCk6CisKIDIwMTItMDMtMTMgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIE5PVElGSUNBVElP
TlMgYW5kIExFR0FDWV9OT1RJRklDQVRJT05TCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MiwzMyArNzYyLDYgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OgogICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNo
aWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwotICAgIEFTU0VSVChjb3JlRnJhbWUpOwotICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBraXQoY29yZUZyYW1lLT5wYWdlKCkpOwotICAgIGlmIChtX3dlYkZyYW1lLT53ZWJW
aWV3KCkgIT0gd2ViVmlldykKLSAgICAgICAgbV93ZWJGcmFtZS0+c2V0V2ViVmlldyh3ZWJWaWV3
KTsKLX0KLQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFBhZ2UqIG9sZFBhZ2UpCi17Ci0gICAgYXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QobG9hZGVyLT5pZGVudGlmaWVyKCksIGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwg
cmVxdWVzdCk7Ci0KLSAgICBXZWJWaWV3KiBvbGRXZWJWaWV3ID0ga2l0KG9sZFBhZ2UpOwotICAg
IGlmICghb2xkV2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElXZWJSZXNv
dXJjZUxvYWREZWxlZ2F0ZT4gb2xkUmVzb3VyY2VMb2FkRGVsZWdhdGU7Ci0gICAgaWYgKEZBSUxF
RChvbGRXZWJWaWV3LT5yZXNvdXJjZUxvYWREZWxlZ2F0ZSgmb2xkUmVzb3VyY2VMb2FkRGVsZWdh
dGUpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElXZWJSZXNvdXJjZUxvYWREZWxl
Z2F0ZVByaXZhdGUyPiBvbGRSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUyKFF1ZXJ5LCBvbGRS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSk7Ci0gICAgaWYgKCFvbGRSZXNvdXJjZUxvYWREZWxlZ2F0ZVBy
aXZhdGUyKQotICAgICAgICByZXR1cm47Ci0gICAgb2xkUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2
YXRlMi0+cmVtb3ZlSWRlbnRpZmllckZvclJlcXVlc3Qob2xkV2ViVmlldywgbG9hZGVyLT5pZGVu
dGlmaWVyKCkpOwotfQotCiBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOCArMTE2LDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6
OlBhZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFn
ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sIGxvYWRNYW51YWxseSk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKIApJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBp
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXaW5DRSk6CisKIDIwMTItMDMtMTMg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIE5PVElGSUNB
VElPTlMgYW5kIExFR0FDWV9OT1RJRklDQVRJT05TCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miwx
NCArMTcyLDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRQogICAg
IHJldHVybiBtX3dlYlZpZXctPmNyZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCBy
ZWZlcnJlciwgYWxsb3dzU2Nyb2xsaW5nLCBtYXJnaW5XaWR0aCwgbWFyZ2luSGVpZ2h0KTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KFBhZ2UqKQotewotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnRy
YW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKikKLXsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsK
ICAgICBBU1NFUlQoIW1fcGx1Z2luVmlldyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAko
cmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0
ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBh
bGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6
UGFnZSopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6UGFnZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFz
ZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdpYyIgaWZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBG
cmFtZUxvYWRlckNsaWVudCBtZXRob2RzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0LgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorICAg
ICAgICAoRnJhbWVMb2FkZXJDbGllbnRXeCk6CisKIDIwMTItMDMtMTUgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgTW92ZSB3eCBwb3J0IHRvIHVz
aW5nIGV4cG9ydCBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTAwLDE0ICs5MDAsNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFt
ZUxvYWRlckNsaWVudFd4OjpjCiAgICAgcmV0dXJuIGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoUGFnZSopCi17Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6dHJhbnNmZXJM
b2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBhZ2UqKQotewotfQotCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVu
dFd4OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTEsOCArMjExLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFn
ZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFn
ZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhZ2UqKTsKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkp
IDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1
Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTExMzQ1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDQgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRlc3RzIG9mIG1hZ2ljIGlm
cmFtZS4gVGhlc2UgdGVzdHMgZG9uJ3QgcmVhbGwgbWFrZSBzZW5zZSB0bworICAgICAgICBrZWVw
IHdpdGhvdXQgdGhlIGZlYXR1cmUuCisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9hZG9wdC1pZnJh
bWUtaW50by1pdHNlbGYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9hZG9wdC1pZnJhbWUtaW50by1pdHNlbGYuaHRtbDogQWRkZWQuCisgICAgICAgICAgICAtIEkn
dmUgYWRkZWQgYSB0ZXN0IGFib3V0IGFkb3B0aW5nIGFuIGlmcmFtZSBpbnRvIGl0c2VsZi4gV2Ug
bWlnaHQKKyAgICAgICAgICAgICAgYWxyZWFkeSBoYXZlIGEgdGVzdCBmb3IgdGhpcywgYnV0IGl0
IGNvdmVycyBhIG1pc3Rha2UgSSBtYWRlIGluCisgICAgICAgICAgICAgIGFuIGVhcmxpZXIgaXRl
cmF0aW9uIG9mIHRoaXMgcGF0Y2guCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLWFkb3B0LW5vZGUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWVtYmVkLWVsZW1lbnRzLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRp
bmctZW1iZWQtZWxlbWVudHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9p
ZnJhbWUtcmVwYXJlbnRpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1mYWlsLWxvYWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1mYWlsLWxvYWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3
LXBhZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFt
ZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
YWRvcHQtbm9kZS1pZnJhbWUtY29udGVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctYWRvcHQtbm9kZS1uZXctcGFnZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVw
YXJlbnRpbmctZW1iZWQtZnJhbWUxLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1pZnJhbWUuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWZy
YW1lMS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJh
bWUtcmVwYXJlbnRpbmctZnJhbWUyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1pZnJhbWUtY29udGVudC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtMS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1l
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1y
ZXBhcmVudGluZy1wbHVnaW5zLWlmcmFtZS1jb250ZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLW5ldy1w
YWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5qczogUmVtb3ZlZC4KKwogMjAxMi0wMy0xOSAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBjc3MgcGFyc2luZyBv
ZiBmbGV4LWxpbmUtcGFjawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvYWRvcHQtaWZy
YW1lLWludG8taXRzZWxmLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9hZG9wdC1pZnJhbWUtaW50by1pdHNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvYWRvcHQtaWZyYW1lLWludG8taXRzZWxm
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogRXJyb3I6
IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlvbiAzCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFtZS1pbnRvLWl0c2VsZi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFtZS1pbnRvLWl0c2VsZi5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvYWRvcHQtaWZyYW1lLWlu
dG8taXRzZWxmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB0cnkgeworICAgICAgICB2
YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpOworICAgICAgICB2YXIgY2hp
bGROb2RlID0gZnJhbWUuY29udGVudERvY3VtZW50LmFkb3B0Tm9kZShmcmFtZSk7CisgICAgfSBj
YXRjaChleCkgeworICAgICAgICBhbGVydChleCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8aWZy
YW1lIGlkPSJmIiBvbmxvYWQ9InRlc3QoKTsiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PC9i
b2R5PiI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctYWRvcHQtbm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctYWRvcHQtbm9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MCwwIEBACi1UaGlzIHRlc3QgYWRvcHRzIGFuIGlmcmFtZSBmcm9tIGEgZGlmZmVyZW50IHBhZ2Ug
aW50byB0aGlzIG9uZSwgY2xvc2VzIHRoZSBwYWdlIHRoYXQgb3JpZ2luYWxseSBjb250YWluZWQg
dGhlIGlmcmFtZSwgdGhlbiByZWxvYWRzIHRoZSBpZnJhbWUgdG8gdmVyaWZ5IHRoYXQgdGhlcmUg
YXJlIG5vIHJlbWFpbmluZyBkZXBlbmRlbmNpZXMgb24gdGhlIGNsb3NlZCBwYWdlLgotCi1Mb2Fk
ZWQgd2luZG93IDIuCi1BZG9wdGVkIGlmcmFtZSB0byBmaXJzdCBwYWdlLgotQ2xvc2luZyB3aW5k
b3cgMi4KLVdpbmRvdyAyIGNsb3NlZC4KLVBBU1M6IGlmcmFtZSByZWxvYWRlZC4KLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRp
bmctYWRvcHQtbm9kZS5odG1sCShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctYWRvcHQtbm9kZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDY2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KLTxodG1sPgotPHNjcmlwdD4KLXZhciB3aW5kb3cyLCBpZnJhbWU7Ci0KLWZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5p
bm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Ci19Ci0KLWZ1bmN0aW9uIHJlYWxseUZpbmlzaCgp
Ci17Ci0gICAgbG9nKCJQQVNTOiBpZnJhbWUgcmVsb2FkZWQuIik7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwotfQotCi1mdW5jdGlvbiB3aW5kb3cyVW5sb2FkZWQoKQotewotICAgIGxvZygiV2lu
ZG93IDIgY2xvc2VkLiIpOwotCi0gICAgLy8gUmVsb2FkIHRoZSBpZnJhbWUgdG8gZGVtb25zdHJh
dGUgdGhhdCBpdCBubyBsb25nZXIKLSAgICAvLyBkZXBlbmRzIG9uIGl0cyBvcmlnaW5hbCB3aW5k
b3cuCi0gICAgaWZyYW1lLm9ubG9hZCA9IHJlYWxseUZpbmlzaDsKLSAgICBpZnJhbWUuY29udGVu
dERvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCh0cnVlKTsKLX0KLQotZnVuY3Rpb24gZmluaXNoKCkK
LXsKLSAgICBsb2coIkNsb3Npbmcgd2luZG93IDIuIik7Ci0gICAgd2luZG93Mi5vbnVubG9hZCA9
IHdpbmRvdzJVbmxvYWRlZDsKLSAgICB3aW5kb3cyLmNsb3NlKCk7Ci19Ci0KLWZ1bmN0aW9uIHdp
bmRvdzJMb2FkZWQoKQotewotICAgIGxvZygiTG9hZGVkIHdpbmRvdyAyLiIpOwotICAgIGlmcmFt
ZSA9IHdpbmRvdzIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpOwotICAgIHdpbmRv
dy5kb2N1bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKLSAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnJhbWUpOwotICAgIGxvZygiQWRvcHRlZCBpZnJhbWUgdG8gZmlyc3QgcGFn
ZS4iKTsKLQotICAgIC8vIFN0YXJ0IHRoZSBpZnJhbWUncyB0aW1lciB0byBjYWxsIGZpbmlzaCgp
IHRvIGVuZCB0aGUgdGVzdC4KLSAgICBpZnJhbWUuY29udGVudFdpbmRvdy5zdGFydEZpbmlzaFRp
bWVyKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgfQotCi0gICAg
d2luZG93MiA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0
LW5vZGUtbmV3LXBhZ2UuaHRtbCIpOwotICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHdpbmRvdzJMb2FkZWQsIGZhbHNlKTsKLX0KLTwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgotPHA+VGhpcyB0ZXN0IGFkb3B0cyBhbiBpZnJhbWUgZnJvbSBhIGRpZmZlcmVudCBw
YWdlIGludG8gdGhpcyBvbmUsCi1jbG9zZXMgdGhlIHBhZ2UgdGhhdCBvcmlnaW5hbGx5IGNvbnRh
aW5lZCB0aGUgaWZyYW1lLCB0aGVuIHJlbG9hZHMKLXRoZSBpZnJhbWUgdG8gdmVyaWZ5IHRoYXQg
dGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkZXBlbmRlbmNpZXMKLW9uIHRoZSBjbG9zZWQgcGFnZS48
L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1lbGVtZW50cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLWVtYmVkLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTExMjQzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWVtYmVkLWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRlc3Qg
bW92ZXMgYW4gaWZyYW1lIGJldHdlZW4gdHdvIGRvY3VtZW50cyAzIHRpbWVzOiB3aXRob3V0IHBs
dWdpbnMsIHdpdGggPGVtYmVkPiB0YWcgYW5kIHRoZW4gd2l0aCA8b2JqZWN0PiB0YWcuCi0KLU9u
bHkgdGhlIGF0dGVtcHQgd2l0aG91dCBwbHVnaW4gZWxlbWVudHMgc2hvdWxkIHN1Y2NlZWQuIFRo
ZSBwcmVzZW5jZSBvZiBwbHVnaW4gZWxlbWVudHMgc2hvdWxkIHByZXZlbnQgdGhlIGRvY3VtZW50
LmFkb3B0Tm9kZSgpIG1ldGhvZCBmcm9tIHRyaWdnZXJpbmcgbGl2ZSB0cmFuc2ZlciAtIGluIHdo
aWNoIGNhc2UgdGhlIGlmcmFtZSB3aWxsIGJlIHJlbG9hZGVkLgotCi1UZXN0IHN1Y2NlZWRzIGlm
IHRoZXJlIGFyZSAnUEFTUycgbWVzc2FnZXMgYmVsb3cgYW5kIG5vICdGQUlMJyBtZXNzYWdlcy4K
LQotIAotUEFTUzogVGVzdCB3aXRob3V0IHBsdWdpbnMKLVBBU1M6IFRlc3Qgd2l0aCA8ZW1iZWQ+
Ci1QQVNTOiBUZXN0IHdpdGggPG9iamVjdD4KLVRlc3QgRmluaXNoZWQuCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1lbGVtZW50cy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1lbWJlZC1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQtZWxlbWVudHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2OSArMCwwIEBACi08aHRtbD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2co
bWVzc2FnZSkgewotICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9
IG1lc3NhZ2UgKyAiXG4iOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlSZXN1bHQobWVzc2FnZSwgYWN0
dWFsVG9rZW4sIGV4cGVjdGVkVG9SZWxvYWQpIHsKLSAgdmFyIHN1Y2Nlc3MgPSAoZXhwZWN0ZWRU
b1JlbG9hZCAhPSAoYWN0dWFsVG9rZW4gPT0gIm1vZGlmaWVkIikpOwotICBsb2coKHN1Y2Nlc3Mg
PyAiUEFTUyIgOiAiRkFJTCIpICsgIjogIiArIG1lc3NhZ2UpOwotfQotCi1mdW5jdGlvbiB0cmFu
c2ZlcklmcmFtZSh0ZXN0U3RlcERlc2NyaXB0aW9uLCBleHBlY3RlZFRvUmVsb2FkLCBuZXh0VGVz
dCkKLXsKLSAgdmFyIGlmcmFtZSA9IGZyYW1lMS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImlmcmFtZSIpWzBdOwotICBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cudG9rZW4g
IT0gImxvYWRlZCIpCi0gICAgbG9nKCJGQUlMOiBpbnZhbGlkIGluaXRpYWwgc3RhdGUgb2YgdGVz
dCBpZnJhbWUiKTsKLQotICBpZnJhbWUuY29udGVudFdpbmRvdy50b2tlbiA9ICJtb2RpZmllZCI7
Ci0KLSAgZnJhbWUxLmNvbnRlbnREb2N1bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKLSAgZnJhbWUy
LmNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Ci0gIHZlcmlmeVJlc3Vs
dCh0ZXN0U3RlcERlc2NyaXB0aW9uLCBpZnJhbWUuY29udGVudFdpbmRvdy50b2tlbiwgZXhwZWN0
ZWRUb1JlbG9hZCk7Ci0KLSAgZnJhbWUxLm9ubG9hZCA9IG5leHRUZXN0OwotICBmcmFtZTEuY29u
dGVudFdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKLX0KLQotZnVuY3Rpb24gZmluaXNoKCkKLXsK
LSAgbG9nKCJUZXN0IEZpbmlzaGVkLiIpOwotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5j
dGlvbiB0ZXN0KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKLSAgfQotCi0gIGZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmcmFtZTEiKTsKLSAgZnJhbWUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZy
YW1lMiIpOwotCi0gIHRyYW5zZmVySWZyYW1lKCJUZXN0IHdpdGhvdXQgcGx1Z2lucyIsIGZhbHNl
LCB0ZXN0MSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QxKCkgewotICB2YXIgaWZyYW1lID0gZnJhbWUx
LmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0gIGlm
cmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUuY29udGVudERvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImVtYmVkIikpOwotICB0cmFuc2ZlcklmcmFtZSgiVGVzdCB3aXRo
IDxlbWJlZD4iLCB0cnVlLCB0ZXN0Mik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkgewotICB2YXIg
aWZyYW1lID0gZnJhbWUxLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZy
YW1lIilbMF07Ci0gIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJh
bWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9iamVjdCIpKTsKLSAgdHJhbnNmZXJJ
ZnJhbWUoIlRlc3Qgd2l0aCA8b2JqZWN0PiIsIHRydWUsIGZpbmlzaCk7Ci19Ci0KLTwvc2NyaXB0
PgotPGJvZHkgb25sb2FkPXRlc3QoKT4KLTxwPlRoaXMgdGVzdCBtb3ZlcyBhbiBpZnJhbWUgYmV0
d2VlbiB0d28gZG9jdW1lbnRzIDMgdGltZXM6IHdpdGhvdXQgcGx1Z2lucywgd2l0aCAmbHQ7ZW1i
ZWQmZ3Q7IHRhZyBhbmQgdGhlbiB3aXRoICZsdDtvYmplY3QmZ3Q7IHRhZy48L3A+Ci08cD5Pbmx5
IHRoZSBhdHRlbXB0IHdpdGhvdXQgcGx1Z2luIGVsZW1lbnRzIHNob3VsZCBzdWNjZWVkLiBUaGUg
cHJlc2VuY2Ugb2YgcGx1Z2luIGVsZW1lbnRzIHNob3VsZCBwcmV2ZW50IHRoZSBkb2N1bWVudC5h
ZG9wdE5vZGUoKSBtZXRob2QgZnJvbSAKLXRyaWdnZXJpbmcgbGl2ZSB0cmFuc2ZlciAtIGluIHdo
aWNoIGNhc2UgdGhlIGlmcmFtZSB3aWxsIGJlIHJlbG9hZGVkLjwvcD4KLTxwPlRlc3Qgc3VjY2Vl
ZHMgaWYgdGhlcmUgYXJlICdQQVNTJyBtZXNzYWdlcyBiZWxvdyBhbmQgbm8gJ0ZBSUwnIG1lc3Nh
Z2VzLjwvcD4KLTxpZnJhbWUgaWQ9ZnJhbWUxIHNyYz0icmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVu
dGluZy1lbWJlZC1mcmFtZTEuaHRtbCI+PC9pZnJhbWU+Ci08aWZyYW1lIGlkPWZyYW1lMiBzcmM9
InJlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctZnJhbWUyLmh0bWwiPjwvaWZyYW1lPgotPHBy
ZSBpZD1sb2c+PC9wcmU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVu
dGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotVGhpcyB0
ZXN0IG1vdmVzIHRoZSBpZnJhbWUgYmV0d2VlbiB0d28gZG9jdW1lbnRzIC0gb25jZSB1c2luZyB0
aGlzIHNlcXVlbmNlOgotCi0gICAgZG9jdW1lbnQxLmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsK
LSAgICBkb2N1bWVudDIuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwotCi1hbmQgdGhlbiB1c2lu
ZyAnYWRvcHROb2RlJzoKLQotICAgIGRvY3VtZW50Mi5hZG9wdE5vZGUoaWZyYW1lKTsKLSAgICBk
b2N1bWVudDIuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwotCi1JbiB0aGUgc2Vjb25kIGNhc2Us
IHRoZSBjb250ZW50IG9mIGlmcmFtZSBzaG91bGQgbm90IGJlIHJlLWxvYWRlZCBhbmQgJ2xvYWQn
IGV2ZW50IHNob3VsZCBub3QgYmUgZmlyZWQuIEFsc28sIHRoZSB0aW1lciBzdGFydGVkIGJlZm9y
ZSByZXBhcmVudGluZyBzaG91bGQgc3Vydml2ZSB0cmFuc2l0aW9uIGFuZCBmaXJlLgotCi1UZXN0
IGFsc28gdmVyaWZpZXMgdGhhdCBkb2N1bWVudC5hZG9wdE5vZGUoKSBpbiBjYXNlIG9mIG5vdC1y
ZW5kZXJlZCBkb2N1bWVudCAobG9hZGVkIGJ5IFhNTEh0dHBSZXF1ZXN0KSBkb2VzIG5vdCBwcmVz
ZXJ2ZSB0aGUgY29udGVudCBvZiBpZnJhbWUuCi0KLVRlc3Qgc3VjY2VlZHMgaWYgdGhlcmUgYXJl
ICdQQVNTJyBtZXNzYWdlcyBiZWxvdyBhbmQgbm8gJ0ZBSUwnIG1lc3NhZ2VzLgotCi0gCi1QQVNT
OiBJZnJhbWUgbG9hZGVkLCB2ZXJpZnkgdG9rZW4sIGV4cGVjdGVkOiBsb2FkZWQsIGFjdHVhbDog
bG9hZGVkCi1QQVNTOiBJZnJhbWUgdG9rZW4gbW9kaWZpZWQsIGV4cGVjdGVkOiBtb2RpZmllZC0x
LCBhY3R1YWw6IG1vZGlmaWVkLTEKLVJlcGFyZW50IGlmcmFtZSAtIHRoZSBjb250ZW50IHNob3Vs
ZCByZS1sb2FkLgotUEFTUzogaWZyYW1lIGlzIHVubG9hZGVkLgotUEFTUzogSWZyYW1lIHJlLWxv
YWRlZCwgdmVyaWZ5IHRva2VuLCBleHBlY3RlZDogbG9hZGVkLCBhY3R1YWw6IGxvYWRlZAotUEFT
UzogSWZyYW1lIHRva2VuIG1vZGlmaWVkLCBleHBlY3RlZDogbW9kaWZpZWQtMiwgYWN0dWFsOiBt
b2RpZmllZC0yCi1SZXBhcmVudCBpZnJhbWUgdXNpbmcgYWRvcHROb2RlIC0gdGhlIGNvbnRlbnQg
c2hvdWxkIG5vdCB1bmxvYWQuCi1QQVNTOiBpZnJhbWUgaXMgTk9UIHVubG9hZGVkLgotUEFTUzog
SWZyYW1lIHRva2VuIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBiZWZvcmUgcmVwYXJlbnRpbmcsIGV4
cGVjdGVkOiBtb2RpZmllZC0yLCBhY3R1YWw6IG1vZGlmaWVkLTIKLVBBU1M6IFhIUi1sb2FkZWQg
RG9jdW1lbnQgaXMgY29ycmVjdC4KLVBBU1M6IGlmcmFtZSBpcyB1bmxvYWRlZC4KLVRlc3QgRmlu
aXNoZWQuCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1mYWlsLWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1mYWlsLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmct
ZmFpbC1sb2FkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1UaGlz
IHRlc3QgYWRvcHRzIGFuIGlmcmFtZSBpbnRvIGEgc2Vjb25kIHBhZ2UsIHRoZW4gY2xvc2VzIHRo
YXQgcGFnZSwgY2FuY2VsbGluZyB0aGF0IGlmcmFtZSBsb2FkLiBUaGUgY2FuY2VsbGVkIGxvYWQg
aXMgdHJlYXRlZCBhcyBhIGZhaWxlZCBsb2FkLiBUaGlzIHRlc3Qgd2lsbCBjcmFzaCBpZiByZXNv
dXJjZSB0cmFja2luZyBoYXMgbm90IGJlZW4gdXBkYXRlZCBhZnRlciB0aGUgaWZyYW1lIGhhcyBi
ZWVuIGFkb3B0ZWQgdG8gYSBkaWZmZXJlbnQgcGFnZSBiZWNhdXNlIHRoZSBmYWlsZWQgbG9hZCB3
aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSB3cm9uZyBwbGFjZS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1mYWlsLWxvYWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZmFpbC1sb2FkLmh0
bWwJKHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1y
ZXBhcmVudGluZy1mYWlsLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyMiArMCwwIEBA
Ci08aHRtbD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5P
cGVuV2luZG93cyh0cnVlKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIHcgPSB3
aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKTsKLSAgICB2YXIgZiA9IHcuZG9jdW1lbnQuYWRvcHRO
b2RlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXSk7Ci0gICAgdy5k
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpOwotICAgIHcuY2xvc2UoKTsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci19Ci08L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxpZnJh
bWUgc3JjPSJkYXRhOnRleHQvaHRtbCxmb28iPjwvaWZyYW1lPgotPHA+VGhpcyB0ZXN0IGFkb3B0
cyBhbiBpZnJhbWUgaW50byBhIHNlY29uZCBwYWdlLCB0aGVuIGNsb3NlcyB0aGF0IHBhZ2UsIGNh
bmNlbGxpbmcgdGhhdCBpZnJhbWUgbG9hZC4gVGhlIGNhbmNlbGxlZCBsb2FkIGlzIHRyZWF0ZWQg
YXMgYSBmYWlsZWQgbG9hZC4gVGhpcyB0ZXN0IHdpbGwgY3Jhc2ggaWYgcmVzb3VyY2UgdHJhY2tp
bmcgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgYWZ0ZXIgdGhlIGlmcmFtZSBoYXMgYmVlbiBhZG9wdGVk
IHRvIGEgZGlmZmVyZW50IHBhZ2UgYmVjYXVzZSB0aGUgZmFpbGVkIGxvYWQgd2lsbCBiZSByZXBv
cnRlZCB0byB0aGUgd3JvbmcgcGxhY2UuPC9wPgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3
LXBhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIExvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEu
Ci1QQVNTIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIgaXMgMQotUEFTUyBMb2FkZWQgcGFn
ZSAyLgotUEFTUyBQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLgotUEFTUyBJZnJhbWUgdHJhbnNm
ZXJyZWQuCi1QQVNTIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIgaXMgMgotUEFTUyB3aW5k
b3cyLmxvY2F0aW9uLmhyZWYgaXMgaWZyYW1lLmNvbnRlbnRXaW5kb3cucGFyZW50LmxvY2F0aW9u
LmhyZWYKLVBBU1MgUGFnZSAxIGlzIGNsb3NlZC4KLVBBU1MgUmVjZWl2ZWQgdGhlIHRpbWVyIGJl
YXQgZnJvbSB0aGUgYWRvcHRlZCBpZnJhbWUgLSBleGl0aW5nLgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCShy
ZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFy
ZW50aW5nLW5ldy1wYWdlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBw
bHVnaW4gYW5kIG1pbWV0eXBlIGluIGFuIGlmcmFtZSB0aGF0IGlzIHJlcGFyZW50ZWQgdG8gYSBk
aWZmZXJlbnQgcGFnZSBjb250aW51ZSB0byBiZWhhdmUgY29ycmVjdGx5LgotCi1Mb2FkZWQgd2lu
ZG93IDIuCi1QQVNTOiBwbHVnaW4gT0suCi1QQVNTOiBtaW1ldHlwZSBPSy4KLQotQWRvcHRlZCBp
ZnJhbWUgdG8gZmlyc3QgcGFnZS4KLVdpbmRvdyAyIHVubG9hZGVkLgotUEFTUzogcGx1Z2luIE9L
LgotUEFTUzogbWltZXR5cGUgT0suCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy5odG1sCShyZXZpc2lvbiAx
MTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1
Z2lucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPHNjcmlwdD4KLXZhciB3
aW5kb3cyLCBpZnJhbWU7Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Ci19Ci0K
LWZ1bmN0aW9uIGZpbmlzaCgpCi17Ci0gICAgdmFyIG1lc3NhZ2UgPSBpZnJhbWUuY29udGVudFdp
bmRvdy5jaGVja1BsdWdpbnMoKTsKLSAgICBsb2cobWVzc2FnZSk7Ci0KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHdpbmRvdzJVbmxvYWRlZCgpCi17Ci0gICAgbG9nKCJX
aW5kb3cgMiB1bmxvYWRlZC4iKTsKLSAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7IC8vIExldCB3
aW5kb3cgY2xvc2UgZmluaXNoIGNvbXBsZXRlbHkuCi19Ci0KLWZ1bmN0aW9uIHdpbmRvdzJMb2Fk
ZWQoKQotewotICAgIGxvZygiTG9hZGVkIHdpbmRvdyAyLiIpOwotICAgIGlmcmFtZSA9IHdpbmRv
dzIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpOwotCi0gICAgdmFyIG1lc3NhZ2Ug
PSBpZnJhbWUuY29udGVudFdpbmRvdy5jaGVja1BsdWdpbnMoKTsKLSAgICBsb2cobWVzc2FnZSk7
Ci0KLSAgICB3aW5kb3cuZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Ci0gICAgd2luZG93LmRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLSAgICBsb2coIkFkb3B0ZWQgaWZyYW1l
IHRvIGZpcnN0IHBhZ2UuIik7Ci0KLSAgICB3aW5kb3cyLm9udW5sb2FkID0gd2luZG93MlVubG9h
ZGVkOwotICAgIHdpbmRvdzIuY2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKLSAgICB9Ci0KLSAgICB3aW5kb3cyID0gd2luZG93Lm9wZW4oInJlc291cmNlcy9pZnJh
bWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sIik7Ci0gICAgd2luZG93Mi5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgd2luZG93MkxvYWRlZCwgZmFsc2UpOwotfQotCi08L3Njcmlw
dD4KLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHBs
dWdpbiBhbmQgbWltZXR5cGUgaW4gYW4gaWZyYW1lIHRoYXQgaXMKLXJlcGFyZW50ZWQgdG8gYSBk
aWZmZXJlbnQgcGFnZSBjb250aW51ZSB0byBiZWhhdmUgY29ycmVjdGx5LgotPHByZSBpZD1sb2c+
PC9wcmU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9p
ZnJhbWUtcmVwYXJlbnRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9pZnJhbWUtcmVwYXJlbnRpbmcuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAzICswLDAgQEAKLTxodG1sPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lclRleHQgKz0gbWVz
c2FnZSArICJcbiI7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVRva2VuKG1lc3NhZ2UsIGV4cGVjdGVk
VG9rZW4pCi17Ci0gICAgdmFyIGFjdHVhbFRva2VuID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cudG9r
ZW47Ci0gICAgbG9nKChleHBlY3RlZFRva2VuID09IGFjdHVhbFRva2VuID8gIlBBU1MiIDogIkZB
SUwiKSArICI6ICIgKyBtZXNzYWdlICsgIiwgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFRva2VuICsg
IiwgYWN0dWFsOiAiICsgYWN0dWFsVG9rZW4pOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIGZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJmcmFtZTEiKTsKLSAgICBmcmFtZTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJh
bWUyIik7Ci0gICAgaWZyYW1lID0gZnJhbWUxLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0KLSAgICB2ZXJpZnlUb2tlbigiSWZyYW1lIGxvYWRlZCwg
dmVyaWZ5IHRva2VuIiwgImxvYWRlZCIpOwotICAgIGlmcmFtZS5jb250ZW50V2luZG93LnRva2Vu
ID0gIm1vZGlmaWVkLTEiOwotICAgIHZlcmlmeVRva2VuKCJJZnJhbWUgdG9rZW4gbW9kaWZpZWQi
LCAibW9kaWZpZWQtMSIpOwotCi0gICAgLy8gU3RhcnQgdGltZW91dCBpbiBpZnJhbWUgLSBpdCBz
aG91bGQgbm90IHN1cnZpdmUgcmVwYXJlbnRpbmcuCi0gICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cu
c3RhcnREb29tZWRUaW1lcigpOwotICAgIGxvZygiUmVwYXJlbnQgaWZyYW1lIC0gdGhlIGNvbnRl
bnQgc2hvdWxkIHJlLWxvYWQuIikKLSAgICBmcmFtZTEuY29udGVudERvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoaWZyYW1lKTsKLSAgICAvLyBjb250ZW50V2luZG93IHNob3VsZCBub3QgYmUgYXZh
aWxhYmxlLCB0aGUgaWZyYW1lIGlzIHVubG9hZGVkLgotICAgIGxvZyhpZnJhbWUuY29udGVudFdp
bmRvdyA/ICJGQUlMOiBpZnJhbWUgaXMgbm90IHVubG9hZGVkLiIgOiAiUEFTUzogaWZyYW1lIGlz
IHVubG9hZGVkLiIpOwotICAgIGZyYW1lMi5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpZnJhbWUpOwotICAgIGlmcmFtZS5vbmxvYWQgPSB0ZXN0MjsKLX0KLQotZnVuY3Rpb24gdGVz
dDIoKQotewotICAgIHZlcmlmeVRva2VuKCJJZnJhbWUgcmUtbG9hZGVkLCB2ZXJpZnkgdG9rZW4i
LCAibG9hZGVkIik7Ci0gICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cudG9rZW4gPSAibW9kaWZpZWQt
MiI7Ci0gICAgdmVyaWZ5VG9rZW4oIklmcmFtZSB0b2tlbiBtb2RpZmllZCIsICJtb2RpZmllZC0y
Iik7Ci0KLSAgICAvLyBTdGFydCB0aW1lb3V0IGluIGlmcmFtZSAtIGl0IHNob3VsZCBzdXJ2aXZl
IHJlcGFyZW50aW5nIGFuZCBjYWxsIGZpbmlzaCgpIHRvIGVuZCB0aGUgdGVzdC4KLSAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5zdGFydEZpbmlzaFRpbWVyKCk7Ci0gICAgbG9nKCJSZXBhcmVudCBp
ZnJhbWUgdXNpbmcgYWRvcHROb2RlIC0gdGhlIGNvbnRlbnQgc2hvdWxkIG5vdCB1bmxvYWQuIikK
LSAgICBmcmFtZTEuY29udGVudERvY3VtZW50LmFkb3B0Tm9kZShpZnJhbWUpOwotICAgIGZyYW1l
MS5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwotICAgIC8vIGNvbnRl
bnRXaW5kb3cgc2hvdWxkIGJlIGF2YWlsYWJsZSwgdGhlIGlmcmFtZSBpcyBub3QgdW5sb2FkZWQu
Ci0gICAgbG9nKGlmcmFtZS5jb250ZW50V2luZG93ID8gIlBBU1M6IGlmcmFtZSBpcyBOT1QgdW5s
b2FkZWQuIiA6ICJGQUlMOiBpZnJhbWUgaXMgdW5sb2FkZWQuIik7Ci0gICAgaWZyYW1lLm9ubG9h
ZCA9IG5vdFJlYWNoZWQ7Ci19Ci0KLW5vdFJlYWNoZWQgPSBmdW5jdGlvbigpCi17Ci0gICAgbG9n
KCJGQUlMOiBpZnJhbWUgc2hvdWxkIG5vdCBmaXJlICdsb2FkJyBldmVudCB3aGVuIHJlcGFyZW50
ZWQgdXNpbmcgJ2Fkb3B0Tm9kZSciKTsKLX0KLQotZmluaXNoID0gZnVuY3Rpb24oKQotewotICAg
IHZlcmlmeVRva2VuKCJJZnJhbWUgdG9rZW4gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGJlZm9yZSBy
ZXBhcmVudGluZyIsICJtb2RpZmllZC0yIik7Ci0KLSAgICAvLyBMYXN0IHRlc3QgLSB2ZXJpZnkg
dGhhdCBub24tYXR0YWNoZWQgZG9jdW1lbnQgZG9lcyBub3Qga2VlcCBpZnJhbWUgYWxpdmUgZXZl
biBpZiBhZG9wdE5vZGUoKSBpcyB1c2VkLgotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKLSAgICB4aHIub3BlbigiR0VUIiwiZGF0YTphcHBsaWNhdGlvbi94aHRtbCt4bWwsPGh0
bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxib2R5IGlkPSdib2R5Jz5I
ZWxsbzwvYm9keT48L2h0bWw+IiwgZmFsc2UpOwotICAgIHhoci5zZW5kKG51bGwpOwotICAgIHZh
ciBkb2MgPSB4aHIucmVzcG9uc2VYTUw7Ci0gICAgbG9nKGRvYy5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpLmlubmVyVGV4dCA9PSAiSGVsbG8iID8gIlBBU1M6IFhIUi1sb2FkZWQgRG9jdW1lbnQgaXMg
Y29ycmVjdC4iIDogIkZBSUw6IFhIUi1sb2FkZWQgZG9jdW1lbnQgaXMgbm90IGNvcnJlY3QuIik7
Ci0KLSAgICBkb2MuYWRvcHROb2RlKGlmcmFtZSk7Ci0gICAgLy8gY29udGVudFdpbmRvdyBzaG91
bGQgbm90IGJlIGF2YWlsYWJsZSwgdGhlIGlmcmFtZSBpcyB1bmxvYWRlZC4KLSAgICBsb2coaWZy
YW1lLmNvbnRlbnRXaW5kb3cgPyAiRkFJTDogaWZyYW1lIGlzIG5vdCB1bmxvYWRlZC4iIDogIlBB
U1M6IGlmcmFtZSBpcyB1bmxvYWRlZC4iKTsKLQotICAgIGxvZygiVGVzdCBGaW5pc2hlZC4iKTsK
LQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLQotfQotCi08L3NjcmlwdD4KLTxib2R5IG9ubG9h
ZD10ZXN0KCk+Ci08cD5UaGlzIHRlc3QgbW92ZXMgdGhlIGlmcmFtZSBiZXR3ZWVuIHR3byBkb2N1
bWVudHMgLSBvbmNlIHVzaW5nIHRoaXMgc2VxdWVuY2U6PC9wPgotPHByZT4KLSAgICBkb2N1bWVu
dDEuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpOwotICAgIGRvY3VtZW50Mi5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZSk7Ci0KLTwvcHJlPgotPHA+YW5kIHRoZW4gdXNpbmcgJ2Fkb3B0Tm9kZSc6PC9w
PgotPHByZT4KLSAgICBkb2N1bWVudDIuYWRvcHROb2RlKGlmcmFtZSk7Ci0gICAgZG9jdW1lbnQy
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLQotPC9wcmU+Ci08cD5JbiB0aGUgc2Vjb25kIGNh
c2UsIHRoZSBjb250ZW50IG9mIGlmcmFtZSBzaG91bGQgbm90IGJlIHJlLWxvYWRlZCBhbmQgJ2xv
YWQnIGV2ZW50IHNob3VsZCBub3QgYmUgZmlyZWQuIEFsc28sIHRoZSB0aW1lciBzdGFydGVkIGJl
Zm9yZSByZXBhcmVudGluZyBzaG91bGQgc3Vydml2ZSB0cmFuc2l0aW9uIGFuZCBmaXJlLjwvcD4K
LTxwPlRlc3QgYWxzbyB2ZXJpZmllcyB0aGF0IGRvY3VtZW50LmFkb3B0Tm9kZSgpIGluIGNhc2Ug
b2Ygbm90LXJlbmRlcmVkIGRvY3VtZW50IChsb2FkZWQgYnkgWE1MSHR0cFJlcXVlc3QpIGRvZXMg
bm90IHByZXNlcnZlIHRoZSBjb250ZW50IG9mIGlmcmFtZS48L3A+Ci08cD5UZXN0IHN1Y2NlZWRz
IGlmIHRoZXJlIGFyZSAnUEFTUycgbWVzc2FnZXMgYmVsb3cgYW5kIG5vICdGQUlMJyBtZXNzYWdl
cy48L3A+Ci08aWZyYW1lIGlkPWZyYW1lMSBzcmM9cmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1mcmFtZTEuaHRtbD48L2lmcmFtZT4KLTxpZnJhbWUgaWQ9ZnJhbWUyIHNyYz1yZXNvdXJjZXMv
aWZyYW1lLXJlcGFyZW50aW5nLWZyYW1lMi5odG1sPjwvaWZyYW1lPgotPHByZSBpZD1sb2c+PC9w
cmU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtaWZyYW1lLWNvbnRlbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLWFkb3B0LW5vZGUtaWZyYW1lLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTExMjQz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1hZG9wdC1ub2RlLWlmcmFtZS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MCwwIEBACi08c2NyaXB0Pgotc3RhcnRGaW5pc2hUaW1lciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBz
ZXRUaW1lb3V0KHBhcmVudC5wYXJlbnQuZmluaXNoLCAwKTsKLX0KLTwvc2NyaXB0PgotPGJvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50
aW5nLWFkb3B0LW5vZGUtbmV3LXBhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtbmV3LXBh
Z2UuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLW5ldy1wYWdlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMCwwIEBACi08aHRtbD4KLTxib2R5PgotQSBOZXcgUGFnZTxicj4K
LTxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJpZnJhbWUtcmVwYXJlbnRpbmctYWRvcHQtbm9kZS1p
ZnJhbWUtY29udGVudC5odG1sIj48L2lmcmFtZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQt
ZnJhbWUxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1mcmFtZTEuaHRtbAkocmV2aXNpb24gMTExMjQz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1lbWJlZC1mcmFtZTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyICswLDAgQEAKLTxib2R5
PgotPGlmcmFtZSBzcmM9aWZyYW1lLXJlcGFyZW50aW5nLWVtYmVkLWlmcmFtZS5odG1sPjwvaWZy
YW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBh
cmVudGluZy1lbWJlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWVtYmVkLWlmcmFtZS5odG1sCShy
ZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZy
YW1lLXJlcGFyZW50aW5nLWVtYmVkLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEw
ICswLDAgQEAKLTxzY3JpcHQ+Ci10b2tlbiA9ICJsb2FkaW5nIjsKLQotZnVuY3Rpb24gaW5pdCgp
Ci17Ci0gICAgdG9rZW4gPSAibG9hZGVkIjsKLX0KLQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9
aW5pdCgpPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1y
ZXBhcmVudGluZy1mcmFtZTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWZyYW1lMS5odG1sCShyZXZpc2lvbiAx
MTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLWZyYW1lMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzAsMCBAQAotPGJvZHk+
Ci08aWZyYW1lIHNyYz1pZnJhbWUtcmVwYXJlbnRpbmctaWZyYW1lLWNvbnRlbnQuaHRtbD48L2lm
cmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVw
YXJlbnRpbmctZnJhbWUyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1mcmFtZTIuaHRtbAkocmV2aXNpb24gMTEx
MjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVu
dGluZy1mcmFtZTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi08Ym9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
aWZyYW1lLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWlmcmFtZS1jb250ZW50Lmh0bWwJKHJldmlz
aW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctaWZyYW1lLWNvbnRlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCAr
MCwwIEBACi08c2NyaXB0PgotdG9rZW4gPSAibG9hZGluZyI7Ci0KLWZ1bmN0aW9uIGluaXQoKQot
ewotICAgIHRva2VuID0gImxvYWRlZCI7Ci19Ci0KLXN0YXJ0RmluaXNoVGltZXIgPSBmdW5jdGlv
bigpCi17Ci0gICAgc2V0VGltZW91dChwYXJlbnQucGFyZW50LmZpbmlzaCwgMCk7Ci19Ci0KLXN0
YXJ0RG9vbWVkVGltZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgc2V0VGltZW91dChwYXJlbnQucGFy
ZW50Lm5vdFJlYWNoZWQsIDApOwotfQotCi08L3NjcmlwdD4KLTxib2R5IG9ubG9hZD1pbml0KCk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTEuaHRtbAkocmV2aXNpb24g
MTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMCwwIEBACi08
aHRtbD4KLTxib2R5PgotUGFnZSAxPGJyPgotPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFt
ZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbAkocmV2
aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFt
ZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAs
MCBAQAotPGh0bWw+Ci08c2NyaXB0Pgotd2luZG93LmFkb3B0SWZyYW1lID0gZnVuY3Rpb24oaWZy
YW1lKQotewotICAgIGRvY3VtZW50LmFkb3B0Tm9kZShpZnJhbWUpOwotICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLSAgICBvcGVuZXIudGVzdFBhc3NlZCgiUGFnZSAyIGFk
b3B0ZWQgdGhlIGlmcmFtZS4iKQotfQotPC9zY3JpcHQ+Ci08Ym9keT4KLVBhZ2UgMjxicj4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9p
ZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFn
ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08aHRtbD4KLTxzY3JpcHQ+Ci13aW5kb3cuY291
bnRlciA9IDA7Ci0KLWZ1bmN0aW9uIHRpY2soKQotewotICAgIGlmICh3aW5kb3cuZmluaXNoKQot
ICAgICAgICBmaW5pc2goKTsKLX0KLQotZnVuY3Rpb24gc3RhcnQoKQotewotICAgIHdpbmRvdy5z
ZXRJbnRlcnZhbCh0aWNrLCA1MCk7Ci19Ci08L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0ic3RhcnQo
KSI+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVn
aW5zLWlmcmFtZS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAot
PHNjcmlwdD4KLS8vIFdlIGNhbiBvbmx5IGd1YXJhbnRlZSB0aGF0IHRoZSBUZXN0IFBsdWdJbiBp
cyBpbnN0YWxsZWQuCi12YXIgcGx1Z2luID0gbmF2aWdhdG9yLnBsdWdpbnMubmFtZWRJdGVtKCJX
ZWJLaXQgVGVzdCBQbHVnSW4iKTsKLXZhciBtaW1ldHlwZSA9IG5hdmlnYXRvci5taW1lVHlwZXNb
MF07Ci0KLS8vIENhbGxlZCBieSB0ZXN0IHBhZ2UgYWZ0ZXIgYWRvcHRpbmcgdGhpcyBpZnJhbWUg
YW5kIGNsb3NpbmcgdGhlCi0vLyBwYWdlIHRoYXQgb3JpZ2luYWxseSBoZWxkIHRoaXMgaWZyYW1l
LgotY2hlY2tQbHVnaW5zID0gZnVuY3Rpb24oKQotewotICBpZiAoIXBsdWdpbikgewotICAgICAg
cmV0dXJuICJGQUlMOiBGYWlsZWQgdG8gZmluZCB0ZXN0IHBsdWdpblxuIjsKLSAgfQotCi0gIHZh
ciBtZXNzYWdlID0gIiI7Ci0gIGlmIChwbHVnaW4uaXRlbSgwKS5lbmFibGVkUGx1Z2luKQotICAg
ICAgbWVzc2FnZSArPSAiUEFTUzogcGx1Z2luIE9LLlxuIjsKLSAgZWxzZQotICAgICAgbWVzc2Fn
ZSArPSAiRkFJTDogcGx1Z2luIHJlZmVyZW5jZXMgUGx1Z2luRGF0YSB3aXRoIG5vIHBhZ2UuXG4i
OwotCi0gIGlmIChtaW1ldHlwZS5lbmFibGVkUGx1Z2luKQotICAgICAgbWVzc2FnZSArPSAiUEFT
UzogbWltZXR5cGUgT0suXG4iOwotICBlbHNlCi0gICAgICBtZXNzYWdlICs9ICJGQUlMOiBtaW1l
dHlwZSByZWZlcmVuY2VzIFBsdWdpbkRhdGEgd2l0aCBubyBwYWdlLlxuIjsKLQotICByZXR1cm4g
bWVzc2FnZTsKLX0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLW5ldy1wYWdlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1wbHVnaW5zLW5ldy1wYWdlLmh0bWwJKHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFn
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotPGh0bWw+Ci08Ym9keT4KLUEg
TmV3IFBhZ2U8YnI+Ci08aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0iaWZyYW1lLXJlcGFyZW50aW5n
LXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbCI8L2lmcmFtZT4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2NyaXB0LXRlc3RzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5qcwkocmV2aXNpb24gMTEx
MjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL2lmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi1kZXNj
cmlwdGlvbigKLSJUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0aW1lciBpbiBpZnJhbWUgY29u
dGludWVzIGZpcmluZyBhZnRlciBpZnJhbWUgaXMgYWRvcHRlZCBpbnRvIGEgbmV3IHdpbmRvdyBh
bmQgdGhlIG9yaWdpbmFsIHdpbmRvdyB3YXMgY2xvc2VkLiIKLSk7Ci0KLXZhciB3aW5kb3cxLCBp
ZnJhbWUsIHdpbmRvdzI7Ci0KLWZ1bmN0aW9uIGZpbmlzaCgpCi17Ci0gICAgLy8gVGltZXIgbWF5
IGNhbGwgdGhpcyBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgYWN0dWFsIHNodXRkb3duLCBnZW5lcmF0
aW5nIGFyYml0cmFyeSBudW1iZXIgb2YgbG9nIGxpbmVzLgotICAgIC8vIFJlc2V0IHRoZSBjYWxs
YmFjayB0byBhdm9pZCB0aGlzLgotICAgIGlmcmFtZS5jb250ZW50V2luZG93LmZpbmlzaCA9IG51
bGw7Ci0KLSAgICB0ZXN0UGFzc2VkKCJSZWNlaXZlZCB0aGUgdGltZXIgYmVhdCBmcm9tIHRoZSBh
ZG9wdGVkIGlmcmFtZSAtIGV4aXRpbmcuIikKLSAgICB3aW5kb3cyLmNsb3NlKCk7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHBhZ2UxVW5sb2FkZWQoKQotewotICAgIHRlc3RQ
YXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7Ci0gICAgLy8gR2l2ZSB0aGUgaWZyYW1lIGEgZnVu
Y3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KLSAgICBpZnJhbWUuY29udGVudFdpbmRvdy5m
aW5pc2ggPSBmaW5pc2g7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zZmVySWZyYW1lKCkKLXsKLSAgICB0
ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOwotICAgIHdpbmRvdzIuYWRvcHRJZnJhbWUoaWZy
YW1lKTsKLSAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJyZWQuIik7Ci0gICAgaWZyYW1l
LmNvbnRlbnRXaW5kb3cuY291bnRlcisrOwotICAgIHNob3VsZEJlKCJpZnJhbWUuY29udGVudFdp
bmRvdy5jb3VudGVyIiwgIjIiKTsKLSAgICBzaG91bGRCZSgid2luZG93Mi5sb2NhdGlvbi5ocmVm
IiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmIik7Ci0gICAgd2lu
ZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7Ci0gICAgd2luZG93MS5jbG9zZSgpOwotfQot
Ci1mdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKLXsKLSAgICBpZnJhbWUgPSB3aW5kb3cxLmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKLSAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgaWZy
YW1lIGluIHdpbmRvdyAxLiIpOwotICAgIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKzsK
LSAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlciIsICIxIik7Ci0gICAg
d2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1s
IiwgIl9ibGFuayIpOwotICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRyYW5z
ZmVySWZyYW1lLCBmYWxzZSk7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLX0KLXdpbmRvdzEgPSB3aW5kb3cu
b3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwiLCAiX2Js
YW5rIik7Ci13aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB3aW5kb3cxTG9hZGVkLCBm
YWxzZSk7Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132752</attachid>
            <date>2012-03-19 21:13:39 -0700</date>
            <delta_ts>2012-03-19 22:58:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81590-20120319211338.patch</filename>
            <type>text/plain</type>
            <size>82462</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAzLTE5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJt
YWdpYyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZSwgd2hpY2gg
cHJldmlvdXNseSBhbGxvd2VkCisgICAgICAgIGFuIGlmcmFtZSB0byBiZSB0cmFuc2ZlcmVkIGZy
b20gb25lIGRvY3VtZW50IHRvIGFub3RoZXIgd2l0aG91dAorICAgICAgICByZWxvYWRpbmcgdGhl
IGlmcmFtZS4gIFRoZSBpZGVhIGJlaGluZCB0aGlzIGZlYXR1cmUgd2FzIHRvIGxldCBzaXRlcwor
ICAgICAgICBjcmVhdGUgInBvcCBvdXQiIHdpbmRvd3MgdGhhdCBjb3VsZCBvdXRsaXZlIHRoZWly
IHBhcmVudHMgYnkKKyAgICAgICAgdHJhbnNmZXJpbmcgc3RhdGUgdG8gdGhlc2Ugd2luZG93cyB2
aWEgdGhlc2UgbWFnaWMgaWZyYW1lcy4KKworICAgICAgICBVbmZvcnVudGF0ZWx5LCB0aGlzIGZl
YXR1cmUgd2FzIG5ldmVyIGltcGxlbWVudGVkIGJ5IG90aGVyIGJyb3dzZXJzIGFuZAorICAgICAg
ICBoYXMgYmVlbiB0aGUgc291cmNlIG9mIGEgc2VyaWVzIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxp
dGllcy4gIEFsdGhvdWdoCisgICAgICAgIHdlIGhhdmUgZml4ZWQgZWFjaCB2dWxuZXJhYmlsaXR5
IGFzIGl0IGhhcyBiZWVuIGRpc2NvdmVyZWQsIHRoZSBmZWF0dXJlCisgICAgICAgIGlzIHN0aWxs
IGEgY29tcGxleCBjb3JuZXIgY2FzZSB0aGF0IGlzbid0IHdpZGVseSBleGVyY2lzZWQgb24gdGhl
IHdlYi4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCBpdCdzIGxpa2VseSB0byBoYXZlIG1vcmUg
dnVsbmVyYWJpbGl0aWVzIGluIHRoZQorICAgICAgICBmdXR1cmUuCisKKyAgICAgICAgSSdtIG5v
dCBhd2FyZSBvZiBhbnkgd2ViIHNpdGVzIHRoYXQgdXNlIHRoaXMgZmVhdHVyZSBhbnltb3JlLiAg
VGhlcmUKKyAgICAgICAgd2VyZSBhIGhhbmRmdWwgb2YgdGhlbSwgYnV0IHdlIGFwcGVhciB0byBo
YXZlIGJlZW4gc3VjY2Vzc2Z1bCBpbgorICAgICAgICBldmFuZ2FsaXppbmcgdGhlbSB0byBtb3Zl
IGF3YXkgZnJvbSAibWFnaWMiIGlmcmFtZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OkhUTUxGcmFtZUVsZW1lbnRCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoSFRN
TEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoK
KyAgICAgICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaDoKKyAgICAgICAgKFJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKEZyYW1lKToKKwogMjAxMi0wMy0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODQ4NTc1PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTE2CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MSwxNSArOTQxLDE0IEBAIFBhc3NSZWZQdHI8Tm9k
ZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXMKICAgICAgICAgYnJlYWs7CiAgICAgfSAgICAgICAK
ICAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogV2hhdCBhYm91dCA8ZnJhbWU+IGFuZCA8
b2JqZWN0Pj8KICAgICAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CiAg
ICAgICAgICAgICBIVE1MSUZyYW1lRWxlbWVudCogaWZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTElG
cmFtZUVsZW1lbnQqPihzb3VyY2UuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihpZnJhbWUtPmNvbnRlbnRGcmFtZSgpKSkg
ewogICAgICAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWZyYW1lLT5zZXRS
ZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZShhdHRhY2hlZCgpICYmIHNvdXJjZS0+YXR0YWNo
ZWQoKSAmJiBpZnJhbWUtPmNhblJlbWFpbkFsaXZlT25SZW1vdmFsRnJvbVRyZWUoKSk7CiAgICAg
ICAgIH0KLQogICAgICAgICBpZiAoc291cmNlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBz
b3VyY2UtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQoc291cmNlLmdldCgpLCBlYyk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJ
KHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw0MSArNDQsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi0vLyBIZWxwZXIgdG8gY2hl
Y2sgaWYgdGhlIEZyYW1lJ3MgZG9jdW1lbnQgY29udGFpbnMgZWxlbWVudHMgdGhhdCBjYW4gaW5z
dGFudGlhdGUgcGx1Z2lucy4KLS8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgZm9yIG5lc3RlZCBG
cmFtZXMgdG9vLgotc3RhdGljIGJvb2wgaGFzUGx1Z2luRWxlbWVudHMoRnJhbWUqIGZyYW1lKQot
ewotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFNlYXJj
aCBmb3IgYSBwbHVnaW4gZWxlbWVudCBpbiB0aGlzIGRvY3VtZW50LgotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3Vt
ZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGRv
Y3VtZW50KSkgewotICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoZW1iZWRU
YWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gRG8gdGhlIHNhbWUgZm9yIHRoZSBuZXN0ZWQgZnJh
bWVzLgotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
IGlmIChoYXNQbHVnaW5FbGVtZW50cyhjaGlsZCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRnJhbWVPd25lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX3Njcm9sbGluZyhTY3JvbGxiYXJBdXRvKQogICAgICwgbV9tYXJnaW5XaWR0
aCgtMSkKICAgICAsIG1fbWFyZ2luSGVpZ2h0KC0xKQotICAgICwgbV9jaGVja0luRG9jdW1lbnRU
aW1lcih0aGlzLCAmSFRNTEZyYW1lRWxlbWVudEJhc2U6OmNoZWNrSW5Eb2N1bWVudFRpbWVyRmly
ZWQpCiAgICAgLCBtX3ZpZXdTb3VyY2UoZmFsc2UpCi0gICAgLCBtX3JlbWFpbnNBbGl2ZU9uUmVt
b3ZhbEZyb21UcmVlKGZhbHNlKQogewogfQogCkBAIC0xODAsMjQgKzE1MSwxMCBAQCB2b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlCiAgICAgb3BlblVSTCgpOwogfQogCi12
b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1cGRhdGVPblJlcGFyZW50aW5nKCkKLXsKLSAgICBB
U1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSk7Ci0KLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gY29udGVudEZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KCk7Ci19Ci0KIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCk7CiAKLSAgICBpZiAobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJl
ZSkgewotICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5nKCk7Ci0gICAgICAgIG1fcmVtYWluc0Fs
aXZlT25SZW1vdmFsRnJvbVRyZWUgPSBmYWxzZTsKLSAgICAgICAgbV9jaGVja0luRG9jdW1lbnRU
aW1lci5zdG9wKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgLy8gRG9jdW1lbnRGcmFn
bWVudHMgZG9uJ3Qga2ljayBvZiBhbnkgbG9hZHMuCiAgICAgaWYgKCFkb2N1bWVudCgpLT5mcmFt
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNzcsNDcgKzIzNCw2IEBAIGludCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6aGVpZ2h0KCkKICAgICByZXR1cm4gcmVuZGVyQm94KCktPmhlaWdodCgpOwog
fQogCi0vLyBTb21lIHR5cGVzIG9mIGNvbnRlbnQgY2FuIHJlc3RyaWN0IHRoZSBhYmlsaXR5IHRv
IG1vdmUgdGhlIGlmcmFtZXMgYmV0d2VlbiBwYWdlcy4KLS8vIEZvciBleGFtcGxlLCB0aGUgcGx1
Z2luIGluZnJhc3RydWN0dXJlIG9mIGFuIGVtYmVkZGVyIG1heSBhc3NvY2lhdGUgdGhlIHBsdWdp
biBpbnN0YW5jZXMKLS8vIHdpdGggdGhlIHRvcC1sZXZlbCBGcmFtZSBmb3IgdHJhY2tpbmcgdmFy
aW91cyByZXNvdXJjZXMgYW5kIGZhaWx1cmUgdG8gdHJhbnNmZXIgdGhvc2UKLS8vIHJlc291cmNl
cyBjb3JyZWN0bHkgbWF5IGxlYWQgdG8gY3Jhc2hlcyBhbmQgb3RoZXIgaWxsIGVmZmVjdHMgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODI2NykKLWJvb2wgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmNhblJlbWFpbkFsaXZlT25SZW1vdmFsRnJvbVRyZWUoKQotewotICAg
IHJldHVybiAhaGFzUGx1Z2luRWxlbWVudHMoY29udGVudEZyYW1lKCkpOwotfQotCi12b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRSZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZShib29s
IHZhbHVlKQotewotICAgIEFTU0VSVCghdmFsdWUgfHwgY2FuUmVtYWluQWxpdmVPblJlbW92YWxG
cm9tVHJlZSgpKTsKLSAgICBtX3JlbWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlID0gdmFsdWU7
Ci0KLSAgICAvLyBUaGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgSlMgd2lsbCBkbyBkb2N1bWVu
dC5hZG9wdE5vZGUoKSBvbiB0aGlzIGVsZW1lbnQgYnV0IHdpbGwgbm90IGluc2VydCBpdCBpbnRv
IHRoZSB0cmVlLgotICAgIC8vIFN0YXJ0IHRoZSBhc3luYyB0aW1lciB0aGF0IGlzIG5vcm1hbGx5
IHN0b3BwZWQgYnkgYXR0YWNoKCkuIElmIGl0J3Mgbm90IHN0b3BwZWQgYW5kIGZpcmVzLCBpdCds
bCB1bmxvYWQgdGhlIGZyYW1lLgotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgbV9jaGVja0luRG9j
dW1lbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fY2hlY2tJ
bkRvY3VtZW50VGltZXIuc3RvcCgpOwotICAgICAgICB3aWxsUmVtb3ZlKCk7Ci0gICAgfQotfQot
Ci12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjaGVja0luRG9jdW1lbnRUaW1lckZpcmVkKFRp
bWVyPEhUTUxGcmFtZUVsZW1lbnRCYXNlPiopCi17Ci0gICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsK
LSAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSk7Ci0KLSAgICBtX3Jl
bWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlID0gZmFsc2U7Ci0gICAgd2lsbFJlbW92ZSgpOwot
fQotCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp3aWxsUmVtb3ZlKCkKLXsKLSAgICBpZiAo
bV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJlZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50Ojp3aWxsUmVtb3ZlKCk7Ci19Ci0KICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiBib29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphbGxvd0Z1bGxTY3JlZW4o
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJh
c2UuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw2IEBAIHB1YmxpYzoKICAg
ICBpbnQgd2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0KCk7CiAKLSAgICBib29sIGNhblJlbWFpbkFs
aXZlT25SZW1vdmFsRnJvbVRyZWUoKTsKLSAgICB2b2lkIHNldFJlbWFpbnNBbGl2ZU9uUmVtb3Zh
bEZyb21UcmVlKGJvb2wpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dGdWxsU2NyZWVuKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTY2LDEwICs2NCw2IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpOwotICAgIHZvaWQgY2hl
Y2tJbkRvY3VtZW50VGltZXJGaXJlZChUaW1lcjxIVE1MRnJhbWVFbGVtZW50QmFzZT4qKTsKLSAg
ICB2b2lkIHVwZGF0ZU9uUmVwYXJlbnRpbmcoKTsKLQogICAgIGJvb2wgdmlld1NvdXJjZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdTb3VyY2U7IH0KIAogICAgIHZvaWQgc2V0TmFtZUFuZE9w
ZW5VUkwoKTsKQEAgLTgzLDIwICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWFyZ2luV2lk
dGg7CiAgICAgaW50IG1fbWFyZ2luSGVpZ2h0OwogCi0gICAgLy8gVGhpcyBpcyBhIHBlcmZvcm1h
bmNlIG9wdGltaXphdGlvbiBzb21lIGNhbGwgIm1hZ2ljIGlmcmFtZSIgd2hpY2ggYXZvaWRzCi0g
ICAgLy8gdGVhcmluZyBkb3duIHRoZSBmcmFtZSBoaWVyYXJjaHkgd2hlbiBhIHdlYiBwYWdlIGNh
bGxzIGFkb3B0Tm9kZSBvbiBhCi0gICAgLy8gZnJhbWUgb3duaW5nIGVsZW1lbnQgYnV0IGRvZXMg
bm90IGltbWVkaWF0ZWx5IGluc2VydCBpdCBpbnRvIHRoZSBuZXcKLSAgICAvLyBkb2N1bWVudCBi
ZWZvcmUgSmF2YVNjcmlwdCB5aWVsZHMgdG8gV2ViQ29yZS4gIElmIHRoZSBlbGVtZW50IGlzIG5v
dCB5ZXQKLSAgICAvLyBpbiBhIGRvY3VtZW50IGJ5IHRoZSB0aW1lIHRoaXMgdGltZXIgZmlyZXMs
IHRoZSBmcmFtZSBoaWVyYXJjaHkgdGVhcmRvd24KLSAgICAvLyB3aWxsIGNvbnRpbnVlLiAgVGhp
cyBjYW4gYWxzbyBiZSBzZWVuIGFzIGltcGxlbWVudGF0aW9uIG9mOgotICAgIC8vICJSZW1vdmlu
ZyBhbiBpZnJhbWUgZnJvbSBhIERvY3VtZW50IGRvZXMgbm90IGNhdXNlIGl0cyBicm93c2luZyBj
b250ZXh0Ci0gICAgLy8gdG8gYmUgZGlzY2FyZGVkLiBJbmRlZWQsIGFuIGlmcmFtZSdzIGJyb3dz
aW5nIGNvbnRleHQgY2FuIHN1cnZpdmUgaXRzCi0gICAgLy8gb3JpZ2luYWwgcGFyZW50IERvY3Vt
ZW50IGlmIGl0cyBpZnJhbWUgaXMgbW92ZWQgdG8gYW5vdGhlciBEb2N1bWVudC4iCi0gICAgLy8g
RnJvbSBIVE1MNTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdGhlLWlmcmFtZS1lbGVtZW50Lmh0bWwjdGhlLWlmcmFtZS1lbGVtZW50
Ci0gICAgVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+IG1fY2hlY2tJbkRvY3VtZW50VGltZXI7
Ci0KICAgICBib29sIG1fdmlld1NvdXJjZTsKLSAgICBib29sIG1fcmVtYWluc0FsaXZlT25SZW1v
dmFsRnJvbVRyZWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1MCwyNCArODUwLDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VMb2FkZXJG
aQogICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNoZWNrTG9hZENvbXBsZXRlKCk7ICAgIAogfQog
Ci12b2lkIERvY3VtZW50TG9hZGVyOjp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9tUGFnZShQ
YWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQYWdlICE9IG1fZnJhbWUtPnBhZ2UoKSk7
Ci0KLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWVMb2FkZXIoKTsKLSAgICBBU1NFUlQo
bG9hZGVyKTsKLQotICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKLSAgICAgICAgbG9h
ZGVyLT5kaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UobV9tYWluUmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIG9yaWdpbmFsUmVxdWVzdCgpLCBvbGRQYWdlKTsKLQotICAgIGlmIChp
c0xvYWRpbmdTdWJyZXNvdXJjZXMoKSkgewotICAgICAgICBSZXNvdXJjZUxvYWRlclNldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3N1YnJlc291cmNlTG9hZGVycy5iZWdpbigpOwotICAgICAgICBS
ZXNvdXJjZUxvYWRlclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdWJyZXNvdXJjZUxvYWRl
cnMuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBs
b2FkZXItPmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZSgoKml0KS5nZXQo
KSwgKCppdCktPm9yaWdpbmFsUmVxdWVzdCgpLCBvbGRQYWdlKTsKLSAgICB9Ci19Ci0KIHZvaWQg
RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogewog
ICAgIGlmICghZG9lc1Byb2dyZXNzaXZlTG9hZChtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMTExMjQz
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMSw4ICsyMjEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9p
ZCBzdWJyZXNvdXJjZUxvYWRlckZpbmlzaGVkTG9hZGluZ09uZVBhcnQoUmVzb3VyY2VMb2FkZXIq
KTsKIAotICAgICAgICB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKFBhZ2Uq
KTsKLQogICAgICAgICB2b2lkIG1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKTsK
IAogICAgICAgICB2b2lkIHNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBkZWZlcikg
eyBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgPSBkZWZlcjsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsOCArMzc0LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKikgeyB9CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50
U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IHJldHVybiAwOyB9CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDYsMjIgKzE2NDYsNiBAQCBib29sIEZyYW1l
TG9hZGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpIHx8IChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIgJiYgIW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSk7IAogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNGcm9t
UGFnZShQYWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQYWdlICE9IG1fZnJhbWUtPnBh
Z2UoKSk7Ci0gICAgaWYgKGlzTG9hZGluZygpKSB7Ci0gICAgICAgIGFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKG9sZFBhZ2UpOwotICAgICAg
ICBvbGRQYWdlLT5wcm9ncmVzcygpLT5wcm9ncmVzc0NvbXBsZXRlZChtX2ZyYW1lKTsKLSAgICAg
ICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+cHJv
Z3Jlc3MoKS0+cHJvZ3Jlc3NTdGFydGVkKG1fZnJhbWUpOwotICAgIH0KLX0KLQotdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSogb2xk
UGFnZSkKLXsKLSAgICBub3RpZmllcigpLT5kaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UobG9hZGVyLCByZXF1ZXN0LCBvbGRQYWdlKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRl
cjo6c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAo
IWxvYWRlciAmJiAhbV9kb2N1bWVudExvYWRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2FkaW5n
TWFpblJlc291cmNlOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICBib29sIGZy
YW1lSGFzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZXNG
cm9tUGFnZShQYWdlKik7Ci0gICAgdm9pZCBkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNl
RnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7
CiAKICAgICBpbnQgbnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29u
c3Q7CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niwx
MCArMjU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFu
c2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqIG9sZFBhZ2UpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKiBvbGRQYWdlKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAJ
KHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxNCArMTQ0LDYgQEAgdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaQogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQotewotICAgIEFTU0VSVChvbGRQ
YWdlICE9IG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT50cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKGxvYWRlciwgcmVxdWVzdCwgb2xkUGFn
ZSk7Ci0KLSAgICBvbGRQYWdlLT5wcm9ncmVzcygpLT5jb21wbGV0ZVByb2dyZXNzKGxvYWRlci0+
aWRlbnRpZmllcigpKTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCShyZXZpc2lv
biAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICB2b2lkIGRpc3BhdGNo
VHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFBhZ2UqKTsKIAogICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDYyICs3MTcsNiBAQCB2b2lkIEZyYW1lOjpk
aXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICBtX293bmVyRWxlbWVudCA9IDA7CiB9CiAKLS8v
IFRoZSBmcmFtZSBpcyBtb3ZlZCBpbiBET00sIHBvdGVudGlhbGx5IHRvIGFub3RoZXIgcGFnZS4K
LXZvaWQgRnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQotewotICAgIEFT
U0VSVChtX293bmVyRWxlbWVudCk7Ci0gICAgRnJhbWUqIG5ld1BhcmVudCA9IG1fb3duZXJFbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIEFTU0VSVChuZXdQYXJlbnQpOwotICAgIGJv
b2wgZGlkVHJhbnNmZXIgPSBmYWxzZTsKLQotICAgIC8vIFN3aXRjaCBwYWdlLgotICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBuZXdQYXJlbnQtPnBhZ2UoKTsKLSAgICBQYWdlKiBvbGRQYWdlID0gbV9wYWdl
OwotICAgIGlmIChtX3BhZ2UgIT0gbmV3UGFnZSkgewotICAgICAgICBpZiAobV9wYWdlKSB7Ci0g
ICAgICAgICAgICBpZiAobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCkg
PT0gdGhpcykKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRG
b2N1c2VkRnJhbWUoMCk7Ci0KLSAgICAgICAgICAgICBtX3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291
bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2RvbVdpbmRvdykgewotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgICAg
ICAgICBtX2RvbVdpbmRvdy0+cmVzZXROb3RpZmljYXRpb25zKCk7Ci0jZW5kaWYKLSAgICAgICAg
fQotCi0gICAgICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9y
IHN0b3AgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hT
ZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIGl0ID0gbV9kZXN0cnVjdGlv
bk9ic2VydmVycy5iZWdpbigpOyBpdCAhPSBzdG9wOyArK2l0KQotICAgICAgICAgICAgKCppdCkt
PndpbGxEZXRhY2hQYWdlKCk7Ci0KLSAgICAgICAgbV9wYWdlID0gbmV3UGFnZTsKLQotICAgICAg
ICBpZiAobmV3UGFnZSkKLSAgICAgICAgICAgIG5ld1BhZ2UtPmluY3JlbWVudEZyYW1lQ291bnQo
KTsKLQotICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRl
IHRoZSBmcmFtZSB0cmVlLgotICAgIGRpZFRyYW5zZmVyID0gbmV3UGFyZW50LT50cmVlKCktPnRy
YW5zZmVyQ2hpbGQodGhpcykgfHwgZGlkVHJhbnNmZXI7Ci0KLSAgICAvLyBBdm9pZCB1bm5lY2Vz
c2FyeSBjYWxscyB0byBjbGllbnQgYW5kIGZyYW1lIHN1YnRyZWUgaWYgdGhlIGZyYW1lIGVuZGVk
Ci0gICAgLy8gdXAgb24gdGhlIHNhbWUgcGFnZSBhbmQgdW5kZXIgdGhlIHNhbWUgcGFyZW50IGZy
YW1lLgotICAgIGlmIChkaWRUcmFuc2ZlcikgewotICAgICAgICAvLyBMZXQgZXh0ZXJuYWwgY2xp
ZW50cyB1cGRhdGUgdGhlbXNlbHZlcy4KLSAgICAgICAgbG9hZGVyKCktPmNsaWVudCgpLT5kaWRU
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KG9sZFBhZ2UpOwotCi0gICAgICAgIC8vIFVw
ZGF0ZSByZXNvdXJjZSB0cmFja2luZyBub3cgdGhhdCBmcmFtZSBjb3VsZCBiZSBpbiBhIGRpZmZl
cmVudCBwYWdlLgotICAgICAgICBpZiAob2xkUGFnZSAhPSBuZXdQYWdlKQotICAgICAgICAgICAg
bG9hZGVyKCktPnRyYW5zZmVyTG9hZGluZ1Jlc291cmNlc0Zyb21QYWdlKG9sZFBhZ2UpOwotCi0g
ICAgICAgIC8vIERvIHRoZSBzYW1lIGZvciBhbGwgdGhlIGNoaWxkcmVuLgotICAgICAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgY2hpbGQtPnRyYW5zZmVyQ2hp
bGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKLSAgICB9Ci19Ci0KIFN0cmluZyBGcmFtZTo6ZG9jdW1l
bnRUeXBlU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0g
ZG9jdW1lbnQoKS0+ZG9jdHlwZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTEx
MjQzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsOCArMTEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZW5kZXJWaWV3KiBj
b250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVuZGVyIHRyZWUgZm9yIHRo
ZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICAgICAgUmVuZGVyUGFydCog
b3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBmb3IgdGhlIGVsZW1lbnQgdGhhdCBj
b250YWlucyB0aGlzIGZyYW1lLgogCi0gICAgICAgIHZvaWQgdHJhbnNmZXJDaGlsZEZyYW1lVG9O
ZXdEb2N1bWVudCgpOwotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgICAg
IHZvaWQgZGlzcGF0Y2hWaXNpYmlsaXR5U3RhdGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTEzNDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMi
IGlmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODE1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTItMDMtMTkgIEd1c3Rhdm8gTm9yb25o
YSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gbGliV2ViQ29yZS5sYSBo
YXMgYmVjb21lIHRvbyBiaWcgZm9yIG1ha2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI1NCwxNiArMTI1NCw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjoKICAgICByZXR1cm4gY29yZVN1YmZyYW1lOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFBhZ2UqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQYWdlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBQYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7
CiAgICAgQVNTRVJUKHBhcmFtTmFtZXMuc2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw4ICsxODMsNiBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6UGFn
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZy
b21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6UGFnZSopIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50
IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaWREZXRlY3RYU1MpOgorCiAyMDEyLTAzLTE5
ICBUeWxlciBBYmJvdHQgIDx0YWJib3R0QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IHNwZWVkIHVwIHRleHQgc2VsZWN0aW9uIGZvciBsYXJnZSBzZWxlY3Rpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTExMjQz
KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MCwxNyArNzQwLDYgQEAg
UGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFjawogICAgIHJldHVybiBjaGls
ZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSogLypvbGRQYWdlKi8pCi17
Ci0gICAgUGFnZSogbmV3UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBtX3dlYlBhZ2VQcml2
YXRlID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50QmxhY2tCZXJyeSo+KG5ld1BhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKSktPndlYlBhZ2VQcml2YXRlKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmlu
ZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCopOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CkBAIC0xNjQs
OCArMTYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkV4dGVybmFsbHko
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgZmluYWxQYWdlVXJs
LCBjb25zdCBTdHJpbmcmIGljb25VcmwpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGlu
Z1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KEhUTUxGb3JtRWxlbWVudCopIHsg
bm90SW1wbGVtZW50ZWQoKTsgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJh
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lQ2xpZW50KToK
KyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoRnJh
bWVMb2FkZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMy0xOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdURiBoZWFkZXIgaW5jbHVkZSBkaXNjaXBsaW5lIGlu
IENocm9taXVtIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTAg
KzI4NCw2IEBAIHB1YmxpYzoKICAgICAvLyBBIHJlZmxlY3RlZCBYU1Mgd2FzIGVuY291bnRlcmVk
IGluIHRoZSBwYWdlIGFuZCBzdXBwcmVzc2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoV2ViRnJhbWUqLCBjb25zdCBXZWJVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgeyB9
CiAKLSAgICAvLyBUaGlzIGZyYW1lIGFkb3B0ZWQgdGhlIHJlc291cmNlIHRoYXQgaXMgYmVpbmcg
bG9hZGVkLiBUaGlzIGhhcHBlbnMgd2hlbgotICAgIC8vIGFuIGlmcmFtZSwgdGhhdCBpcyBsb2Fk
aW5nIGEgc3VicmVzb3VyY2UsIGlzIHRyYW5zZmVycmVkIGJldHdlZW4gd2luZG93cy4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRvcHRVUkxMb2FkZXIoV2ViVVJMTG9hZGVyKikgeyB9Ci0KICAgICAv
LyBTY3JpcHQgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNjcmlwdCBpbiB0aGUgcGFnZSB0cmllZCB0byBhbGxv
Y2F0ZSB0b28gbXVjaCBtZW1vcnkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExMTI0MykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NTksMzMgKzE0NTksNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFt
ZUxvYWRlckNsaWVudEltcGw6CiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNyZWF0ZUNoaWxkRnJh
bWUoZnJhbWVSZXF1ZXN0LCBvd25lckVsZW1lbnQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAg
ICBBU1NFUlQobV93ZWJGcmFtZS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkpOwotCi0gICAgV2Vi
RnJhbWVJbXBsKiBuZXdQYXJlbnQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dlYkZy
YW1lLT5wYXJlbnQoKSk7Ci0gICAgaWYgKCFuZXdQYXJlbnQgfHwgIW5ld1BhcmVudC0+Y2xpZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJlcGxhY2UgdGhlIGNsaWVudCBzaW5jZSB0
aGUgb2xkIGNsaWVudCBtYXkgYmUgZGVzdHJveWVkIHdoZW4gdGhlCi0gICAgLy8gcHJldmlvdXMg
cGFnZSBpcyBjbG9zZWQuCi0gICAgbV93ZWJGcmFtZS0+c2V0Q2xpZW50KG5ld1BhcmVudC0+Y2xp
ZW50KCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNmZXJMb2FkaW5n
UmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFBhZ2UqIG9sZFBhZ2UpCi17Ci0gICAgYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QobG9hZGVyLT5pZGVudGlmaWVyKCksIGxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgcmVxdWVzdCk7Ci0KLSAgICBXZWJGcmFtZUltcGwqIG9sZFdlYkZyYW1lID0gV2ViRnJh
bWVJbXBsOjpmcm9tRnJhbWUob2xkUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmIChvbGRXZWJG
cmFtZSAmJiBvbGRXZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG9sZFdlYkZyYW1lLT5jbGll
bnQoKS0+cmVtb3ZlSWRlbnRpZmllckZvclJlcXVlc3QobG9hZGVyLT5pZGVudGlmaWVyKCkpOwot
Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCk7Ci0gICAgV2Vi
VVJMTG9hZGVyKiB3ZWJVUkxMb2FkZXIgPSBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpGcm9tUmVz
b3VyY2VIYW5kbGUoaGFuZGxlKS0+bG9hZGVyKCk7Ci0gICAgaWYgKHdlYlVSTExvYWRlciAmJiBt
X3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZEFk
b3B0VVJMTG9hZGVyKHdlYlVSTExvYWRlcik7Ci19Ci0KIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZVBsdWdpbigKICAgICBjb25zdCBJbnRTaXplJiBzaXpl
LCAvLyBGSVhNRTogaG93IGRvIHdlIHVzZSB0aGlzPwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
OCArMTc3LDYgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywKICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1
bWVudChXZWJDb3JlOjpQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jl
c291cmNlRnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQYWdlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mLApJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTExMjY3KQorKysgU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMg
dGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGll
bnRFZmwpOgorCiAyMDEyLTAzLTE2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSQpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjksMzAgKzMyOSw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjoK
ICAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKG1fdmlldywgbV9mcmFtZSwgbmFtZSwg
b3duZXJFbGVtZW50LCB1cmwsIHJlZmVycmVyKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAgICBB
U1NFUlQobV9mcmFtZSk7Ci0KLSAgICBGcmFtZSogY3VycmVudEZyYW1lID0gRVdLUHJpdmF0ZTo6
Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIEV2YXNfT2JqZWN0KiBjdXJyZW50VmlldyA9IGV3a19m
cmFtZV92aWV3X2dldChtX2ZyYW1lKTsKLSAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBjdXJyZW50
RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7Ci0KLSAgICBGcmFtZUxvYWRlckNsaWVudEVmbCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGllbnRFZmwqPihwYXJlbnRGcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpKTsKLSAgICBFdmFzX09iamVjdCogY2xpZW50RnJhbWUgPSBjbGllbnQg
PyBjbGllbnQtPndlYkZyYW1lKCkgOiAwOwotICAgIEV2YXNfT2JqZWN0KiBjbGllbnRWaWV3ID0g
ZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNsaWVudEZyYW1lKTsKLQotICAgIGlmIChjdXJyZW50VmlldyAh
PSBjbGllbnRWaWV3KSB7Ci0gICAgICAgIGV3a19mcmFtZV92aWV3X3NldChtX2ZyYW1lLCBjbGll
bnRWaWV3KTsKLSAgICAgICAgbV92aWV3ID0gY2xpZW50VmlldzsKLSAgICB9Ci0KLSAgICBBU1NF
UlQoZXdrX3ZpZXdfY29yZV9wYWdlX2dldChld2tfZnJhbWVfdmlld19nZXQobV9mcmFtZSkpID09
IGN1cnJlbnRGcmFtZS0+cGFnZSgpKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFBhZ2UqKQotewotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBBU1NF
UlQoIW1fcGx1Z2luVmlldyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExMTI0MykK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw4ICsxMzIsNiBAQCBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEVmbCA6IHB1YmxpYyBGcmFtCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoUGFnZSopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZy
b21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6UGFnZSopOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdp
bihXaWRnZXQqIHBsdWdpbldpZGdldCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTEyNjcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJD
bGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKEZy
YW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wMy0xNiAgVmljdG9yIEx1Y2VybyAgPHZpY3Rvci5s
dWNlcm9AaXBhcnRuZXIuY2w+CiAKICAgICAgICAgW0dUS10gV2ViS2l0V2ViUmVzb3VyY2U6Omxv
YWQtZmFpbGVkIHVzZXMgdGhlIHdyb25nIG1hcnNoYWxsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDM1ICs1MzIs
NiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlCiAgICAgcmV0dXJu
IGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRU
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKQotewotICAgIEFT
U0VSVChtX2ZyYW1lKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgZnJhbWUncyB3ZWJ2aWV3IHRvIHRo
ZSBuZXcgcGFyZW50J3Mgd2Vidmlldy4KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX2Zy
YW1lKTsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2Zy
YW1lKTsKLQotICAgIEZyYW1lKiBwYXJlbnRDb3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS0+
cGFyZW50KCk7Ci0gICAgV2ViS2l0V2ViRnJhbWUqIHBhcmVudEtpdEZyYW1lID0ga2l0KHBhcmVu
dENvcmVGcmFtZSk7Ci0gICAgV2ViS2l0V2ViVmlldyogcGFyZW50V2ViVmlldyA9IGdldFZpZXdG
cm9tRnJhbWUocGFyZW50S2l0RnJhbWUpOwotICAgIGlmICh3ZWJWaWV3ICE9IHBhcmVudFdlYlZp
ZXcpCi0gICAgICAgIG1fZnJhbWUtPnByaXYtPndlYlZpZXcgPSBwYXJlbnRXZWJWaWV3OwotCi0g
ICAgQVNTRVJUKGNvcmUoZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSkgPT0gY29yZUZyYW1lLT5w
YWdlKCkpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNv
dXJjZUZyb21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UGFnZSogb2xkUGFnZSkKLXsK
LSAgICBBU1NFUlQob2xkUGFnZSAhPSBjb3JlKG1fZnJhbWUpLT5wYWdlKCkpOwotCi0gICAgR093
blB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhsb2FkZXItPmlkZW50aWZpZXIo
KSkpOwotICAgIEFTU0VSVCghd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZShnZXRWaWV3RnJv
bUZyYW1lKG1fZnJhbWUpLCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKSk7Ci0KLSAgICBhc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChsb2FkZXItPmlkZW50aWZpZXIoKSwgbG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKLQotICAgIHdlYmtpdF93ZWJfdmlld19yZW1vdmVf
cmVzb3VyY2Uoa2l0KG9sZFBhZ2UpLCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKLX0KLQogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpCiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpblZpZXcpOwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsOCArMTE1LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRv
TmV3RG9jdW1lbnQoV2ViQ29yZTo6UGFnZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNm
ZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRn
ZXQpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiBwYXJhbVZhbHVlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQg
bWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisKIDIwMTItMDMtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAyNzk5Nz4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsOCArMTk4LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxs
b3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdl
YkNvcmU6OlBhZ2UqIG9sZFBhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
ckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UGFnZSogb2xkUGFnZSk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25z
dCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzODYsMjIgKzEzODYsNiBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSogb2xkUGFnZSkKLXsKLX0KLQot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFn
ZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgUGFnZSogb2xkUGFnZSkKLXsKLSAgICBBU1NFUlQob2xkUGFnZSAhPSBjb3JlKG1f
d2ViRnJhbWUuZ2V0KCkpLT5wYWdlKCkpOwotCi0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
ID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAgQVNTRVJUKCFbZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKSBfb2JqZWN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyXSk7Ci0KLSAgICBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIG9yaWdpbmFsUmVxdWVzdCk7Ci0KLSAgICBba2l0KG9sZFBhZ2UpIF9yZW1vdmVP
YmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXJdOwotfQotCiBPYmplY3RDb250ZW50VHlwZSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDExMTI2NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZy
YW1lTG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAg
ICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQpOgorCiAyMDEyLTAzLTE2ICBUZWVtdSBLYXRhamlz
dG8gIDx0ZWVtdS5rYXRhamlzdG9AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQg
ZG9jdW1lbnRhdGlvbiBtaXNzaW5nIGEgZmV3IHNpbmNlIDQuNiBpbmZvcm1hdGlvbgpJbmRleDog
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY2
LDI4ICsxMzY2LDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Ywog
ICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSopCi17
Ci0gICAgQVNTRVJUKG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKLQotICAgIGlmICghbV93ZWJG
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV93ZWJG
cmFtZS0+ZC0+ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7Ci0gICAgQVNTRVJUKHBhcmVudEZyYW1l
KTsKLQotICAgIGlmIChRV2ViRnJhbWUqIHBhcmVudCA9IFFXZWJGcmFtZVByaXZhdGU6OmtpdChw
YXJlbnRGcmFtZSkpIHsKLSAgICAgICAgbV93ZWJGcmFtZS0+ZC0+c2V0UGFnZShwYXJlbnQtPnBh
Z2UoKSk7Ci0KLSAgICAgICAgaWYgKG1fd2ViRnJhbWUtPnBhcmVudCgpICE9IHFvYmplY3RfY2Fz
dDxRT2JqZWN0Kj4ocGFyZW50KSkKLSAgICAgICAgICAgIG1fd2ViRnJhbWUtPnNldFBhcmVudChw
YXJlbnQpOwotICAgIH0KLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp0cmFuc2Zlckxv
YWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFnZSopCi17Ci19Ci0KIE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgLy8gcURl
YnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnN0cmluZygpPDwiLCBtaW1l
ID0gIjw8bWltZVR5cGVJbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiAxMTEyNDMpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDggKzIwNyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Ny
b2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
bW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0
aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOgorCiAyMDEyLTAzLTEz
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBOT1RJRklD
QVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsMzMgKzc2Miw2IEBA
IFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjoKICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikKLXsKLSAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKLSAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0ga2l0KGNvcmVGcmFtZS0+cGFnZSgpKTsKLSAgICBpZiAobV93ZWJGcmFtZS0+
d2ViVmlldygpICE9IHdlYlZpZXcpCi0gICAgICAgIG1fd2ViRnJhbWUtPnNldFdlYlZpZXcod2Vi
Vmlldyk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zZmVyTG9hZGluZ1Jl
c291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQotewotICAgIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KGxvYWRlci0+aWRlbnRpZmllcigpLCBsb2FkZXItPmRvY3VtZW50TG9hZGVy
KCksIHJlcXVlc3QpOwotCi0gICAgV2ViVmlldyogb2xkV2ViVmlldyA9IGtpdChvbGRQYWdlKTsK
LSAgICBpZiAoIW9sZFdlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2Vi
UmVzb3VyY2VMb2FkRGVsZWdhdGU+IG9sZFJlc291cmNlTG9hZERlbGVnYXRlOwotICAgIGlmIChG
QUlMRUQob2xkV2ViVmlldy0+cmVzb3VyY2VMb2FkRGVsZWdhdGUoJm9sZFJlc291cmNlTG9hZERl
bGVnYXRlKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGVQcml2YXRlMj4gb2xkUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlMihRdWVyeSwg
b2xkUmVzb3VyY2VMb2FkRGVsZWdhdGUpOwotICAgIGlmICghb2xkUmVzb3VyY2VMb2FkRGVsZWdh
dGVQcml2YXRlMikKLSAgICAgICAgcmV0dXJuOwotICAgIG9sZFJlc291cmNlTG9hZERlbGVnYXRl
UHJpdmF0ZTItPnJlbW92ZUlkZW50aWZpZXJGb3JSZXF1ZXN0KG9sZFdlYlZpZXcsIGxvYWRlci0+
aWRlbnRpZmllcigpKTsKLX0KLQogUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
Y3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJD
b3JlOjpQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJv
bVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpQYWdlKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgYm9vbCBsb2FkTWFudWFsbHkpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTEyNjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdp
YyIgaWZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBGcmFtZUxvYWRlckNsaWVudCBtZXRob2RzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UpOgorCiAyMDEyLTAz
LTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBOT1RJ
RklDQVRJT05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUwpJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V2luQ0UuY3BwCShyZXZpc2lvbiAxMTEyNDMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzIsMTQgKzE3Miw2IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UK
ICAgICByZXR1cm4gbV93ZWJWaWV3LT5jcmVhdGVGcmFtZSh1cmwsIG5hbWUsIG93bmVyRWxlbWVu
dCwgcmVmZXJyZXIsIGFsbG93c1Njcm9sbGluZywgbWFyZ2luV2lkdGgsIG1hcmdpbkhlaWdodCk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudChQYWdlKikKLXsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQp
CiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpblZpZXcpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgJKHJldmlzaW9uIDExMTI0MykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNv
cmU6OlBhZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9t
UGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gMTExMjY3KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlm
cmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEyLTAzLTE1ICBLZXZpbiBPbGxp
dmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIE1vdmUgd3ggcG9ydCB0
byB1c2luZyBleHBvcnQgbWFjcm9zCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMTEyNDMp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkwMCwxNCArOTAwLDYgQEAgUGFzc1JlZlB0cjxGcmFtZT4g
RnJhbWVMb2FkZXJDbGllbnRXeDo6YwogICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KFBhZ2UqKQotewotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQYWdlKikKLXsKLX0KLQogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnRXeDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gMTExMjQzKQorKysgU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBj
b3B5KQpAQCAtMjExLDggKzIxMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KFBhZ2UqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJv
bVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKik7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVh
bGx5KSA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQq
IHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxs
SGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDExMTM0NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQ0IEBACisyMDEyLTAzLTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICJtYWdpYyIgaWZyYW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0ZXN0cyBvZiBtYWdp
YyBpZnJhbWUuIFRoZXNlIHRlc3RzIGRvbid0IHJlYWxsIG1ha2Ugc2Vuc2UgdG8KKyAgICAgICAg
a2VlcCB3aXRob3V0IHRoZSBmZWF0dXJlLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvYWRvcHQt
aWZyYW1lLWludG8taXRzZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvYWRvcHQtaWZyYW1lLWludG8taXRzZWxmLmh0bWw6IEFkZGVkLgorICAgICAgICAgICAg
LSBJJ3ZlIGFkZGVkIGEgdGVzdCBhYm91dCBhZG9wdGluZyBhbiBpZnJhbWUgaW50byBpdHNlbGYu
IFdlIG1pZ2h0CisgICAgICAgICAgICAgIGFscmVhZHkgaGF2ZSBhIHRlc3QgZm9yIHRoaXMsIGJ1
dCBpdCBjb3ZlcnMgYSBtaXN0YWtlIEkgbWFkZSBpbgorICAgICAgICAgICAgICBhbiBlYXJsaWVy
IGl0ZXJhdGlvbiBvZiB0aGlzIHBhdGNoLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1y
ZXBhcmVudGluZy1hZG9wdC1ub2RlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctYWRvcHQtbm9kZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1lbGVtZW50cy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLWVtYmVkLWVsZW1lbnRzLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZmFpbC1sb2FkLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZmFpbC1sb2Fk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9p
ZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmcuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50
aW5nLWFkb3B0LW5vZGUtaWZyYW1lLWNvbnRlbnQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtbmV3LXBh
Z2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLWVtYmVkLWZyYW1lMS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQtaWZyYW1lLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1mcmFtZTEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
aWZyYW1lLXJlcGFyZW50aW5nLWZyYW1lMi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctaWZyYW1lLWNvbnRlbnQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLTEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWlm
cmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJh
bWUtcmVwYXJlbnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1u
ZXctcGFnZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NjcmlwdC10ZXN0
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IFJlbW92ZWQuCisKIDIwMTItMDMtMTkg
IFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBhZGQgY3NzIHBhcnNp
bmcgb2YgZmxleC1saW5lLXBhY2sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0
LWlmcmFtZS1pbnRvLWl0c2VsZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvYWRvcHQtaWZyYW1lLWludG8taXRzZWxmLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFtZS1pbnRvLWl0
c2VsZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IEVy
cm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMworCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9hZG9wdC1pZnJhbWUtaW50by1pdHNlbGYuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9hZG9wdC1pZnJhbWUtaW50by1pdHNlbGYu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFt
ZS1pbnRvLWl0c2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKTsKKyAgICAgICAgdmFy
IGNoaWxkTm9kZSA9IGZyYW1lLmNvbnRlbnREb2N1bWVudC5hZG9wdE5vZGUoZnJhbWUpOworICAg
IH0gY2F0Y2goZXgpIHsKKyAgICAgICAgYWxlcnQoZXgpOworICAgIH0KK30KKzwvc2NyaXB0Pgor
PGlmcmFtZSBpZD0iZiIgb25sb2FkPSJ0ZXN0KCk7IiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5
PjwvYm9keT4iPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXJlcGFyZW50aW5nLWFkb3B0LW5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzAsMCBAQAotVGhpcyB0ZXN0IGFkb3B0cyBhbiBpZnJhbWUgZnJvbSBhIGRpZmZlcmVudCBw
YWdlIGludG8gdGhpcyBvbmUsIGNsb3NlcyB0aGUgcGFnZSB0aGF0IG9yaWdpbmFsbHkgY29udGFp
bmVkIHRoZSBpZnJhbWUsIHRoZW4gcmVsb2FkcyB0aGUgaWZyYW1lIHRvIHZlcmlmeSB0aGF0IHRo
ZXJlIGFyZSBubyByZW1haW5pbmcgZGVwZW5kZW5jaWVzIG9uIHRoZSBjbG9zZWQgcGFnZS4KLQot
TG9hZGVkIHdpbmRvdyAyLgotQWRvcHRlZCBpZnJhbWUgdG8gZmlyc3QgcGFnZS4KLUNsb3Npbmcg
d2luZG93IDIuCi1XaW5kb3cgMiBjbG9zZWQuCi1QQVNTOiBpZnJhbWUgcmVsb2FkZWQuCi0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2Rl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLWFkb3B0LW5vZGUuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5vZGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw2NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxzY3JpcHQ+Ci12YXIgd2luZG93MiwgaWZyYW1lOwotCi1m
dW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
IikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwotfQotCi1mdW5jdGlvbiByZWFsbHlGaW5p
c2goKQotewotICAgIGxvZygiUEFTUzogaWZyYW1lIHJlbG9hZGVkLiIpOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gd2luZG93MlVubG9hZGVkKCkKLXsKLSAgICBsb2co
IldpbmRvdyAyIGNsb3NlZC4iKTsKLQotICAgIC8vIFJlbG9hZCB0aGUgaWZyYW1lIHRvIGRlbW9u
c3RyYXRlIHRoYXQgaXQgbm8gbG9uZ2VyCi0gICAgLy8gZGVwZW5kcyBvbiBpdHMgb3JpZ2luYWwg
d2luZG93LgotICAgIGlmcmFtZS5vbmxvYWQgPSByZWFsbHlGaW5pc2g7Ci0gICAgaWZyYW1lLmNv
bnRlbnREb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmlz
aCgpCi17Ci0gICAgbG9nKCJDbG9zaW5nIHdpbmRvdyAyLiIpOwotICAgIHdpbmRvdzIub251bmxv
YWQgPSB3aW5kb3cyVW5sb2FkZWQ7Ci0gICAgd2luZG93Mi5jbG9zZSgpOwotfQotCi1mdW5jdGlv
biB3aW5kb3cyTG9hZGVkKCkKLXsKLSAgICBsb2coIkxvYWRlZCB3aW5kb3cgMi4iKTsKLSAgICBp
ZnJhbWUgPSB3aW5kb3cyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKLSAgICB3
aW5kb3cuZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Ci0gICAgd2luZG93LmRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLSAgICBsb2coIkFkb3B0ZWQgaWZyYW1lIHRvIGZpcnN0
IHBhZ2UuIik7Ci0KLSAgICAvLyBTdGFydCB0aGUgaWZyYW1lJ3MgdGltZXIgdG8gY2FsbCBmaW5p
c2goKSB0byBlbmQgdGhlIHRlc3QuCi0gICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuc3RhcnRGaW5p
c2hUaW1lcigpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIH0KLQot
ICAgIHdpbmRvdzIgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1h
ZG9wdC1ub2RlLW5ldy1wYWdlLmh0bWwiKTsKLSAgICB3aW5kb3cyLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCB3aW5kb3cyTG9hZGVkLCBmYWxzZSk7Ci19Ci08L3NjcmlwdD4KLTxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KLTxwPlRoaXMgdGVzdCBhZG9wdHMgYW4gaWZyYW1lIGZyb20gYSBkaWZmZXJl
bnQgcGFnZSBpbnRvIHRoaXMgb25lLAotY2xvc2VzIHRoZSBwYWdlIHRoYXQgb3JpZ2luYWxseSBj
b250YWluZWQgdGhlIGlmcmFtZSwgdGhlbiByZWxvYWRzCi10aGUgaWZyYW1lIHRvIHZlcmlmeSB0
aGF0IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGVwZW5kZW5jaWVzCi1vbiB0aGUgY2xvc2VkIHBh
Z2UuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQtZWxlbWVudHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1y
ZXBhcmVudGluZy1lbWJlZC1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMTI0MykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1lbGVt
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0
ZXN0IG1vdmVzIGFuIGlmcmFtZSBiZXR3ZWVuIHR3byBkb2N1bWVudHMgMyB0aW1lczogd2l0aG91
dCBwbHVnaW5zLCB3aXRoIDxlbWJlZD4gdGFnIGFuZCB0aGVuIHdpdGggPG9iamVjdD4gdGFnLgot
Ci1Pbmx5IHRoZSBhdHRlbXB0IHdpdGhvdXQgcGx1Z2luIGVsZW1lbnRzIHNob3VsZCBzdWNjZWVk
LiBUaGUgcHJlc2VuY2Ugb2YgcGx1Z2luIGVsZW1lbnRzIHNob3VsZCBwcmV2ZW50IHRoZSBkb2N1
bWVudC5hZG9wdE5vZGUoKSBtZXRob2QgZnJvbSB0cmlnZ2VyaW5nIGxpdmUgdHJhbnNmZXIgLSBp
biB3aGljaCBjYXNlIHRoZSBpZnJhbWUgd2lsbCBiZSByZWxvYWRlZC4KLQotVGVzdCBzdWNjZWVk
cyBpZiB0aGVyZSBhcmUgJ1BBU1MnIG1lc3NhZ2VzIGJlbG93IGFuZCBubyAnRkFJTCcgbWVzc2Fn
ZXMuCi0KLSAKLVBBU1M6IFRlc3Qgd2l0aG91dCBwbHVnaW5zCi1QQVNTOiBUZXN0IHdpdGggPGVt
YmVkPgotUEFTUzogVGVzdCB3aXRoIDxvYmplY3Q+Ci1UZXN0IEZpbmlzaGVkLgotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQtZWxlbWVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctZW1iZWQtZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWVtYmVkLWVsZW1lbnRzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNjkgKzAsMCBAQAotPGh0bWw+Ci08c2NyaXB0PgotZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpIHsKLSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVyVGV4
dCArPSBtZXNzYWdlICsgIlxuIjsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5UmVzdWx0KG1lc3NhZ2Us
IGFjdHVhbFRva2VuLCBleHBlY3RlZFRvUmVsb2FkKSB7Ci0gIHZhciBzdWNjZXNzID0gKGV4cGVj
dGVkVG9SZWxvYWQgIT0gKGFjdHVhbFRva2VuID09ICJtb2RpZmllZCIpKTsKLSAgbG9nKChzdWNj
ZXNzID8gIlBBU1MiIDogIkZBSUwiKSArICI6ICIgKyBtZXNzYWdlKTsKLX0KLQotZnVuY3Rpb24g
dHJhbnNmZXJJZnJhbWUodGVzdFN0ZXBEZXNjcmlwdGlvbiwgZXhwZWN0ZWRUb1JlbG9hZCwgbmV4
dFRlc3QpCi17Ci0gIHZhciBpZnJhbWUgPSBmcmFtZTEuY29udGVudERvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKLSAgaWYgKGlmcmFtZS5jb250ZW50V2luZG93LnRv
a2VuICE9ICJsb2FkZWQiKQotICAgIGxvZygiRkFJTDogaW52YWxpZCBpbml0aWFsIHN0YXRlIG9m
IHRlc3QgaWZyYW1lIik7Ci0KLSAgaWZyYW1lLmNvbnRlbnRXaW5kb3cudG9rZW4gPSAibW9kaWZp
ZWQiOwotCi0gIGZyYW1lMS5jb250ZW50RG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Ci0gIGZy
YW1lMi5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwotICB2ZXJpZnlS
ZXN1bHQodGVzdFN0ZXBEZXNjcmlwdGlvbiwgaWZyYW1lLmNvbnRlbnRXaW5kb3cudG9rZW4sIGV4
cGVjdGVkVG9SZWxvYWQpOwotCi0gIGZyYW1lMS5vbmxvYWQgPSBuZXh0VGVzdDsKLSAgZnJhbWUx
LmNvbnRlbnRXaW5kb3cubG9jYXRpb24ucmVsb2FkKCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaCgp
Ci17Ci0gIGxvZygiVGVzdCBGaW5pc2hlZC4iKTsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdCgpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gIH0KLQotICBmcmFtZTEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZnJhbWUxIik7Ci0gIGZyYW1lMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmcmFtZTIiKTsKLQotICB0cmFuc2ZlcklmcmFtZSgiVGVzdCB3aXRob3V0IHBsdWdpbnMiLCBm
YWxzZSwgdGVzdDEpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpIHsKLSAgdmFyIGlmcmFtZSA9IGZy
YW1lMS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwot
ICBpZnJhbWUuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lLmNvbnRlbnRE
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpKTsKLSAgdHJhbnNmZXJJZnJhbWUoIlRlc3Qg
d2l0aCA8ZW1iZWQ+IiwgdHJ1ZSwgdGVzdDIpOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAg
dmFyIGlmcmFtZSA9IGZyYW1lMS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImlmcmFtZSIpWzBdOwotICBpZnJhbWUuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aWZyYW1lLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvYmplY3QiKSk7Ci0gIHRyYW5z
ZmVySWZyYW1lKCJUZXN0IHdpdGggPG9iamVjdD4iLCB0cnVlLCBmaW5pc2gpOwotfQotCi08L3Nj
cmlwdD4KLTxib2R5IG9ubG9hZD10ZXN0KCk+Ci08cD5UaGlzIHRlc3QgbW92ZXMgYW4gaWZyYW1l
IGJldHdlZW4gdHdvIGRvY3VtZW50cyAzIHRpbWVzOiB3aXRob3V0IHBsdWdpbnMsIHdpdGggJmx0
O2VtYmVkJmd0OyB0YWcgYW5kIHRoZW4gd2l0aCAmbHQ7b2JqZWN0Jmd0OyB0YWcuPC9wPgotPHA+
T25seSB0aGUgYXR0ZW1wdCB3aXRob3V0IHBsdWdpbiBlbGVtZW50cyBzaG91bGQgc3VjY2VlZC4g
VGhlIHByZXNlbmNlIG9mIHBsdWdpbiBlbGVtZW50cyBzaG91bGQgcHJldmVudCB0aGUgZG9jdW1l
bnQuYWRvcHROb2RlKCkgbWV0aG9kIGZyb20gCi10cmlnZ2VyaW5nIGxpdmUgdHJhbnNmZXIgLSBp
biB3aGljaCBjYXNlIHRoZSBpZnJhbWUgd2lsbCBiZSByZWxvYWRlZC48L3A+Ci08cD5UZXN0IHN1
Y2NlZWRzIGlmIHRoZXJlIGFyZSAnUEFTUycgbWVzc2FnZXMgYmVsb3cgYW5kIG5vICdGQUlMJyBt
ZXNzYWdlcy48L3A+Ci08aWZyYW1lIGlkPWZyYW1lMSBzcmM9InJlc291cmNlcy9pZnJhbWUtcmVw
YXJlbnRpbmctZW1iZWQtZnJhbWUxLmh0bWwiPjwvaWZyYW1lPgotPGlmcmFtZSBpZD1mcmFtZTIg
c3JjPSJyZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWZyYW1lMi5odG1sIj48L2lmcmFtZT4K
LTxwcmUgaWQ9bG9nPjwvcHJlPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICswLDAgQEAKLVRo
aXMgdGVzdCBtb3ZlcyB0aGUgaWZyYW1lIGJldHdlZW4gdHdvIGRvY3VtZW50cyAtIG9uY2UgdXNp
bmcgdGhpcyBzZXF1ZW5jZToKLQotICAgIGRvY3VtZW50MS5ib2R5LnJlbW92ZUNoaWxkKGlmcmFt
ZSk7Ci0gICAgZG9jdW1lbnQyLmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLQotYW5kIHRoZW4g
dXNpbmcgJ2Fkb3B0Tm9kZSc6Ci0KLSAgICBkb2N1bWVudDIuYWRvcHROb2RlKGlmcmFtZSk7Ci0g
ICAgZG9jdW1lbnQyLmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLQotSW4gdGhlIHNlY29uZCBj
YXNlLCB0aGUgY29udGVudCBvZiBpZnJhbWUgc2hvdWxkIG5vdCBiZSByZS1sb2FkZWQgYW5kICds
b2FkJyBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkLiBBbHNvLCB0aGUgdGltZXIgc3RhcnRlZCBi
ZWZvcmUgcmVwYXJlbnRpbmcgc2hvdWxkIHN1cnZpdmUgdHJhbnNpdGlvbiBhbmQgZmlyZS4KLQot
VGVzdCBhbHNvIHZlcmlmaWVzIHRoYXQgZG9jdW1lbnQuYWRvcHROb2RlKCkgaW4gY2FzZSBvZiBu
b3QtcmVuZGVyZWQgZG9jdW1lbnQgKGxvYWRlZCBieSBYTUxIdHRwUmVxdWVzdCkgZG9lcyBub3Qg
cHJlc2VydmUgdGhlIGNvbnRlbnQgb2YgaWZyYW1lLgotCi1UZXN0IHN1Y2NlZWRzIGlmIHRoZXJl
IGFyZSAnUEFTUycgbWVzc2FnZXMgYmVsb3cgYW5kIG5vICdGQUlMJyBtZXNzYWdlcy4KLQotIAot
UEFTUzogSWZyYW1lIGxvYWRlZCwgdmVyaWZ5IHRva2VuLCBleHBlY3RlZDogbG9hZGVkLCBhY3R1
YWw6IGxvYWRlZAotUEFTUzogSWZyYW1lIHRva2VuIG1vZGlmaWVkLCBleHBlY3RlZDogbW9kaWZp
ZWQtMSwgYWN0dWFsOiBtb2RpZmllZC0xCi1SZXBhcmVudCBpZnJhbWUgLSB0aGUgY29udGVudCBz
aG91bGQgcmUtbG9hZC4KLVBBU1M6IGlmcmFtZSBpcyB1bmxvYWRlZC4KLVBBU1M6IElmcmFtZSBy
ZS1sb2FkZWQsIHZlcmlmeSB0b2tlbiwgZXhwZWN0ZWQ6IGxvYWRlZCwgYWN0dWFsOiBsb2FkZWQK
LVBBU1M6IElmcmFtZSB0b2tlbiBtb2RpZmllZCwgZXhwZWN0ZWQ6IG1vZGlmaWVkLTIsIGFjdHVh
bDogbW9kaWZpZWQtMgotUmVwYXJlbnQgaWZyYW1lIHVzaW5nIGFkb3B0Tm9kZSAtIHRoZSBjb250
ZW50IHNob3VsZCBub3QgdW5sb2FkLgotUEFTUzogaWZyYW1lIGlzIE5PVCB1bmxvYWRlZC4KLVBB
U1M6IElmcmFtZSB0b2tlbiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgYmVmb3JlIHJlcGFyZW50aW5n
LCBleHBlY3RlZDogbW9kaWZpZWQtMiwgYWN0dWFsOiBtb2RpZmllZC0yCi1QQVNTOiBYSFItbG9h
ZGVkIERvY3VtZW50IGlzIGNvcnJlY3QuCi1QQVNTOiBpZnJhbWUgaXMgdW5sb2FkZWQuCi1UZXN0
IEZpbmlzaGVkLgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctZmFpbC1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZmFpbC1sb2FkLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLWZhaWwtbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAot
VGhpcyB0ZXN0IGFkb3B0cyBhbiBpZnJhbWUgaW50byBhIHNlY29uZCBwYWdlLCB0aGVuIGNsb3Nl
cyB0aGF0IHBhZ2UsIGNhbmNlbGxpbmcgdGhhdCBpZnJhbWUgbG9hZC4gVGhlIGNhbmNlbGxlZCBs
b2FkIGlzIHRyZWF0ZWQgYXMgYSBmYWlsZWQgbG9hZC4gVGhpcyB0ZXN0IHdpbGwgY3Jhc2ggaWYg
cmVzb3VyY2UgdHJhY2tpbmcgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgYWZ0ZXIgdGhlIGlmcmFtZSBo
YXMgYmVlbiBhZG9wdGVkIHRvIGEgZGlmZmVyZW50IHBhZ2UgYmVjYXVzZSB0aGUgZmFpbGVkIGxv
YWQgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgd3JvbmcgcGxhY2UuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctZmFpbC1sb2FkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLWZhaWwtbG9h
ZC5odG1sCShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJh
bWUtcmVwYXJlbnRpbmctZmFpbC1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjIgKzAs
MCBAQAotPGh0bWw+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciB3
ID0gd2luZG93Lm9wZW4oImFib3V0OmJsYW5rIik7Ci0gICAgdmFyIGYgPSB3LmRvY3VtZW50LmFk
b3B0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0pOwotICAg
IHcuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKTsKLSAgICB3LmNsb3NlKCk7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08
aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsZm9vIj48L2lmcmFtZT4KLTxwPlRoaXMgdGVzdCBh
ZG9wdHMgYW4gaWZyYW1lIGludG8gYSBzZWNvbmQgcGFnZSwgdGhlbiBjbG9zZXMgdGhhdCBwYWdl
LCBjYW5jZWxsaW5nIHRoYXQgaWZyYW1lIGxvYWQuIFRoZSBjYW5jZWxsZWQgbG9hZCBpcyB0cmVh
dGVkIGFzIGEgZmFpbGVkIGxvYWQuIFRoaXMgdGVzdCB3aWxsIGNyYXNoIGlmIHJlc291cmNlIHRy
YWNraW5nIGhhcyBub3QgYmVlbiB1cGRhdGVkIGFmdGVyIHRoZSBpZnJhbWUgaGFzIGJlZW4gYWRv
cHRlZCB0byBhIGRpZmZlcmVudCBwYWdlIGJlY2F1c2UgdGhlIGZhaWxlZCBsb2FkIHdpbGwgYmUg
cmVwb3J0ZWQgdG8gdGhlIHdyb25nIHBsYWNlLjwvcD4KLTwvYm9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0
aW1lciBpbiBpZnJhbWUgY29udGludWVzIGZpcmluZyBhZnRlciBpZnJhbWUgaXMgYWRvcHRlZCBp
bnRvIGEgbmV3IHdpbmRvdyBhbmQgdGhlIG9yaWdpbmFsIHdpbmRvdyB3YXMgY2xvc2VkLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBMb2FkZWQgaWZyYW1lIGluIHdpbmRv
dyAxLgotUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKLVBBU1MgTG9hZGVk
IHBhZ2UgMi4KLVBBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KLVBBU1MgSWZyYW1lIHRy
YW5zZmVycmVkLgotUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIKLVBBU1Mg
d2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2Nh
dGlvbi5ocmVmCi1QQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCi1QQVNTIFJlY2VpdmVkIHRoZSB0aW1l
ciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRt
bAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2lmcmFtZS1y
ZXBhcmVudGluZy1uZXctcGFnZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXBsdWdpbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgcGx1Z2luIGFuZCBtaW1ldHlwZSBpbiBhbiBpZnJhbWUgdGhhdCBpcyByZXBhcmVudGVkIHRv
IGEgZGlmZmVyZW50IHBhZ2UgY29udGludWUgdG8gYmVoYXZlIGNvcnJlY3RseS4KLQotTG9hZGVk
IHdpbmRvdyAyLgotUEFTUzogcGx1Z2luIE9LLgotUEFTUzogbWltZXR5cGUgT0suCi0KLUFkb3B0
ZWQgaWZyYW1lIHRvIGZpcnN0IHBhZ2UuCi1XaW5kb3cgMiB1bmxvYWRlZC4KLVBBU1M6IHBsdWdp
biBPSy4KLVBBU1M6IG1pbWV0eXBlIE9LLgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbAkocmV2aXNp
b24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LXBsdWdpbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxzY3JpcHQ+Ci12
YXIgd2luZG93MiwgaWZyYW1lOwotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwot
fQotCi1mdW5jdGlvbiBmaW5pc2goKQotewotICAgIHZhciBtZXNzYWdlID0gaWZyYW1lLmNvbnRl
bnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7Ci0gICAgbG9nKG1lc3NhZ2UpOwotCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiB3aW5kb3cyVW5sb2FkZWQoKQotewotICAgIGxv
ZygiV2luZG93IDIgdW5sb2FkZWQuIik7Ci0gICAgc2V0VGltZW91dChmaW5pc2gsIDApOyAvLyBM
ZXQgd2luZG93IGNsb3NlIGZpbmlzaCBjb21wbGV0ZWx5LgotfQotCi1mdW5jdGlvbiB3aW5kb3cy
TG9hZGVkKCkKLXsKLSAgICBsb2coIkxvYWRlZCB3aW5kb3cgMi4iKTsKLSAgICBpZnJhbWUgPSB3
aW5kb3cyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKLQotICAgIHZhciBtZXNz
YWdlID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7Ci0gICAgbG9nKG1lc3Nh
Z2UpOwotCi0gICAgd2luZG93LmRvY3VtZW50LmFkb3B0Tm9kZShpZnJhbWUpOwotICAgIHdpbmRv
dy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Ci0gICAgbG9nKCJBZG9wdGVkIGlm
cmFtZSB0byBmaXJzdCBwYWdlLiIpOwotCi0gICAgd2luZG93Mi5vbnVubG9hZCA9IHdpbmRvdzJV
bmxvYWRlZDsKLSAgICB3aW5kb3cyLmNsb3NlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKCk7Ci0gICAgfQotCi0gICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRtbCIpOwotICAgIHdpbmRvdzIu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHdpbmRvdzJMb2FkZWQsIGZhbHNlKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCBwbHVnaW4gYW5kIG1pbWV0eXBlIGluIGFuIGlmcmFtZSB0aGF0IGlzCi1yZXBhcmVudGVkIHRv
IGEgZGlmZmVyZW50IHBhZ2UgY29udGludWUgdG8gYmVoYXZlIGNvcnJlY3RseS4KLTxwcmUgaWQ9
bG9nPjwvcHJlPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwJKHJldmlzaW9uIDExMTI0MykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEwMyArMCwwIEBACi08aHRtbD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9
IG1lc3NhZ2UgKyAiXG4iOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlUb2tlbihtZXNzYWdlLCBleHBl
Y3RlZFRva2VuKQotewotICAgIHZhciBhY3R1YWxUb2tlbiA9IGlmcmFtZS5jb250ZW50V2luZG93
LnRva2VuOwotICAgIGxvZygoZXhwZWN0ZWRUb2tlbiA9PSBhY3R1YWxUb2tlbiA/ICJQQVNTIiA6
ICJGQUlMIikgKyAiOiAiICsgbWVzc2FnZSArICIsIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRUb2tl
biArICIsIGFjdHVhbDogIiArIGFjdHVhbFRva2VuKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0KLSAgICBmcmFtZTEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZnJhbWUxIik7Ci0gICAgZnJhbWUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImZyYW1lMiIpOwotICAgIGlmcmFtZSA9IGZyYW1lMS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwotCi0gICAgdmVyaWZ5VG9rZW4oIklmcmFtZSBsb2Fk
ZWQsIHZlcmlmeSB0b2tlbiIsICJsb2FkZWQiKTsKLSAgICBpZnJhbWUuY29udGVudFdpbmRvdy50
b2tlbiA9ICJtb2RpZmllZC0xIjsKLSAgICB2ZXJpZnlUb2tlbigiSWZyYW1lIHRva2VuIG1vZGlm
aWVkIiwgIm1vZGlmaWVkLTEiKTsKLQotICAgIC8vIFN0YXJ0IHRpbWVvdXQgaW4gaWZyYW1lIC0g
aXQgc2hvdWxkIG5vdCBzdXJ2aXZlIHJlcGFyZW50aW5nLgotICAgIGlmcmFtZS5jb250ZW50V2lu
ZG93LnN0YXJ0RG9vbWVkVGltZXIoKTsKLSAgICBsb2coIlJlcGFyZW50IGlmcmFtZSAtIHRoZSBj
b250ZW50IHNob3VsZCByZS1sb2FkLiIpCi0gICAgZnJhbWUxLmNvbnRlbnREb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGlmcmFtZSk7Ci0gICAgLy8gY29udGVudFdpbmRvdyBzaG91bGQgbm90IGJl
IGF2YWlsYWJsZSwgdGhlIGlmcmFtZSBpcyB1bmxvYWRlZC4KLSAgICBsb2coaWZyYW1lLmNvbnRl
bnRXaW5kb3cgPyAiRkFJTDogaWZyYW1lIGlzIG5vdCB1bmxvYWRlZC4iIDogIlBBU1M6IGlmcmFt
ZSBpcyB1bmxvYWRlZC4iKTsKLSAgICBmcmFtZTIuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaWZyYW1lKTsKLSAgICBpZnJhbWUub25sb2FkID0gdGVzdDI7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3QyKCkKLXsKLSAgICB2ZXJpZnlUb2tlbigiSWZyYW1lIHJlLWxvYWRlZCwgdmVyaWZ5IHRv
a2VuIiwgImxvYWRlZCIpOwotICAgIGlmcmFtZS5jb250ZW50V2luZG93LnRva2VuID0gIm1vZGlm
aWVkLTIiOwotICAgIHZlcmlmeVRva2VuKCJJZnJhbWUgdG9rZW4gbW9kaWZpZWQiLCAibW9kaWZp
ZWQtMiIpOwotCi0gICAgLy8gU3RhcnQgdGltZW91dCBpbiBpZnJhbWUgLSBpdCBzaG91bGQgc3Vy
dml2ZSByZXBhcmVudGluZyBhbmQgY2FsbCBmaW5pc2goKSB0byBlbmQgdGhlIHRlc3QuCi0gICAg
aWZyYW1lLmNvbnRlbnRXaW5kb3cuc3RhcnRGaW5pc2hUaW1lcigpOwotICAgIGxvZygiUmVwYXJl
bnQgaWZyYW1lIHVzaW5nIGFkb3B0Tm9kZSAtIHRoZSBjb250ZW50IHNob3VsZCBub3QgdW5sb2Fk
LiIpCi0gICAgZnJhbWUxLmNvbnRlbnREb2N1bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKLSAgICBm
cmFtZTEuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKLSAgICAvLyBj
b250ZW50V2luZG93IHNob3VsZCBiZSBhdmFpbGFibGUsIHRoZSBpZnJhbWUgaXMgbm90IHVubG9h
ZGVkLgotICAgIGxvZyhpZnJhbWUuY29udGVudFdpbmRvdyA/ICJQQVNTOiBpZnJhbWUgaXMgTk9U
IHVubG9hZGVkLiIgOiAiRkFJTDogaWZyYW1lIGlzIHVubG9hZGVkLiIpOwotICAgIGlmcmFtZS5v
bmxvYWQgPSBub3RSZWFjaGVkOwotfQotCi1ub3RSZWFjaGVkID0gZnVuY3Rpb24oKQotewotICAg
IGxvZygiRkFJTDogaWZyYW1lIHNob3VsZCBub3QgZmlyZSAnbG9hZCcgZXZlbnQgd2hlbiByZXBh
cmVudGVkIHVzaW5nICdhZG9wdE5vZGUnIik7Ci19Ci0KLWZpbmlzaCA9IGZ1bmN0aW9uKCkKLXsK
LSAgICB2ZXJpZnlUb2tlbigiSWZyYW1lIHRva2VuIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBiZWZv
cmUgcmVwYXJlbnRpbmciLCAibW9kaWZpZWQtMiIpOwotCi0gICAgLy8gTGFzdCB0ZXN0IC0gdmVy
aWZ5IHRoYXQgbm9uLWF0dGFjaGVkIGRvY3VtZW50IGRvZXMgbm90IGtlZXAgaWZyYW1lIGFsaXZl
IGV2ZW4gaWYgYWRvcHROb2RlKCkgaXMgdXNlZC4KLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4oIkdFVCIsImRhdGE6YXBwbGljYXRpb24veGh0bWwreG1s
LDxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz48Ym9keSBpZD0nYm9k
eSc+SGVsbG88L2JvZHk+PC9odG1sPiIsIGZhbHNlKTsKLSAgICB4aHIuc2VuZChudWxsKTsKLSAg
ICB2YXIgZG9jID0geGhyLnJlc3BvbnNlWE1MOwotICAgIGxvZyhkb2MuZ2V0RWxlbWVudEJ5SWQo
ImJvZHkiKS5pbm5lclRleHQgPT0gIkhlbGxvIiA/ICJQQVNTOiBYSFItbG9hZGVkIERvY3VtZW50
IGlzIGNvcnJlY3QuIiA6ICJGQUlMOiBYSFItbG9hZGVkIGRvY3VtZW50IGlzIG5vdCBjb3JyZWN0
LiIpOwotCi0gICAgZG9jLmFkb3B0Tm9kZShpZnJhbWUpOwotICAgIC8vIGNvbnRlbnRXaW5kb3cg
c2hvdWxkIG5vdCBiZSBhdmFpbGFibGUsIHRoZSBpZnJhbWUgaXMgdW5sb2FkZWQuCi0gICAgbG9n
KGlmcmFtZS5jb250ZW50V2luZG93ID8gIkZBSUw6IGlmcmFtZSBpcyBub3QgdW5sb2FkZWQuIiA6
ICJQQVNTOiBpZnJhbWUgaXMgdW5sb2FkZWQuIik7Ci0KLSAgICBsb2coIlRlc3QgRmluaXNoZWQu
Iik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0KLX0KLQotPC9zY3JpcHQ+Ci08Ym9keSBv
bmxvYWQ9dGVzdCgpPgotPHA+VGhpcyB0ZXN0IG1vdmVzIHRoZSBpZnJhbWUgYmV0d2VlbiB0d28g
ZG9jdW1lbnRzIC0gb25jZSB1c2luZyB0aGlzIHNlcXVlbmNlOjwvcD4KLTxwcmU+Ci0gICAgZG9j
dW1lbnQxLmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKLSAgICBkb2N1bWVudDIuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWUpOwotCi08L3ByZT4KLTxwPmFuZCB0aGVuIHVzaW5nICdhZG9wdE5vZGUn
OjwvcD4KLTxwcmU+Ci0gICAgZG9jdW1lbnQyLmFkb3B0Tm9kZShpZnJhbWUpOwotICAgIGRvY3Vt
ZW50Mi5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Ci0KLTwvcHJlPgotPHA+SW4gdGhlIHNlY29u
ZCBjYXNlLCB0aGUgY29udGVudCBvZiBpZnJhbWUgc2hvdWxkIG5vdCBiZSByZS1sb2FkZWQgYW5k
ICdsb2FkJyBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkLiBBbHNvLCB0aGUgdGltZXIgc3RhcnRl
ZCBiZWZvcmUgcmVwYXJlbnRpbmcgc2hvdWxkIHN1cnZpdmUgdHJhbnNpdGlvbiBhbmQgZmlyZS48
L3A+Ci08cD5UZXN0IGFsc28gdmVyaWZpZXMgdGhhdCBkb2N1bWVudC5hZG9wdE5vZGUoKSBpbiBj
YXNlIG9mIG5vdC1yZW5kZXJlZCBkb2N1bWVudCAobG9hZGVkIGJ5IFhNTEh0dHBSZXF1ZXN0KSBk
b2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY29udGVudCBvZiBpZnJhbWUuPC9wPgotPHA+VGVzdCBzdWNj
ZWVkcyBpZiB0aGVyZSBhcmUgJ1BBU1MnIG1lc3NhZ2VzIGJlbG93IGFuZCBubyAnRkFJTCcgbWVz
c2FnZXMuPC9wPgotPGlmcmFtZSBpZD1mcmFtZTEgc3JjPXJlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctZnJhbWUxLmh0bWw+PC9pZnJhbWU+Ci08aWZyYW1lIGlkPWZyYW1lMiBzcmM9cmVzb3Vy
Y2VzL2lmcmFtZS1yZXBhcmVudGluZy1mcmFtZTIuaHRtbD48L2lmcmFtZT4KLTxwcmUgaWQ9bG9n
PjwvcHJlPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLWlmcmFtZS1jb250ZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFt
ZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLWlmcmFtZS1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDEx
MTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctYWRvcHQtbm9kZS1pZnJhbWUtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzAsMCBAQAotPHNjcmlwdD4KLXN0YXJ0RmluaXNoVGltZXIgPSBmdW5jdGlvbigpCi17Ci0g
ICAgc2V0VGltZW91dChwYXJlbnQucGFyZW50LmZpbmlzaCwgMCk7Ci19Ci08L3NjcmlwdD4KLTxi
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBh
cmVudGluZy1hZG9wdC1ub2RlLW5ldy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1hZG9wdC1ub2RlLW5l
dy1wYWdlLmh0bWwJKHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctYWRvcHQtbm9kZS1uZXctcGFnZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotPGh0bWw+Ci08Ym9keT4KLUEgTmV3IFBhZ2U8
YnI+Ci08aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0iaWZyYW1lLXJlcGFyZW50aW5nLWFkb3B0LW5v
ZGUtaWZyYW1lLWNvbnRlbnQuaHRtbCI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLWVt
YmVkLWZyYW1lMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctZW1iZWQtZnJhbWUxLmh0bWwJKHJldmlzaW9uIDEx
MTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctZW1iZWQtZnJhbWUxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMCwwIEBACi08
Ym9keT4KLTxpZnJhbWUgc3JjPWlmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1pZnJhbWUuaHRtbD48
L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctZW1iZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1pZnJhbWUuaHRt
bAkocmV2aXNpb24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L2lmcmFtZS1yZXBhcmVudGluZy1lbWJlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMCwwIEBACi08c2NyaXB0PgotdG9rZW4gPSAibG9hZGluZyI7Ci0KLWZ1bmN0aW9uIGlu
aXQoKQotewotICAgIHRva2VuID0gImxvYWRlZCI7Ci19Ci0KLTwvc2NyaXB0PgotPGJvZHkgb25s
b2FkPWluaXQoKT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJh
bWUtcmVwYXJlbnRpbmctZnJhbWUxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1mcmFtZTEuaHRtbAkocmV2aXNp
b24gMTExMjQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1y
ZXBhcmVudGluZy1mcmFtZTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyICswLDAgQEAKLTxi
b2R5PgotPGlmcmFtZSBzcmM9aWZyYW1lLXJlcGFyZW50aW5nLWlmcmFtZS1jb250ZW50Lmh0bWw+
PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLWZyYW1lMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctZnJhbWUyLmh0bWwJKHJldmlzaW9u
IDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVw
YXJlbnRpbmctZnJhbWUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotPGJvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50
aW5nLWlmcmFtZS1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1pZnJhbWUtY29udGVudC5odG1sCShy
ZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZy
YW1lLXJlcGFyZW50aW5nLWlmcmFtZS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjAgKzAsMCBAQAotPHNjcmlwdD4KLXRva2VuID0gImxvYWRpbmciOwotCi1mdW5jdGlvbiBpbml0
KCkKLXsKLSAgICB0b2tlbiA9ICJsb2FkZWQiOwotfQotCi1zdGFydEZpbmlzaFRpbWVyID0gZnVu
Y3Rpb24oKQotewotICAgIHNldFRpbWVvdXQocGFyZW50LnBhcmVudC5maW5pc2gsIDApOwotfQot
Ci1zdGFydERvb21lZFRpbWVyID0gZnVuY3Rpb24oKQotewotICAgIHNldFRpbWVvdXQocGFyZW50
LnBhcmVudC5ub3RSZWFjaGVkLCAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9aW5p
dCgpPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwJKHJldmlz
aW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBA
QAotPGh0bWw+Ci08Ym9keT4KLVBhZ2UgMTxicj4KLTxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJp
ZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFt
ZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWwJ
KHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9p
ZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEz
ICswLDAgQEAKLTxodG1sPgotPHNjcmlwdD4KLXdpbmRvdy5hZG9wdElmcmFtZSA9IGZ1bmN0aW9u
KGlmcmFtZSkKLXsKLSAgICBkb2N1bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKLSAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Ci0gICAgb3BlbmVyLnRlc3RQYXNzZWQoIlBhZ2Ug
MiBhZG9wdGVkIHRoZSBpZnJhbWUuIikKLX0KLTwvc2NyaXB0PgotPGJvZHk+Ci1QYWdlIDI8YnI+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3
LXBhZ2UtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzAsMCBAQAotPGh0bWw+Ci08c2NyaXB0Pgotd2luZG93
LmNvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiB0aWNrKCkKLXsKLSAgICBpZiAod2luZG93LmZpbmlz
aCkKLSAgICAgICAgZmluaXNoKCk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0KCkKLXsKLSAgICB3aW5k
b3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwotfQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InN0
YXJ0KCkiPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWlmcmFtZS1jb250ZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1y
ZXBhcmVudGluZy1wbHVnaW5zLWlmcmFtZS1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDExMTI0MykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
cGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI3ICswLDAg
QEAKLTxzY3JpcHQ+Ci0vLyBXZSBjYW4gb25seSBndWFyYW50ZWUgdGhhdCB0aGUgVGVzdCBQbHVn
SW4gaXMgaW5zdGFsbGVkLgotdmFyIHBsdWdpbiA9IG5hdmlnYXRvci5wbHVnaW5zLm5hbWVkSXRl
bSgiV2ViS2l0IFRlc3QgUGx1Z0luIik7Ci12YXIgbWltZXR5cGUgPSBuYXZpZ2F0b3IubWltZVR5
cGVzWzBdOwotCi0vLyBDYWxsZWQgYnkgdGVzdCBwYWdlIGFmdGVyIGFkb3B0aW5nIHRoaXMgaWZy
YW1lIGFuZCBjbG9zaW5nIHRoZQotLy8gcGFnZSB0aGF0IG9yaWdpbmFsbHkgaGVsZCB0aGlzIGlm
cmFtZS4KLWNoZWNrUGx1Z2lucyA9IGZ1bmN0aW9uKCkKLXsKLSAgaWYgKCFwbHVnaW4pIHsKLSAg
ICAgIHJldHVybiAiRkFJTDogRmFpbGVkIHRvIGZpbmQgdGVzdCBwbHVnaW5cbiI7Ci0gIH0KLQot
ICB2YXIgbWVzc2FnZSA9ICIiOwotICBpZiAocGx1Z2luLml0ZW0oMCkuZW5hYmxlZFBsdWdpbikK
LSAgICAgIG1lc3NhZ2UgKz0gIlBBU1M6IHBsdWdpbiBPSy5cbiI7Ci0gIGVsc2UKLSAgICAgIG1l
c3NhZ2UgKz0gIkZBSUw6IHBsdWdpbiByZWZlcmVuY2VzIFBsdWdpbkRhdGEgd2l0aCBubyBwYWdl
LlxuIjsKLQotICBpZiAobWltZXR5cGUuZW5hYmxlZFBsdWdpbikKLSAgICAgIG1lc3NhZ2UgKz0g
IlBBU1M6IG1pbWV0eXBlIE9LLlxuIjsKLSAgZWxzZQotICAgICAgbWVzc2FnZSArPSAiRkFJTDog
bWltZXR5cGUgcmVmZXJlbmNlcyBQbHVnaW5EYXRhIHdpdGggbm8gcGFnZS5cbiI7Ci0KLSAgcmV0
dXJuIG1lc3NhZ2U7Ci19Ci08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCShyZXZpc2lvbiAxMTEyNDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3
LXBhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICswLDAgQEAKLTxodG1sPgotPGJvZHk+
Ci1BIE5ldyBQYWdlPGJyPgotPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVu
dGluZy1wbHVnaW5zLWlmcmFtZS1jb250ZW50Lmh0bWwiPC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanMJKHJldmlzaW9u
IDExMTI0MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUt
cmVwYXJlbnRpbmctbmV3LXBhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNTQgKzAsMCBAQAot
ZGVzY3JpcHRpb24oCi0iVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1l
IGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1lIGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5k
b3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2FzIGNsb3NlZC4iCi0pOwotCi12YXIgd2luZG93
MSwgaWZyYW1lLCB3aW5kb3cyOwotCi1mdW5jdGlvbiBmaW5pc2goKQotewotICAgIC8vIFRpbWVy
IG1heSBjYWxsIHRoaXMgbXVsdGlwbGUgdGltZXMgYmVmb3JlIGFjdHVhbCBzaHV0ZG93biwgZ2Vu
ZXJhdGluZyBhcmJpdHJhcnkgbnVtYmVyIG9mIGxvZyBsaW5lcy4KLSAgICAvLyBSZXNldCB0aGUg
Y2FsbGJhY2sgdG8gYXZvaWQgdGhpcy4KLSAgICBpZnJhbWUuY29udGVudFdpbmRvdy5maW5pc2gg
PSBudWxsOwotCi0gICAgdGVzdFBhc3NlZCgiUmVjZWl2ZWQgdGhlIHRpbWVyIGJlYXQgZnJvbSB0
aGUgYWRvcHRlZCBpZnJhbWUgLSBleGl0aW5nLiIpCi0gICAgd2luZG93Mi5jbG9zZSgpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBwYWdlMVVubG9hZGVkKCkKLXsKLSAgICB0
ZXN0UGFzc2VkKCJQYWdlIDEgaXMgY2xvc2VkLiIpOwotICAgIC8vIEdpdmUgdGhlIGlmcmFtZSBh
IGZ1bmN0aW9uIHRvIGNhbGwgZnJvbSB0aGUgdGltZXIuCi0gICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gZmluaXNoOwotfQotCi1mdW5jdGlvbiB0cmFuc2ZlcklmcmFtZSgpCi17Ci0g
ICAgdGVzdFBhc3NlZCgiTG9hZGVkIHBhZ2UgMi4iKTsKLSAgICB3aW5kb3cyLmFkb3B0SWZyYW1l
KGlmcmFtZSk7Ci0gICAgdGVzdFBhc3NlZCgiSWZyYW1lIHRyYW5zZmVycmVkLiIpOwotICAgIGlm
cmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKzsKLSAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRl
bnRXaW5kb3cuY291bnRlciIsICIyIik7Ci0gICAgc2hvdWxkQmUoIndpbmRvdzIubG9jYXRpb24u
aHJlZiIsICJpZnJhbWUuY29udGVudFdpbmRvdy5wYXJlbnQubG9jYXRpb24uaHJlZiIpOwotICAg
IHdpbmRvdzEub251bmxvYWQgPSBwYWdlMVVubG9hZGVkOwotICAgIHdpbmRvdzEuY2xvc2UoKTsK
LX0KLQotZnVuY3Rpb24gd2luZG93MUxvYWRlZCgpCi17Ci0gICAgaWZyYW1lID0gd2luZG93MS5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lIik7Ci0gICAgdGVzdFBhc3NlZCgiTG9hZGVk
IGlmcmFtZSBpbiB3aW5kb3cgMS4iKTsKLSAgICBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVy
Kys7Ci0gICAgc2hvdWxkQmUoImlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIiLCAiMSIpOwot
ICAgIHdpbmRvdzIgPSB3aW5kb3cub3BlbigiaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIu
aHRtbCIsICJfYmxhbmsiKTsKLSAgICB3aW5kb3cyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0
cmFuc2ZlcklmcmFtZSwgZmFsc2UpOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci19Ci13aW5kb3cxID0gd2lu
ZG93Lm9wZW4oInJlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sIiwg
Il9ibGFuayIpOwotd2luZG93MS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgd2luZG93MUxvYWRl
ZCwgZmFsc2UpOwotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>