<?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>74927</bug_id>
          
          <creation_ts>2011-12-20 06:01:07 -0800</creation_ts>
          <short_desc>REGRESSION(r103322): seven inspector&apos;s tests are crashing on qt (Requested by loislo on #webkit).</short_desc>
          <delta_ts>2011-12-20 06:04:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>69366</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>loislo</cc>
    
    <cc>pfeldman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524564</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 06:01:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/103322 broke the build:
seven inspector&apos;s tests are crashing on qt (Requested by loislo 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>524565</commentid>
    <comment_count>1</comment_count>
      <attachid>120017</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 06:01:56 -0800</bug_when>
    <thetext>Created attachment 120017
ROLLOUT of r103322

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

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524566</commentid>
    <comment_count>2</comment_count>
      <attachid>120017</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-20 06:04:41 -0800</bug_when>
    <thetext>Comment on attachment 120017
ROLLOUT of r103322

Clearing flags on attachment: 120017

Committed r103326: &lt;http://trac.webkit.org/changeset/103326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524567</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-20 06:04:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120017</attachid>
            <date>2011-12-20 06:01:56 -0800</date>
            <delta_ts>2011-12-20 06:04:41 -0800</delta_ts>
            <desc>ROLLOUT of r103322</desc>
            <filename>bug-74927-20111220140214.patch</filename>
            <type>text/plain</type>
            <size>65115</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4NGFhNTFhMTE1ZGE2
YmVlNmZjNTRlMzgzMGVkZjY5ZWJjNzE3Yy4uOTJmYTkzNWM4MWY3ZWQ4NWJjN2E5ZjVmMDJmZDQz
ZGMwMTU5NDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDExLTEyLTIwICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTAzMzIyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMDMzMjIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0OTI3CisKKyAgICAgICAgc2V2ZW4gaW5zcGVjdG9yJ3MgdGVzdHMgYXJlIGNy
YXNoaW5nIG9uIHF0IChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgbG9pc2xvIG9uICN3ZWJraXQpLgor
CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAg
IChSYXdUeXBlcy5CYXNlVHlwZS5pc19ldmVudF9wYXJhbV9jaGVja19vcHRpb25hbCk6CisgICAg
ICAgIChSYXdUeXBlcy5PYmplY3QuaXNfZXZlbnRfcGFyYW1fY2hlY2tfb3B0aW9uYWwpOgorICAg
ICAgICAoUmF3VHlwZXMuQXJyYXkuaXNfZXZlbnRfcGFyYW1fY2hlY2tfb3B0aW9uYWwpOgorICAg
ICAgICAoUmF3VHlwZXMpOgorICAgICAgICAoR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1l
c1dpdGhNYW5pZmVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXIpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0
b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0
U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVz
b2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJp
YnV0ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlRW50cmllcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRSZXNvdXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZWFyY2hJblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
c2VhcmNoSW5SZXNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5
SGVhcE9iamVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorCiAyMDExLTEyLTE5ICBB
bmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0V4dGVuc2lvbnMgQVBJXSBhbGxvdyBzZXR0aW5nIGV4dGVuc2lvbiBBUEkgcGVyIGV4
dGVuc2lvbiBzZWN1cml0eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggYmJkNWI5ZTA3NmY5ZGQ5ODZiZGIzNzlk
ZGEwNjJkZTQwM2QyZjFlYy4uZGNkYjMyZDU1NjQ5ZmE5MDUxMTNkOTk5MjQxMjQ5MGRlNWFmOGE5
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkKQEAgLTI1MSwxMCArMjUxLDYgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKICAg
ICAgICAgZGVmIGlzX2V2ZW50X3BhcmFtX2NoZWNrX29wdGlvbmFsKCk6CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKIAotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfb3V0
cHV0X2FyZ3VtZW50X3ByZWZpeCgpOgotICAgICAgICAgICAgcmV0dXJuICImIgotCiAgICAgY2xh
c3MgU3RyaW5nKEJhc2VUeXBlKToKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBn
ZXRfY19wYXJhbV90eXBlKGNscywgcGFyYW1fdHlwZSwgb3B0aW9uYWwpOgpAQCAtMzc2LDEwICsz
NzIsNiBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogICAgICAgICBkZWYgaXNfZXZlbnRfcGFy
YW1fY2hlY2tfb3B0aW9uYWwoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAg
QHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKToK
LSAgICAgICAgICAgIHJldHVybiAiIgotCiAgICAgICAgIF9wbGFpbl9jX3R5cGUgPSBDUGFyYW1U
eXBlKCJSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIpCiAgICAgICAgIF9yZWZfY190eXBlID0gQ1Bh
cmFtVHlwZSgiUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IikKIApAQCAtNDQwLDEwICs0MzIs
NiBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogICAgICAgICBkZWYgaXNfZXZlbnRfcGFyYW1f
Y2hlY2tfb3B0aW9uYWwoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgQHN0
YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKToKLSAg
ICAgICAgICAgIHJldHVybiAiIgotCiAgICAgICAgIF9wbGFpbl9jX3R5cGUgPSBDUGFyYW1UeXBl
KCJSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IikKICAgICAgICAgX3JlZl9jX3R5cGUgPSBDUGFyYW1U
eXBlKCJQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiIpCiAKQEAgLTE2MDcsMjMgKzE1OTUsMTYg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgZm9yIGpzb25fcmV0dXJuIGluIGpzb25f
Y29tbWFuZFsicmV0dXJucyJdOgogCiAgICAgICAgICAgICAgICAganNvbl9yZXR1cm5fbmFtZSA9
IGpzb25fcmV0dXJuWyJuYW1lIl0KLQotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gIm9wdGlv
bmFsIiBpbiBqc29uX3JldHVybiBhbmQganNvbl9yZXR1cm5bIm9wdGlvbmFsIl0KLQogICAgICAg
ICAgICAgICAgIHJhd190eXBlID0gcmVzb2x2ZV9wYXJhbV9yYXdfdHlwZShqc29uX3JldHVybiwg
ZG9tYWluX25hbWUpCiAgICAgICAgICAgICAgICAgc2V0dGVyX3R5cGUgPSByYXdfdHlwZS5nZXRf
c2V0dGVyX25hbWUoKQogICAgICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcmF3X3R5cGUuZ2V0
X2NfaW5pdGlhbGl6ZXIoKQogICAgICAgICAgICAgICAgIHZhcl90eXBlID0gcmF3X3R5cGUuZ2V0
X2NfcGFyYW1fdHlwZShQYXJhbVR5cGUuT1VUUFVULCBOb25lKQogCiAgICAgICAgICAgICAgICAg
Y29kZSA9ICIgICAgJXMgb3V0XyVzID0gJXM7XG4iICUgKHZhcl90eXBlLmdldF90ZXh0KCksIGpz
b25fcmV0dXJuX25hbWUsIGluaXRpYWxpemVyKQotICAgICAgICAgICAgICAgIHBhcmFtID0gIiwg
JXNvdXRfJXMiICUgKHJhd190eXBlLmdldF9vdXRwdXRfYXJndW1lbnRfcHJlZml4KCksIGpzb25f
cmV0dXJuX25hbWUpCisgICAgICAgICAgICAgICAgcGFyYW0gPSAiLCAmb3V0XyVzIiAlIGpzb25f
cmV0dXJuX25hbWUKICAgICAgICAgICAgICAgICBjb29rID0gIiAgICAgICAgcmVzdWx0LT5zZXQl
cyhcIiVzXCIsIG91dF8lcyk7XG4iICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLCBq
c29uX3JldHVybl9uYW1lKQotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAg
ICAgICAgICAgICBpZiB2YXJfdHlwZS5nZXRfdGV4dCgpID09ICJib29sIjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvb2sgPSAoIiAgICAgICAgaWYgKG91dF8lcylcbiAgICAiICUganNvbl9y
ZXR1cm5fbmFtZSkgKyBjb29rCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBzdXBwb3J0IG9wdGlvbmFscy4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvb2sgPSAiICAgICAgICAvLyBGSVhNRTogc3VwcG9ydCBvcHRpb25hbCBoZXJl
LlxuIiArIGNvb2sKKyAgICAgICAgICAgICAgICBpZiB2YXJfdHlwZS5nZXRfdGV4dCgpID09ICJi
b29sIiBhbmQgIm9wdGlvbmFsIiBpbiBqc29uX3JldHVybiBhbmQganNvbl9yZXR1cm5bIm9wdGlv
bmFsIl06CisgICAgICAgICAgICAgICAgICAgIGNvb2sgPSAoIiAgICAgICAgaWYgKG91dF8lcylc
biAgICAiICUganNvbl9yZXR1cm5fbmFtZSkgKyBjb29rCiAKICAgICAgICAgICAgICAgICBtZXRo
b2Rfb3V0X2NvZGUgKz0gY29kZQogICAgICAgICAgICAgICAgIGFnZW50X2NhbGxfcGFyYW1fbGlz
dC5hcHBlbmQocGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDE0YmVhNzYzN2Q5YTg2
OWE2MDNmZjM5OTQ2YTQ5NTY0NTdkZjZjM2UuLmIxN2U1NDUxZGI5NzJkNDA4ZDcyYTAwZDM0MjUx
ZjIwNTdiYjQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAg
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQo
KQogICAgIG1fZnJvbnRlbmQtPm5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpOwogfQog
Ci12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlm
ZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJlc3VsdCkKK3ZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVzdWx0KQogewotICAgIHJlc3Vs
dCA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAqcmVzdWx0ID0gSW5zcGVjdG9yQXJy
YXk6OmNyZWF0ZSgpOwogCiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IG1fcGFnZUFnZW50LT5tYWlu
RnJhbWUoKTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAgLTEyMSw3ICsx
MjEsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cgogICAgICAgICAgICAgdmFsdWUtPnNldFN0
cmluZygiZnJhbWVJZCIsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSk7CiAgICAgICAgICAg
ICB2YWx1ZS0+c2V0U3RyaW5nKCJtYW5pZmVzdFVSTCIsIG1hbmlmZXN0VVJMKTsKICAgICAgICAg
ICAgIHZhbHVlLT5zZXROdW1iZXIoInN0YXR1cyIsIGhvc3QtPnN0YXR1cygpKTsKLSAgICAgICAg
ICAgIHJlc3VsdC0+cHVzaE9iamVjdCh2YWx1ZSk7CisgICAgICAgICAgICAoKnJlc3VsdCktPnB1
c2hPYmplY3QodmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRNYW5pZmVzdEZvckZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluCiAgICAgKm1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlm
ZXN0LnN0cmluZygpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgYXBwbGljYXRpb25D
YWNoZSkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlv
bkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50
TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpA
QCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpn
ZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVyCiAgICAgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QgcmVzb3VyY2VzOwogICAgIGhvc3QtPmZpbGxS
ZXNvdXJjZUxpc3QoJnJlc291cmNlcyk7CiAKLSAgICBhcHBsaWNhdGlvbkNhY2hlID0gYnVpbGRP
YmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKHJlc291cmNlcywgaW5mbyk7CisgICAgKmFwcGxpY2F0
aW9uQ2FjaGUgPSBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUocmVzb3VyY2VzLCBpbmZv
KTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Vz
LCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBhcHBsaWNhdGlvbkNhY2hl
SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBhYzA5Mjk3NTk5MzI4ZjU0N2VlNTcxMzQ4YzRj
ZGQwNWI2ZDI3NDZkLi5jMzE2NzQ0YzY3NGYyNjFkNzFkY2EzNjdlNGY3ZmM1Y2VjNzkyMmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC02OSw5ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEFw
cGxpY2F0aW9uQ2FjaGUgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KTsKKyAgICB2b2lkIGdldEZyYW1l
c1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1
bHQpOwogICAgIHZvaWQgZ2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBtYW5pZmVzdFVSTCk7Ci0gICAgdm9pZCBnZXRBcHBsaWNh
dGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhcHBsaWNhdGlvbkNhY2hlKTsKKyAgICB2b2lkIGdldEFw
cGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGFwcGxpY2F0aW9uQ2FjaGUpOwogCiBwcml2YXRl
OgogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDEwNGQ4Njc5OTVlNzBi
ZTBhMzI1ZmE1ZTE3YTk5MWFlNDdiYzkyNmMuLjU1YTRiYzQ2MjRkNzFlYjU5ZWZiYTg5ZGNkZjRj
MGI3NmVmNjJhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQoKQogICAgIG1fZnJvbnRlbmQgPSAwOwogICAgIGNsZWFyUHNldWRvU3RhdGUo
dHJ1ZSk7CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwotICAgIHN0b3BTZWxlY3RvclByb2ZpbGVy
SW1wbCgmZXJyb3JTdHJpbmcpOworICAgIHN0b3BTZWxlY3RvclByb2ZpbGVyKCZlcnJvclN0cmlu
Zyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCkBAIC0zOTAs
NyArMzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVjYWxjU3R5bGVGb3JQc2V1ZG9T
dGF0ZUlmTmVlZGVkKEVsZW1lbnQqIGVsZW1lbnQsIEluc3AKICAgICAgICAgZWxlbWVudC0+b3du
ZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBib29sKiBuZWVkUHNldWRvLCBib29sKiBu
ZWVkSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVk
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIGJvb2wqIG5lZWRQ
c2V1ZG8sIGJvb2wqIG5lZWRJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG1hdGNo
ZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcHNldWRvSWRSdWxlcywgUmVmUHRy
PEluc3BlY3RvckFycmF5PiogaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVu
dCkKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVk
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIC8vIE1h
dGNoZWQgcnVsZXMuCiAgICAgQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IgPSBlbGVtZW50LT5v
d25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsKICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IG1hdGNoZWRSdWxlcyA9IHNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBD
U1NTdHlsZVNlbGVjdG9yOjpBbGxDU1NSdWxlcyk7Ci0gICAgbWF0Y2hlZENTU1J1bGVzID0gYnVp
bGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSk7CisgICAgKm1hdGNoZWRDU1NS
dWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCkpOwogCiAgICAg
Ly8gUHNldWRvIGVsZW1lbnRzLgogICAgIGlmICghbmVlZFBzZXVkbyB8fCAqbmVlZFBzZXVkbykg
ewpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBwc2V1ZG9JZFJ1bGVzID0gcHNldWRvRWxlbWVudHMu
cmVsZWFzZSgpOworICAgICAgICAqcHNldWRvSWRSdWxlcyA9IHBzZXVkb0VsZW1lbnRzLnJlbGVh
c2UoKTsKICAgICB9CiAKICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgpAQCAtNDM4LDExICs0Mzgs
MTEgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQg
PSBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBp
bmhlcml0ZWRFbnRyaWVzID0gaW5oZXJpdGVkU3R5bGVzLnJlbGVhc2UoKTsKKyAgICAgICAgKmlu
aGVyaXRlZEVudHJpZXMgPSBpbmhlcml0ZWRTdHlsZXMucmVsZWFzZSgpOwogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBpbmxp
bmVTdHlsZSwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgYXR0cmlidXRlcykKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaW5saW5lU3R5bGUsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIGF0dHJpYnV0ZXMpCiB7CiAgICAgRWxlbWVudCogZWxlbWVu
dCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQp
CkBAIC00NTIsMTEgKzQ1MiwxMSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZAogICAgIGlmICgh
c3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5saW5lU3R5bGUgPSBzdHlsZVNo
ZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPnN0eWxlKCkpOwotICAgIGF0dHJpYnV0
ZXMgPSBidWlsZEFycmF5Rm9yQXR0cmlidXRlU3R5bGVzKGVsZW1lbnQpOworICAgICppbmxpbmVT
dHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVudC0+c3R5bGUoKSk7
CisgICAgKmF0dHJpYnV0ZXMgPSBidWlsZEFycmF5Rm9yQXR0cmlidXRlU3R5bGVzKGVsZW1lbnQp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0
eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBzdHls
ZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBu
b2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTQ2NiwxMCArNDY2LDEwIEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vCiAKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBjb21wdXRlZFN0eWxlSW5mbyA9IGNvbXB1dGVkU3R5bGUoZWxlbWVudCwgdHJ1ZSk7CiAgICAg
UmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpj
cmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIDApOwotICAgIHN0eWxl
ID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CisgICAgKnN0
eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3R5bGVJbmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5
Piogc3R5bGVJbmZvcykKIHsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBtX2Rv
bUFnZW50LT5kb2N1bWVudHMoKTsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+OjppdGVyYXRv
ciBpdCA9IGRvY3VtZW50cy5iZWdpbigpOyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsraXQpIHsK
QEAgLTQ3NywxOCArNDc3LDE4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxl
U2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAg
IFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBsaXN0LT5pdGVtKGkpOwogICAgICAgICAgICAgaWYg
KHN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQotICAgICAgICAgICAgICAgIGNvbGxlY3RT
dHlsZVNoZWV0cyhzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCksIHN0eWxl
SW5mb3MuZ2V0KCkpOworICAgICAgICAgICAgICAgIGNvbGxlY3RTdHlsZVNoZWV0cyhzdGF0aWNf
Y2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCksIHN0eWxlSW5mb3MtPmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVl
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVTaGVldE9iamVjdCkKK3ZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0eWxlU2hlZXRP
YmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9
IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBp
ZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0eWxlU2hl
ZXRPYmplY3QgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlU2hlZXQo
KTsKKyAgICAqc3R5bGVTaGVldE9iamVjdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2Jq
ZWN0Rm9yU3R5bGVTaGVldCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHls
ZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZwogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3Igc2V0dGlu
ZyBzdHlsZSBzaGVldCB0ZXh0IjsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJv
cGVydHlUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHBy
b3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJ
ZChmdWxsU3R5bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC01
MjMsMTAgKzUyMywxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQogCiAgICAgYm9vbCBzdWNj
ZXNzID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0UHJvcGVydHlUZXh0KGVycm9yU3RyaW5nLCBj
b21wb3VuZElkLCBwcm9wZXJ0eUluZGV4LCB0ZXh0LCBvdmVyd3JpdGUpOwogICAgIGlmIChzdWNj
ZXNzKQotICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZv
clN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOworICAg
ICAgICAqcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShp
bnNwZWN0b3JTdHlsZVNoZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0
eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit2
b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHBy
b3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3Vs
dCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBB
U1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTUzNywxMCArNTM3LDEwIEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEluCiAKICAgICBib29sIHN1Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT50b2dnbGVQcm9wZXJ0eShlcnJvclN0cmluZywgY29tcG91bmRJZCwgcHJvcGVydHlJbmRl
eCwgZGlzYWJsZSk7CiAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHJlc3VsdCA9IGluc3BlY3Rv
clN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5
bGVGb3JJZChjb21wb3VuZElkKSk7CisgICAgICAgICpyZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQo
Y29tcG91bmRJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBm
dWxsUnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFJ1bGVJZCk7
CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC01NTMsMTAgKzU1MywxMCBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JS
dWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnJ1bGVGb3JJZChjb21wb3VuZElkKSk7CisgICAgKnJl
c3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShpbnNwZWN0b3JT
dHlsZVNoZWV0LT5ydWxlRm9ySWQoY29tcG91bmRJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgaW50IGNvbnRleHROb2RlSWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit2
b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgaW50IGNv
bnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQtPm5vZGVGb3JJZChj
b250ZXh0Tm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBAIC01NjksMTYgKzU2OSwxNiBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgaW50IGNvbnRl
eHROb2RlSWQsIGNvbnN0IFN0cgogICAgIGlmICghbmV3UnVsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKG5l
d1J1bGUpOworICAgICpyZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZv
clJ1bGUobmV3UnVsZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBjc3NQ
cm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNzc1Byb3BlcnRpZXMp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzID0gSW5zcGVjdG9yQXJy
YXk6OmNyZWF0ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsg
KytpKQogICAgICAgICBwcm9wZXJ0aWVzLT5wdXNoU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZ3Nb
aV0pOwogCi0gICAgY3NzUHJvcGVydGllcyA9IHByb3BlcnRpZXMucmVsZWFzZSgpOworICAgICpj
c3NQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCkBAIC01ODgsMTIg
KzU4OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihF
cnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDU1NBZ2VudFN0YXRlOjppc1Nl
bGVjdG9yUHJvZmlsaW5nLCB0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c3Rv
cFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgcmVzdWx0KQotewotICAgIHN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChlcnJv
clN0cmluZywgJnJlc3VsdCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxl
Y3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBy
ZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgaWYgKCFt
X3N0YXRlLT5nZXRCb29sZWFuKENTU0FnZW50U3RhdGU6OmlzU2VsZWN0b3JQcm9maWxpbmcpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oCmluZGV4IDg2M2VmYzBkNzBjYjVlMTYyNDM0MzZhMGRiMmUwMjlhNTVjNWMyMzAuLjAw
MjAwMTQ0MjJhYzI2ZDk1MjRmYzg2ZjQzYWFmZjA3YjlkYTFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC03NiwyMiArNzYsMjEgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
KCk7CiAKLSAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3Nl
cywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3R5bGUpOwotICAgIHZvaWQgZ2V0SW5saW5lU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgYXR0cmlidXRlcyk7Ci0g
ICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIGJvb2wq
IGluY2x1ZGVQc2V1ZG8sIGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcHNldWRvSWRS
dWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaW5oZXJpdGVkRW50cmllcyk7Ci0gICAgdm9p
ZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IHN0eWxlU2hlZXRJbmZvcyk7Ci0gICAgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1
bHQpOworICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2Vz
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBzdHlsZSk7CisgICAgdm9pZCBnZXRJbmxpbmVTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBhdHRyaWJ1dGVzKTsKKyAg
ICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgYm9vbCog
aW5jbHVkZVBzZXVkbywgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBwc2V1ZG9JZFJ1
bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAgICB2b2lk
IGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
c3R5bGVTaGVldEluZm9zKTsKKyAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3Vs
dCk7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRTdHlsZVNoZWV0
VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJp
bmcmIHRleHQpOwotICAgIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25z
dCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
cmVzdWx0KTsKLSAgICB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRp
c2FibGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwotICAgIHZvaWQgc2V0UnVs
ZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1
bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJl
c3VsdCk7Ci0gICAgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgaW50IGNvbnRleHRO
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBy
ZXN1bHQpOwotICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyos
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJlc3VsdCk7CisgICAgdm9pZCBzZXRQcm9wZXJ0eVRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwg
aW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgdG9nZ2xlUHJvcGVydHko
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJl
c3VsdCk7CisgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVzdWx0KTsK
IAogICAgIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7Ci0gICAgdm9p
ZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+Jik7Ci0gICAgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogPSAwKTsKKyAgICB2b2lkIHN0b3BTZWxlY3RvclByb2Zp
bGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qID0gMCk7CiAgICAgdm9p
ZCB3aWxsTWF0Y2hSdWxlKGNvbnN0IENTU1N0eWxlUnVsZSopOwogICAgIHZvaWQgZGlkTWF0Y2hS
dWxlKGJvb2wpOwogICAgIHZvaWQgd2lsbFByb2Nlc3NSdWxlKGNvbnN0IENTU1N0eWxlUnVsZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggMGFmODA3NGQxZGUwMTZkZjI1MjBkOTBiYzlhZDAxZTRlYzY0ZWY2ZS4uN2E5ZjI2ZGU5ODE4
NjkzMzgxNmE1NThlZTU0NjVjYWI4NDYyOTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgSFRNTEVsZW1l
bnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRIVE1MRWxlbWVudChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludAogICAgIHJldHVybiB0b0hUTUxFbGVtZW50KGVsZW1lbnQpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiByb290KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1l
bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogcm9vdCkKIHsKICAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkLCB0cnVl
KTsKIApAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3Vt
ZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJvb3QpCiAgICAgcmVz
ZXQoKTsKICAgICBtX2RvY3VtZW50ID0gZG9jOwogCi0gICAgcm9vdCA9IGJ1aWxkT2JqZWN0Rm9y
Tm9kZShtX2RvY3VtZW50LmdldCgpLCAyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICAq
cm9vdCA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3VtZW50LmdldCgpLCAyLCAmbV9kb2N1bWVu
dE5vZGVUb0lkTWFwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKGludCBub2RlSWQpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnMKICAgICAgICAgKmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
ZWxlbWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0
b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjCiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVzLT5s
ZW5ndGgoKTsgKytpKQotICAgICAgICByZXN1bHQtPnB1c2hOdW1iZXIocHVzaE5vZGVQYXRoVG9G
cm9udGVuZChub2Rlcy0+aXRlbShpKSkpOworICAgICAgICAoKnJlc3VsdCktPnB1c2hOdW1iZXIo
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOwogfQogCiBpbnQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKQEAg
LTcxMCw3ICs3MTAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiRE9NIEVycm9yIHdoaWxlIHNldHRpbmcgdGhlIG5vZGUgdmFsdWUiOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsaXN0ZW5lcnNBcnJheSkK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGxpc3RlbmVyc0FycmF5
KQogewogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBFdmVudFRhcmdl
dERhdGEqIGQ7CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHQKICAg
ICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB2ZWN0b3Iuc2l6ZSgpOyArK2opIHsKICAgICAg
ICAgICAgIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IHZlY3Rvcltq
XTsKICAgICAgICAgICAgIGlmIChsaXN0ZW5lci51c2VDYXB0dXJlKQotICAgICAgICAgICAgICAg
IGxpc3RlbmVyc0FycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgaW5mby5ldmVudFR5cGUsIGluZm8ubm9kZSkpOworICAgICAgICAgICAgICAgICgq
bGlzdGVuZXJzQXJyYXkpLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgaW5mby5ldmVudFR5cGUsIGluZm8ubm9kZSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHQKICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCB2ZWN0b3Iuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNv
bnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IHZlY3RvcltqXTsKICAgICAg
ICAgICAgIGlmICghbGlzdGVuZXIudXNlQ2FwdHVyZSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5l
cnNBcnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIs
IGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKKyAgICAgICAgICAgICAgICAoKmxpc3RlbmVy
c0FycmF5KS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIs
IGluZm8uZXZlbnRUeXBlLCBpbmZvLm5vZGUpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTg2
OCw3ICs4NjgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgICpyZXN1bHRDb3VudCA9
IHJlc3VsdHNJdC0+c2Vjb25kLnNpemUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBub2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9t
SW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzKQogewog
ICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIGl0ID0gbV9zZWFyY2hSZXN1bHRzLmZpbmQoc2Vh
cmNoSWQpOwogICAgIGlmIChpdCA9PSBtX3NlYXJjaFJlc3VsdHMuZW5kKCkpIHsKQEAgLTg4Myw3
ICs4ODMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgIH0KIAogICAgIGZvciAoaW50
IGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyArK2kpCi0gICAgICAgIG5vZGVJZHMtPnB1c2hO
dW1iZXIocHVzaE5vZGVQYXRoVG9Gcm9udGVuZCgoaXQtPnNlY29uZClbaV0uZ2V0KCkpKTsKKyAg
ICAgICAgKCpub2RlSWRzKS0+cHVzaE51bWJlcihwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+
c2Vjb25kKVtpXS5nZXQoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJk
U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpCkBAIC0x
MDc0LDcgKzEwNzQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3ZlVG8oRXJyb3JTdHJp
bmcqIGVycm9yLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0RWxlbWVudAogICAgICpuZXdOb2RlSWQg
PSBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
Cit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3Is
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9i
amVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJ
ZChub2RlSWQpOwpAQCAtMTA4NywxNiArMTA4NywxNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZwogICAgICAgICAqZXJyb3IgPSAiTm9kZSB3aXRoIGdpdmVuIGlkIGRvZXMgbm90IGJlbG9uZyB0
byB0aGUgZG9jdW1lbnQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IG9i
amVjdDsKKyAgICAqcmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qIHJlc3VsdCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0
RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlc3VsdCA9IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhl
bGVtZW50KTsKKyAgICAqcmVzdWx0ID0gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVs
ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Tm9kZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA0YWRlNWJkYjU5ZWQxODc3
NWY3NmJhOWFkMzk4YzQyNTgzYWZhMmU0Li41MDMwOWQ4YzM4ZTEwOWZkNTYwYTNiZmI0YzVlZmYw
N2Y0ZWZlYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtMTE1LDggKzExNSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVk
IGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2b2lkIHF1
ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgaW50KiBlbGVtZW50SWQpOwotICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+JiByZXN1bHQpOwotICAgIHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcm9vdCk7CisgICAgdm9pZCBxdWVyeVNlbGVjdG9yQWxs
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXREb2N1bWVudChFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByb290KTsKICAgICB2b2lkIHJlcXVlc3RD
aGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CiAgICAgdm9pZCBzZXRBdHRyaWJ1
dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9y
U3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcq
IGNvbnN0IG5hbWUpOwpAQCAtMTI2LDEyICsxMjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRN
TCk7CiAgICAgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIG91dGVySFRNTCwgaW50KiBuZXdJZCk7CiAgICAgdm9pZCBzZXROb2RlVmFsdWUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lk
IGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mIGxpc3RlbmVyc0FycmF5KTsKKyAgICB2b2lkIGdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIGxpc3RlbmVyc0FycmF5KTsKICAgICB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIFN0cmluZyogc2VhcmNo
SWQsIGludCogcmVzdWx0Q291bnQpOwotICAgIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CisgICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRv
SW5kZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qKTsKICAgICB2b2lkIGRpc2NhcmRTZWFyY2hS
ZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7Ci0gICAgdm9pZCBy
ZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwotICAgIHZvaWQg
Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIHJlc3VsdCk7CisgICAgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAgIHZvaWQgcmVxdWVzdE5v
ZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCk7CiAg
ICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGludCogbm9kZUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggNjNkYWYzOTIyNTI4Nzk3MjU1
Y2FkMGFhZGYyYmNhNzFhNjUyNjFjNS4uYjgxMWZiYTg2ZDIxODY0ZGZkMGYwYTc2NjMwYjQwNDAw
Y2M3MTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCwgbV9lbmFi
bGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VF
bnRyaWVzKEVycm9yU3RyaW5nKiwgaW50IHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYgZW50cmllcykKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdl
RW50cmllcyhFcnJvclN0cmluZyosIGludCBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIGVudHJpZXMpCiB7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBzdG9yYWdl
UmVzb3VyY2UgPSBnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJZChzdG9yYWdlSWQpOwogICAgIGlm
IChzdG9yYWdlUmVzb3VyY2UpIHsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUVudHJpZXMoRXJyb3JTdHJpbmcqLCBpbnQgc3Rv
cmFnZUlkLAogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBlbnRyeSA9IEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGVudHJ5LT5wdXNoU3RyaW5nKG5hbWUp
OwogICAgICAgICAgICAgZW50cnktPnB1c2hTdHJpbmcodmFsdWUpOwotICAgICAgICAgICAgZW50
cmllcy0+cHVzaEFycmF5KGVudHJ5KTsKKyAgICAgICAgICAgICgqZW50cmllcyktPnB1c2hBcnJh
eShlbnRyeSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYmQxZDZhNzE5Y2U4YjIx
NGMwNTJiOTA5YzM4ZjA4N2Q2M2RjOTY3OC4uZTg3ZmZlMjMzNzg4MmVhNGY5OGYwN2Y0YTcwM2Qx
ZWJjY2QwODc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwog
ICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZ2V0RE9NU3RvcmFnZUVu
dHJpZXMoRXJyb3JTdHJpbmcqLCBpbnQgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBlbnRyaWVzKTsKKyAgICB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVzKEVycm9yU3RyaW5nKiwg
aW50IHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZW50cmllcyk7CiAgICAgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGludCBzdG9yYWdlSWQsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKTsKICAgICB2b2lk
IHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgaW50IHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXksIGJvb2wqIHN1Y2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggZDk2YjFlNzY2MjQ0YzU2
NGFmODIyNTM3MmQwODYwZjgwN2NmYzA1Mi4uNGM4NmU5YmEwMzI2ZDFhYjAwMmI1ZWU3N2QxNmYy
NTk3Zjk1ZmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6cmVzdG9yZSgpCiAgICAgbV9lbmFibGVkID0gIG1fc3RhdGUtPmdldEJvb2xl
YW4oRGF0YWJhc2VBZ2VudFN0YXRlOjpkYXRhYmFzZUFnZW50RW5hYmxlZCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5n
KiBlcnJvciwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5hbWVzKQor
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JT
dHJpbmcqIGVycm9yLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmFt
ZXMpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKICAgICAgICAgKmVycm9yID0gIkRhdGFiYXNl
IGFnZW50IGlzIG5vdCBlbmFibGVkIjsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3Is
IGludCBkYXRhYgogICAgICAgICBWZWN0b3I8U3RyaW5nPiB0YWJsZU5hbWVzID0gZGF0YWJhc2Ut
PnRhYmxlTmFtZXMoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGFibGVOYW1lcy5zaXpl
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIG5hbWVzLT5wdXNoU3RyaW5nKHRhYmxlTmFtZXNbaV0pOworICAgICAgICAgICAgKCpu
YW1lcyktPnB1c2hTdHJpbmcodGFibGVOYW1lc1tpXSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBjOWMy
YzUzYzQ0ZDVkMzU0MzEwODUwMDdiODljMjliMWIxMDI2ODA2Li41ZTA4ZmE4OWJhNzI2ZjNkNjYy
NWU4YzZmZTgxMmYzZTczYzFmZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAg
IC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGdldERhdGFi
YXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+JiBuYW1lcyk7CisgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JT
dHJpbmcqLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmFtZXMpOwog
ICAgIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGludCBkYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBib29sKiBzdWNjZXNzLCBpbnQqIHRyYW5zYWN0aW9uSWQpOwogCiAgICAg
Ly8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhYzI5MzBjYTEx
MzUxOWI1NjMyN2E4OTk4OWVlODhiNTdkNjgyMDFmLi5lOTA0OWNhYTg4MjcwNThkYjg0N2ZkZDIw
OGRhOTNkMGFmMGUwOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIGJvb2wg
bWF0Y2hlcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlz
UmVnZXgpCiAgICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxD
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmlu
Zyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpCit2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCog
Y29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxD
b25kaXRpb24sIFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBsb2NhdGlvbnMpCiB7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdl
eCkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0
IGJlIHNwZWNpZmllZC4iOwpAQCAtMjI1LDcgKzIyNSw4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IGxpCiAgICAgICAgIGlmICghbWF0Y2hlcyhpdC0+c2Vjb25kLnVybCwgdXJsLCBpc1JlZ2V4KSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBs
b2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgaXQtPmZpcnN0LCBicmVh
a3BvaW50KTsKLSAgICAgICAgbG9jYXRpb25zLT5wdXNoT2JqZWN0KGxvY2F0aW9uKTsKKyAgICAg
ICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAgICAgKCpsb2NhdGlvbnMpLT5wdXNoT2JqZWN0KGxv
Y2F0aW9uKTsKICAgICB9CiAgICAgKm91dEJyZWFrcG9pbnRJZCA9IGJyZWFrcG9pbnRJZDsKIH0K
QEAgLTI0Miw3ICsyNDMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRp
b24sIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24sIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU3RyaW5nIHNjcmlw
dElkOwogICAgIGludCBsaW5lTnVtYmVyOwpAQCAtMjU3LDggKzI1OCw4IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IFBhc3NSZWZQdHI8CiAgICAgaWYgKG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJZHMuZmluZChicmVha3BvaW50SWQpICE9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJy
ZWFrcG9pbnRJZHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBTY3JpcHRCcmVha3BvaW50
IGJyZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24pOwotICAgIGFj
dHVhbExvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBzY3JpcHRJZCwg
YnJlYWtwb2ludCk7Ci0gICAgaWYgKGFjdHVhbExvY2F0aW9uKQorICAgICphY3R1YWxMb2NhdGlv
biA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgc2NyaXB0SWQsIGJyZWFrcG9pbnQp
OworICAgIGlmICgqYWN0dWFsTG9jYXRpb24pCiAgICAgICAgICpvdXRCcmVha3BvaW50SWQgPSBi
cmVha3BvaW50SWQ7CiAgICAgZWxzZQogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90
IHJlc29sdmUgYnJlYWtwb2ludCI7CkBAIC0zMzQsMjggKzMzNSwyOCBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNjcmlwdFRvSW5zcGVjdG9yT2JqZWN0KFNjcmlwdE9iamVj
dCBzY3JpcHRPYgogICAgIHJldHVybiB2YWx1ZS0+YXNPYmplY3QoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNS
ZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdHMpCiB7CiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0
aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUg
OiBmYWxzZTsKIAogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmZpbmQo
c2NyaXB0SWQpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkpCi0gICAgICAgIHJlc3Vs
dHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoaXQtPnNlY29uZC5z
b3VyY2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKKyAgICAgICAgKnJlc3VsdHMg
PSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoaXQtPnNlY29uZC5zb3Vy
Y2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKICAgICBlbHNlCiAgICAgICAgICpl
cnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SWQ7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29s
KiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuZXdDYWxsRnJhbWVzLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZp
ZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgYm9vbCBwcmV2aWV3T25seSA9IHByZXZpZXcgJiYg
KnByZXZpZXc7CiAgICAgU2NyaXB0T2JqZWN0IHJlc3VsdE9iamVjdDsKICAgICBpZiAoIXNjcmlw
dERlYnVnU2VydmVyKCkuc2V0U2NyaXB0U291cmNlKHNjcmlwdElkLCBuZXdDb250ZW50LCBwcmV2
aWV3T25seSwgZXJyb3IsICZtX2N1cnJlbnRDYWxsU3RhY2ssICZyZXN1bHRPYmplY3QpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7Cisg
ICAgKm5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdCA9IHNjcmlwdFRvSW5zcGVjdG9yT2JqZWN0KHJlc3VsdE9iamVj
dCk7CiAgICAgaWYgKG9iamVjdCkKLSAgICAgICAgcmVzdWx0ID0gb2JqZWN0OworICAgICAgICAq
cmVzdWx0ID0gb2JqZWN0OwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNj
cmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0
cmluZyogc2NyaXB0U291cmNlKQpAQCAtMzY3LDE0ICszNjgsMTQgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJ
ZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkxvY2F0aW9u
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmdldEZ1bmN0aW9uTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBsb2NhdGlvbikKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3Bl
Y3RlZCBmcmFtZSBoYXMgZ29uZSI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW5qZWN0
ZWRTY3JpcHQuZ2V0RnVuY3Rpb25Mb2NhdGlvbihlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgJmxv
Y2F0aW9uKTsKKyAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkxvY2F0aW9uKGVycm9yU3Ry
aW5nLCBmdW5jdGlvbklkLCBsb2NhdGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChjb25zdCBTdHJpbmcmIGJyZWFrUmVh
c29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSkKQEAgLTQ1MCwxNCArNDUxLDE0
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRl
cm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVzZSBvbiBleGNlcHRpb25zIHN0YXRlIjsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25z
dCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IHJl
dHVybkJ5VmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQsIGJvb2wqIHdhc1Ro
cm93bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29u
c3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBy
ZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNU
aHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1
cnJlbnRDYWxsU3RhY2ssIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpv
YmplY3RHcm91cCA6ICIiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkgPyAqaW5jbHVkZUNvbW1hbmRM
aW5lQVBJIDogZmFsc2UsIHJldHVybkJ5VmFsdWUgPyAqcmV0dXJuQnlWYWx1ZSA6IGZhbHNlLCAm
cmVzdWx0LCB3YXNUaHJvd24pOworICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25DYWxsRnJh
bWUoZXJyb3JTdHJpbmcsIG1fY3VycmVudENhbGxTdGFjaywgY2FsbEZyYW1lSWQsIGV4cHJlc3Np
b24sIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSA/ICppbmNsdWRlQ29tbWFuZExpbmVBUEkgOiBmYWxzZSwgcmV0dXJuQnlWYWx1ZSA/ICpyZXR1
cm5CeVZhbHVlIDogZmFsc2UsIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAogUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKaW5kZXggODkzOWFmODBmNDU4NzBmNzZkMjJhZmIyOWViNWFiYWE2YTkyOWYxNC4uYmEyNDJk
YzdjNWIyZDY3MjNjY2NmYzliZTYzMjdhMWU5YjM3N2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC04MSwxNSArODEsMTUg
QEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgogICAgIHZvaWQgc2V0QnJl
YWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSk7CiAKLSAgICB2b2lkIHNl
dEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVn
ZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdm9pZCBzZXRCcmVha3BvaW50
QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBv
cHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBp
bnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5
PiogbG9jYXRpb25zKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogYWN0dWFsTG9jYXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKICAgICB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlv
bik7CiAKLSAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+Jik7Ci0gICAgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNv
bnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5ld0NhbGxG
cmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAgIHZvaWQgc2VhcmNo
SW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qKTsK
KyAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Ny
aXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmll
dywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7Ci0gICAgdm9p
ZCBnZXRGdW5jdGlvbkxvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOworICAgIHZvaWQgZ2V0RnVu
Y3Rpb25Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQo
KTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbShjb25zdCBTdHJpbmcmIGJyZWFrUmVhc29uLCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wqIHdhc1Rocm93bik7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApp
bmRleCA4NTJlMDMwMTI1MDI2ODBkODc2Zjc3YmI3YjI5NzhjMTNjYzM0NzRlLi41ZTY0MTg4MGMz
OThmOWM0NzBhZTdiNmFjYWRiMTcxMGVlYjNmNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVz
dWx0KQogewogICAgIENvdW50ZXJWaXNpdG9yIGNvdW50ZXJWaXNpdG9yKG1fcGFnZSk7CiAgICAg
U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFwcGVycygmY291bnRlclZpc2l0b3IpOwpAQCAt
MTU5LDcgKzE1OSw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3Vu
dChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mCiAgICAgICAgICAgICBjb3Vu
dGVyVmlzaXRvci52aXNpdE5vZGUoZG9jKTsKICAgICB9CiAKLSAgICByZXN1bHQgPSBjb3VudGVy
VmlzaXRvci5jb3VudGVycygpOworICAgICpyZXN1bHQgPSBjb3VudGVyVmlzaXRvci5jb3VudGVy
cygpOwogfQogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0
YXRlLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IGIxYmMxMTUx
NTVkYzAxM2M1MDZiM2RhMjAwMjdiMDQ0YmI5MWJkZGQuLmQ4ZGFmYTg5ODg2OTI2MjhkYzNmYzc3
MjQ5NjRjZGM0ZDJmYmYyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRz
LCBzdGF0ZSwgcGFnZSwgZG9tQWdlbnQpKTsKICAgICB9CiAKLSAgICB2b2lkIGdldERPTU5vZGVD
b3VudChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJlc3VsdCk7CisgICAg
dm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiByZXN1bHQpOwogCiAgICAgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYjFjOWFjNGI1
ZmUzMDY2Yzc3YjExMTg4ZWJjOTRkZmY3ZGNmZWU5MC4uMmRlNGQxNWZkNDBhMDg4MzQzNGQ0N2I5
MjQ1NTE0Zjk0NDg5YTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgVmVjdG9yPEtVUkw+
IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBjb29raWVzLCBXVEY6OlN0cmluZyogY29va2llc1N0
cmluZykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3RvckFycmF5PiogY29va2llcywgV1RGOjpTdHJpbmcqIGNvb2tpZXNTdHJp
bmcpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNl
dDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiYgY29va2llCiAgICAgfQogCiAgICAgaWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKLSAg
ICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKKyAg
ICAgICAgKmNvb2tpZXMgPSBidWlsZEFycmF5Rm9yQ29va2llcyhyYXdDb29raWVzTGlzdCk7CiAg
ICAgZWxzZQogICAgICAgICAqY29va2llc1N0cmluZyA9IHN0cmluZ0Nvb2tpZXNMaXN0OwogfQpA
QCAtNDY0LDkgKzQ2NCw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIG9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb2Jq
ZWN0KQogewotICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKG1fcGFnZS0+bWFp
bkZyYW1lKCkpOworICAgICpvYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lVHJlZShtX3BhZ2Ut
Pm1haW5GcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNl
Q29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkK
QEAgLTQ5MSw5ICs0OTEsOSBAQCBzdGF0aWMgYm9vbCB0ZXh0Q29udGVudEZvckNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3RyaW5nKgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIHJlc3VsdHMpCiB7Ci0gICAgcmVzdWx0cyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsK
KyAgICAqcmVzdWx0cyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNS
ZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBi
b29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlIDogZmFsc2U7CkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGMKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdHMg
PSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29udGVudCwgcXVlcnks
IGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOworICAgICpyZXN1bHRzID0gQ29udGVudFNlYXJjaFV0
aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKGNvbnRlbnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBp
c1JlZ2V4KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
dXJsLCBpbnQgbWF0Y2hlc0NvdW50KQpAQCAtNTMzLDcgKzUzMyw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoY29uc3QgU3Ry
aW5nJiBmcmFtCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0
IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0cykKK3ZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4q
IHJlc3VsdHMpCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzZWFyY2hSZXN1bHRzID0g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb24KICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdHMgPSBzZWFyY2hS
ZXN1bHRzOworICAgICpyZXN1bHRzID0gc2VhcmNoUmVzdWx0czsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmgKaW5kZXggNzlkMjJlNWJjMWU4Njk5ZDMzYTNiNzc4ZmYxM2I5YjRhNWRk
NTA3Mi4uMmZhMjFjMDZjY2QxYjNkYTk2ZDM2NmM3NDNkYzNhODJlYTAzMDJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtOTMsMTIgKzkz
LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsb2FkKEVy
cm9yU3RyaW5nKiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpOwogICAgIHZvaWQgb3BlbihF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjb25zdCBpbk5ld1dp
bmRvdyk7Ci0gICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgY29va2llcywgV1RGOjpTdHJpbmcqIGNvb2tpZXNTdHJpbmcpOworICAgIHZvaWQg
Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvb2tpZXMs
IFdURjo6U3RyaW5nKiBjb29raWVzU3RyaW5nKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4p
OwotICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mKTsKKyAgICB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+Kik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcq
IGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJj
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+Jik7Ci0gICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNv
bnN0IGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsKKyAgICB2b2lkIHNlYXJjaElu
UmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiopOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Kik7CiAKICAgICAvLyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCA3M2NmYTVmN2M1
OWZiNjRkZWMxNDQwNTlhNzExMGVmOWQ2Nzc1OWFlLi4yMjI4MjIzMjRhMjk1MzY5NGRkZDg5Zjg2
ZGIwYTZmZTgzOGRjMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0xOTIsMTQgKzE5MiwxNCBAQCBTdHJpbmcgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShi
b29sIGluY3JlbWVudAogICAgIHJldHVybiBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51
bWJlcikpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaGVhZGVycykKK3ZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKQogewogICAgIFByb2ZpbGVzTWFwOjppdGVy
YXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMuZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01h
cDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJlZ2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyAr
K2l0KQotICAgICAgICBoZWFkZXJzLT5wdXNoT2JqZWN0KGNyZWF0ZVByb2ZpbGVIZWFkZXIoKml0
LT5zZWNvbmQpKTsKKyAgICAgICAgKCpoZWFkZXJzKS0+cHVzaE9iamVjdChjcmVhdGVQcm9maWxl
SGVhZGVyKCppdC0+c2Vjb25kKSk7CiAgICAgSGVhcFNuYXBzaG90c01hcDo6aXRlcmF0b3Igc25h
cHNob3RzRW5kID0gbV9zbmFwc2hvdHMuZW5kKCk7CiAgICAgZm9yIChIZWFwU25hcHNob3RzTWFw
OjppdGVyYXRvciBpdCA9IG1fc25hcHNob3RzLmJlZ2luKCk7IGl0ICE9IHNuYXBzaG90c0VuZDsg
KytpdCkKLSAgICAgICAgaGVhZGVycy0+cHVzaE9iamVjdChjcmVhdGVTbmFwc2hvdEhlYWRlcigq
aXQtPnNlY29uZCkpOworICAgICAgICAoKmhlYWRlcnMpLT5wdXNoT2JqZWN0KGNyZWF0ZVNuYXBz
aG90SGVhZGVyKCppdC0+c2Vjb25kKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0yMTcsMjEgKzIx
NywyMSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVu
c2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCit2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHByb2Zp
bGVPYmplY3QpCiB7CiAgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAg
UHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAg
IGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0
ID0gY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBwcm9maWxl
T2JqZWN0LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVj
dEZvckhlYWQoKSk7CisgICAgICAgICAgICAqcHJvZmlsZU9iamVjdCA9IGNyZWF0ZVByb2ZpbGVI
ZWFkZXIoKml0LT5zZWNvbmQpOworICAgICAgICAgICAgKCpwcm9maWxlT2JqZWN0KS0+c2V0T2Jq
ZWN0KCJoZWFkIiwgaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOwog
ICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmJvdHRvbVVwSGVhZCgpKQotICAgICAgICAgICAg
ICAgIHByb2ZpbGVPYmplY3QtPnNldE9iamVjdCgiYm90dG9tVXBIZWFkIiwgaXQtPnNlY29uZC0+
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgICAgICAgICAg
KCpwcm9maWxlT2JqZWN0KS0+c2V0T2JqZWN0KCJib3R0b21VcEhlYWQiLCBpdC0+c2Vjb25kLT5i
dWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBIZWFwUHJvZmlsZVR5cGUpIHsKICAgICAgICAgSGVhcFNuYXBzaG90
c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NuYXBzaG90cy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChp
dCAhPSBtX3NuYXBzaG90cy5lbmQoKSkgewogICAgICAgICAgICAgUmVmUHRyPFNjcmlwdEhlYXBT
bmFwc2hvdD4gc25hcHNob3QgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgcHJvZmlsZU9iamVj
dCA9IGNyZWF0ZVNuYXBzaG90SGVhZGVyKCpzbmFwc2hvdCk7CisgICAgICAgICAgICAqcHJvZmls
ZU9iamVjdCA9IGNyZWF0ZVNuYXBzaG90SGVhZGVyKCpzbmFwc2hvdCk7CiAgICAgICAgICAgICBp
ZiAobV9mcm9udGVuZCkgewogICAgICAgICAgICAgICAgIE91dHB1dFN0cmVhbSBzdHJlYW0obV9m
cm9udGVuZCwgdWlkKTsKICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+d3JpdGVKU09OKCZzdHJl
YW0pOwpAQCAtMzg1LDExICszODUsMTEgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0
b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKICAgICAgICAgbV9mcm9udGVuZC0+
c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBp
bnQgaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwg
aW50IGlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBP
YmplY3RJZChpZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpOwogICAgIGlmICghaGVhcE9iamVj
dC0+aXNOdWxsKCkpCi0gICAgICAgIGhlYXBPYmplY3QtPmFzT2JqZWN0KCZyZXN1bHQpOworICAg
ICAgICBoZWFwT2JqZWN0LT5hc09iamVjdChyZXN1bHQpOwogICAgIGVsc2UKICAgICAgICAgKmVy
cm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlLiI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCAwMmJjYjdiNDMyOGE3
NWQwYWQyZDU2ZmQ0NDdiZjFmN2U4OTJhZTViLi5kNDczMzkwYTM3MjE4ZWY3ODdmZjQ1NmQ1NTk2
ZTNhYjI5MmUwYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmgKQEAgLTgxLDggKzgxLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5h
YmxlKGJvb2wgc2tpcFJlY29tcGlsZSk7CiAgICAgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
Ym9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0UHJvZmls
ZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBoZWFk
ZXJzKTsKLSAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVP
YmplY3QpOworICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKTsKKyAgICB2b2lkIGdldFByb2ZpbGUoRXJy
b3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHByb2ZpbGVPYmplY3QpOwogICAgIHZvaWQgcmVtb3ZlUHJvZmls
ZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwpAQCAt
OTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3Ry
aW5nKik7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAK
LSAgICB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgaW50IGlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2b2lkIGdldE9iamVjdEJ5SGVh
cE9iamVjdElkKEVycm9yU3RyaW5nKiwgaW50IGlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBS
ZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNzQxN2Y4ZWMwMjA3
OTQ4ZWFkZmYxMGZhNjFjZjBmY2VjYzExNzE1YS4uNzc2OTJhNTY5MWI3MzI5YWZlYzIxNTc3NmYy
OTA2OTkyM2VjZmM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgSW5zcGVjdG9yUnVudGltZUFn
ZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvclJ1bnRpbWVBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBj
b25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnMsIGNvbnN0IFN0cmluZyogY29uc3QgZnJhbWVJZCwgY29uc3QgYm9vbCogY29u
c3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCwgYm9vbCog
d2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnMsIGNvbnN0IFN0cmlu
ZyogY29uc3QgZnJhbWVJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duKQogewogICAgIFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CiAgICAgaWYgKGZyYW1lSWQpIHsKQEAgLTk3LDcgKzk3
LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICB9CiAjZW5kaWYKIAotICAgIGluamVj
dGVkU2NyaXB0LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/
ICpvYmplY3RHcm91cCA6ICIiLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29s
KHJldHVybkJ5VmFsdWUpLCAmcmVzdWx0LCB3YXNUaHJvd24pOworICAgIGluamVjdGVkU2NyaXB0
LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RH
cm91cCA6ICIiLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29sKHJldHVybkJ5
VmFsdWUpLCByZXN1bHQsIHdhc1Rocm93bik7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICAgICBpZiAocGF1c2VTdGF0ZUNoYW5nZWQpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBleHAKICNlbmRpZgogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBy
ZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0LCBib29sKiB3YXNU
aHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFs
QXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkgewpAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAg
ICBTdHJpbmcgYXJndW1lbnRzOwogICAgIGlmIChvcHRpb25hbEFyZ3VtZW50cykKICAgICAgICAg
YXJndW1lbnRzID0gKCpvcHRpb25hbEFyZ3VtZW50cyktPnRvSlNPTlN0cmluZygpOwotICAgIGlu
amVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbk9uKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZXhwcmVz
c2lvbiwgYXJndW1lbnRzLCBhc0Jvb2wocmV0dXJuQnlWYWx1ZSksICZyZXN1bHQsIHdhc1Rocm93
bik7CisgICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uT24oZXJyb3JTdHJpbmcsIG9iamVj
dElkLCBleHByZXNzaW9uLCBhcmd1bWVudHMsIGFzQm9vbChyZXR1cm5CeVZhbHVlKSwgcmVzdWx0
LCB3YXNUaHJvd24pOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVy
dGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNv
bnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJl
c3VsdCkKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29u
c3Qgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVzdWx0KQogewogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBm
cmFtZSBoYXMgZ29uZSI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0UHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIG93blByb3BlcnRpZXMgPyAq
b3duUHJvcGVydGllcyA6IGZhbHNlLCAmcmVzdWx0KTsKKyAgICBpbmplY3RlZFNjcmlwdC5nZXRQ
cm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgb3duUHJvcGVydGllcyA/ICpvd25Qcm9w
ZXJ0aWVzIDogZmFsc2UsIHJlc3VsdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpyZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRl
eCA3OWEyMDJiODlkYTcxM2M5MjM5OGQ2OGQxZjIyMGQzOTM4MDg5YmEwLi45MTQ1YzZjOGEyMjdl
OWVjZTA2OWZlMDdhMmNkN2U4N2ZlMWIyOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02NCwxNyArNjQsMTcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9ucywKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogY29uc3QgZnJhbWVJZCwKICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsCi0gICAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0LAorICAgICAgICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCwKICAgICAgICAgICAgICAgICAg
IGJvb2wqIHdhc1Rocm93bik7CiAgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyos
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdElkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxB
cmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCByZXR1
cm5CeVZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwog
ICAgIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQpOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4mIHJlc3VsdCk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJvcGVydGllcywg
UmVmUHRyPEluc3BlY3RvckFycmF5PiogcmVzdWx0KTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIHZvaWQg
cnVuKEVycm9yU3RyaW5nKik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>