<?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>67496</bug_id>
          
          <creation_ts>2011-09-02 10:02:28 -0700</creation_ts>
          <short_desc>REGRESSION(r94421): Broke a number of tests on Chromium builders (including the &quot;cr-linux&quot; EWS bot) (Requested by apavlov on #webkit).</short_desc>
          <delta_ts>2011-09-02 10:07:02 -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>67394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461281</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 10:02:28 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/94421 broke the build:
Broke a number of tests on Chromium builders (including the &quot;cr-linux&quot; EWS bot) (Requested by apavlov on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461282</commentid>
    <comment_count>1</comment_count>
      <attachid>106146</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 10:02:59 -0700</bug_when>
    <thetext>Created attachment 106146
ROLLOUT of r94421

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461285</commentid>
    <comment_count>2</comment_count>
      <attachid>106146</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 10:06:58 -0700</bug_when>
    <thetext>Comment on attachment 106146
ROLLOUT of r94421

Clearing flags on attachment: 106146

Committed r94427: &lt;http://trac.webkit.org/changeset/94427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461286</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 10:07:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106146</attachid>
            <date>2011-09-02 10:02:59 -0700</date>
            <delta_ts>2011-09-02 10:06:58 -0700</delta_ts>
            <desc>ROLLOUT of r94421</desc>
            <filename>bug-67496-20110902170214.patch</filename>
            <type>text/plain</type>
            <size>99572</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZDI3ZDZiNDJiMjNiYmJl
OGUwYjEwYjJjODcyODc1NjkwMWQ2OTcyLi41MmU1YjZkNmY1NzY3NzU1YTc4MzkzMDc3YmE0Zjdj
M2UxOTA2NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjM1IEBACisyMDExLTA5LTAyICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByOTQ0MjEuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzk0NDIxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzQ5NgorCisgICAgICAgIEJyb2tlIGEgbnVtYmVyIG9mIHRlc3RzIG9uIENocm9t
aXVtIGJ1aWxkZXJzIChpbmNsdWRpbmcgdGhlCisgICAgICAgICJjci1saW51eCIgRVdTIGJvdCkg
KFJlcXVlc3RlZCBieSBhcGF2bG92IG9uICN3ZWJraXQpLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVIYXNSb2xlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHA6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZSk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpidWlsZEFjY2Vz
c0tleU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGVTZWxlY3Rv
cik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6YmFzZVVSSSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb3JtYXRGb3JEZWJ1Z2dl
cik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUp
OgorICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFt
ZU5vZGVMaXN0Ojpub2RlTWF0Y2hlcyk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1i
ZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVu
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9V
bmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRJbmNsdWRlV3JhcHBlckZvckZ1bGx5U2VsZWN0ZWRSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpocmVmKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNo
b3JFbGVtZW50Ojp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OnNlbmRQaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxl
Q2xpY2spOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1l
bnQ6OnRhcmdldCk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjphTGluayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQm9keUVsZW1lbnQ6OmJnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVt
ZW50OjpsaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6dGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnZMaW5rKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxCb2R5RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxC
dXR0b25FbGVtZW50Ojp2YWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQpOgorICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxl
Y3Rpb246OmNoZWNrRm9yTmFtZU1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6ZGlyKToKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6ZHJhZ2dhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hp
bGRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1
c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRF
bGVtZW50Ojp1cGRhdGVXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxl
bWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246
OmdldE5hbWVkRm9ybUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9u
Ojp1cGRhdGVOYW1lQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvZm9j
dXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6Om5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjptZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
Ojp0YXJnZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50Ojpub1Jlc2l6ZSk6CisgICAgICAgICogaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
RWxlbWVudEJhc2U6OmxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1l
bnRCYXNlOjphbGxvd0Z1bGxTY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTEh0bWxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudDo6aW5zZXJ0ZWRCeVBhcnNl
cik6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElt
YWdlRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmFsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkcmFnZ2FibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudDo6c3JjKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjphbHRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlYXJjaEV2ZW50c1Nob3Vs
ZEJlRGlzcGF0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1Nw
ZWVjaEVuYWJsZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGFiZWxFbGVtZW50Ojpjb250cm9sKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpocmVmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6dHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWFwRWxlbWVudDo6aW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpjb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZXRhRWxlbWVudDo6aHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRhRWxlbWVudDo6bmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6Om1pbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjptYXgpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1ldGVyRWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxl
bWVudDo6bG93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmhpZ2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6b3B0aW11bSk6CisgICAgICAgICog
aHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVD
b2xsZWN0aW9uOjppdGVtQWZ0ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpncm91cExhYmVsVGV4dCk6Cisg
ICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQcm9ncmVzc0VsZW1lbnQ6Om1heCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c291cmNlQXR0
cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoYXJz
ZXRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6
dHlwZUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50
OjpsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRF
bGVtZW50Ojpmb3JBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
RWxlbWVudDo6ZXZlbnRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6bWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVF
bGVtZW50OjptZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojp0eXBl
KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjphYmJyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50OjpheGlzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNl
bGxFbGVtZW50OjpoZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpzY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6d2lkdGgp
OgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVFbGVtZW50OjpydWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVF
bGVtZW50OjpzdW1tYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dDo6YWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjaE9mZik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6dkFsaWduKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzdHJpcHBlZFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc1BsYWNlaG9sZGVyRW1wdHkpOgorICAgICAgICAqIGh0
bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVt
ZW50OjpzcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6a2luZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpzcmNsYW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmFja0VsZW1lbnQ6OmlzRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVt
ZW50Ojpsb2FkKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBSYW5nZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAgICAgICogbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9u
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1hdGNoTGFiZWxzQWdhaW5zdEVs
ZW1lbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKiBwYWdlL21h
Yy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjptYXRjaExhYmVsc0FnYWlu
c3RFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMRm9ySW1hZ2VOb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGZp
bGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjphbHREaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6YWJzb2x1dGVMaW5rVVJMKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzOjppc09wZW4pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNZW51TGlzdDo6aXRlbUFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkUERG
VVJMUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3Nh
dmVOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1NpemUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRhOjphcHBs
eVNWR0dseXBoU2VsZWN0aW9uKToKKwogMjAxMS0wOS0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTQwOTMpOiBQcml2YXRlIGJy
b3dzaW5nIGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIGNsZWFuIHN0YXRlIG9uIFNub3cgTGVvcGFyZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXgg
OTA2ZTg0OTZiZGQxNjYzMjM5YTFiYzQwNGZlYTUxYzRlNWJhOWNiOS4uMWM5YjQ2YTVhNTk5NGI2
Y2QyZWIxNjJiZGFiNzAyODBjODAyYTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBub2RlSGFz
Um9sZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHJvbGUpCiAgICAgaWYgKCFub2RlIHx8ICFu
b2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmZhc3RHZXRB
dHRyaWJ1dGUocm9sZUF0dHIpLCByb2xlKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uo
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUocm9sZUF0dHIpLCByb2xl
KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRlRnJv
bVJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKaW5kZXggZTZlNmUzYThjMDhmYTgyMDhmNTU3M2QzODY0NGM1MmIyNGZlMTQw
Ny4uMWQ4YWY5ZWI2NmM5OTE1Yjc0MjM3MDhmODRkZmY3MGIxM2U0ODc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBjb25z
dCBnY2hhciogd2Via2l0X2FjY2Vzc2libGVfZ2V0X25hbWUoQXRrT2JqZWN0KiBvYmplY3QpCiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CiAgICAgICAgIGlmIChub2Rl
ICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgLy8gR2V0IHRoZSBhdHRy
aWJ1dGUgcmF0aGVyIHRoYW4gYWx0VGV4dCBTdHJpbmcgc28gYXMgbm90IHRvIGZhbGwgYmFjayBv
biB0aXRsZS4KLSAgICAgICAgICAgIFN0cmluZyBhbHQgPSB0b0hUTUxFbGVtZW50KG5vZGUpLT5m
YXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YWx0QXR0cik7CisgICAgICAgICAgICBTdHJpbmcg
YWx0ID0gdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YWx0QXR0
cik7CiAgICAgICAgICAgICBpZiAoIWFsdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJldHVyblN0cmluZyhhbHQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA1MWI3ZDNmMThkMmE3MTNkOTQ1MmM0MDQ1YTg0Yjg5N2NmNzU0NmQ1Li41NzFhNTNhODVm
NzJhNjIzNzJjNTg3ZmYxMGY2MTg4NzhmY2EwNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIERvY3VtZW50OjpidWlsZEFjY2Vzc0tleU1hcChUcmVl
U2NvcGUqIHJvb3QpCiAgICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obik7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWNjZXNzS2V5ID0gZWxlbWVu
dC0+ZmFzdEdldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKKyAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBhY2Nlc3NLZXkgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYWNjZXNza2V5QXR0cik7
CiAgICAgICAgIGlmICghYWNjZXNzS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZWxlbWVu
dHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNzS2V5LmltcGwoKSwgZWxlbWVudCk7CiAgICAgICAgIGJ1
aWxkQWNjZXNzS2V5TWFwKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CkBAIC0yOTU4LDcgKzI5NTgs
NyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9yKCkKICNlbmRpZgogICAgICAg
ICApIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7
Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlLT5mYXN0R2V0QXR0cmlidXRlKHRp
dGxlQXR0cik7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlLT5nZXRBdHRyaWJ1
dGUodGl0bGVBdHRyKTsKICAgICAgICAgICAgIGJvb2wgZW5hYmxlZFZpYVNjcmlwdCA9IGZhbHNl
OwogICAgICAgICAgICAgaWYgKGUtPmhhc0xvY2FsTmFtZShsaW5rVGFnKSkgewogICAgICAgICAg
ICAgICAgIC8vIDxMSU5LPiBlbGVtZW50CkBAIC0yOTY5LDcgKzI5NjksNyBAQCB2b2lkIERvY3Vt
ZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9yKCkKICAgICAgICAgICAgICAgICBpZiAobGlua0VsZW1l
bnQtPmlzTG9hZGluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGlzIGxvYWRpbmcg
YnV0IHdlIHNob3VsZCBzdGlsbCBkZWNpZGUgd2hpY2ggc3R5bGUgc2hlZXQgc2V0IHRvIHVzZQog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWVuYWJsZWRWaWFTY3JpcHQgJiYgIXRpdGxlLmlzRW1w
dHkoKSAmJiBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlbCA9IGUtPmZhc3RHZXRBdHRyaWJ1
dGUocmVsQXR0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHJlbCA9IGUtPmdldEF0dHJpYnV0ZShyZWxBdHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCA9IHRpdGxlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0ID0gdGl0bGU7CkBAIC0zMDA0LDcg
KzMwMDQsNyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9yKCkKICAgICAgICAg
ICAgICAgICAgICAgLy8gd2UgYXJlIE5PVCBhbiBhbHRlcm5hdGUgc2hlZXQsIHRoZW4gZXN0YWJs
aXNoCiAgICAgICAgICAgICAgICAgICAgIC8vIHVzIGFzIHRoZSBwcmVmZXJyZWQgc2V0LiAgT3Ro
ZXJ3aXNlLCBqdXN0IGlnbm9yZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHNoZWV0Lgot
ICAgICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcmVsID0gZS0+ZmFzdEdldEF0dHJpYnV0
ZShyZWxBdHRyKTsKKyAgICAgICAgICAgICAgICAgICAgQXRvbWljU3RyaW5nIHJlbCA9IGUtPmdl
dEF0dHJpYnV0ZShyZWxBdHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmhhc0xvY2Fs
TmFtZShzdHlsZVRhZykgfHwgIXJlbC5jb250YWlucygiYWx0ZXJuYXRlIikpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXQgPSBtX3NlbGVjdGVkU3R5bGVz
aGVldFNldCA9IHRpdGxlOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCBmZjJmZTBiNTY4ZDJlZmFhZWE1YzQ4YWVhMmRhYTM0Y2YyMTViOThlLi42NzQ1Nzc0NmI3
MTJjNGI3ZjBjOTkxMWM0ODEwN2FiMzkwNWJmMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC04OTIsNyArODkyLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBLVVJMIEVsZW1lbnQ6OmJhc2VVUkko
KSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUF0dHJpYnV0ZSA9IGZhc3RH
ZXRBdHRyaWJ1dGUoYmFzZUF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUF0dHJp
YnV0ZSA9IGdldEF0dHJpYnV0ZShiYXNlQXR0cik7CiAgICAgS1VSTCBiYXNlKEtVUkwoKSwgYmFz
ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKCFiYXNlLnByb3RvY29sKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gYmFzZTsKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQgRWxlbWVudDo6Zm9ybWF0
Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgICAg
IHJlc3VsdCArPSAiaWQ9IjsKICAgICAgICAgcmVzdWx0ICs9IHM7CiAgICAgfQotCisgICAgICAg
ICAgCiAgICAgcyA9IGdldEF0dHJpYnV0ZShjbGFzc0F0dHIpOwogICAgIGlmIChzLmxlbmd0aCgp
ID4gMCkgewogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID4gMCkKQEAgLTIwMjEsNyArMjAy
MSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0
b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vCiAKIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0
ZSBFbGVtZW50OjpzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdAogewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKHNwZWxsY2hlY2tBdHRyKTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3BlbGxjaGVja0F0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBudWxsQXRvbSkKICAgICAgICAgcmV0
dXJuIFNwZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSh2YWx1ZSwgInRydWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIiIpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZU5vZGVMaXN0LmNwcAppbmRleCAwZTBiNzllMDBhOWY5ZGI5ZGU5Mzg1ZDZjMTEx
MTJiOTZiMjhkMWRmLi4yZmZhNTc3YjU4MjQ2MGFkZTQ2ZTU1YTY3NmUzOTVkZDE4NDQ3MjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBOYW1lTm9k
ZUxpc3Q6On5OYW1lTm9kZUxpc3QoKQogCiBib29sIE5hbWVOb2RlTGlzdDo6bm9kZU1hdGNoZXMo
RWxlbWVudCogdGVzdE5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRlc3ROb2RlLT5mYXN0R2V0
QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25vZGVOYW1lOworICAgIHJldHVybiB0ZXN0Tm9kZS0+
Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25vZGVOYW1lOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CmluZGV4IDVjZjRmMTczNDYyOGFjZmRiNDU2NmIwNTY0ZjM2YmViOGIwOWIzNGMuLmM0NDc2ZDBl
Y2FjNzRjNzA3YzA1ZGM2Mzc5Mjg4ODI1MjM1OGM1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBBcHBs
eVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKE5vZGUqIG5v
ZGUsIE5vZGUqIHVuc3AKICAgICAgICAgLy8gYW5kIGFsbCBtYXRjaGluZyBzdHlsZSBydWxlcyBp
biBvcmRlciB0byBkZXRlcm1pbmUgaG93IHRvIGJlc3Qgc2V0IHRoZSB1bmljb2RlLWJpZGkgcHJv
cGVydHkgdG8gJ25vcm1hbCcuCiAgICAgICAgIC8vIEZvciBub3csIGl0IGFzc3VtZXMgdGhhdCBp
ZiB0aGUgJ2RpcicgYXR0cmlidXRlIGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZpbmcgaXQgd2lsbCBz
dWZmaWNlLCBhbmQKICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNldHMgdGhlIHByb3BlcnR5IGlu
IHRoZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24uCi0gICAgICAgIGlmIChlbGVtZW50LT5mYXN0
SGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1
dGUoZGlyQXR0cikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgQkRPIGVs
ZW1lbnQsIHdlIHNob3VsZCBwcm9iYWJseSBqdXN0IHJlbW92ZSBpdCBpZiBpdCBoYXMgbm8KICAg
ICAgICAgICAgIC8vIG90aGVyIGF0dHJpYnV0ZXMsIGxpa2Ugd2UgKHNob3VsZCkgZG8gd2l0aCBC
IGFuZCBJIGVsZW1lbnRzLgogICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50
LCBkaXJBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVt
ZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1h
bmQuY3BwCmluZGV4IDM5ZmY5Y2E3MjJjODRmYTZlODFiZWY4N2RlMWZkNTg4OThiYTU3MWQuLmZj
MTM1ZjcxZjRkNDJlNmZhZjEzNzQ4ZTRlOWIyY2Q3ZThkODljZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcApAQCAtOTQsOCArOTQsOCBAQCB2
b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgICAgIG1fZWxlbWVudDIt
Pmluc2VydEJlZm9yZShjaGlsZHJlbltpXS5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIGVjKTsKIAog
ICAgIC8vIFJlY292ZXIgdGhlIGlkIGF0dHJpYnV0ZSBvZiB0aGUgb3JpZ2luYWwgZWxlbWVudC4K
LSAgICBpZiAobV9lbGVtZW50MS0+ZmFzdEhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cikp
Ci0gICAgICAgIG1fZWxlbWVudDItPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwgbV9l
bGVtZW50MS0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cikpOworICAgIGlmICht
X2VsZW1lbnQxLT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpKQorICAgICAgICBtX2Vs
ZW1lbnQyLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIsIG1fZWxlbWVudDEtPmdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cikpOwogCiAgICAgbV9lbGVtZW50MS0+cmVtb3ZlKGVj
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmMTlmZTNjZjE4M2YwYzc2MzZl
ZTJlYjRmZjliNDg4NDU0OTQwMzhkLi45ODA4YzYwM2Q4MTc2M2QzNDcwNDc3ZDNjZGZkYjYwMDRl
NzAzNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC01MTIsNyArNTEyLDcgQEAg
c3RhdGljIGJvb2wgaXNFbGVtZW50UHJlc2VudGF0aW9uYWwoY29uc3QgTm9kZSogbm9kZSkKIAog
c3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZVdyYXBwZXJGb3JGdWxseVNlbGVjdGVkUm9vdChOb2Rl
KiBmdWxseVNlbGVjdGVkUm9vdCkKIHsKLSAgICBpZiAoZnVsbHlTZWxlY3RlZFJvb3QtPmlzRWxl
bWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnVsbHlTZWxlY3RlZFJvb3QpLT5m
YXN0SGFzQXR0cmlidXRlKGJhY2tncm91bmRBdHRyKSkKKyAgICBpZiAoZnVsbHlTZWxlY3RlZFJv
b3QtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnVsbHlTZWxlY3Rl
ZFJvb3QpLT5oYXNBdHRyaWJ1dGUoYmFja2dyb3VuZEF0dHIpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IHN0eWxlRnJvbU1hdGNo
ZWRSdWxlc0FuZElubGluZURlY2woZnVsbHlTZWxlY3RlZFJvb3QpOwpAQCAtNjQyLDggKzY0Miw4
IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjCiAgICAgICAgICAgICAgICAgLy8gQnJpbmcgdGhl
IGJhY2tncm91bmQgYXR0cmlidXRlIG92ZXIsIGJ1dCBub3QgYXMgYW4gYXR0cmlidXRlIGJlY2F1
c2UgYSBiYWNrZ3JvdW5kIGF0dHJpYnV0ZSBvbiBhIGRpdgogICAgICAgICAgICAgICAgIC8vIGFw
cGVhcnMgdG8gaGF2ZSBubyBlZmZlY3QuCiAgICAgICAgICAgICAgICAgaWYgKCghZnVsbHlTZWxl
Y3RlZFJvb3RTdHlsZSB8fCAhZnVsbHlTZWxlY3RlZFJvb3RTdHlsZS0+c3R5bGUoKSB8fCAhZnVs
bHlTZWxlY3RlZFJvb3RTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRJbWFnZSkpCi0gICAgICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihmdWxseVNlbGVjdGVkUm9vdCktPmZhc3RIYXNBdHRyaWJ1dGUoYmFja2dyb3Vu
ZEF0dHIpKQotICAgICAgICAgICAgICAgICAgICBmdWxseVNlbGVjdGVkUm9vdFN0eWxlLT5zdHls
ZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgInVybCgnIiArIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihmdWxseVNlbGVjdGVkUm9vdCktPmZhc3RHZXRBdHRyaWJ1dGUo
YmFja2dyb3VuZEF0dHIpICsgIicpIik7CisgICAgICAgICAgICAgICAgICAgICYmIHN0YXRpY19j
YXN0PEVsZW1lbnQqPihmdWxseVNlbGVjdGVkUm9vdCktPmhhc0F0dHJpYnV0ZShiYWNrZ3JvdW5k
QXR0cikpCisgICAgICAgICAgICAgICAgICAgIGZ1bGx5U2VsZWN0ZWRSb290U3R5bGUtPnN0eWxl
KCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCAidXJsKCciICsgc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KGZ1bGx5U2VsZWN0ZWRSb290KS0+Z2V0QXR0cmlidXRlKGJhY2tn
cm91bmRBdHRyKSArICInKSIpOwogCiAgICAgICAgICAgICAgICAgaWYgKGZ1bGx5U2VsZWN0ZWRS
b290U3R5bGUtPnN0eWxlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIENT
UyBwcm9wZXJ0aWVzIHRvIGF2b2lkIGFuIGFzc2VydGlvbiBlcnJvciBpbiBhZGRTdHlsZU1hcmt1
cCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBjZGI2
NTY4ZTQ5NGNiOTY1ZTVkNmNjNTE3ZGZhYTc1OGFhMTZiM2QwLi4zNDMzNjM3ZjYzNTYzYWMxOWMx
NGIyOGIzNjliZGM5YzdkOTI1MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcApAQCAtMjUxLDE3ICsyNTEsMTcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6
Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dh
YmxlKCkgY29uc3QKIHsKICAgICAvLyBTaG91bGQgYmUgZHJhZ2dhYmxlIGlmIHdlIGhhdmUgYW4g
aHJlZiBhdHRyaWJ1dGUuCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRB
dHRyaWJ1dGUoZHJhZ2dhYmxlQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGdldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWUsICJ0cnVlIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZSho
cmVmQXR0cik7CiB9CiAKIEtVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25zdAogewot
ICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoZmFzdEdldEF0dHJpYnV0ZShocmVmQXR0cikpKTsKKyAgICByZXR1cm4gZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdl
dEF0dHJpYnV0ZShocmVmQXR0cikpKTsKIH0KIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0
SHJlZihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQg
SFRNTEFuY2hvckVsZW1lbnQ6OnNldFJlbChjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxBbmNob3JFbGVtZW50OjpuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShu
YW1lQXR0cik7CiB9CiAKIHNob3J0IEhUTUxBbmNob3JFbGVtZW50Ojp0YWJJbmRleCgpIGNvbnN0
CkBAIC0yOTYsNyArMjk2LDcgQEAgc2hvcnQgSFRNTEFuY2hvckVsZW1lbnQ6OnRhYkluZGV4KCkg
Y29uc3QKIAogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogewotICAg
IHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6aGFzaCgp
IGNvbnN0CkBAIC00ODUsMTAgKzQ4NSwxMCBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50Ojppc0xp
dmVMaW5rKCkgY29uc3QKIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQogewotICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShwaW5n
QXR0cikgfHwgIWRvY3VtZW50KCktPnNldHRpbmdzKCktPmh5cGVybGlua0F1ZGl0aW5nRW5hYmxl
ZCgpKQorICAgIGlmICghaGFzQXR0cmlidXRlKHBpbmdBdHRyKSB8fCAhZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKS0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFNwYWNlU3BsaXRTdHJpbmcgcGluZ1VSTHMoZmFzdEdldEF0dHJpYnV0ZShwaW5nQXR0ciks
IHRydWUpOworICAgIFNwYWNlU3BsaXRTdHJpbmcgcGluZ1VSTHMoZ2V0QXR0cmlidXRlKHBpbmdB
dHRyKSwgdHJ1ZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpbmdVUkxzLnNpemUo
KTsgaSsrKQogICAgICAgICBQaW5nTG9hZGVyOjpzZW5kUGluZyhkb2N1bWVudCgpLT5mcmFtZSgp
LCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwaW5nVVJMc1tpXSksIGRlc3RpbmF0aW9uVVJMKTsK
IH0KQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGlj
ayhFdmVudCogZXZlbnQpCiAgICAgS1VSTCBrdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKTsKIAogI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCi0gICAgaWYgKGZhc3RIYXNB
dHRyaWJ1dGUoZG93bmxvYWRBdHRyKSkgeworICAgIGlmIChoYXNBdHRyaWJ1dGUoZG93bmxvYWRB
dHRyKSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsKIAogICAgICAg
ICBpZiAoIWhhc1JlbChSZWxhdGlvbk5vUmVmZXJyZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGE5ZmFiMjNiNzYzNDVhZmQxOGE5MzQ0NGY2ZmQ4
MzU4NGZlM2E1NmMuLjFiYTM0NDhhNzA0YTA1NGIzNGJkZDU2MmI3MzkzYjYwODY3ZjFlNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMTIsMjIgKzEx
MiwyMiBAQCBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZQogICAgIGlmIChjYW5FbWJlZEphdmEoKSkg
ewogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhcmdzOwogCi0gICAgICAgIGFyZ3Mu
c2V0KCJjb2RlIiwgZmFzdEdldEF0dHJpYnV0ZShjb2RlQXR0cikpOworICAgICAgICBhcmdzLnNl
dCgiY29kZSIsIGdldEF0dHJpYnV0ZShjb2RlQXR0cikpOwogCi0gICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgY29kZUJhc2UgPSBmYXN0R2V0QXR0cmlidXRlKGNvZGViYXNlQXR0cik7CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZUJhc2UgPSBnZXRBdHRyaWJ1dGUoY29kZWJhc2VB
dHRyKTsKICAgICAgICAgaWYgKCFjb2RlQmFzZS5pc051bGwoKSkKICAgICAgICAgICAgIGFyZ3Mu
c2V0KCJjb2RlQmFzZSIsIGNvZGVCYXNlKTsKIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpID8gZmFzdEdldEF0dHJpYnV0ZShu
YW1lQXR0cikgOiBnZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpID8gZ2V0QXR0cmlidXRlKG5hbWVB
dHRyKSA6IGdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghbmFtZS5pc051bGwoKSkKICAg
ICAgICAgICAgIGFyZ3Muc2V0KCJuYW1lIiwgbmFtZSk7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXJjaGl2ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoYXJjaGl2ZUF0dHIpOworICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGFyY2hpdmUgPSBnZXRBdHRyaWJ1dGUoYXJjaGl2ZUF0dHIpOwog
ICAgICAgICBpZiAoIWFyY2hpdmUuaXNOdWxsKCkpCiAgICAgICAgICAgICBhcmdzLnNldCgiYXJj
aGl2ZSIsIGFyY2hpdmUpOwogCiAgICAgICAgIGFyZ3Muc2V0KCJiYXNlVVJMIiwgZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLnN0cmluZygpKTsKIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1h
eVNjcmlwdCA9IGZhc3RHZXRBdHRyaWJ1dGUobWF5c2NyaXB0QXR0cik7CisgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbWF5U2NyaXB0ID0gZ2V0QXR0cmlidXRlKG1heXNjcmlwdEF0dHIpOwog
ICAgICAgICBpZiAoIW1heVNjcmlwdC5pc051bGwoKSkKICAgICAgICAgICAgIGFyZ3Muc2V0KCJt
YXlTY3JpcHQiLCBtYXlTY3JpcHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKaW5kZXggMDA2MmQxZDRkYWI3YjQ0NDQzYzZhYTY0MTRhZDg0NjI2YWJkYmY0OC4uYzJl
OGQ2ZWIyNzU0ZGQ0MmEzYWVkN2FjZmY0Mjk2MDIxYjEyMTkzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgSFRNTEFyZWFF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogU3RyaW5nIEhUTUxBcmVhRWxlbWVudDo6
dGFyZ2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0YXJnZXRBdHRy
KTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKaW5kZXggZjM0NjdlNjg4YmNiNWFmMTc1ZWZk
Zjk2N2JlYTI0MWQyNDY4YzNlNy4uMDM4YzU2YTYyODNmM2UyMjZhYzA1NDg5NjEwYzNjMTUxMzQ3
Yzg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcApAQCAtMjE2LDcg
KzIxNiw3IEBAIGJvb2wgSFRNTEJvZHlFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAog
U3RyaW5nIEhUTUxCb2R5RWxlbWVudDo6YUxpbmsoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0
R2V0QXR0cmlidXRlKGFsaW5rQXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhbGlua0F0
dHIpOwogfQogCiB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0QUxpbmsoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0QUxpbmso
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogU3RyaW5nIEhUTUxCb2R5RWxlbWVudDo6YmdDb2xvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIpOworICAg
IHJldHVybiBnZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIpOwogfQogCiB2b2lkIEhUTUxCb2R5RWxl
bWVudDo6c2V0QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtMjM2LDcgKzIzNiw3IEBA
IHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRCZ0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAK
IFN0cmluZyBIVE1MQm9keUVsZW1lbnQ6OmxpbmsoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0
R2V0QXR0cmlidXRlKGxpbmtBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGxpbmtBdHRy
KTsKIH0KIAogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldExpbmsoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0TGluayhjb25z
dCBTdHJpbmcmIHZhbHVlKQogCiBTdHJpbmcgSFRNTEJvZHlFbGVtZW50Ojp0ZXh0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0ZXh0QXR0cik7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZSh0ZXh0QXR0cik7CiB9CiAKIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRUZXh0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBIVE1MQm9keUVs
ZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogU3RyaW5nIEhUTUxCb2R5RWxl
bWVudDo6dkxpbmsoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHZsaW5r
QXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh2bGlua0F0dHIpOwogfQogCiB2b2lkIEhU
TUxCb2R5RWxlbWVudDo6c2V0VkxpbmsoY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTM0Miw3ICsz
NDIsNyBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBhZGRTdWJyZXNvdXJjZVVSTCh1
cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChmYXN0R2V0QXR0cmlidXRlKGJhY2tncm91bmRB
dHRyKSkpOworICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGdldEF0dHJpYnV0ZShiYWNrZ3JvdW5kQXR0cikpKTsKIH0KIAogdm9pZCBIVE1MQm9keUVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmNwcAppbmRleCA2OTkxMDgwNmQxYWU4MzIyMjI1ODQwMDkyOTUyNmYx
MjBkOTdiNDk0Li42ODY3OTBkZDllMWUwMzBkZjM1MDEwN2Y0YjdhNDEyZjdhMjEyNjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcApAQCAtMTc2LDcgKzE3Niw3
IEBAIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikgY29uc3QKIAogU3RyaW5nIEhUTUxCdXR0b25FbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0
cmlidXRlKHZhbHVlQXR0cik7CiB9CiAKIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OnJlY2FsY1dp
bGxWYWxpZGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGYyNWU1ZWEwZGQ1NTJlNjk1ODFkMmQ0NTFjZWU2NTY4YmQ4YWQzNWIuLjRjM2Fk
MTFkOGNhN2IzYmVjMTIwMjM5ZmRhNzI3YTYwNzIzYjlhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0yMzAsMTAgKzIzMCwxMCBAQCB2b2lkIEhUTUxD
YW52YXNFbGVtZW50OjpyZXNldCgpCiAKICAgICBib29sIG9rOwogICAgIGJvb2wgaGFkSW1hZ2VC
dWZmZXIgPSBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKTsKLSAgICBpbnQgdyA9IGZhc3RHZXRBdHRy
aWJ1dGUod2lkdGhBdHRyKS50b0ludCgmb2spOworICAgIGludCB3ID0gZ2V0QXR0cmlidXRlKHdp
ZHRoQXR0cikudG9JbnQoJm9rKTsKICAgICBpZiAoIW9rIHx8IHcgPCAwKQogICAgICAgICB3ID0g
RGVmYXVsdFdpZHRoOwotICAgIGludCBoID0gZmFzdEdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKS50
b0ludCgmb2spOworICAgIGludCBoID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0dHIpLnRvSW50KCZv
ayk7CiAgICAgaWYgKCFvayB8fCBoIDwgMCkKICAgICAgICAgaCA9IERlZmF1bHRIZWlnaHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggODZiMmE5MDY1ZTkxOTEw
ZmFmODBiMjRlMTIyMzRlOWFiOTc2NTAxZS4uNzJlYmY1NTE1MGYyOTI0M2JhNGQ0Y2MzNGUxYmVh
MTQ3ZTc4OWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpjaGVja0Zvck5hbWVNYXRjaChFbGVt
ZW50KiBlbGVtZW50LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQQogICAgICAgICAgIGUtPmhhc0xv
Y2FsTmFtZShzZWxlY3RUYWcpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IGUtPmZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG5hbWUgJiYgZS0+Z2V0SWRBdHRyaWJ1
dGUoKSAhPSBuYW1lOworICAgIHJldHVybiBlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG5h
bWUgJiYgZS0+Z2V0SWRBdHRyaWJ1dGUoKSAhPSBuYW1lOwogfQogCiBOb2RlKiBIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKQEAgLTMyMCw3
ICszMjAsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlID0gdG9IVE1MRWxl
bWVudChlbGVtZW50KTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBl
LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRy
VmFsID0gZS0+ZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogICAgICAg
ICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIGFkZCB0byBpZCBj
YWNoZQogICAgICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiogaWRWZWN0b3IgPSBtX2luZm8tPmlk
Q2FjaGUuZ2V0KGlkQXR0clZhbC5pbXBsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCmluZGV4IGQzMzUxYTMwODIyZWIxNGQ2MDUzNDA4NmZiOTA1Yzc3MTEwMmFlZjIuLmI2N2Vh
Y2Q1YTlkODJhODliMGUyNGUwZGM5ZGNkOWM5ZDE0NjZiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgSFRNTERvY3VtZW50Ojpk
aXIoKQogICAgIEhUTUxFbGVtZW50KiBiID0gYm9keSgpOwogICAgIGlmICghYikKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBiLT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIp
OworICAgIHJldHVybiBiLT5nZXRBdHRyaWJ1dGUoZGlyQXR0cik7CiB9CiAKIHZvaWQgSFRNTERv
Y3VtZW50OjpzZXREaXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKaW5kZXggZTYzMGUyNzJhMDY1ODM5OTljNDJjMzFmNjY2NDJiNDdmOGQ5YmJmMC4u
OTY3YmUyYmZjZmRmM2ZjODAyYzY3NjMwNTRkYjNjY2QyNTNkY2EyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gaGlkZGVuQXR0cikgewogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7Ci0gICAgICAgIGluZGV4c3RyaW5nID0gZmFzdEdldEF0
dHJpYnV0ZSh0YWJpbmRleEF0dHIpOworICAgICAgICBpbmRleHN0cmluZyA9IGdldEF0dHJpYnV0
ZSh0YWJpbmRleEF0dHIpOwogICAgICAgICBpbnQgdGFiaW5kZXggPSAwOwogICAgICAgICBpZiAo
IWluZGV4c3RyaW5nLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBjbGVhclRhYkluZGV4RXhwbGlj
aXRseSgpOwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRF
ZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBib29s
IEhUTUxFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQ2FzZShmYXN0R2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0dHIpLCAidHJ1ZSIpOworICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciksICJ0cnVl
Iik7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERyYWdnYWJsZShib29sIHZhbHVlKQpAQCAt
NzgwLDcgKzc4MCw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbihib29sIHNl
bmRUb0FueUVsZW1lbnQpCiAKIFN0cmluZyBIVE1MRWxlbWVudDo6dGl0bGUoKSBjb25zdAogewot
ICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZSh0aXRsZUF0dHIpOwogfQogCiBzaG9ydCBIVE1MRWxlbWVudDo6dGFiSW5kZXgoKSBj
b25zdApAQCAtODUwLDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVj
dXJzaXZlbHkoTm9kZSogZmlyc3ROb2RlLCBib29sIGZsYWcsIE5vZGUqIGxhc3ROCiAgICAgICAg
IGlmIChub2RlLT5zZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSA9PSBmbGFnKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkg
JiYgdG9FbGVtZW50KG5vZGUpLT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAg
IGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNBdHRyaWJ1
dGUoZGlyQXR0cikpIHsKICAgICAgICAgICAgIGlmIChub2RlID09IGxhc3ROb2RlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRT
aWJsaW5nKGZpcnN0Tm9kZSk7CkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
IE5vZGUKIAogVGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdHlJZmhhc0Rp
ckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBjb25zdAogewotICAgIGlmICghKHNlbGZPckFu
Y2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpICYmIGVxdWFsSWdub3JpbmdDYXNlKGZhc3RHZXRB
dHRyaWJ1dGUoZGlyQXR0ciksICJhdXRvIikpKSB7CisgICAgaWYgKCEoc2VsZk9yQW5jZXN0b3JI
YXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRp
ckF0dHIpLCAiYXV0byIpKSkgewogICAgICAgICBpc0F1dG8gPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuIExUUjsKICAgICB9CkBAIC05NDQsNyArOTQ0LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRq
dXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1l
bnQKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRlcmVy
KCktPnN0eWxlKCktPmRpcmVjdGlvbigpICE9IHRleHREaXJlY3Rpb24pIHsKICAgICAgICAgRWxl
bWVudCogZWxlbWVudFRvQWRqdXN0ID0gdGhpczsKICAgICAgICAgZm9yICg7IGVsZW1lbnRUb0Fk
anVzdDsgZWxlbWVudFRvQWRqdXN0ID0gZWxlbWVudFRvQWRqdXN0LT5wYXJlbnRFbGVtZW50KCkp
IHsKLSAgICAgICAgICAgIGlmIChlbGVtZW50VG9BZGp1c3QtPmZhc3RIYXNBdHRyaWJ1dGUoZGly
QXR0cikpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50VG9BZGp1c3QtPmhhc0F0dHJpYnV0ZShk
aXJBdHRyKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnRUb0FkanVzdC0+c2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTk2
Niw3ICs5NjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVl
ZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoTm9kZSogYmVmb3JlQwogICAgIGlmICgoIWRvY3VtZW50
KCkgfHwgZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkgJiYgY2hpbGRDb3VudERlbHRhIDwgMCkgewog
ICAgICAgICBOb2RlKiBub2RlID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdlLT50cmF2ZXJz
ZU5leHRTaWJsaW5nKCkgOiAwOwogICAgICAgICBmb3IgKGludCBjb3VudGVyID0gMDsgbm9kZSAm
JiBjb3VudGVyIDwgY2hpbGRDb3VudERlbHRhOyBjb3VudGVyKyssIG5vZGUgPSBub2RlLT50cmF2
ZXJzZU5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2Rl
KCkgJiYgdG9FbGVtZW50KG5vZGUpLT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKQorICAgICAg
ICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc0F0
dHJpYnV0ZShkaXJBdHRyKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShub2RlLCBmYWxzZSk7CkBAIC05NzcsMTMg
Kzk3NywxMyBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZHJlbkNoYW5nZWQoTm9kZSogYmVmb3JlQwogICAgICAgICByZXR1cm47CiAKICAg
ICBOb2RlKiBvbGRNYXJrZWROb2RlID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdlLT50cmF2
ZXJzZU5leHRTaWJsaW5nKCkgOiAwOwotICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYmIG9sZE1h
cmtlZE5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hUTUxFbGVtZW50KG9sZE1hcmtlZE5vZGUp
LT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKQorICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYm
IG9sZE1hcmtlZE5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hUTUxFbGVtZW50KG9sZE1hcmtl
ZE5vZGUpLT5oYXNBdHRyaWJ1dGUoZGlyQXR0cikpCiAgICAgICAgIG9sZE1hcmtlZE5vZGUgPSBv
bGRNYXJrZWROb2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOwogICAgIGlmIChvbGRNYXJr
ZWROb2RlKQogICAgICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KG9sZE1hcmtlZE5v
ZGUsIGZhbHNlKTsKIAogICAgIGZvciAoRWxlbWVudCogZWxlbWVudFRvQWRqdXN0ID0gdGhpczsg
ZWxlbWVudFRvQWRqdXN0OyBlbGVtZW50VG9BZGp1c3QgPSBlbGVtZW50VG9BZGp1c3QtPnBhcmVu
dEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoZWxlbWVudFRvQWRqdXN0LT5pc0hUTUxFbGVtZW50
KCkgJiYgZWxlbWVudFRvQWRqdXN0LT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAg
ICAgIGlmIChlbGVtZW50VG9BZGp1c3QtPmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50VG9BZGp1
c3QtPmhhc0F0dHJpYnV0ZShkaXJBdHRyKSkgewogICAgICAgICAgICAgdG9IVE1MRWxlbWVudChl
bGVtZW50VG9BZGp1c3QpLT5jYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAppbmRleCBjNjY1YWE0NTIyYzJkYWU1MzRhNTQwMWQwMjEzOWEzNGU2NDM1MTdi
Li5jZDcyOGI1OGZkYmM3MWVmNzk1NGUxMzVmMDIxMTAxMmJkZjk3Zjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEhU
TUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5D
cmVhdGlvbk9wdGlvbikKIAogICAgIFN1YmZyYW1lTG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudCgp
LT5mcmFtZSgpLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKICAgICAvLyBGSVhNRTogYmVm
b3JlTG9hZCBjb3VsZCBoYXZlIGRldGFjaGVkIHRoZSByZW5kZXJlciEgIEp1c3QgbGlrZSBpbiB0
aGUgPG9iamVjdD4gY2FzZSBhYm92ZS4KLSAgICBsb2FkZXItPnJlcXVlc3RPYmplY3QodGhpcywg
bV91cmwsIGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBtX3NlcnZpY2VUeXBlLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcyk7CisgICAgbG9hZGVyLT5yZXF1ZXN0T2JqZWN0KHRoaXMsIG1fdXJs
LCBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBtX3NlcnZpY2VUeXBlLCBwYXJhbU5hbWVzLCBwYXJh
bVZhbHVlcyk7CiB9CiAKIGJvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKQEAgLTIyMyw4ICsyMjMsOCBAQCB2
b2lkIEhUTUxFbWJlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICBpZiAoZG9j
dW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3Vt
ZW50Kj4oZG9jdW1lbnQoKSktPmFkZE5hbWVkSXRlbShtX25hbWUpOwogCi0gICAgU3RyaW5nIHdp
ZHRoID0gZmFzdEdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpOwotICAgIFN0cmluZyBoZWlnaHQgPSBm
YXN0R2V0QXR0cmlidXRlKGhlaWdodEF0dHIpOworICAgIFN0cmluZyB3aWR0aCA9IGdldEF0dHJp
YnV0ZSh3aWR0aEF0dHIpOworICAgIFN0cmluZyBoZWlnaHQgPSBnZXRBdHRyaWJ1dGUoaGVpZ2h0
QXR0cik7CiAgICAgaWYgKCF3aWR0aC5pc0VtcHR5KCkgfHwgIWhlaWdodC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgTm9kZSogbiA9IHBhcmVudE5vZGUoKTsKICAgICAgICAgd2hpbGUgKG4gJiYgIW4t
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYg
dXJscykgY29ucwogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIAotICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikpKTsKKyAgICBhZGRT
dWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUo
c3JjQXR0cikpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwCmluZGV4IGU0ZDQ3ODVkMmU0NTEzNjdhYTZmOWY3YWRkMTdlOWRiYWE4ZmU4YTguLjRm
NTJiOWRjNTY0MzI2MTM4MmFhZWFmNGYyYTc5ODFkOTU4ZjNkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbGVtZW50
KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkRm9ybUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIGNvbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtLT5tX2Fz
c29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50ID0gZm9ybS0+bV9hc3NvY2lhdGVkRWxlbWVudHNbaV07
CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChhc3NvY2lhdGVk
RWxlbWVudCk7Ci0gICAgICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNFbnVtZXJhdGFibGUo
KSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKSB7CisgICAg
ICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSAmJiBlbGVtZW50LT5n
ZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpIHsKICAgICAgICAgICAgIGZvdW5kSW5wdXRF
bGVtZW50cyA9IHRydWU7CiAgICAgICAgICAgICBpZiAoIWR1cGxpY2F0ZU51bWJlcikKICAgICAg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBFbGVtZW50KiBI
VE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkRm9ybUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUsIGNvbgogICAgIGlmICghZm91bmRJbnB1dEVsZW1lbnRzKSB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtLT5tX2ltYWdlRWxlbWVudHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSBmb3JtLT5tX2ltYWdl
RWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShh
dHRyTmFtZSkgPT0gbmFtZSkgeworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmdldEF0dHJpYnV0
ZShhdHRyTmFtZSkgPT0gbmFtZSkgewogICAgICAgICAgICAgICAgIGlmICghZHVwbGljYXRlTnVt
YmVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgICAg
ICAtLWR1cGxpY2F0ZU51bWJlcjsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEhUTUxGb3JtQ29s
bGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKICAgICAgICAgaWYgKGFzc29jaWF0ZWRF
bGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKSB7CiAgICAgICAgICAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOwogICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmZh
c3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0cik7CiAgICAgICAg
ICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBhZGQg
dG8gaWQgY2FjaGUKICAgICAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+KiBpZFZlY3RvciA9
IGluZm8oKS0+aWRDYWNoZS5nZXQoaWRBdHRyVmFsLmltcGwoKSk7CkBAIC0yMjMsNyArMjIzLDcg
QEAgdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGYtPm1faW1hZ2VFbGVtZW50cy5zaXplKCk7ICsraSkg
ewogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gZi0+bV9pbWFnZUVsZW1lbnRz
W2ldOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdl
dElkQXR0cmlidXRlKCk7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwg
PSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0cik7
CiAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRz
LmNvbnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKSB7CiAgICAgICAgICAgICAvLyBhZGQgdG8gaWQg
Y2FjaGUKICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4qIGlkVmVjdG9yID0gaW5mbygpLT5p
ZENhY2hlLmdldChpZEF0dHJWYWwuaW1wbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDc3OGU1ZTM1ZjczNWEwNzQyNzFhNDY2ODI2
MzRlMDMxNjcxODdkZTYuLjAwMDYzN2I4YmU1YzRiN2YzZmM1YjhmZGViYjViYTgxODE5YWE0MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0RGlzYWJs
ZWQoYm9vbCBiKQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9mb2N1cygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoYXV0b2ZvY3VzQXR0cik7CisgICAg
cmV0dXJuIGhhc0F0dHJpYnV0ZShhdXRvZm9jdXNBdHRyKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQog
ICAgICAgICAvLyBIVE1MNSBzcGVjaWZpY2F0aW9uIGRvZXNuJ3QgYXNrIFVBIHRvIHNob3cgdGhl
IHRpdGxlIGF0dHJpYnV0ZSB2YWx1ZQogICAgICAgICAvLyB3aXRoIHRoZSB2YWxpZGF0aW9uTWVz
c2FnZS4gIEhvd2V2ZXIsIHRoaXMgYmVoYXZpb3IgaXMgc2FtZSBhcyBPcGVyYQogICAgICAgICAv
LyBhbmQgdGhlIHNwZWNpZmljYXRpb24gZGVzY3JpYmVzIHN1Y2ggYmVoYXZpb3IgYXMgYW4gZXhh
bXBsZS4KLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0aXRsZSA9IGZhc3RHZXRBdHRyaWJ1
dGUodGl0bGVBdHRyKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0aXRsZSA9IGdldEF0
dHJpYnV0ZSh0aXRsZUF0dHIpOwogICAgICAgICBpZiAoIW1lc3NhZ2UuaXNFbXB0eSgpICYmICF0
aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCdcbicpOwogICAg
ICAgICAgICAgbWVzc2FnZS5hcHBlbmQodGl0bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCmluZGV4IDQ4YmE2NTFmYzc1ODQyYjU0MGQ1YjlkMmFhOWRhYWVhYjQyNjM5
OWIuLjVhYzViNjM0N2I3N2U4ZTFhY2U1ZTBkYjg1NmM5ODU0YWYxODc2MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCBQYXNzUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKCkKIAogU3RyaW5n
IEhUTUxGb3JtRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRy
aWJ1dGUobmFtZUF0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogfQog
CiBib29sIEhUTUxGb3JtRWxlbWVudDo6bm9WYWxpZGF0ZSgpIGNvbnN0CkBAIC01MzIsNyArNTMy
LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Om5vVmFsaWRhdGUoKSBjb25zdAogLy8gKERhcmlu
IEFkbGVyKSByZW1vdmVkIHRoaXMsIHNvbWVvbmUgYWRkZWQgaXQgYmFjaywgc28gSSBhbSBsZWF2
aW5nIGl0IGluIGZvciBub3cuCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50OjphY3Rpb24oKSBjb25z
dAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKGFjdGlvbkF0dHIpOworICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYWN0aW9uQXR0cik7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpz
ZXRBY3Rpb24oY29uc3QgU3RyaW5nICZ2YWx1ZSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6c2V0RW5jdHlwZShjb25zdCBTdHJpbmcgJnZhbHVlKQogCiBTdHJpbmcg
SFRNTEZvcm1FbGVtZW50OjptZXRob2QoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0
cmlidXRlKG1ldGhvZEF0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobWV0aG9kQXR0cik7
CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRNZXRob2QoY29uc3QgU3RyaW5nICZ2YWx1
ZSkKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0TWV0aG9kKGNv
bnN0IFN0cmluZyAmdmFsdWUpCiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6OnRhcmdldCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CisgICAgcmV0
dXJuIGdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKTsKIH0KIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6
Ondhc1VzZXJTdWJtaXR0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5jcHAKaW5kZXggZjI3YjYwYjQ0N2VjMjE3NWM3MjlkY2E5NmQwNmI2NzRhMTEzY2JiNy4u
MzRlZGU4ZGY4YTFmOGU2MjdkM2VmZGRlOTViM2VhYTc4MzU2YTI2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSFRNTEZyYW1lU2V0RWxlbWVudCogY29udGFpbmluZ0ZyYW1lU2V0RWxlbWVudChOb2RlKiBu
b2RlKQogCiBib29sIEhUTUxGcmFtZUVsZW1lbnQ6Om5vUmVzaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShub3Jlc2l6ZUF0dHIpOworICAgIHJldHVybiBoYXNBdHRy
aWJ1dGUobm9yZXNpemVBdHRyKTsKIH0KIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50OjphdHRhY2go
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCBj
NjY0ZDhhZDhmNGNmNGJiNmFjZGNkODg0YTlmYTU3YzMxYTc5ZTNmLi4yMzRlYzAyYzQzN2FkMzE4
MTZmMDhlZjQ2MzViMmI2ODc0MGM5NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSFRNTEZyYW1lRWxl
bWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogdm9pZCBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogewotICAgIG1fZnJhbWVO
YW1lID0gZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgbV9mcmFtZU5hbWUgPSBnZXRB
dHRyaWJ1dGUobmFtZUF0dHIpOwogICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKICAgICAg
ICAgbV9mcmFtZU5hbWUgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgIG9wZW5VUkwoKTsKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKQogCiBLVVJM
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikpOworICAgIHJl
dHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQog
CiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHN0
cikKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp3aWxsUmVt
b3ZlKCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBib29sIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjphbGxvd0Z1bGxTY3JlZW4oKSBjb25zdAogewotICAgIHJldHVybiBmYXN0SGFzQXR0cmli
dXRlKHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGUo
d2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0cik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSHRtbEVsZW1lbnQuY3BwCmluZGV4IGI1YzMwNDQ5OWNlMzkxMzdmMDI5M2VmMzFkOGI5
NmJjYTcwNDllMTEuLjU5YzBkM2VmZmViMjg5ZmU2ODgyMzU5MDZiOGFjY2IzZTcxYzMyN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
dm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkQnlQYXJzZXIoKQogICAgIGlmICghZG9jdW1l
bnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWFu
aWZlc3QgPSBmYXN0R2V0QXR0cmlidXRlKG1hbmlmZXN0QXR0cik7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYW5pZmVzdCA9IGdldEF0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOwogICAgIGlmICht
YW5pZmVzdC5pc0VtcHR5KCkpCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5zZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdCgpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGU1ZGU4MWJhZDRhN2RlNDA4
ZTFjODMxMmViMTZlODg5YWRiYTRmMzcuLjM1N2YxMTZhMWFiOTVhYTQwODBkMzJjNzZlMTgyMTZj
ZmUyMTg2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
MTYwLDEwICsxNjAsMTAgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmFsdFRleHQoKSBjb25z
dAogICAgIC8vIGxldHMgZmlndXJlIG91dCB0aGUgYWx0IHRleHQuLiBtYWdpYyBzdHVmZgogICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLWh0bWw0MC0xOTk4MDQyNC9hcHBlbmRp
eC9ub3Rlcy5odG1sI2FsdGdlbgogICAgIC8vIGFsc28gaGVhdmlseSBkaXNjdXNzZWQgYnkgSGl4
aWUgb24gYnVnemlsbGEKLSAgICBTdHJpbmcgYWx0ID0gZmFzdEdldEF0dHJpYnV0ZShhbHRBdHRy
KTsKKyAgICBTdHJpbmcgYWx0ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIpOwogICAgIC8vIGZhbGwg
YmFjayB0byB0aXRsZSBhdHRyaWJ1dGUKICAgICBpZiAoYWx0LmlzTnVsbCgpKQotICAgICAgICBh
bHQgPSBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAgIGFsdCA9IGdldEF0dHJp
YnV0ZSh0aXRsZUF0dHIpOwogICAgIHJldHVybiBhbHQ7CiB9CiAKQEAgLTI1MSw3ICsyNTEsNyBA
QCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMpCiAgICAgaWYgKCFyZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRyaWJ1
dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlCiAgICAgICAgIGJvb2wgb2s7Ci0g
ICAgICAgIGludCB3aWR0aCA9IGZhc3RHZXRBdHRyaWJ1dGUod2lkdGhBdHRyKS50b0ludCgmb2sp
OworICAgICAgICBpbnQgd2lkdGggPSBnZXRBdHRyaWJ1dGUod2lkdGhBdHRyKS50b0ludCgmb2sp
OwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CiAKQEAgLTI3NCw3
ICsyNzQsNyBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKQogICAgIGlmICghcmVuZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0
aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZQogICAgICAgICBi
b29sIG9rOwotICAgICAgICBpbnQgaGVpZ2h0ID0gZmFzdEdldEF0dHJpYnV0ZShoZWlnaHRBdHRy
KS50b0ludCgmb2spOworICAgICAgICBpbnQgaGVpZ2h0ID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0
dHIpLnRvSW50KCZvayk7CiAgICAgICAgIGlmIChvaykKICAgICAgICAgICAgIHJldHVybiBoZWln
aHQ7CiAKQEAgLTMxOCwxMyArMzE4LDEzIEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNVUkxB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBjb25zdAogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxJbWFnZUVsZW1lbnQ6OmFsdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1
dGUoYWx0QXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhbHRBdHRyKTsKIH0KIAogYm9v
bCBIVE1MSW1hZ2VFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogewogICAgIC8vIEltYWdlIGVs
ZW1lbnRzIGFyZSBkcmFnZ2FibGUgYnkgZGVmYXVsdC4KLSAgICByZXR1cm4gIWVxdWFsSWdub3Jp
bmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciksICJmYWxzZSIpOworICAgIHJl
dHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0dHIpLCAiZmFs
c2UiKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZhbHVlKQpA
QCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0SGVpZ2h0KGludCB2
YWx1ZSkKIAogS1VSTCBIVE1MSW1hZ2VFbGVtZW50OjpzcmMoKSBjb25zdAogewotICAgIHJldHVy
biBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChmYXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKKyAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsK
IH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRTcmMoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
QEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29ucwogCiAgICAgYWRkU3Vi
cmVzb3VyY2VVUkwodXJscywgc3JjKCkpOwogICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IHdoZW4g
dGhlIHVzZW1hcCBhdHRyaWJ1dGUgYmVnaW5zIHdpdGggIiMiPwotICAgIGFkZFN1YnJlc291cmNl
VVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUodXNlbWFw
QXR0cikpKTsKKyAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChnZXRBdHRyaWJ1dGUodXNlbWFwQXR0cikpKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAppbmRleCA0NTYxZjFjZDgzZTMzZjZhMTE0YmQ5YTdkY2ViNDg3NzAw
YzE0NWYzLi43NzdjYTg2MzJmYTkxNzE3ZWI0MjNlN2UyZjcyZWU5ZTRhNzUxMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgbV9wYXJz
aW5nSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICBpZiAoIW1fc3RhdGVSZXN0b3JlZCkgewotICAg
ICAgICBib29sIGNoZWNrZWQgPSBmYXN0SGFzQXR0cmlidXRlKGNoZWNrZWRBdHRyKTsKKyAgICAg
ICAgYm9vbCBjaGVja2VkID0gaGFzQXR0cmlidXRlKGNoZWNrZWRBdHRyKTsKICAgICAgICAgaWYg
KGNoZWNrZWQpCiAgICAgICAgICAgICBzZXRDaGVja2VkKGNoZWNrZWQpOwogICAgICAgICBtX3Jl
ZmxlY3RzQ2hlY2tlZEF0dHJpYnV0ZSA9IHRydWU7CkBAIC05MTAsOSArOTEwLDkgQEAgU3RyaW5n
IEhUTUxJbnB1dEVsZW1lbnQ6OmFsdFRleHQoKSBjb25zdAogICAgIFN0cmluZyBhbHQgPSBmYXN0
R2V0QXR0cmlidXRlKGFsdEF0dHIpOwogICAgIC8vIGZhbGwgYmFjayB0byB0aXRsZSBhdHRyaWJ1
dGUKICAgICBpZiAoYWx0LmlzTnVsbCgpKQotICAgICAgICBhbHQgPSBmYXN0R2V0QXR0cmlidXRl
KHRpdGxlQXR0cik7CisgICAgICAgIGFsdCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwogICAg
IGlmIChhbHQuaXNOdWxsKCkpCi0gICAgICAgIGFsdCA9IGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVB
dHRyKTsKKyAgICAgICAgYWx0ID0gZ2V0QXR0cmlidXRlKHZhbHVlQXR0cik7CiAgICAgaWYgKGFs
dC5pc0VtcHR5KCkpCiAgICAgICAgIGFsdCA9IGlucHV0RWxlbWVudEFsdFRleHQoKTsKICAgICBy
ZXR1cm4gYWx0OwpAQCAtOTQ2LDcgKzk0Niw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVz
ZXQoKQogICAgICAgICBzZXRWYWx1ZShTdHJpbmcoKSk7CiAKICAgICBzZXRBdXRvZmlsbGVkKGZh
bHNlKTsKLSAgICBzZXRDaGVja2VkKGZhc3RIYXNBdHRyaWJ1dGUoY2hlY2tlZEF0dHIpKTsKKyAg
ICBzZXRDaGVja2VkKGhhc0F0dHJpYnV0ZShjaGVja2VkQXR0cikpOwogICAgIG1fcmVmbGVjdHND
aGVja2VkQXR0cmlidXRlID0gdHJ1ZTsKIH0KIApAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNlYXJjaEV2ZW50c1Nob3VsZEJlRGlzcGF0Y2hlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoaW5jcmVtZW50YWxBdHRyKTsKKyAg
ICByZXR1cm4gaGFzQXR0cmlidXRlKGluY3JlbWVudGFsQXR0cik7CiB9CiAKIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAg
LTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0V2FwSW5wdXRGb3Jt
YXQoU3RyaW5nJiBtYXNrKQogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgUkFOR0UsIEVNQUlMLCBV
UkwsIENPTE9SIGFuZCBEQVRFL1RJTUUgaW5wdXQgdHlwZXMuCi0gICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5zaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c3BlZWNoSW5wdXRFbmFibGVkKCkgJiYgZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRzcGVl
Y2hBdHRyKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RTcGVlY2hBdHRy
aWJ1dGUoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzcGVlY2hJbnB1dEVuYWJsZWQoKSAm
JiBoYXNBdHRyaWJ1dGUod2Via2l0c3BlZWNoQXR0cik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKaW5kZXggMTFkOTNhMTEzMzJlYjY1Zjg1Nzcw
MzQ3NzY2MzU5YzBmZWYwMjA3Zi4uZjIzNjFmMDNhYTg4MWQ2ZmExNTNlOTI2Mjk5ZGQ1NzlmNWMx
NWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIGJvb2wgSFRNTExhYmVsRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogCiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MTGFiZWxFbGVtZW50Ojpjb250cm9sKCkKIHsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGNvbnRyb2xJZCA9IGZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0
cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb250cm9sSWQgPSBnZXRBdHRyaWJ1dGUoZm9y
QXR0cik7CiAgICAgaWYgKGNvbnRyb2xJZC5pc051bGwoKSkgewogICAgICAgICAvLyBTZWFyY2gg
dGhlIGNoaWxkcmVuIGFuZCBkZXNjZW5kYW50cyBvZiB0aGUgbGFiZWwgZWxlbWVudCBmb3IgYSBm
b3JtIGVsZW1lbnQuCiAgICAgICAgIC8vIHBlciBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVj
L092ZXJ2aWV3Lmh0bWwjdGhlLWxhYmVsLWVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCA2ZDBmMjI4YjViMWRhZjZhZjNkYWJmZjQ0MGFmMzk1NzQwMzZh
NjQ3Li45Yjk1NGFhYWUwNDk0NGIxOGQ3OGZiZGNlZDE4OGRjYjNkYTk1NWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gRGlz
YWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVD
b250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpCiAgICAgICAgICYm
IGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIAotICAg
ICAgICBTdHJpbmcgY2hhcnNldCA9IGZhc3RHZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIpOworICAg
ICAgICBTdHJpbmcgY2hhcnNldCA9IGdldEF0dHJpYnV0ZShjaGFyc2V0QXR0cik7CiAgICAgICAg
IGlmIChjaGFyc2V0LmlzRW1wdHkoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAg
ICAgY2hhcnNldCA9IGRvY3VtZW50KCktPmNoYXJzZXQoKTsKICAgICAgICAgCkBAIC0zODAsMjIg
KzM4MCwyMiBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRl
ICphdHRyKSBjb25zdAogCiBLVVJMIEhUTUxMaW5rRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoaHJlZkF0
dHIpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKGhy
ZWZBdHRyKSk7CiB9CiAKIFN0cmluZyBIVE1MTGlua0VsZW1lbnQ6OnJlbCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUocmVsQXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShyZWxBdHRyKTsKIH0KIAogU3RyaW5nIEhUTUxMaW5rRWxlbWVudDo6dGFyZ2V0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKTsKKyAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCiBTdHJpbmcgSFRNTExpbmtFbGVtZW50
Ojp0eXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0cik7
CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0eXBlQXR0cik7CiB9CiAKIHZvaWQgSFRNTExpbmtF
bGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVy
bHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IDg2OWRi
OTg0ZWNhN2ZkM2U0OGY1ZDg3MmU4NDgzNGNjNWIzM2NmOGYuLmU5NDRkYWRkNDYyNjUyY2U2Nzgw
YjAwMTY1MmZhZWQ4NTA5NDUwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIEhUTUxJbWFnZUVsZW1lbnQqIEhUTUxNYXBFbGVtZW50Ojpp
bWFnZUVsZW1lbnQoKQogICAgICAgICAvLyBUaGUgSFRNTEltYWdlRWxlbWVudCdzIHVzZU1hcCgp
IHZhbHVlIGluY2x1ZGVzIHRoZSAnIycgc3ltYm9sIGF0IHRoZSBiZWdpbm5pbmcsCiAgICAgICAg
IC8vIHdoaWNoIGhhcyB0byBiZSBzdHJpcHBlZCBvZmYuCiAgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihjdXJyKTsK
LSAgICAgICAgU3RyaW5nIHVzZU1hcE5hbWUgPSBpbWFnZUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1
dGUodXNlbWFwQXR0cikuc3RyaW5nKCkuc3Vic3RyaW5nKDEpOworICAgICAgICBTdHJpbmcgdXNl
TWFwTmFtZSA9IGltYWdlRWxlbWVudC0+Z2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpLnN0cmluZygp
LnN1YnN0cmluZygxKTsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHVzZU1hcE5hbWUs
IG1fbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gaW1hZ2VFbGVtZW50OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGIzNDQ4YzZjNGMyM2IxN2Fl
MGI5M2I4NWU0OTE5OTY4YTNiYjkwMTEuLjQzMjEwYjcyYWIwOThlNWRmOGFjNjBjODIzMTc0YjBk
NDllYzE2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChB
dHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscykKICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0
cikgewogICAgICAgICAvLyBUcmlnZ2VyIGEgcmVsb2FkLCBhcyBsb25nIGFzIHRoZSAnc3JjJyBh
dHRyaWJ1dGUgaXMgcHJlc2VudC4KLSAgICAgICAgaWYgKCFmYXN0R2V0QXR0cmlidXRlKHNyY0F0
dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0
eSgpKQogICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IGNvbnRyb2xzQXR0cikgewpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQiKTsKICAgICBIVE1MRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBpZiAoIWZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0
cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCisgICAgaWYg
KCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5F
VFdPUktfRU1QVFkpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggY2VhNGEwM2ZjYjQ4Y2M3NDMzOTNlYmFmNTE3
YTIzZTA4YTZkNDI0Yy4uMTA4YTk4YzNhMGI5NjI4NjU3MGEzNDRmN2M4Mjg1NzAzYzk4MTM0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcApAQCAtODEsMTcgKzgxLDE3
IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKIAogU3RyaW5nIEhUTUxNZXRhRWxl
bWVudDo6Y29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoY29u
dGVudEF0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoY29udGVudEF0dHIpOwogfQogCiBT
dHJpbmcgSFRNTE1ldGFFbGVtZW50OjpodHRwRXF1aXYoKSBjb25zdAogewotICAgIHJldHVybiBm
YXN0R2V0QXR0cmlidXRlKGh0dHBfZXF1aXZBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGh0dHBfZXF1aXZBdHRyKTsKIH0KIAogU3RyaW5nIEhUTUxNZXRhRWxlbWVudDo6bmFtZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpOworICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmNwcAppbmRleCBjZWUyYzk3YTkzZDExZmViZDlmMDRhM2VmYzFkYjY0M2M4
NmFmYmM2Li4xM2UwMmVkNDQ1ODk1YzAyMGI0ZmU4MThiNTYzODdjOTA1OWUzMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBIVE1MTWV0ZXJFbGVtZW50OjphdHRhY2goKQogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om1p
bigpIGNvbnN0CiB7CiAgICAgZG91YmxlIG1pbiA9IDA7Ci0gICAgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgJm1pbik7CisgICAgcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG1pbkF0dHIpLCAmbWluKTsKICAgICByZXR1
cm4gbWluOwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50Ojpz
ZXRNaW4oZG91YmxlIG1pbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiBkb3VibGUgSFRNTE1ldGVyRWxl
bWVudDo6bWF4KCkgY29uc3QKIHsKICAgICBkb3VibGUgbWF4ID0gc3RkOjptYXgoMS4wLCBtaW4o
KSk7Ci0gICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZShtYXhB
dHRyKSwgJm1heCk7CisgICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRl
KG1heEF0dHIpLCAmbWF4KTsKICAgICByZXR1cm4gc3RkOjptYXgobWF4LCBtaW4oKSk7CiB9CiAK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1heChkb3VibGUg
bWF4LCBFeGNlcHRpb25Db2RlJiBlYykKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50Ojp2YWx1ZSgp
IGNvbnN0CiB7CiAgICAgZG91YmxlIHZhbHVlID0gMDsKLSAgICBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKHZhbHVlQXR0ciksICZ2YWx1ZSk7CisgICAgcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKHZhbHVlQXR0ciksICZ2YWx1ZSk7CiAg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4oKSksIG1heCgpKTsKIH0KIApA
QCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0VmFsdWUoZG91Ymxl
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50Ojpsb3co
KSBjb25zdAogewogICAgIGRvdWJsZSBsb3cgPSBtaW4oKTsKLSAgICBwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKGxvd0F0dHIpLCAmbG93KTsKKyAgICBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobG93QXR0ciksICZsb3cpOwogICAgIHJl
dHVybiBzdGQ6Om1pbihzdGQ6Om1heChsb3csIG1pbigpKSwgbWF4KCkpOwogfQogCkBAIC0xNTIs
NyArMTUyLDcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRMb3coZG91YmxlIGxvdywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6aGlnaCgpIGNvbnN0CiB7
CiAgICAgZG91YmxlIGhpZ2ggPSBtYXgoKTsKLSAgICBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZShmYXN0R2V0QXR0cmlidXRlKGhpZ2hBdHRyKSwgJmhpZ2gpOworICAgIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShoaWdoQXR0ciksICZoaWdoKTsKICAgICByZXR1cm4g
c3RkOjptaW4oc3RkOjptYXgoaGlnaCwgbG93KCkpLCBtYXgoKSk7CiB9CiAKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldEhpZ2goZG91YmxlIGhpZ2gsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om9wdGltdW0oKSBjb25zdAog
ewogICAgIGRvdWJsZSBvcHRpbXVtID0gKG1heCgpICsgbWluKCkpIC8gMjsKLSAgICBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKG9wdGltdW1BdHRyKSwgJm9wdGlt
dW0pOworICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShvcHRpbXVt
QXR0ciksICZvcHRpbXVtKTsKICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgob3B0aW11bSwg
bWluKCkpLCBtYXgoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0
aW9uLmNwcAppbmRleCA0ZDMxNGRlNGU4ZTc4OGU0ZWU4MjAzYmQwMjNlNGNhYjJlYzg2Mzk1Li40
MDc1ZTRjMDhlMWM2ZTZhZDg4ZWQ0ZjQxMjVlMDVhZGQ2NjRmYWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCkBAIC02MSw3ICs2MSw3IEBAIEVsZW1lbnQq
IEhUTUxOYW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVyKEVsZW1lbnQqIHByZXZpb3VzKSBjb25zdAog
ICAgICAgICAgICAgICAgICAgICBlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwKICAgICAgICAg
ICAgICAgICAgICAgZS0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwKICAgICAgICAgICAgICAgICAg
ICAgZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+
ZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9uYW1lKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoZS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICBpZiAoZS0+Z2V0SWRBdHRyaWJ1
dGUoKSA9PSBtX25hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwpAQCAtNzEsMTcg
KzcxLDE3IEBAIEVsZW1lbnQqIEhUTUxOYW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVyKEVsZW1lbnQq
IHByZXZpb3VzKSBjb25zdAogICAgICAgICAgICAgICAgIC8vIGFwcGxldHMgYW5kIG9iamVjdCBi
eSBpZCwgYW5kIGltYWdlcyBieSBpZCBidXQgb25seSBpZiB0aGV5IGhhdmUKICAgICAgICAgICAg
ICAgICAvLyBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxlIG1hdGNoZXMg
SUUpCiAgICAgICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgZS0+aGFz
VGFnTmFtZShlbWJlZFRhZykgfHwgZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChlLT5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUp
CisgICAgICAgICAgICAgICAgICAgIGlmIChlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG1f
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShhcHBsZXRUYWcpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChlLT5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUgfHwgZS0+Z2V0
SWRBdHRyaWJ1dGUoKSA9PSBtX25hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIChlLT5nZXRB
dHRyaWJ1dGUobmFtZUF0dHIpID09IG1fbmFtZSB8fCBlLT5nZXRJZEF0dHJpYnV0ZSgpID09IG1f
bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgoZS0+ZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9uYW1lIHx8IGUtPmdl
dElkQXR0cmlidXRlKCkgPT0gbV9uYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiAoKGUtPmdl
dEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9uYW1lIHx8IGUtPmdldElkQXR0cmlidXRlKCkgPT0g
bV9uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEhUTUxP
YmplY3RFbGVtZW50Kj4oZSktPmlzRG9jTmFtZWRJdGVtKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUo
aW1nVGFnKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+ZmFzdEdldEF0dHJpYnV0ZShu
YW1lQXR0cikgPT0gbV9uYW1lIHx8IChlLT5nZXRJZEF0dHJpYnV0ZSgpID09IG1fbmFtZSAmJiBl
LT5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChl
LT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG1fbmFtZSB8fCAoZS0+Z2V0SWRBdHRyaWJ1dGUo
KSA9PSBtX25hbWUgJiYgZS0+aGFzQXR0cmlidXRlKG5hbWVBdHRyKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGZk
NjkyMTk5MTYxYWM4YjdiOTAxYzY2YzUxMzgzMWE0MDAzYzQzMmMuLjNiMmE5OTk1NjE0YzJmYWU4
ZDIzMDEyZTg1ZDdlMGQ4Y2M0YTQ2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6
dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQog
ICAgICAgICByZXR1cm47CiAKICAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7Ci0gICAgYm9vbCBzdWNjZXNz
ID0gYmVmb3JlTG9hZEFsbG93ZWRMb2FkICYmIGhhc1ZhbGlkQ2xhc3NJZCgpICYmIGxvYWRlci0+
cmVxdWVzdE9iamVjdCh0aGlzLCB1cmwsIGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBzZXJ2
aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOworICAgIGJvb2wgc3VjY2VzcyA9IGJl
Zm9yZUxvYWRBbGxvd2VkTG9hZCAmJiBoYXNWYWxpZENsYXNzSWQoKSAmJiBsb2FkZXItPnJlcXVl
c3RPYmplY3QodGhpcywgdXJsLCBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBzZXJ2aWNlVHlwZSwg
cGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogCiAgICAgaWYgKCFzdWNjZXNzICYmIGZhbGxiYWNr
Q29udGVudCkKICAgICAgICAgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CkBAIC00NzksMTMgKzQ3
OSwxMyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0oKQogCiBi
b29sIEhUTUxPYmplY3RFbGVtZW50Ojpjb250YWluc0phdmFBcHBsZXQoKSBjb25zdAogewotICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShmYXN0R2V0QXR0cmli
dXRlKHR5cGVBdHRyKSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1J
TUVUeXBlKGdldEF0dHJpYnV0ZSh0eXBlQXR0cikpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgCiAgICAgZm9yIChFbGVtZW50KiBjaGlsZCA9IGZpcnN0RWxlbWVudENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPmhhc1RhZ05hbWUocGFyYW1UYWcpCi0gICAgICAgICAgICAgICAgJiYgZXF1YWxJZ25v
cmluZ0Nhc2UoY2hpbGQtPmZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCAidHlwZSIpCi0gICAg
ICAgICAgICAgICAgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY2hp
bGQtPmZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKS5zdHJpbmcoKSkpCisgICAgICAgICAgICAg
ICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoY2hpbGQtPmdldEF0dHJpYnV0ZShuYW1lQXR0ciksICJ0
eXBlIikKKyAgICAgICAgICAgICAgICAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShjaGlsZC0+Z2V0QXR0cmlidXRlKHZhbHVlQXR0cikuc3RyaW5nKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShvYmplY3RU
YWcpCiAgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihj
aGlsZCktPmNvbnRhaW5zSmF2YUFwcGxldCgpKQpAQCAtNTAxLDExICs1MDEsMTEgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiB1cmxzKSBjb24KIHsKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxz
LCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChmYXN0R2V0QXR0cmlidXRlKGRhdGFBdHRyKSkpOwor
ICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGdldEF0
dHJpYnV0ZShkYXRhQXR0cikpKTsKIAogICAgIC8vIEZJWE1FOiBQYXNzaW5nIGEgc3RyaW5nIHRo
YXQgc3RhcnRzIHdpdGggIiMiIHRvIHRoZSBjb21wbGV0ZVVSTCBmdW5jdGlvbiBkb2VzCiAgICAg
Ly8gbm90IHNlZW0gbGlrZSBpdCB3b3VsZCB3b3JrLiBUaGUgaW1hZ2UgZWxlbWVudCBoYXMgc2lt
aWxhciBidXQgbm90IGlkZW50aWNhbCBjb2RlLgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXNl
TWFwID0gZmFzdEdldEF0dHJpYnV0ZSh1c2VtYXBBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHVzZU1hcCA9IGdldEF0dHJpYnV0ZSh1c2VtYXBBdHRyKTsKICAgICBpZiAodXNlTWFwLnN0
YXJ0c1dpdGgoIiMiKSkKICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXNlTWFwKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCA1MDA3YWI2NTY1M2M2YWMwNDlkYjRkZWUwZWI1ZjVhMzY1
ZWFmZDBiLi5mOGMyNGMzOTFjMTc5M2EyZjFhMThiMzNhMmIwODEzNmNiZDkwOTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBSZW5kZXJTdHlsZSogSFRNTE9wdEdyb3VwRWxlbWVudDo6bm9uUmVuZGVyZXJSZW5kZXJT
dHlsZSgpIGNvbnN0CiAKIFN0cmluZyBIVE1MT3B0R3JvdXBFbGVtZW50Ojpncm91cExhYmVsVGV4
dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGl0ZW1UZXh0ID0gZG9jdW1lbnQoKS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmYXN0R2V0QXR0cmlidXRlKGxhYmVsQXR0cikpOworICAg
IFN0cmluZyBpdGVtVGV4dCA9IGRvY3VtZW50KCktPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcoZ2V0QXR0cmlidXRlKGxhYmVsQXR0cikpOwogICAgIAogICAgIC8vIEluIFdpbklFLCBs
ZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzIGlnbm9yZWQgaW4gb3B0aW9ucyBhbmQg
b3B0Z3JvdXBzLiBXZSBtYXRjaCB0aGlzIGJlaGF2aW9yLgogICAgIGl0ZW1UZXh0ID0gaXRlbVRl
eHQuc3RyaXBXaGl0ZVNwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NF
bGVtZW50LmNwcAppbmRleCBjYWZjOTIxM2MwN2Q5MDRmYjBmZDU2ZjgzZDIxMTA5NGE3OWQ1MDk1
Li45NjBmMTU3ODJlZmEwNGE1MDM3YmRiNmE0Yzk5N2E5ZGZjN2RhMzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiBkb3VibGUgSFRNTFByb2dyZXNzRWxlbWVudDo6bWF4KCkgY29uc3QKIHsKICAg
ICBkb3VibGUgbWF4OwotICAgIGJvb2wgb2sgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShm
YXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCAmbWF4KTsKKyAgICBib29sIG9rID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG1heEF0dHIpLCAmbWF4KTsKICAgICBpZiAo
IW9rIHx8IG1heCA8PSAwKQogICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gbWF4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAppbmRleCA1NTQyN2VkMDUwNWFj
MjYyMDkyZWMwZTI5NjVjMmRmYzViN2MyY2UwLi4wMjQ4ZWZjYTBlNGQ2M2NjZWNlYmMwM2UxMTVm
NjY4ZWJkZGMxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cApAQCAtMTM0LDMyICsxMzQsMzIgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb24KIAogU3RyaW5n
IEhUTUxTY3JpcHRFbGVtZW50Ojpzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikuc3RyaW5nKCk7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShzcmNBdHRyKS5zdHJpbmcoKTsKIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVt
ZW50OjpjaGFyc2V0QXR0cmlidXRlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0
QXR0cmlidXRlKGNoYXJzZXRBdHRyKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGNoYXJzZXRBdHRyKS5zdHJpbmcoKTsKIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50Ojp0
eXBlQXR0cmlidXRlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRl
KHR5cGVBdHRyKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHR5cGVBdHRyKS5z
dHJpbmcoKTsKIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpsYW5ndWFnZUF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShsYW5ndWFnZUF0
dHIpLnN0cmluZygpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobGFuZ3VhZ2VBdHRyKS5zdHJp
bmcoKTsKIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50Ojpmb3JBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0cikuc3RyaW5nKCk7
CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShmb3JBdHRyKS5zdHJpbmcoKTsKIH0KIAogU3RyaW5n
IEhUTUxTY3JpcHRFbGVtZW50OjpldmVudEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShldmVudEF0dHIpLnN0cmluZygpOworICAgIHJldHVybiBn
ZXRBdHRyaWJ1dGUoZXZlbnRBdHRyKS5zdHJpbmcoKTsKIH0KIAogYm9vbCBIVE1MU2NyaXB0RWxl
bWVudDo6YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwCmluZGV4IDgzMmMyOTQzMGNlMzExYWE1ZjAzOGI4M2JiYzE2N2My
MDlmMzVkZDQuLjA2MzFhMjAwYzEzY2MwMDc0ZDVjOTBiOWUyODlmMzA3YjdmZTg2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHVybCkKIAogU3Ry
aW5nIEhUTUxTb3VyY2VFbGVtZW50OjptZWRpYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RH
ZXRBdHRyaWJ1dGUobWVkaWFBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKG1lZGlhQXR0
cik7CiB9CiAKIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnNldE1lZGlhKGNvbnN0IFN0cmluZyYg
bWVkaWEpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnNldE1lZGlh
KGNvbnN0IFN0cmluZyYgbWVkaWEpCiAKIFN0cmluZyBIVE1MU291cmNlRWxlbWVudDo6dHlwZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpOworICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwogfQogCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50
OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwCmluZGV4IDUzMGU0NmUwZjdiMGQzOTJhOWM3YmMyYjk1MzkxYjVkZjM2MTRi
MjYuLjAyMTNmNDAzNmQ2NzIzZGY4MTliM2I1Y2RmZTE4M2M2NjkwOGVlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQg
SFRNTFN0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFN0eWxlRWxlbWVu
dDo6bWVkaWEoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKG1lZGlhQXR0
cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBm
YXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHR5cGVB
dHRyKTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4IGIxOTVmNGU0NmY0MjhmNDdlMjFkMTMy
ZDdiMmE1N2IxMjhkMzFiMWUuLmMxZmI1ZWUwMjQwZGUzOTZjYzgxYjA5NGVmMzhiYThmNjcxZWEw
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBA
IC0xMjgsMTIgKzEyOCwxMiBAQCBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUgKmF0dHIpIGNvbnN0CiAKIFN0cmluZyBIVE1MVGFibGVDZWxsRWxlbWVu
dDo6YWJicigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoYWJickF0dHIp
OworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYWJickF0dHIpOwogfQogCiBTdHJpbmcgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ6OmF4aXMoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmli
dXRlKGF4aXNBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGF4aXNBdHRyKTsKIH0KIAog
dm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2V0Q29sU3BhbihpbnQgbikKQEAgLTE0Myw3ICsx
NDMsNyBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzZXRDb2xTcGFuKGludCBuKQogCiBT
dHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmhlYWRlcnMoKSBjb25zdAogewotICAgIHJldHVy
biBmYXN0R2V0QXR0cmlidXRlKGhlYWRlcnNBdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGhlYWRlcnNBdHRyKTsKIH0KIAogdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2V0Um93U3Bh
bihpbnQgbikKQEAgLTE1MywxNCArMTUzLDE0IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6
OnNldFJvd1NwYW4oaW50IG4pCiAKIFN0cmluZyBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2NvcGUo
KSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHNjb3BlQXR0cik7CisgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShzY29wZUF0dHIpOwogfQogCiB2b2lkIEhUTUxUYWJsZUNlbGxF
bGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVy
bHMpIGNvbnN0CiB7CiAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyh1cmxzKTsKIAotICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoYmFja2dyb3VuZEF0dHIpKSk7CisgICAg
YWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmli
dXRlKGJhY2tncm91bmRBdHRyKSkpOwogfQogCiBIVE1MVGFibGVDZWxsRWxlbWVudCogSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ6OmNlbGxBYm92ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCBlZTYyZWFlNmRjZTZkOTFkMGNhNzE2NDU3NmIz
OGEzNzRjMzExYjA3Li45NmFmNzA4MjdmMTA3NDc3YzkxZTU4OTZjM2M4NjEwZmM5ZTJiMmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpzZXRTcGFuKGludCBuKQogCiBTdHJp
bmcgSFRNTFRhYmxlQ29sRWxlbWVudDo6d2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0
R2V0QXR0cmlidXRlKHdpZHRoQXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh3aWR0aEF0
dHIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRl
eCA0OTAwMDVhZjQ4ZDJhYjZmMmQwZWI0ZDFmNTA3MTIwNDgzYzQ0ZTI3Li41OWIwNjNhNDZlNDJi
NzNkYWI3ODc1NjFiMGQyMzE5NjM5MDllOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKQEAgLTY1NSwxOSArNjU1LDE5IEBAIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQogCiBTdHJpbmcgSFRNTFRhYmxlRWxl
bWVudDo6cnVsZXMoKSBjb25zdAogewotICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHJ1bGVz
QXR0cik7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShydWxlc0F0dHIpOwogfQogCiBTdHJpbmcg
SFRNTFRhYmxlRWxlbWVudDo6c3VtbWFyeSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRB
dHRyaWJ1dGUoc3VtbWFyeUF0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0
dHIpOwogfQogCiB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCi0gICAgYWRkU3VicmVzb3VyY2VV
UkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZmFzdEdldEF0dHJpYnV0ZShiYWNrZ3Jv
dW5kQXR0cikpKTsKKyAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChnZXRBdHRyaWJ1dGUoYmFja2dyb3VuZEF0dHIpKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggOGY3MmQx
ZGU1OWJkMmI4NmZlZmFkZDE2NWU5MTdlNTFkOGJmZTc1Ni4uNWVmMjVmMTljNmZmNzE2MjM0ZTY4
MTY0YmNjMWZmNWNiOTAzZGNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQ6Om51bVJvd3MoKSBjb25zdAogCiBTdHJpbmcgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ6OmFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShhbGln
bkF0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYWxpZ25BdHRyKTsKIH0KIAogdm9pZCBI
VE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0QWxpZ24oY29uc3QgU3RyaW5nICZ2YWx1ZSkKQEAg
LTEyMSw3ICsxMjEsNyBAQCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpzZXRBbGlnbihj
b25zdCBTdHJpbmcgJnZhbHVlKQogCiBTdHJpbmcgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNo
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShjaGFyQXR0cik7CisgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShjaGFyQXR0cik7CiB9CiAKIHZvaWQgSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQ6OnNldENoKGNvbnN0IFN0cmluZyAmdmFsdWUpCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0Q2goY29uc3QgU3RyaW5nICZ2YWx1ZSkK
IAogU3RyaW5nIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjaE9mZigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIpOworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoY2hhcm9mZkF0dHIpOwogfQogCiB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpz
ZXRDaE9mZihjb25zdCBTdHJpbmcgJnZhbHVlKQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldENoT2ZmKGNvbnN0IFN0cmluZyAmdmFsdWUpCiAKIFN0
cmluZyBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6dkFsaWduKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZmFzdEdldEF0dHJpYnV0ZSh2YWxpZ25BdHRyKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KHZhbGlnbkF0dHIpOwogfQogCiB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpzZXRWQWxp
Z24oY29uc3QgU3RyaW5nICZ2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCmluZGV4IGFjZWY1YWRkOGFkYjhlMWJlMmZkY2UxOGVjYTE4NDIxZDM4NWMz
MWMuLjQ1Yjc3YzA0MGM4NTFjNDMzZjYyNzA1Y2NhNDRmZTE3MzdjOWJlYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYg
ZGVmYXVsdFZhbHVlKQogaW50IEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aCgpIGNvbnN0
CiB7CiAgICAgYm9vbCBvazsKLSAgICBpbnQgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKG1heGxl
bmd0aEF0dHIpLnN0cmluZygpLnRvSW50KCZvayk7CisgICAgaW50IHZhbHVlID0gZ2V0QXR0cmli
dXRlKG1heGxlbmd0aEF0dHIpLnN0cmluZygpLnRvSW50KCZvayk7CiAgICAgcmV0dXJuIG9rICYm
IHZhbHVlID49IDAgPyB2YWx1ZSA6IC0xOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGNjZDJhZGFmMzBkMDJkNjc1
NzI5OTM3NmVmYTkyYWMwNmQyYWVjMjguLjE4MzY5NGE0M2VlYTczMGMxMjlmYzk2YWI5ZjczOTE5
MjAyOWQ5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzdHJpcHBlZFBsYWNlaG9sZGVyKCkgY29uc3QKIHsKICAgICAvLyBBY2Nv
cmRpbmcgdG8gdGhlIEhUTUw1IHNwZWNpZmljYXRpb24sIHdlIG5lZWQgdG8gcmVtb3ZlIENSIGFu
ZCBMRiBmcm9tCiAgICAgLy8gdGhlIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUgPSBnZXRBdHRyaWJ1dGUo
cGxhY2Vob2xkZXJBdHRyKTsKICAgICBpZiAoIWF0dHJpYnV0ZVZhbHVlLmNvbnRhaW5zKG5ld2xp
bmVDaGFyYWN0ZXIpICYmICFhdHRyaWJ1dGVWYWx1ZS5jb250YWlucyhjYXJyaWFnZVJldHVybikp
CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0
YXRpYyBib29sIGlzTm90TGluZUJyZWFrKFVDaGFyIGNoKSB7IHJldHVybiBjaCAhPSBuZXdsaW5l
Q2hhcmFjdGVyICYmIGNoICE9IGNhCiAKIGJvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmlzUGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVWYWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZ2V0QXR0cmlidXRlKHBsYWNlaG9s
ZGVyQXR0cik7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlLnN0cmluZygpLmZpbmQoaXNOb3RM
aW5lQnJlYWspID09IG5vdEZvdW5kOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAppbmRleCAyZmFjNDlhMDJhYjI4ODg1OTlmZjc3YWIzYzI1NTUxM2IwYTMzOWIw
Li4wNDNmMDhiMzZmNzA0NTY1ODk5ODhjZjJhODE0ZGEwZjMxNGFhZjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1M
VHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKCkKIAogS1VSTCBIVE1MVHJhY2tFbGVtZW50OjpzcmMo
KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChmYXN0R2V0QXR0
cmlidXRlKHNyY0F0dHIpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0
QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRTcmMo
Y29uc3QgU3RyaW5nJiB1cmwpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJsKQogCiBTdHJpbmcgSFRNTFRyYWNrRWxlbWVudDo6
a2luZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoa2luZEF0dHIpOwor
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoa2luZEF0dHIpOwogfQogCiB2b2lkIEhUTUxUcmFja0Vs
ZW1lbnQ6OnNldEtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IEhUTUxUcmFja0VsZW1lbnQ6OnNldEtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQogCiBTdHJpbmcg
SFRNTFRyYWNrRWxlbWVudDo6c3JjbGFuZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRB
dHRyaWJ1dGUoc3JjbGFuZ0F0dHIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjbGFuZ0F0
dHIpOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldFNyY2xhbmcoY29uc3QgU3RyaW5n
JiBzcmNsYW5nKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0
U3JjbGFuZyhjb25zdCBTdHJpbmcmIHNyY2xhbmcpCiAKIFN0cmluZyBIVE1MVHJhY2tFbGVtZW50
OjpsYWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUobGFiZWxBdHRy
KTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGxhYmVsQXR0cik7CiB9CiAKIHZvaWQgSFRNTFRy
YWNrRWxlbWVudDo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwp
CiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNEZWZhdWx0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZmFzdEhhc0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0
ZShkZWZhdWx0QXR0cik7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0SXNEZWZhdWx0
KGJvb2wgaXNEZWZhdWx0KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6bG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIG1fdHJhY2sg
PSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBp
c0RlZmF1bHQoKSk7CiAKLSAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRyKSkKKyAgICBp
ZiAoaGFzQXR0cmlidXRlKHNyY0F0dHIpKQogICAgICAgICBtX3RyYWNrLT5sb2FkKGdldE5vbkVt
cHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpLCBjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggY2VjOTMzNWE1OGY2NmRhYjZiMzFhOGU4MjAw
NDdlNmZlOGFlZjRjNC4uODU1ODkxMmJjYjg4ZWE5NDQ0ZDRmNDQzOTg2MzJlMjg0NGRkNjI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0xNTYsMTQgKzE1
NiwxNCBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb0hlaWdodCgpIGNvbnN0CiB1
bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWR0aCgpIGNvbnN0CiB7CiAgICAgYm9vbCBvazsK
LSAgICB1bnNpZ25lZCB3ID0gZmFzdEdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLnN0cmluZygpLnRv
VUludCgmb2spOworICAgIHVuc2lnbmVkIHcgPSBnZXRBdHRyaWJ1dGUod2lkdGhBdHRyKS5zdHJp
bmcoKS50b1VJbnQoJm9rKTsKICAgICByZXR1cm4gb2sgPyB3IDogMDsKIH0KICAgICAKIHVuc2ln
bmVkIEhUTUxWaWRlb0VsZW1lbnQ6OmhlaWdodCgpIGNvbnN0CiB7CiAgICAgYm9vbCBvazsKLSAg
ICB1bnNpZ25lZCBoID0gZmFzdEdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKS5zdHJpbmcoKS50b1VJ
bnQoJm9rKTsKKyAgICB1bnNpZ25lZCBoID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0dHIpLnN0cmlu
ZygpLnRvVUludCgmb2spOwogICAgIHJldHVybiBvayA/IGggOiAwOwogfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4IGUxMTI5MmRiMGE1NmU0ZWY4YjI4MWU3YWRkNTE2ZTll
NTE4MDE2ZjcuLjY4YjBlYmQzNzZmZTg1OTY0ZWVhMTUzZjNmMTM0MWZmMzQ1NjVmN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTM1LDEwICszNSw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVjaXNpb25WYWx1ZSA9
IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cik7Ci0gICAgaWYgKCFwcmVj
aXNpb25WYWx1ZS5pc051bGwoKSkgeworICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUocHJl
Y2lzaW9uQXR0cikpIHsKICAgICAgICAgc3RlcCA9IDEuMDsKLSAgICAgICAgaGFzU3RlcCA9ICFl
cXVhbElnbm9yaW5nQ2FzZShwcmVjaXNpb25WYWx1ZS5zdHJpbmcoKSwgImZsb2F0Iik7CisgICAg
ICAgIGhhc1N0ZXAgPSAhZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudC0+Z2V0QXR0cmlidXRlKHBy
ZWNpc2lvbkF0dHIpLCAiZmxvYXQiKTsKICAgICB9IGVsc2UKICAgICAgICAgaGFzU3RlcCA9IGVs
ZW1lbnQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAy
M2I5YzY4MmRhNjkxNDZkMzI5NmMxOWQwMGMzYThmYjMyYjMwZTI2Li4yMWY4OGE0MDk3MmUzNDk1
MWNhMzYyODkwMWZkNTc3YmZjYzFjMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTUyNiw3ICs1MjYs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0
KCkKIAogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgQXRvbWljU3RyaW5n
IGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwotICAgIFN0cmlu
ZyBncmFtbWFyID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwor
ICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0
cik7CiAgICAgSW50UmVjdCByZWN0ID0gaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGU4ZjI4NTMyNmEzZDhl
N2E0ODkxYjZiZmE4MWFmNjlhZGIzNjc1ZjEuLjBiNTVmMjQ1Y2E0MGU4MmM3Zjg0ODg5MTE0YWIy
OTZmNWQ3ZjE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCkBAIC02MTksOSArNjE5LDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUK
ICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIGZyYW1lT2JqZWN0LT5z
ZXRTdHJpbmcoInBhcmVudElkIiwgZnJhbWVJZChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkpOwog
ICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBm
cmFtZS0+b3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpuYW1lQXR0
cik7CisgICAgICAgIFN0cmluZyBuYW1lID0gZnJhbWUtPm93bmVyRWxlbWVudCgpLT5nZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpuYW1lQXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG5hbWUgPSBmcmFtZS0+b3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjppZEF0dHIpOworICAgICAgICAgICAgbmFtZSA9IGZyYW1lLT5vd25lckVs
ZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKTsKICAgICAgICAgZnJhbWVP
YmplY3QtPnNldFN0cmluZygibmFtZSIsIG5hbWUpOwogICAgIH0KICAgICBmcmFtZU9iamVjdC0+
c2V0U3RyaW5nKCJ1cmwiLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggMDM4Mzc1NDgzYzNkMWY0
OWFlMjA0ZmYyZmNlZjJmYjY0OTk4Nzg4OS4uMDEzODQ5NDc1YmNlOWE3Yzg1MjYxYWRiNjFlMDc0
MjMxNWQyNGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBA
IC0xNDYsMTMgKzE0NiwxMyBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlz
c2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgIGNvcGllZEF0
dHJpYnV0ZXMuY29weUZyb20oYXR0cmlidXRlcyk7CiAgICAgaWYgKHN1Ym1pdEJ1dHRvbikgewog
ICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWU7Ci0gICAgICAgIGlmICghKGF0dHJpYnV0ZVZh
bHVlID0gc3VibWl0QnV0dG9uLT5mYXN0R2V0QXR0cmlidXRlKGZvcm1hY3Rpb25BdHRyKSkuaXNO
dWxsKCkpCisgICAgICAgIGlmICghKGF0dHJpYnV0ZVZhbHVlID0gc3VibWl0QnV0dG9uLT5nZXRB
dHRyaWJ1dGUoZm9ybWFjdGlvbkF0dHIpKS5pc051bGwoKSkKICAgICAgICAgICAgIGNvcGllZEF0
dHJpYnV0ZXMucGFyc2VBY3Rpb24oYXR0cmlidXRlVmFsdWUpOwotICAgICAgICBpZiAoIShhdHRy
aWJ1dGVWYWx1ZSA9IHN1Ym1pdEJ1dHRvbi0+ZmFzdEdldEF0dHJpYnV0ZShmb3JtZW5jdHlwZUF0
dHIpKS5pc051bGwoKSkKKyAgICAgICAgaWYgKCEoYXR0cmlidXRlVmFsdWUgPSBzdWJtaXRCdXR0
b24tPmdldEF0dHJpYnV0ZShmb3JtZW5jdHlwZUF0dHIpKS5pc051bGwoKSkKICAgICAgICAgICAg
IGNvcGllZEF0dHJpYnV0ZXMucGFyc2VFbmNvZGluZ1R5cGUoYXR0cmlidXRlVmFsdWUpOwotICAg
ICAgICBpZiAoIShhdHRyaWJ1dGVWYWx1ZSA9IHN1Ym1pdEJ1dHRvbi0+ZmFzdEdldEF0dHJpYnV0
ZShmb3JtbWV0aG9kQXR0cikpLmlzTnVsbCgpKQorICAgICAgICBpZiAoIShhdHRyaWJ1dGVWYWx1
ZSA9IHN1Ym1pdEJ1dHRvbi0+Z2V0QXR0cmlidXRlKGZvcm1tZXRob2RBdHRyKSkuaXNOdWxsKCkp
CiAgICAgICAgICAgICBjb3BpZWRBdHRyaWJ1dGVzLnBhcnNlTWV0aG9kVHlwZShhdHRyaWJ1dGVW
YWx1ZSk7Ci0gICAgICAgIGlmICghKGF0dHJpYnV0ZVZhbHVlID0gc3VibWl0QnV0dG9uLT5mYXN0
R2V0QXR0cmlidXRlKGZvcm10YXJnZXRBdHRyKSkuaXNOdWxsKCkpCisgICAgICAgIGlmICghKGF0
dHJpYnV0ZVZhbHVlID0gc3VibWl0QnV0dG9uLT5nZXRBdHRyaWJ1dGUoZm9ybXRhcmdldEF0dHIp
KS5pc051bGwoKSkKICAgICAgICAgICAgIGNvcGllZEF0dHJpYnV0ZXMuc2V0VGFyZ2V0KGF0dHJp
YnV0ZVZhbHVlKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCA5MTQ0Y2FmNDdmZDVhOGFlNzUyNjFjNzg0ZDliNWY5Mjk2ZGNjZGNlLi5jYzc0NzQ5
ZDA2NGMwNGM0ODc3ZTU4M2RjNWYwNTQ1YzJlMmRmZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQXRvbWljU3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmZhc3RHZXRBdHRy
aWJ1dGUobV9lbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAgQXRvbWlj
U3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2VsZW1lbnQtPmltYWdlU291
cmNlQXR0cmlidXRlTmFtZSgpKTsKIAogICAgIGlmIChhdHRyID09IG1fZmFpbGVkTG9hZFVSTCkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyODFkZjA3ZmQwY2IzM2Q2
MTYyYmYwYWEyMmZkNTE1ZjQ5NWRjM2ZlLi5iZGRhZTYxMTMxZmQ1ZGMyOTVjMDk3MTNkMmYxNDM3
M2Q1YWMxYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNDk5LDExICs0OTksMTEgQEAgU3Ry
aW5nIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsYWJlbHMsIEVsZW1lbnQqIGUKICAgICAvLyBTZWUgNzUzODMzMCBmb3Igb25lIHBvcHVsYXIg
c2l0ZSB0aGF0IGJlbmVmaXRzIGZyb20gdGhlIGlkIGVsZW1lbnQgY2hlY2suCiAgICAgLy8gRklY
TUU6IFRoaXMgY29kZSBpcyBtaXJyb3JlZCBpbiBGcmFtZU1hYy5tbS4gSXQgd291bGQgYmUgbmlj
ZSB0byBtYWtlIHRoZSBNYWMgY29kZSBjYWxsIHRoZSBwbGF0Zm9ybS1hZ25vc3RpYwogICAgIC8v
IGNvZGUsIHdoaWNoIHdvdWxkIHJlcXVpcmUgY29udmVydGluZyB0aGUgTlNBcnJheSBvZiBOU1N0
cmluZ3MgdG8gYSBWZWN0b3Igb2YgU3RyaW5ncyBzb21ld2hlcmUgYWxvbmcgdGhlIHdheS4KLSAg
ICBTdHJpbmcgcmVzdWx0RnJvbU5hbWVBdHRyaWJ1dGUgPSBtYXRjaExhYmVsc0FnYWluc3RTdHJp
bmcobGFiZWxzLCBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CisgICAgU3Ry
aW5nIHJlc3VsdEZyb21OYW1lQXR0cmlidXRlID0gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxh
YmVscywgZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CiAgICAgaWYgKCFyZXN1bHRG
cm9tTmFtZUF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHRGcm9tTmFt
ZUF0dHJpYnV0ZTsKICAgICAKLSAgICByZXR1cm4gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxh
YmVscywgZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShpZEF0dHIpKTsKKyAgICByZXR1cm4gbWF0
Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxhYmVscywgZWxlbWVudC0+Z2V0QXR0cmlidXRlKGlkQXR0
cikpOwogfQogCiB2b2lkIEZyYW1lOjpzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBG
bG9hdFNpemUmIHBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIEFkanVzdFZpZXdT
aXplT3JOb3Qgc2hvdWxkQWRqdXN0Vmlld1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCmluZGV4IGNiMzhhZTViZjEzNDZkNTgxMWY5ZWMwNTc5YTkxNzhmZDRlY2ZiZDEu
LmM5YTc4NGQzNzZmZTBiOTI0MmUwZjQ1NTAxY2IxMmY3OWQ1MDc1ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yMjgsMTQgKzIyOCwxNCBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAKICAgICAgICAgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpKSB7CiAgICAgICAgICAgICBIVE1M
SW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50
Kj4oZWxlbWVudCk7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVS
TChpbWFnZUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKSk7Cisg
ICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZUVsZW1lbnQt
PmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIpKTsKICAgICAgICAgICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKICAgICAgICAg
ICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoY2FjaGVkSW1hZ2UsIHVybCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmxpbmtUYWcpKSB7CiAgICAgICAg
ICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtF
bGVtZW50Kj4oZWxlbWVudCk7CiAgICAgICAgICAgICBTdHlsZVNoZWV0KiBzaGVldCA9IGxpbmtF
bGVtZW50LT5zaGVldCgpOwogICAgICAgICAgICAgaWYgKHNoZWV0ICYmIHNoZWV0LT5pc0NTU1N0
eWxlU2hlZXQoKSkgewotICAgICAgICAgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKGxpbmtFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KTsKKyAgICAgICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChsaW5r
RWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKTsKICAgICAgICAgICAg
ICAgICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihz
aGVldCksIHVybCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VVUkxzLmNvbnRh
aW5zKHVybCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpp
bmRleCA2NWI2ZDk0ZGM2NjRlNTQ0YjM1NjRjMDc4NzQxMmQ0ZWQ2YjdmYzczLi4yYjU3ZDJkMzE4
N2ZiYzZiZGI1NGMxYzM0ZTIwYWVkYjlhZjZiOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFt
ZU1hYy5tbQpAQCAtMjQ2LDExICsyNDYsMTEgQEAgTlNTdHJpbmcqIEZyYW1lOjptYXRjaExhYmVs
c0FnYWluc3RFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCogZWxlbWVudCkKICAgICAv
LyBTZWUgNzUzODMzMCBmb3Igb25lIHBvcHVsYXIgc2l0ZSB0aGF0IGJlbmVmaXRzIGZyb20gdGhl
IGlkIGVsZW1lbnQgY2hlY2suCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBtaXJyb3JlZCBp
biBGcmFtZS5jcHAuIEl0IHdvdWxkIGJlIG5pY2UgdG8gbWFrZSB0aGUgTWFjIGNvZGUgY2FsbCB0
aGUgcGxhdGZvcm0tYWdub3N0aWMKICAgICAvLyBjb2RlLCB3aGljaCB3b3VsZCByZXF1aXJlIGNv
bnZlcnRpbmcgdGhlIE5TQXJyYXkgb2YgTlNTdHJpbmdzIHRvIGEgVmVjdG9yIG9mIFN0cmluZ3Mg
c29tZXdoZXJlIGFsb25nIHRoZSB3YXkuCi0gICAgU3RyaW5nIHJlc3VsdEZyb21OYW1lQXR0cmli
dXRlID0gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxhYmVscywgZWxlbWVudC0+ZmFzdEdldEF0
dHJpYnV0ZShuYW1lQXR0cikpOworICAgIFN0cmluZyByZXN1bHRGcm9tTmFtZUF0dHJpYnV0ZSA9
IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShu
YW1lQXR0cikpOwogICAgIGlmICghcmVzdWx0RnJvbU5hbWVBdHRyaWJ1dGUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0RnJvbU5hbWVBdHRyaWJ1dGU7CiAgICAgCi0gICAgcmV0dXJu
IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1
dGUoaWRBdHRyKSk7CisgICAgcmV0dXJuIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMs
IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShpZEF0dHIpKTsKIH0KIAogTlNJbWFnZSogRnJhbWU6Omlt
YWdlRnJvbVJlY3QoTlNSZWN0IHJlY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggODljNjQ0OGE5
ZDdkOWIwYmE0NTU4ZTRiYWIwYjk0ZDg3YzNmZTMyZi4uYjBiMDA4YzE1ZTkzZTYyOGNkM2MwYTNl
NjBkNTcxMDM0NTU5ZjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRp
YyB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRhT2Jq
ZWN0LCBFbGVtZW50KiBlbGVtCiAgICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
ZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICBpZiAoZmlsZW5hbWUuaXNF
bXB0eSgpKQotICAgICAgICBmaWxlbmFtZSA9IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYWx0
QXR0cik7CisgICAgICAgIGZpbGVuYW1lID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFsdEF0dHIp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBTdHJpcCBhbnkgZXhpc3RpbmcgZXh0ZW5zaW9uLiBB
c3N1bWUgdGhhdCBhbHQgdGV4dCBpcyB1c3VhbGx5IG5vdCBhIGZpbGVuYW1lLgogICAgICAgICBp
bnQgZXh0ZW5zaW9uSW5kZXggPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggYWU0YWI4NTFjMjc2NDZhZGE3NWZhYTI0M2JhZGRkNDM4ZGYyMzQxZC4uNmY1NjA3
NzdkODMzOWFiNWQyZDI3ZTM2N2NmYjA2ZDYyODQ3YWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0x
NDEsMTQgKzE0MSwxNCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLy8gbGluay4gIFRoaXMgaXNu
J3QgdXNlZnVsIHRvIHVzLCBzbyBnZXQgdGhlIGFjdHVhbCBpbWFnZSBVUkwuCiAgICAgQXRvbWlj
U3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omlt
Z1RhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKLSAgICAgICAg
dXJsU3RyaW5nID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5mYXN0R2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6c3JjQXR0cik7CisgICAgICAgIHVybFN0cmluZyA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cik7CiAjaWYgRU5B
QkxFKFNWRykKICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjppbWFnZVRh
ZykpCiAgICAgICAgIHVybFN0cmluZyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0
QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICNlbmRpZgogICAgIGVsc2UgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6Om9iamVjdFRhZykpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAg
ICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJsU3RyaW5nLmlzRW1w
dHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDk1ZmVkNGQxNTZlZWI4N2ZhOWY0
YjdmMWE5MGMxNTMxNDAwNGIwZWEuLmNhNTg1ZDY5NTRmNTkyZjk0ZmFmZDM5M2MxMTZmMWVmNWRj
OWQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKQEAgLTg5LDE0ICs4OSwxNCBAQCBzdGF0aWMgS1VSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9k
ZSogbm9kZSkKICAgICAvLyBGSVhNRTogTGF0ZXIgdGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQg
d2l0aCBDaHJvbWl1bSBzb21laG93LiBDaGFuY2VzIGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQgaXQu
CiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmltZ1RhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSkKLSAgICAgICAgdXJsU3RyaW5nID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5mYXN0
R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cik7CisgICAgICAgIHVybFN0cmluZyA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0
cik7CiAjaWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjppbWFnZVRhZykpCiAgICAgICAgIHVybFN0cmluZyA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKS0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICNlbmRpZgogICAg
IGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykgfHwgbm9kZS0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykpIHsKICAgICAgICAgRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgdXJsU3RyaW5nID0g
ZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5h
bWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50
LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgfQogICAgIHJldHVybiB1cmxTdHJp
bmcuaXNFbXB0eSgpID8gS1VSTCgpIDogbm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbQppbmRleCA2Nzc0YzRjZDYyYmIz
MDc0MGQ2ZTcwZGZhNjNlMjQxNWFmYjAzNzFjLi4yODNhNzQwNmFhMDJjZGVhZTcwNWUwYzg1N2M4
ZWE1M2NlN2I2NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRN
TENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZl
cnRlci5tbQpAQCAtMTc1MCw3ICsxNzUwLDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZpbGVX
cmFwcGVyRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIE5TRmlsZVdyYXBwZXIg
KndyYXBwZXIgPSBuaWw7CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyID0gZWxl
bWVudC0+ZmFzdEdldEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHIgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgaWYgKCFhdHRyLmlz
RW1wdHkoKSkgewogICAgICAgICBOU1VSTCAqVVJMID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoYXR0cik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogbG9hZGVyID0gZWxl
bWVudC0+ZG9jdW1lbnQoKS0+bG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IGQ5ZWM1NjY1N2M4MDkwZWIwM2YwNjYzNzY1NzQzM2M4
NTM1MThmZDQuLmJmNDA4ZDc5MGY1ZWJhNmEzOTRlZDA4MzNjZWNiMjU4ODIxNDA5NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC02NDIsNyAr
NjQyLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgRWxlbWVudCogZWxlbWVudCwgY28KICAgICBpZiAoIWltYWdlQnVmZmVyIHx8
ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIR0xPQkFMIGlt
YWdlRmlsZURlc2NyaXB0b3IgPSBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKHVybC5z
dHJpbmcoKSwgZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhbHRBdHRyKSwgY2FjaGVkSW1hZ2Up
OworICAgIEhHTE9CQUwgaW1hZ2VGaWxlRGVzY3JpcHRvciA9IGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IodXJsLnN0cmluZygpLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYWx0QXR0ciks
IGNhY2hlZEltYWdlKTsKICAgICBpZiAoIWltYWdlRmlsZURlc2NyaXB0b3IpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjCiAKICAg
ICB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBlbGVt
ZW50LCB1cmwpOwogCi0gICAgQXRvbWljU3RyaW5nIGltYWdlVVJMID0gZWxlbWVudC0+ZmFzdEdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBBdG9taWNTdHJpbmcgaW1hZ2VVUkwgPSBlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgaWYgKGltYWdlVVJMLmlzRW1wdHkoKSkgCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDEzNDIwNWNmNjA5NjQ2ZGRjZGE0ODk1ZTc4NGI2YTEzYzhkNjZiZTcuLmIyY2Uy
MjYwYzlkNDM2ZDUxYTcxMjJhMTAxMDZiYWMzZmE0NmYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBTdHJpbmcgSGl0
VGVzdFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZygpIGNvbnN0CiAgICAgCiAgICAgaWYgKG1faW5u
ZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKGltZ1RhZykpIHsKICAgICAgICAgSFRNTEltYWdl
RWxlbWVudCogaW1hZ2UgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obV9pbm5lck5v
blNoYXJlZE5vZGUuZ2V0KCkpOwotICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFnZS0+
ZmFzdEdldEF0dHJpYnV0ZShhbHRBdHRyKSwgbV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFnZS0+Z2V0QXR0cmlidXRlKGFsdEF0dHIp
LCBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX2lu
bmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKQEAgLTMyOCw3ICszMjgs
NyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogI2VuZGlm
CiAgICAgICAgKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwotICAgICAgICB1cmxTdHJpbmcgPSBl
bGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdlU291cmNlQXR0cmlidXRlTmFt
ZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQt
PmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJu
IEtVUkwoKTsKIApAQCAtNDc2LDcgKzQ3Niw3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1
dGVMaW5rVVJMKCkgY29uc3QKIAogICAgIEF0b21pY1N0cmluZyB1cmxTdHJpbmc7CiAgICAgaWYg
KG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGFUYWcpIHx8IG1faW5uZXJVUkxFbGVtZW50
LT5oYXNUYWdOYW1lKGFyZWFUYWcpIHx8IG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGxp
bmtUYWcpKQotICAgICAgICB1cmxTdHJpbmcgPSBtX2lubmVyVVJMRWxlbWVudC0+ZmFzdEdldEF0
dHJpYnV0ZShocmVmQXR0cik7CisgICAgICAgIHVybFN0cmluZyA9IG1faW5uZXJVUkxFbGVtZW50
LT5nZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwogI2lmIEVOQUJMRShTVkcpCiAgICAgZWxzZSBpZiAo
bV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpKQogICAgICAgICB1
cmxTdHJpbmcgPSBtX2lubmVyVVJMRWxlbWVudC0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRh
aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzLmNwcAppbmRl
eCBmYjRlNzI1YzMyOTlhMTYzOWZiODljNGRiMjE0Y2UwNWNiNDdmMzM0Li4zOTg4MmIxOTcxNjFi
NmMxNDk1MDM1ZGE3ZmFhNjI1YWVkYmY4YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgUmVuZGVyRGV0YWlsczo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTCiAKIGJvb2wgUmVuZGVyRGV0YWlsczo6aXNPcGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bm9kZSgpICYmIG5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gIXN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKCkpLT5mYXN0R2V0QXR0cmlidXRlKG9wZW5BdHRyKS5pc051bGwoKSA6IGZhbHNlOwor
ICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyAhc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShvcGVuQXR0cikuaXNOdWxsKCkgOiBm
YWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNmI4ZmZhN2Y2OTc2NTc1N2QwNTNjMDFkNDc2
NTY0YmNmMzkyMGQ5OS4uNjRhOWE5ODAwNjAxYjliNWU4YzY3ZTNlZGQ0MmFlMjliZmM2NTZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zOTgs
NyArMzk4LDcgQEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtQWNjZXNzaWJpbGl0eVRleHQo
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1z
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGxpc3RJdGVt
c1tsaXN0SW5kZXhdLT5mYXN0R2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKTsKKyAgICByZXR1
cm4gbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmdldEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cik7CiB9
CiAgICAgCiBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJ
bmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggY2FhNzA5MjljYjZlZjIxMjJkYTgzN2EyOTA1OWY0NGUxNDAwY2Y5My4uYWQzNWJlNTRlMzY3
ZGEzNDhmYjcyYmIxMDgzMzczNDIxOGFmNzFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjphZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKICAgICBOb2RlKiBuID0gbm9kZSgpOwogICAgIGlmICghbiB8fCAhbi0+aXNMaW5rKCkg
fHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgaHJlZiA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+ZmFzdEdldEF0dHJpYnV0
ZShocmVmQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pLT5nZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOwogICAgIGlmIChocmVmLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKSwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDYyNmY5YjExYTYxMTgyNWFiMDVjYjJlZGNm
OGRjMjA3OWM4MDZmNDQuLjc2OTVmOTYyOGM1MDRiZjJkYjM3MGY5NDRlNTI5OGFjMmRkODgzMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0x
MzMsNyArMTMzLDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKICAgICBpZiAobm9kZSgpICYmIHN0eWxlKCktPmF1dG9XcmFwKCkpIHsKICAg
ICAgICAgLy8gU2VlIGlmIG5vd3JhcCB3YXMgc2V0LgogICAgICAgICBMZW5ndGggdyA9IHN0eWxl
T3JDb2xMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgU3RyaW5nIG5vd3JhcCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKCkpLT5mYXN0R2V0QXR0cmlidXRlKG5vd3JhcEF0dHIpOworICAgICAg
ICBTdHJpbmcgbm93cmFwID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJp
YnV0ZShub3dyYXBBdHRyKTsKICAgICAgICAgaWYgKCFub3dyYXAuaXNOdWxsKCkgJiYgdy5pc0Zp
eGVkKCkpCiAgICAgICAgICAgICAvLyBOb3dyYXAgaXMgc2V0LCBidXQgd2UgZGlkbid0IGFjdHVh
bGx5IHVzZSBpdCBiZWNhdXNlIG9mIHRoZQogICAgICAgICAgICAgLy8gZml4ZWQgd2lkdGggc2V0
IG9uIHRoZSBjZWxsLiAgRXZlbiBzbywgaXQgaXMgYSBXaW5JRS9Nb3ogdHJhaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggMjBlOGEyNjNhY2NhMjU5NGE5NjI2OTg0ZDA2N2U3ZWQ2ODBkZTM3OC4uMTcw
OTdiMWZiYWIzNjE4MDg4ZTBiNDg5MzdjNjA4ZTVjMmQ4NGNmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTU0NCw3ICs1NDQsNyBAQCBFVmlzaWJpbGl0eSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OnZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdAogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YXV0b3NhdmVOYW1lKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmZhc3RHZXRBdHRyaWJ1
dGUoYXV0b3NhdmVBdHRyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSktPmdldEF0dHJpYnV0ZShhdXRvc2F2ZUF0dHIpOwogfQogCiAvLyBQb3B1cE1lbnVDbGllbnQg
bWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggYTc3
MjdjNGZiYWI5NGM0ZTkxNzUzNTQyOTk5ZTliZWVmZjI4Yjk1Yy4uYjg3NmViMmIwMTQyZTNhMjNk
M2JkZjNhZWNiMGEyODM5YmE2NDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgSW50U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3Vs
YXRlSW50cmluc2ljU2l6ZSgpCiAgICAgLy8gV2hlbiB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSB2
aWRlbyBpcyB1bmF2YWlsYWJsZSwgd2UgdXNlIHRoZSBwcm92aWRlZAogICAgIC8vIHdpZHRoIGFu
ZCBoZWlnaHQgYXR0cmlidXRlcyBvZiB0aGUgdmlkZW8gZWxlbWVudCBhcyB0aGUgaW50cmluc2lj
IHNpemUgdW50aWwKICAgICAvLyBiZXR0ZXIgdmFsdWVzIGJlY29tZSBhdmFpbGFibGUuIAotICAg
IGlmICh2aWRlby0+ZmFzdEhhc0F0dHJpYnV0ZSh3aWR0aEF0dHIpICYmIHZpZGVvLT5mYXN0SGFz
QXR0cmlidXRlKGhlaWdodEF0dHIpKQorICAgIGlmICh2aWRlby0+aGFzQXR0cmlidXRlKHdpZHRo
QXR0cikgJiYgdmlkZW8tPmhhc0F0dHJpYnV0ZShoZWlnaHRBdHRyKSkKICAgICAgICAgcmV0dXJu
IEludFNpemUodmlkZW8tPndpZHRoKCksIHZpZGVvLT5oZWlnaHQoKSk7CiAKICAgICAvLyA8dmlk
ZW8+IGluIHN0YW5kYWxvbmUgbWVkaWEgZG9jdW1lbnRzIHNob3VsZCBub3QgdXNlIHRoZSBkZWZh
dWx0IDMwMHgxNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCBjZTlkNGI0YTkwZTgwODI2NDBkODZiNmNhYWYz
N2Y2NzdhZDBjOGE4Li5mN2JiZjcxZjU2NTBmZjRiZTE2ODA3NzljNDk4OGQ1YzE4ZGIxMGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGZW5jZWQuY3BwCkBAIC01NSwxNCArNTUsMTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6
OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBFbGVtZW50KiBmZW5jZWQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSgpKTsKICAKICAgICAvLyBGSVhNRTogSGFuZGxlIG9wZW4vY2xvc2UgdmFs
dWVzIHdpdGggbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgKHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQg
bGlrZSB0ZXh0KS4KLSAgICBBdG9taWNTdHJpbmcgb3BlblZhbHVlID0gZmVuY2VkLT5mYXN0R2V0
QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7CisgICAgQXRvbWljU3RyaW5nIG9wZW5W
YWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7CiAgICAg
aWYgKG9wZW5WYWx1ZS5sZW5ndGgoKSA+IDApCiAgICAgICAgIG1fb3BlbiA9IG9wZW5WYWx1ZVsw
XTsKLSAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9IGZlbmNlZC0+ZmFzdEdldEF0dHJpYnV0
ZShNYXRoTUxOYW1lczo6Y2xvc2VBdHRyKTsKKyAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9
IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpjbG9zZUF0dHIpOwogICAgIGlmIChj
bG9zZVZhbHVlLmxlbmd0aCgpID4gMCkKICAgICAgICAgbV9jbG9zZSA9IGNsb3NlVmFsdWVbMF07
CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIHNlcGFyYXRvcnMgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4oZmVuY2VkKS0+ZmFzdEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VwYXJhdG9yc0F0dHIp
OworICAgIEF0b21pY1N0cmluZyBzZXBhcmF0b3JzID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGZl
bmNlZCktPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VwYXJhdG9yc0F0dHIpOwogICAgIGlm
ICghc2VwYXJhdG9ycy5pc051bGwoKSkgewogICAgICAgICBWZWN0b3I8VUNoYXI+IGNoYXJhY3Rl
cnM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2VwYXJhdG9ycy5sZW5n
dGgoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IGI3Y2Y0MjcxNzljMGI0ZjE2NzBkNGNi
M2ZmYzM0NjRhZjcxZDUzOWUuLmUyZWRkY2JkODU4ZGQwMThmYTQ2OTc1Y2E0OGVkZThlMDQ2OWY5
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
RnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBFbGVtZW50KiBmcmFjdGlvbiA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOwogICAgIAogICAgIFJlbmRlck9iamVjdCogbnVt
ZXJhdG9yID0gZmlyc3RDaGlsZCgpOwotICAgIFN0cmluZyBuYWxpZ24gPSBmcmFjdGlvbi0+ZmFz
dEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6bnVtYWxpZ25BdHRyKTsKKyAgICBTdHJpbmcgbmFs
aWduID0gZnJhY3Rpb24tPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6bnVtYWxpZ25BdHRyKTsK
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFsaWduLCAibGVmdCIpKQogICAgICAgICBudW1l
cmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihMRUZUKTsKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYWxpZ24sICJyaWdodCIpKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKCFkZW5vbWluYXRv
cikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0cmluZyBkYWxpZ24gPSBmcmFjdGlvbi0+
ZmFzdEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6ZGVub21hbGlnbkF0dHIpOworICAgIFN0cmlu
ZyBkYWxpZ24gPSBmcmFjdGlvbi0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpkZW5vbWFsaWdu
QXR0cik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRhbGlnbiwgImxlZnQiKSkKICAgICAg
ICAgZGVub21pbmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihMRUZUKTsKICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShkYWxpZ24sICJyaWdodCIpKQpAQCAtODMsNyArODMsNyBAQCB2
b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIGRl
bm9taW5hdG9yLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKICAgICAKICAgICAvLyBG
SVhNRTogcGFyc2UgdW5pdHMKLSAgICBTdHJpbmcgdGhpY2tuZXNzID0gZnJhY3Rpb24tPmZhc3RH
ZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmxpbmV0aGlja25lc3NBdHRyKTsKKyAgICBTdHJpbmcg
dGhpY2tuZXNzID0gZnJhY3Rpb24tPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6bGluZXRoaWNr
bmVzc0F0dHIpOwogICAgIG1fbGluZVRoaWNrbmVzcyA9IGdMaW5lTWVkaXVtOwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh0aGlja25lc3MsICJ0aGluIikpCiAgICAgICAgIG1fbGluZVRoaWNr
bmVzcyA9IGdMaW5lVGhpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggYmY3ZmQxMWY4NjZhNDJmZDRk
ZTk3YzQ5OGQxZGE5Y2VmNjZjZmU5ZC4uN2YwMzliOTZkOWU4ZjM0NzFkNzk2YTM3Nzc2NTJmZmYx
N2RiMWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgLy8gV2UgbWFkZSBuZWVk
IHRoZSBlbGVtZW50IGxhdGVyIGlmIHdlIGNhbid0IHN0cmV0Y2guCiAgICAgaWYgKG5vZGUoKS0+
bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsKICAgICAgICAgaWYgKEVsZW1lbnQq
IG1vID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpIHsKLSAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBzdHJldGNoeUF0dHIgPSBtby0+ZmFzdEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6
c3RyZXRjaHlBdHRyKTsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBzdHJldGNoeUF0dHIgPSBt
by0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzdHJldGNoeUF0dHIpOwogICAgICAgICAgICAg
c3RyZXRjaERpc2FibGVkID0gZXF1YWxJZ25vcmluZ0Nhc2Uoc3RyZXRjaHlBdHRyLCAiZmFsc2Ui
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSWYgc3RyZXRjaGluZyBpc24ndCBkaXNh
YmxlZCwgZ2V0IHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgdGV4dCBjb250ZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RGF0YS5jcHAKaW5kZXggNjZiZGFhNjkzYzRjOWU2MmVjMWIzMjgyYjdjNDg2MTBh
ZDgwZTM5Ny4uMzQwZTIwMTBjMTY0M2QwZmMyNWRkMTViNDUxOGMxMDdlZThhMDdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBTVkdGb250
RGF0YTo6YXBwbHlTVkdHbHlwaFNlbGVjdGlvbihXaWR0aEl0ZXJhdG9yJiBpdGVyYXRvciwgR2x5
cGhEYXRhJiBnbHkKIAogICAgICAgICBpc1ZlcnRpY2FsVGV4dCA9IHBhcmVudFJlbmRlck9iamVj
dC0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCk7CiAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnRSZW5kZXJPYmplY3RFbGVtZW50ID0gdG9FbGVtZW50KHBhcmVu
dFJlbmRlck9iamVjdC0+bm9kZSgpKSkgewotICAgICAgICAgICAgbGFuZ3VhZ2UgPSBwYXJlbnRS
ZW5kZXJPYmplY3RFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cik7
CisgICAgICAgICAgICBsYW5ndWFnZSA9IHBhcmVudFJlbmRlck9iamVjdEVsZW1lbnQtPmdldEF0
dHJpYnV0ZShYTUxOYW1lczo6bGFuZ0F0dHIpOwogCiAgICAgICAgICAgICBpZiAocGFyZW50UmVu
ZGVyT2JqZWN0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6YWx0R2x5cGhUYWcpKSB7CiAg
ICAgICAgICAgICAgICAgU1ZHQWx0R2x5cGhFbGVtZW50KiBhbHRHbHlwaCA9IHN0YXRpY19jYXN0
PFNWR0FsdEdseXBoRWxlbWVudCo+KHBhcmVudFJlbmRlck9iamVjdEVsZW1lbnQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>