<?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>127890</bug_id>
          
          <creation_ts>2014-01-29 23:33:16 -0800</creation_ts>
          <short_desc>REGRESSION(r163048): Caused many crashes, detected by EWS prior to landing (Requested by ap on #webkit).</short_desc>
          <delta_ts>2014-01-29 23:37:29 -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>127666</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973612</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 23:33:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163048 broke the build:
Caused many crashes, detected by EWS prior to landing (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973614</commentid>
    <comment_count>1</comment_count>
      <attachid>222632</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 23:33:41 -0800</bug_when>
    <thetext>Created attachment 222632
ROLLOUT of r163048

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>973617</commentid>
    <comment_count>2</comment_count>
      <attachid>222632</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 23:37:28 -0800</bug_when>
    <thetext>Comment on attachment 222632
ROLLOUT of r163048

Clearing flags on attachment: 222632

Committed r163073: &lt;http://trac.webkit.org/changeset/163073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973618</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 23:37:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222632</attachid>
            <date>2014-01-29 23:33:41 -0800</date>
            <delta_ts>2014-01-29 23:37:27 -0800</delta_ts>
            <desc>ROLLOUT of r163048</desc>
            <filename>bug-127890-20140129233341.patch</filename>
            <type>text/plain</type>
            <size>94622</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiYzdiYWQ0NWJkYjYy
MmMxZWI5OTBhZGVkMGQyMGY4NjVhY2U0OS4uODFkMTRhYjEzN2RlYTA3NWRhODQwNGQyN2IxMzZj
OTRmMWQ3Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE0LTAxLTI5ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTYzMDQ4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNjMwNDgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg5MAorCisgICAgICAgIENhdXNlZCBtYW55IGNyYXNoZXMsIGRldGVjdGVkIGJ5
IEVXUyBwcmlvciB0byBsYW5kaW5nCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgYXAgb24gI3dlYmtp
dCkuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmRpc3BsYXlO
YW1lRm9yVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmNhcHRp
b25EaXNwbGF5TW9kZSk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmluaXRVc2VyU3R5bGUpOgorICAgICAgICAq
IGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3Nl
ZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVidWlsZFRyYWNrTGlzdE1lbnUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRl
VGltZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9DYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6bm90aWZ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25EaXNw
bGF5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2Vy
UHJlZmVyc0NhcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNTdWJ0aXRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3Jp
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVT
aGVldE92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSk6CisgICAgICAgICogcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpzZXRJbnRlcmVzdGVkSW5DYXB0aW9uUHJlZmVyZW5jZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGVzdGluZ01v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VGVzdGlu
Z01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cGFnZUdy
b3VwKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp1c2VyUHJlZmVyc0NhcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp1c2VyUHJlZmVy
c1N1YnRpdGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6c2V0SW50ZXJlc3RlZEluQ2FwdGlvblByZWZlcmVuY2VDaGFuZ2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpjYXB0aW9uc1dpbmRvd0NTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNU
ZXh0Q29sb3JDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OndpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
c3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NTKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c0RlZmF1bHRGb250Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzaG91bGREaXNwbGF5VHJhY2tLaW5kKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjYXB0aW9uc1N0
eWxlU2hlZXRPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0
UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKToKKwogMjAxNC0wMS0yOSAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIElzVmlzaWJs
ZU9yT2NjbHVkZWQgdG8gVmlld1N0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCBmNjIyM2U4
ZjFhMDBlNDczYjZkMzY5OWIxZjc0MTczZmNmMmZhYzM4Li44ZGU4MGMxYzg1YmM5MWY0NTFjYjg3
NGJiZDk3M2IxZTdjYWM0ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTgyLDcgKzgyLDgg
QEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBNZWRpYUNvbnRyb2xzSG9zdDo6c29ydGVkVHJh
Y2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+KCk7CiAKLSAgICByZXR1cm4gcGFnZS0+Y2FwdGlv
blByZWZlcmVuY2VzKCkuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3QpOworICAgIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCk7CisgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+c29y
dGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3QpOwogfQogCiBTdHJpbmcgTWVkaWFDb250cm9s
c0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKQEAgLTk0LDcgKzk1
LDggQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKFRleHRU
cmFjayogdHJhY2spCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBwYWdlLT5jYXB0aW9uUHJlZmVyZW5jZXMoKS5kaXNwbGF5TmFtZUZv
clRyYWNrKHRyYWNrKTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVy
ZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOworICAgIHJldHVybiBj
YXB0aW9uUHJlZmVyZW5jZXMtPmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2spOwogfQogCiBUZXh0
VHJhY2sqIE1lZGlhQ29udHJvbHNIb3N0OjpjYXB0aW9uTWVudU9mZkl0ZW0oKQpAQCAtMTEzLDcg
KzExNSw3IEBAIEF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6Y2FwdGlvbkRpc3BsYXlN
b2RlKCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAKLSAgICBz
d2l0Y2ggKHBhZ2UtPmNhcHRpb25QcmVmZXJlbmNlcygpLmNhcHRpb25EaXNwbGF5TW9kZSgpKSB7
CisgICAgc3dpdGNoIChwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5jYXB0aW9u
RGlzcGxheU1vZGUoKSkgewogICAgIGNhc2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21h
dGljOgogICAgICAgICByZXR1cm4gYXV0b21hdGljS2V5d29yZCgpOwogICAgIGNhc2UgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Rm9yY2VkT25seToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMjgx
NzkwZmM5YjBkODJlNzA5ODkyYWIwYWUwYjQ3YTE5MWM5MmU2YS4uNGNjNDM4ZDRmMGFlMmZkZGJk
NWZhYTIzNDlkOWVkNThkZmUwZmQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTMwNjMsOSAr
MzA2Myw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMTFzZXRWaWV3TW9kZUVOUzBfOFZpZXdNb2RlRQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1fX1pON1dlYkNvcmUyMkNhcHRpb25V
c2VyUHJlZmVyZW5jZXMyOXNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlRVJLTjNXVEY2U3Ry
aW5nRQotX19aTjdXZWJDb3JlNFBhZ2UxOGNhcHRpb25QcmVmZXJlbmNlc0V2Ci1fX1pOSzdXZWJD
b3JlMjJDYXB0aW9uVXNlclByZWZlcmVuY2VzMjZjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZUV2
CitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagppbmRleCA1M2EyNDBmMjRkYTYwMTI5ZDRjODUzNDQwZmYyNTgyYTg2YWY1
MjBmLi40OGE1MDdmZTc0OWZlOWE0MjJjZjc0MDlhM2YwMzAxZDk4NTVmZDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODQsMTIg
KzY5ODQsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxhbmltYXRpb25cQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdl
XEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhZ2VcQmFyUHJvcC5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXENh
cHRpb25TdHlsZVNoZWV0TWVkaWFBRi5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xODc2NSw3ICsxODc1OSw2IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXGFuaW1hdGlvblxBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxBdXRvc2Ny
b2xsQ29udHJvbGxlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxCYXJQ
cm9wLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXENhcHRpb25TdHlsZVNo
ZWV0TWVkaWFBRi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxDYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYWdlXENocm9tZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDQ3YTAwMjgwZTU3NTE2YWVj
YzYwYzc1NzY2MWQxNDg1ODI2OTMzYTYuLjBkYWZmM2JiZTA0MGUyN2I0YThkYzJlYWIwOTZlY2I1
ODA1YjM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY3MjQsOSArNjcyNCw2IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2xcVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
Q2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmNwcCI+Ci0gICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ1MDMsOSArMTQ1MDAsNiBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsXEdMUGxhdGZvcm1TdXJm
YWNlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcQ2FwdGlv
blN0eWxlU2hlZXRNZWRpYUFGLmgiPgotICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAwYzBlYjQ5MDIyMGI1YzJmY2RhZjE3ZmU2MDQ0OWIyMzFmMzZiN2RiLi45NDFm
NzI2MzAxNTBiN2I3ZDIyOGVmYjhjMTJiMTJjZTk4ZWQ4MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjkzLDggKzIyOTMs
NiBAQAogCQk3Q0M3RTNENzE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4
dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0Uz
RDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi87IH07CiAJCTdD
RTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1
IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmNwcCAqLzsgfTsKLQkJN0NGQzMwNTkxODk1RUZBRDAwRThGNDNGIC8qIENhcHRpb25TdHlsZVNo
ZWV0TWVkaWFBRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0ZDMzA1NzE4OTVFRkFEMDBFOEY0M0YgLyogQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFG
LmNwcCAqLzsgfTsKLQkJN0NGQzMwNUExODk1RUZBRDAwRThGNDNGIC8qIENhcHRpb25TdHlsZVNo
ZWV0TWVkaWFBRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NGQzMwNTgxODk1RUZBRDAwRThGNDNGIC8qIENhcHRpb25TdHlsZVNoZWV0TWVkaWFBRi5o
ICovOyB9OwogCQk3RDc0MUJEQTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsg
fTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQw
MEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzN0VGMkUxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291
cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3Bw
ICovOyB9OwpAQCAtOTIzNiw4ICs5MjM0LDYgQEAKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3
IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSUROU2Ny
aXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNkNCRkEx
ODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtYXRDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRDb252ZXJ0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0ZDMzA1NzE4OTVFRkFEMDBFOEY0M0YgLyog
Q2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhcHRpb25TdHlsZVNoZWV0TWVkaWFBRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDRkMzMDU4MTg5NUVGQUQwMEU4RjQzRiAvKiBDYXB0aW9uU3R5bGVTaGVl
dE1lZGlhQUYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdGlvblN0eWxl
U2hlZXRNZWRpYUFGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3
RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7
IHBhdGggPSBjZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjAzNiw4ICsxNjAzMiw2IEBA
CiAJCQkJMDc5RDA4NjcxNjJGMjBFODAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aCAqLywKIAkJCQkwNzlEMDg2QTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwICovLAogCQkJCTA3OUQwODY5MTYyRjIxRjkwMERCODY1OCAvKiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oICovLAotCQkJCTdDRkMzMDU3MTg5NUVGQUQwMEU4
RjQzRiAvKiBDYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuY3BwICovLAotCQkJCTdDRkMzMDU4MTg5
NUVGQUQwMEU4RjQzRiAvKiBDYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuaCAqLywKIAkJCQkxNEQ4
MjM4QTBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCAqLywKIAkJCQkxNEQ4MjM1MDBBRjky
QTc5MDAwNEYwNTcgLyogQ2hyb21lLmggKi8sCiAJCQkJMTREODI0MDYwQUY5M0FFQjAwMDRGMDU3
IC8qIENocm9tZUNsaWVudC5oICovLApAQCAtMjI2MDUsNyArMjI1OTksNiBAQAogCQkJCUZFMTE1
RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5QTUyOEU4NDE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTRBQURFRTE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RT
UUxTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRkMzMDVBMTg5NUVGQUQwMEU4RjQz
RiAvKiBDYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFODRF
OUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTI1LDcgKzI3MTE4LDYgQEAKIAkJCQlBODEz
NjlFMTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThFQTc5RkMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxMSUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTg3MURDMjEwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxMaW5rRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0ZDMzA1OTE4OTVFRkFEMDBFOEY0M0YgLyog
Q2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3RDMy
MEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MTWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEVBN0NBQzBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0NDYxM0E0MENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwCmluZGV4IDdiNTg5OTI4NTkwZmMyN2E3OGYwYjNlNGVjNjI3Nzc0N2I4YWU1MWEuLmQwZGQz
NzQzNDU0MjM4NzdiNTEyNGM2YTFkYjZjZWU3ZTI4ZjlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RG9jdW1lbnRSdWxlU2V0cy5jcHAKQEAgLTUxLDggKzUxLDYgQEAgdm9pZCBEb2N1bWVudFJ1bGVT
ZXRzOjppbml0VXNlclN0eWxlKERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24mIHN0eWxlU2hl
ZXRDb2wKICAgICBPd25QdHI8UnVsZVNldD4gdGVtcFVzZXJTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0
ZSgpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gc3R5bGVTaGVldENv
bGxlY3Rpb24ucGFnZVVzZXJTaGVldCgpKQogICAgICAgICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldCgmcGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaXVtLCAmcmVzb2x2ZXIp
OwotICAgIGlmIChDU1NTdHlsZVNoZWV0KiBjYXB0aW9uc1N0eWxlU2hlZXQgPSBzdHlsZVNoZWV0
Q29sbGVjdGlvbi5jYXB0aW9uc1N0eWxlU2hlZXQoKSkKLSAgICAgICAgdGVtcFVzZXJTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQoJmNhcHRpb25zU3R5bGVTaGVldC0+Y29udGVudHMoKSwgbWVkaXVt
LCAmcmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5bGVT
aGVldENvbGxlY3Rpb24uaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUs
IG1lZGl1bSwgcmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMo
c3R5bGVTaGVldENvbGxlY3Rpb24uZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBVc2Vy
U3R5bGUsIG1lZGl1bSwgcmVzb2x2ZXIpOwogICAgIGlmICh0ZW1wVXNlclN0eWxlLT5ydWxlQ291
bnQoKSA+IDAgfHwgdGVtcFVzZXJTdHlsZS0+cGFnZVJ1bGVzKCkuc2l6ZSgpID4gMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCA0ZDVjOWU0
OWM4NmVmZTg1ZTc3NGEwZmU2ZWYxYTcxOGEzODA0NzlkLi4wNDJlNDRlMmNhMzdmZjc5ZmIwMzgz
YmE2ZjBmM2Y4ZDNlNjY0YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNT
U09NV3JhcHBlcnMuY3BwCkBAIC0xMDcsNyArMTA3LDYgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOjpjb2xsZWN0RnJvbURvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnRT
dHkKIHsKICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0aW9uLmFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxlY3Qoc3R5bGVTaGVldENvbGxlY3Rp
b24ucGFnZVVzZXJTaGVldCgpKTsKLSAgICBjb2xsZWN0KHN0eWxlU2hlZXRDb2xsZWN0aW9uLmNh
cHRpb25zU3R5bGVTaGVldCgpKTsKICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxlY3RGcm9t
U3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24uZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNDVhNDgzMjVhMGQwYzk0ZWVjZWU2
MzM4NzlmYzJlNjI4ZjFmNzQwLi45YzI4YzZiMmY3MGI4ZWQ2NzE0ZjcwNTFiZGNlN2MwNDAzMjE3
NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc0OCw3ICs3NDgsNiBAQCB2b2lkIERv
Y3VtZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZShDb21wYXRpYmlsaXR5TW9kZSBtb2RlKQogICAg
IGlmIChpblF1aXJrc01vZGUoKSAhPSB3YXNJblF1aXJrc01vZGUpIHsKICAgICAgICAgLy8gQWxs
IHVzZXIgc3R5bGVzaGVldHMgaGF2ZSB0byByZXBhcnNlIHVzaW5nIHRoZSBkaWZmZXJlbnQgbW9k
ZS4KICAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi5jbGVhclBhZ2VVc2VyU2hlZXQoKTsK
LSAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi5pbnZhbGlkYXRlQ2FwdGlvbnNTdHlsZVNo
ZWV0KCk7CiAgICAgICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24uaW52YWxpZGF0ZUluamVjdGVk
U3R5bGVTaGVldENhY2hlKCk7CiAgICAgfQogfQpAQCAtNDE3Miw2ICs0MTcxLDkgQEAgdm9pZCBE
b2N1bWVudDo6dW5yZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNr
cyhFbGVtZW50KiBlKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHZvaWQgRG9jdW1lbnQ6OnJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50KiBlKQog
eworICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVy
ZW5jZXMoKS0+c2V0SW50ZXJlc3RlZEluQ2FwdGlvblByZWZlcmVuY2VDaGFuZ2VzKCk7CisKICAg
ICBtX2NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRFbGVtZW50cy5hZGQoZSk7CiB9CiAKQEAgLTQx
ODIsMTEgKzQxODQsOSBAQCB2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50KiBlKQogCiB2b2lkIERvY3VtZW50OjpjYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIHsKLSAgICBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLmlu
dmFsaWRhdGVDYXB0aW9uc1N0eWxlU2hlZXQoKTsKLSAgICBzdHlsZVJlc29sdmVyQ2hhbmdlZChE
ZWZlclJlY2FsY1N0eWxlKTsKLQotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fY2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZEVsZW1lbnRzKQotICAgICAgICBlbGVtZW50LT5jYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkKCk7CisgICAgSGFzaFNldDxFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IG1f
Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZEVsZW1lbnRzLmVuZCgpOworICAgIGZvciAoSGFzaFNl
dDxFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ID0gbV9jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkRWxl
bWVudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCBjMWZhNjgyMjgzODA1
ZWY2ZjE2ODNhNGRjOGU2M2UwNWNiNzg0MzUyLi5hODM3MzFkMWJiM2M3N2ViOWY3YTk5YWRmN2Uz
ZDcxMDdlZTZkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgot
I2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGlua0VsZW1l
bnQuaCIKQEAgLTExOSw0MSArMTE4LDYgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uOjp1cGRhdGVQYWdlVXNlclNoZWV0KCkKICAgICAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29s
dmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAotQ1NTU3R5bGVTaGVldCog
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y2FwdGlvbnNTdHlsZVNoZWV0KCkKLXsKLSAg
ICB1cGRhdGVDYXB0aW9uc1N0eWxlU2hlZXQoKTsKLSAgICByZXR1cm4gbV9jYXB0aW9uc1N0eWxl
U2hlZXQuZ2V0KCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBk
YXRlQ2FwdGlvbnNTdHlsZVNoZWV0KCkKLXsKLSAgICAvLyBJZGVudGlmeSBvdXIgb3ZlcnJpZGUg
c3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwgLSBhIG5ldyBzY2hlbWUgYW5kIGEgVVVJRC4K
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFy
c2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAt
QUY1RS1BM0UwMDIzNERDMjMiKSk7Ci0KLSAgICBpZiAobV9jYXB0aW9uc1N0eWxlU2hlZXQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFBhZ2UqIG93bmluZ1BhZ2UgPSBtX2RvY3VtZW50LnBhZ2Uo
KTsKLSAgICBpZiAoIW93bmluZ1BhZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBTdHJp
bmcgY2FwdGlvbnNTdHlsZVNoZWV0VGV4dCA9IG93bmluZ1BhZ2UtPmNhcHRpb25QcmVmZXJlbmNl
cygpLmNhcHRpb25zU3R5bGVTaGVldCgpOwotICAgIGlmIChjYXB0aW9uc1N0eWxlU2hlZXRUZXh0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUGFyc2UgdGhlIHNoZWV0IGFu
ZCBjYWNoZSBpdC4KLSAgICBtX2NhcHRpb25zU3R5bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZUlubGluZShtX2RvY3VtZW50LCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwotICAgIG1fY2Fw
dGlvbnNTdHlsZVNoZWV0LT5jb250ZW50cygpLnBhcnNlU3RyaW5nKGNhcHRpb25zU3R5bGVTaGVl
dFRleHQpOwotfQotCi12b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmludmFsaWRh
dGVDYXB0aW9uc1N0eWxlU2hlZXQoKQotewotICAgIGlmIChtX2NhcHRpb25zU3R5bGVTaGVldCkg
ewotICAgICAgICBtX2NhcHRpb25zU3R5bGVTaGVldCA9IG51bGxwdHI7Ci0gICAgICAgIG1fZG9j
dW1lbnQuc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7Ci0gICAgfQotfQot
CiBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSBjb25zdAogewogICAgIHVwZGF0
ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAppbmRleCAyMWZmZWY5N2EzNTVkYjEyYmQ1NjY1
ZmM5NzU5ODZlOWIxNjc0MWNhLi5kY2VjMjA5YmJkM2YyZWJjNzAwNWQ4MDhkYzFhOTk3YTdlYjlh
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7IH0KIAogICAgIENTU1N0eWxlU2hlZXQqIHBh
Z2VVc2VyU2hlZXQoKTsKLSAgICBDU1NTdHlsZVNoZWV0KiBjYXB0aW9uc1N0eWxlU2hlZXQoKTsK
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgZG9jdW1lbnRVc2VyU3R5
bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0czsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRz
KCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3JTdHlsZVNoZWV0czsgfQogICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0
OwpAQCAtNjQsMTAgKzYzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhclBhZ2VVc2VyU2hl
ZXQoKTsKICAgICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKLSAgICAKLSAgICB2b2lkIGlu
dmFsaWRhdGVDYXB0aW9uc1N0eWxlU2hlZXQoKTsKLSAgICB2b2lkIHVwZGF0ZUNhcHRpb25zU3R5
bGVTaGVldCgpOwotCiAgICAgdm9pZCBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUo
KTsKICAgICB2b2lkIHVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCkgY29uc3Q7CiAKQEAg
LTE0Niw3ICsxNDEsNiBAQCBwcml2YXRlOgogICAgIGludCBtX3BlbmRpbmdTdHlsZXNoZWV0czsK
IAogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VVc2VyU2hlZXQ7Ci0gICAgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IG1fY2FwdGlvbnNTdHlsZVNoZWV0OwogCiAgICAgbXV0YWJsZSBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzOwogICAg
IG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9pbmplY3RlZEF1dGhvclN0
eWxlU2hlZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
YzY2MGI2NmJiYmMzYTNhNjdiYzlhOWQzN2QxNTliMjBlM2U1MTY1Yi4uMzVmMDA0Nzk4NTA0OTI2
MmZjOTI4MmMzNDc4NmM5Njk0ODExMjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1l
ZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0K
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogICAgIGlmIChkb2N1bWVudC5wYWdl
KCkpCi0gICAgICAgIG1fY2FwdGlvbkRpc3BsYXlNb2RlID0gZG9jdW1lbnQucGFnZSgpLT5jYXB0
aW9uUHJlZmVyZW5jZXMoKS5jYXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICAgICAgbV9jYXB0aW9u
RGlzcGxheU1vZGUgPSBkb2N1bWVudC5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2Vz
KCktPmNhcHRpb25EaXNwbGF5TW9kZSgpOwogI2VuZGlmCiB9CiAKQEAgLTM0MjQsNyArMzQyNCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3Qg
VHJhY2tHcm91cCYgZ3JvdXApCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y29u
ZmlndXJlVGV4dFRyYWNrR3JvdXAiKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBh
Z2UoKTsKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBw
YWdlID8gJnBhZ2UtPmNhcHRpb25QcmVmZXJlbmNlcygpIDogbnVsbHB0cjsKKyAgICBDYXB0aW9u
VXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlPyBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpIDogMDsKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpD
YXB0aW9uRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBjYXB0aW9uUHJlZmVyZW5jZXMgPyBjYXB0
aW9uUHJlZmVyZW5jZXMtPmNhcHRpb25EaXNwbGF5TW9kZSgpIDogQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6QXV0b21hdGljOwogCiAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIHRyYWNrIGluIHRoZSBn
cm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIChpZiBhbnkpLgpAQCAtMzUzNCwxMCArMzUzNCwx
MSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNrKFRleHRUcmFj
ayogdHJhY2tUb1NlbGVjdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghZG9jdW1lbnQo
KS5wYWdlKCkpCisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2Vz
ID0gZG9jdW1lbnQoKS5wYWdlKCkgPyBkb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKCFjYXB0aW9uUHJlZmVyZW5jZXMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9k
ZSBkaXNwbGF5TW9kZSA9IGRvY3VtZW50KCkucGFnZSgpLT5jYXB0aW9uUHJlZmVyZW5jZXMoKS5j
YXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9u
RGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBjYXB0aW9uUHJlZmVyZW5jZXMtPmNhcHRpb25EaXNw
bGF5TW9kZSgpOwogICAgIGlmICh0cmFja1RvU2VsZWN0ID09IFRleHRUcmFjazo6Y2FwdGlvbk1l
bnVPZmZJdGVtKCkpCiAgICAgICAgIGRpc3BsYXlNb2RlID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Rm9yY2VkT25seTsKICAgICBlbHNlIGlmICh0cmFja1RvU2VsZWN0ID09IFRleHRUcmFjazo6
Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkpCkBAIC0zNTQ1LDEzICszNTQ2LDEzIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFja1Rv
U2VsZWN0KQogICAgIGVsc2UgewogICAgICAgICBkaXNwbGF5TW9kZSA9IENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OkFsd2F5c09uOwogICAgICAgICBpZiAodHJhY2tUb1NlbGVjdC0+bGFuZ3VhZ2Uo
KS5sZW5ndGgoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jYXB0aW9uUHJlZmVy
ZW5jZXMoKS5zZXRQcmVmZXJyZWRMYW5ndWFnZSh0cmFja1RvU2VsZWN0LT5sYW5ndWFnZSgpKTsK
KyAgICAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0UHJlZmVycmVkTGFuZ3VhZ2UodHJh
Y2tUb1NlbGVjdC0+bGFuZ3VhZ2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBTZXQgbV9jYXB0
aW9uRGlzcGxheU1vZGUgaGVyZSBzbyB3ZSBkb24ndCByZWNvbmZpZ3VyZSBhZ2FpbiB3aGVuIHRo
ZSBwcmVmZXJlbmNlIGNoYW5nZWQgbm90aWZpY2F0aW9uIGNvbWVzIHRocm91Z2guCiAgICAgICAg
IG1fY2FwdGlvbkRpc3BsYXlNb2RlID0gZGlzcGxheU1vZGU7CiAgICAgfQogCi0gICAgZG9jdW1l
bnQoKS5wYWdlKCktPmNhcHRpb25QcmVmZXJlbmNlcygpLnNldENhcHRpb25EaXNwbGF5TW9kZShk
aXNwbGF5TW9kZSk7CisgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRDYXB0aW9uRGlzcGxheU1v
ZGUoZGlzcGxheU1vZGUpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRl
eHRUcmFja3MoKQpAQCAtNTI1NSw4ICs1MjU2LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpj
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0
aW9uRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblBy
ZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2RlKCk7CisKKyAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBkb2N1bWVudCgpLnBhZ2Uo
KS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CiAg
ICAgaWYgKG1fY2FwdGlvbkRpc3BsYXlNb2RlID09IGRpc3BsYXlNb2RlKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAppbmRleCAwYmQzODZhZTEzMGMxNTFlYmI3YTJkZjg0NWQ4YWI5ZTUwMTFiMGVh
Li45MWRmMmQ5N2JjMmE1MjcyOWYyMGNjMzhkMDY4MzJmMGY4YzJiZGYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogCiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5
TW9kZSBkaXNwbGF5TW9kZSA9IGRvY3VtZW50KCkucGFnZSgpLT5jYXB0aW9uUHJlZmVyZW5jZXMo
KS5jYXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0
aW9uRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CiAKICAgICBIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAgICAg
aWYgKCFtZWRpYUVsZW1lbnQpCkBAIC04OTYsOSArODk2LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIAog
ICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXMmIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCkucGFnZSgp
LT5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHRy
YWNrc0Zvck1lbnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0
cmFja0xpc3QpOworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNl
cyA9IGRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOworICAg
IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gdHJhY2tzRm9yTWVudSA9IGNhcHRpb25QcmVmZXJl
bmNlcy0+c29ydGVkVHJhY2tMaXN0Rm9yTWVudSh0cmFja0xpc3QpOwogCiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGNhcHRpb25zSGVhZGVyID0gZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KGgzVGFnLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBjYXB0aW9uc0hlYWRlci0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0KCkpKTsKQEAgLTkw
OCw3ICs5MDcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxl
bWVudDo6cmVidWlsZFRyYWNrTGlzdE1lbnUoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxl
bmd0aCA9IHRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAg
UmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tzRm9yTWVudVtpXTsKICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IG1lbnVJdGVtID0gZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KGxpVGFn
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgbWVudUl0ZW0tPmFwcGVuZENoaWxkKGRv
Y3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9y
VHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOworICAgICAgICBtZW51SXRlbS0+YXBwZW5kQ2hpbGQo
ZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShjYXB0aW9uUHJlZmVyZW5jZXMtPmRpc3BsYXlOYW1l
Rm9yVHJhY2sodGV4dFRyYWNrLmdldCgpKSkpOwogICAgICAgICBjYXB0aW9uc01lbnVMaXN0LT5h
cHBlbmRDaGlsZChtZW51SXRlbSk7CiAgICAgICAgIG1fbWVudUl0ZW1zLmFwcGVuZChtZW51SXRl
bSk7CiAgICAgICAgIG1fbWVudVRvVHJhY2tNYXAuYWRkKG1lbnVJdGVtLCB0ZXh0VHJhY2spOwpA
QCAtMTMzMiw3ICsxMzMxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50Ojp1cGRhdGVUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZmxvYXQgc21hbGxlc3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3ZpZGVvRGlz
cGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLndpZHRo
KCkpOwotICAgIGZsb2F0IGZvbnRTY2FsZSA9IGRvY3VtZW50KCkucGFnZSgpLT5jYXB0aW9uUHJl
ZmVyZW5jZXMoKS5jYXB0aW9uRm9udFNpemVTY2FsZUFuZEltcG9ydGFuY2UobV9mb250U2l6ZUlz
SW1wb3J0YW50KTsKKyAgICBmbG9hdCBmb250U2NhbGUgPSBkb2N1bWVudCgpLnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkZvbnRTaXplU2NhbGVBbmRJbXBvcnRh
bmNlKG1fZm9udFNpemVJc0ltcG9ydGFudCk7CiAgICAgbV9mb250U2l6ZSA9IGxyb3VuZGYoc21h
bGxlc3REaW1lbnNpb24gKiBmb250U2NhbGUpOwogICAgIAogICAgIEN1ZUxpc3QgYWN0aXZlQ3Vl
cyA9IG1lZGlhRWxlbWVudC0+Y3VycmVudGx5QWN0aXZlQ3VlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DYXB0aW9uU3R5bGVTaGVldE1lZGlhQUYuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNmY4NzAwY2JjYjM5ODNkMGFiMjExODIxMTM0NjhiNWI0MzkwMGVjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNhcHRpb25TdHlsZVNoZWV0TWVkaWFBRi5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
Ci0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0jaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0jaW5jbHVkZSAiQ29y
ZVRleHQvQ29yZVRleHQuaCIKLSNpbmNsdWRlIDxNZWRpYUFjY2Vzc2liaWxpdHkvTWVkaWFBY2Nl
c3NpYmlsaXR5Lmg+Ci0jZW5kaWYKLQotI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFN
RVdPUkspCi0KLSNpZiAhUExBVEZPUk0oV0lOKQotI2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1F
V09SSyhMaWIpIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoTGliKQotI2RlZmluZSBTT0ZU
X0xJTktfQVZGKExpYiwgTmFtZSwgVHlwZSkgU09GVF9MSU5LKExpYiwgTmFtZSwgVHlwZSkKLSNk
ZWZpbmUgU09GVF9MSU5LX0FWRl9QT0lOVEVSKExpYiwgTmFtZSwgVHlwZSkgU09GVF9MSU5LX1BP
SU5URVJfT1BUSU9OQUwoTGliLCBOYW1lLCBUeXBlKQotI2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZS
QU1FV09SS19JTVBPUlQoTGliLCBGdW4sIFJldHVyblR5cGUsIEFyZ3VtZW50cywgU2lnbmF0dXJl
KSBTT0ZUX0xJTksoTGliLCBGdW4sIFJldHVyblR5cGUsIEFyZ3VtZW50cywgU2lnbmF0dXJlKQot
I2Vsc2UKLQotI2lmZGVmIERFQlVHX0FMTAotI2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1FV09S
SyhMaWIpIFNPRlRfTElOS19ERUJVR19MSUJSQVJZKExpYikKLSNlbHNlCi0jZGVmaW5lIFNPRlRf
TElOS19BVkZfRlJBTUVXT1JLKExpYikgU09GVF9MSU5LX0xJQlJBUlkoTGliKQotI2VuZGlmCi0K
LSNkZWZpbmUgU09GVF9MSU5LX0FWRihMaWIsIE5hbWUsIFR5cGUpIFNPRlRfTElOS19ETExfSU1Q
T1JUKExpYiwgTmFtZSwgVHlwZSkKLSNkZWZpbmUgU09GVF9MSU5LX0FWRl9QT0lOVEVSKExpYiwg
TmFtZSwgVHlwZSkgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwoTGliLCBO
YW1lLCBUeXBlKQotI2RlZmluZSBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTGliLCBG
dW4sIFJldHVyblR5cGUsIEFyZ3VtZW50cywgU2lnbmF0dXJlKSBTT0ZUX0xJTktfRExMX0lNUE9S
VChMaWIsIEZ1biwgUmV0dXJuVHlwZSwgX19jZGVjbCwgQXJndW1lbnRzLCBTaWduYXR1cmUpCi0j
ZW5kaWYKLQotU09GVF9MSU5LX0FWRl9GUkFNRVdPUksoTWVkaWFBY2Nlc3NpYmlsaXR5KQotU09G
VF9MSU5LX0FWRl9GUkFNRVdPUksoQ29yZVRleHQpCi0KLVNPRlRfTElOS19BVkZfRlJBTUVXT1JL
X0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdy
b3VuZENvbG9yLCBDR0NvbG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4s
IE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlv
cikpCi1TT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
KmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQotU09GVF9MSU5LX0FWRl9GUkFNRVdPUktf
SU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dD
b2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQot
U09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0
aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZp
b3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQo
TWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNp
dHksIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKLVNPRlRf
TElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFw
cGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9t
YWluLCBiZWhhdmlvcikpCi1TT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nl
c3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1
cywgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQotU09GVF9M
SU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sICBNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3IgKmJlaGF2aW9yLCBNQUNhcHRpb25BcHBlYXJhbmNlRm9udFN0eWxlIGZvbnRTdHlsZSks
IChkb21haW4sIGJlaGF2aW9yLCBmb250U3R5bGUpKQotU09GVF9MSU5LX0FWRl9GUkFNRVdPUktf
SU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdl
U3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAoTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3Ip
LCAoZG9tYWluLCBiZWhhdmlvcikpCi0KLVNPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChD
b3JlVGV4dCwgQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUsICBDRlR5cGVSZWYsIChDVEZv
bnREZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGF0dHJpYnV0ZSksIChkZXNj
cmlwdG9yLCBhdHRyaWJ1dGUpKTsKLQotI2lmIFBMQVRGT1JNKFdJTikKLS8vIFRoZXNlIGFyZSBu
ZWVkZWQgb24gV2luZG93cyBkdWUgdG8gdGhlIHdheSBETExzIHdvcmsuIFdlIGRvIG5vdCBuZWVk
IHRoZW0gb24gb3RoZXIgcGxhdGZvcm1zCi0jZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5
Rm9yZWdyb3VuZENvbG9yIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3Vu
ZENvbG9yCi0jZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yIHNv
ZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yCi0jZGVmaW5lIE1B
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Igc29mdExpbmtfTUFDYXB0aW9uQXBwZWFy
YW5jZUNvcHlXaW5kb3dDb2xvcgotI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdy
b3VuZE9wYWNpdHkgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFj
aXR5Ci0jZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSBzb2Z0
TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkKLSNkZWZpbmUgTUFD
YXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFy
YW5jZUdldFdpbmRvd09wYWNpdHkKLSNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d1JvdW5kZWRDb3JuZXJSYWRpdXMgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d1JvdW5kZWRDb3JuZXJSYWRpdXMKLSNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250
RGVzY3JpcHRvckZvclN0eWxlIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERl
c2NyaXB0b3JGb3JTdHlsZQotI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VT
dHlsZSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZQotI2RlZmlu
ZSBDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZSBzb2Z0TGlua19DVEZvbnREZXNjcmlwdG9y
Q29weUF0dHJpYnV0ZQotI2VuZGlmCi0KLVNPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlVGV4dCwg
a0NURm9udE5hbWVBdHRyaWJ1dGUsIENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ1RGb250TmFtZUF0
dHJpYnV0ZSBnZXRrQ1RGb250TmFtZUF0dHJpYnV0ZSgpCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0jaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLQotc3Rh
dGljIFN0cmluZyBjYXB0aW9uc1dpbmRvd0NTUygpOwotc3RhdGljIFN0cmluZyBjYXB0aW9uc0Jh
Y2tncm91bmRDU1MoKTsKLXN0YXRpYyBTdHJpbmcgY2FwdGlvbnNUZXh0Q29sb3JDU1MoKTsKLXN0
YXRpYyBDb2xvciBjYXB0aW9uc1RleHRDb2xvcihib29sJik7Ci1zdGF0aWMgU3RyaW5nIGNhcHRp
b25zRGVmYXVsdEZvbnRDU1MoKTsKLXN0YXRpYyBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRl
eHRDb2xvcihjb25zdCBDb2xvciYpOwotc3RhdGljIFN0cmluZyB3aW5kb3dSb3VuZGVkQ29ybmVy
UmFkaXVzQ1NTKCk7Ci1zdGF0aWMgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VDU1MoKTsKLXN0YXRp
YyBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmLCBjb25zdCBDb2xvciYsIGJvb2wpOwotc3RhdGljIFN0cmluZyBjb2xvclByb3Bl
cnR5Q1NTKENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9yJiwgYm9vbCk7Ci0KLSNlbmRpZgotCi1T
dHJpbmcgZGVmYXVsdENhcHRpb25zU3R5bGVTaGVldCgpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKLQotI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElU
WV9GUkFNRVdPUkspCi0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAKLSAgICBTdHJpbmcgY2FwdGlvbnNDb2xvciA9IGNh
cHRpb25zVGV4dENvbG9yQ1NTKCk7Ci0gICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4
dEVkZ2VDU1MoKTsKLSAgICBTdHJpbmcgZm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NT
KCk7Ci0gICAgU3RyaW5nIGJhY2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKLSAg
ICBpZiAoIWJhY2tncm91bmQuaXNFbXB0eSgpIHx8ICFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8
fCAhZWRnZVN0eWxlLmlzRW1wdHkoKSB8fCAhZm9udE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93
UHNldWRvSWQoKSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgn
eycpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChiYWNrZ3JvdW5kKTsKLSAg
ICAgICAgaWYgKCFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjYXB0aW9uc0NvbG9yKTsKLSAgICAgICAgaWYgKCFl
ZGdlU3R5bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKGVkZ2VTdHlsZSk7Ci0gICAgICAgIGlmICghZm9udE5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZvbnROYW1lKTsK
LSAgICAgICAgCi0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScp
OwotICAgIH0KLSAgICAKLSAgICBTdHJpbmcgd2luZG93Q29sb3IgPSBjYXB0aW9uc1dpbmRvd0NT
UygpOwotICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dSb3VuZGVkQ29ybmVy
UmFkaXVzQ1NTKCk7Ci0gICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwgIXdpbmRvd0Nv
cm5lclJhZGl1cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKCIgdmlkZW86OiIpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgp
KTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb2xvcik7Ci0gICAgICAgIGlm
ICghd2luZG93Q29ybmVyUmFkaXVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb3JuZXJSYWRpdXMpOwotICAgICAgICAKLSAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Ci0gICAgfQotI2Vu
ZGlmIC8vIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0KLSAgICBMT0coTWVk
aWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNTdHlsZVNoZWV0T3Zl
cnJpZGVTZXR0aW5nIHN5dGxlIHRvOlxuJXMiLCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgcmV0dXJuIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LnRvU3RyaW5nKCk7Ci19Ci0KLSNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlf
RlJBTUVXT1JLKQotCi1TdHJpbmcgY2FwdGlvbnNXaW5kb3dDU1MoKQotewotICAgIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
Y29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Ioa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpKTsKLQotICAgIENvbG9yIHdpbmRv
d0NvbG9yKGNvbG9yLmdldCgpKTsKLSAgICBpZiAoIXdpbmRvd0NvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgd2luZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0KLSAgICBib29sIGltcG9y
dGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsK
LSAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7Ci0gICAgaWYgKCFp
bXBvcnRhbnQpCi0gICAgICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsKLSAgICBTdHJpbmcgd2luZG93U3R5bGUgPSBjb2xvclBy
b3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xvcih3aW5kb3dDb2xvci5y
ZWQoKSwgd2luZG93Q29sb3IuZ3JlZW4oKSwgd2luZG93Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgaW1wb3J0YW50KTsKLQotICAgIGlmICghb3BhY2l0eSkK
LSAgICAgICAgcmV0dXJuIHdpbmRvd1N0eWxlOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIuYXBwZW5kKHdpbmRvd1N0eWxlKTsKLSAgICBidWlsZGVyLmFwcGVuZChn
ZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlQYWRkaW5nKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoIjogLjRlbSAhaW1wb3J0YW50OyIpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKLX0KLQotU3RyaW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygpCi17Ci0gICAgLy8gVGhp
cyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4g
bWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVz
Ci0gICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3Io
MCwgMCwgMCwgMC44ICogMjU1KSkpOwotCi0gICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
IGJlaGF2aW9yOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihN
QUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwotICAgIENvbG9yIGJhY2tncm91bmRDb2xvcihjb2xv
ci5nZXQoKSk7Ci0gICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBi
YWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOwotCi0gICAgYm9vbCBpbXBv
cnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7
Ci0gICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRP
cGFjaXR5KGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKLSAgICBp
ZiAoIWltcG9ydGFudCkKLSAgICAgICAgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwotICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NT
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCks
IGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgaW1wb3J0YW50KTsKLX0KLQotQ29sb3IgY2FwdGlv
bnNUZXh0Q29sb3IoYm9vbCYgaW1wb3J0YW50KQotewotICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciBiZWhhdmlvcjsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9w
dENGKE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7Ci0gICAgQ29sb3IgdGV4dENvbG9yKGNvbG9y
LmdldCgpKTsKLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIC8vIFRoaXMg
ZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1l
ZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgot
ICAgICAgICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgCi0gICAgaW1wb3J0YW50ID0g
YmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwotICAgIENH
RmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eShr
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7Ci0gICAgaWYgKCFpbXBv
cnRhbnQpCi0gICAgICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJh
bmNlQmVoYXZpb3JVc2VWYWx1ZTsKLSAgICByZXR1cm4gQ29sb3IodGV4dENvbG9yLnJlZCgpLCB0
ZXh0Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFj
aXR5ICogMjU1KSk7Ci19Ci0gICAgCi1TdHJpbmcgY2FwdGlvbnNUZXh0Q29sb3JDU1MoKQotewot
ICAgIGJvb2wgaW1wb3J0YW50OwotICAgIENvbG9yIHRleHRDb2xvciA9IGNhcHRpb25zVGV4dENv
bG9yKGltcG9ydGFudCk7Ci0KLSAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgcmV0dXJuIGNvbG9yUHJvcGVydHlDU1MoQ1NT
UHJvcGVydHlDb2xvciwgdGV4dENvbG9yLCBpbXBvcnRhbnQpOwotfQotICAgIAotU3RyaW5nIHdp
bmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKQotewotICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciBiZWhhdmlvcjsKLSAgICBDR0Zsb2F0IHJhZGl1cyA9IE1BQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlciwgJmJlaGF2aW9yKTsKLSAgICBpZiAoIXJhZGl1cykKLSAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBl
bmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKSk7Ci0gICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIjolLjAyZnB4IiwgcmFkaXVzKSk7Ci0gICAg
aWYgKGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQo
JzsnKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0gICAgCi1Db2xvciBj
YXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yKQotewot
ICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwg
Q29sb3I6OndoaXRlKTsKLSAgICBpbnQgZGlzdGFuY2VGcm9tQmxhY2sgPSBkaWZmZXJlbmNlU3F1
YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjpibGFjayk7Ci0gICAgCi0gICAgaWYgKGRpc3RhbmNlRnJv
bVdoaXRlIDwgZGlzdGFuY2VGcm9tQmxhY2spCi0gICAgICAgIHJldHVybiB0ZXh0Q29sb3IuZGFy
aygpOwotICAgIAotICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKLX0KLQotU3RyaW5nIGNz
c1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpCi17Ci0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIAotICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3Bl
cnR5TmFtZVN0cmluZyhpZCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgYnVpbGRl
ci5hcHBlbmQodmFsdWUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IodGV4dENvbG9yKS5zZXJpYWxpemVk
KCkpOwotICAgIGlmIChpbXBvcnRhbnQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9y
dGFudCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0gICAgCi0gICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGNvbG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVydHlJ
RCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGltcG9ydGFudCkKLXsKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgCi0gICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKGlkKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChjb2xvci5zZXJpYWxpemVkKCkpOwotICAgIGlmIChpbXBvcnRhbnQpCi0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgIWltcG9ydGFudCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0gICAg
Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIGNhcHRpb25zVGV4
dEVkZ2VDU1MoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVSYWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHls
ZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURy
b3BTaGFkb3csICgiIC4wNzVlbSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVu
aWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAg
IGJvb2wgdW51c2VkOwotICAgIENvbG9yIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IodW51c2Vk
KTsKLSAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgY29sb3Iuc2V0TmFtZWRDb2xv
cigiYmxhY2siKTsKLSAgICBjb2xvciA9IGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNv
bG9yKTsKLQotICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKLSAgICBN
QUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gTUFDYXB0aW9u
QXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
LCAmYmVoYXZpb3IpOwotICAgIHN3aXRjaCAodGV4dEVkZ2VTdHlsZSkgewotICAgIGNhc2Uga01B
Q2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgotICAgIGNhc2Uga01BQ2Fw
dGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlTm9uZToKLSAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0gICAgICAgICAgICAKLSAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVk
Z2VTdHlsZVJhaXNlZDoKLSAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29s
b3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yLCBiZWhhdmlv
ciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwotICAgIGNhc2Uga01B
Q2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgotICAgICAgICByZXR1cm4g
Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VT
dHlsZURlcHJlc3NlZCwgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZSk7Ci0gICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5
bGVEcm9wU2hhZG93OgotICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xv
cihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURyb3BTaGFkb3csIGNvbG9yLCBiZWhh
dmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwotICAgIGNhc2Ug
a01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybToKLSAgICAgICAgcmV0dXJu
IGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
LCBlZGdlU3R5bGVVbmlmb3JtLCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFu
Y2VCZWhhdmlvclVzZVZhbHVlKTsKLSAgICAgICAgICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250Q1NT
KCkKLXsKLSAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7Ci0gICAgCi0g
ICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZvbnQgPSBhZG9wdENGKE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JGb3JTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5j
ZURvbWFpblVzZXIsICZiZWhhdmlvciwga01BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGVEZWZh
dWx0KSk7Ci0gICAgaWYgKCFmb250KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQot
ICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IG5hbWUgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JD
b3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtDVEZvbnROYW1lQXR0cmlidXRlKSk7Ci0gICAgaWYg
KCFuYW1lKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgCi0gICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCI6IFwi
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0
KCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgIGlmIChiZWhhdmlvciA9PSBrTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIgIWltcG9ydGFudCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0gICAgCi0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25TdHlsZVNoZWV0TWVkaWFBRi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNDhmYjEwMjVkZjAzNWEwNDZlNjYwZmU2ZmVkODNjMWRhM2Q5ZjVmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDYXB0aW9uU3R5bGVTaGVldE1lZGlhQUZfaAotI2Rl
ZmluZSBDYXB0aW9uU3R5bGVTaGVldE1lZGlhQUZfaAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
dHJpbmcgZGVmYXVsdENhcHRpb25zU3R5bGVTaGVldCgpOwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoVklERU9fVFJBQ0spCi0jZW5kaWYgLy8gQ2FwdGlvblN0eWxlU2hlZXRNZWRpYUFGX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDRk
YzY5OTgzMDIzMGIxOGUwN2QxYTI2YTk5ZTA0NGU0NDc0NmVkYzcuLmFkYjU3MGVhN2E2ZDg0Zjk4
ZjkyOWNlNDc3NTRiM2U2Zjk4N2IwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtMjgsMTkgKzI4LDIxIEBACiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKKyNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3Qu
aCIKKyNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpCi0g
ICAgOiBtX3RpbWVyKHRoaXMsICZDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0aW1lckZpcmVkKQor
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAm
IGdyb3VwKQorICAgIDogbV9wYWdlR3JvdXAoZ3JvdXApCiAgICAgLCBtX2Rpc3BsYXlNb2RlKEZv
cmNlZE9ubHkpCisgICAgLCBtX3RpbWVyKHRoaXMsICZDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0
aW1lckZpcmVkKQogICAgICwgbV90ZXN0aW5nTW9kZShmYWxzZSkKKyAgICAsIG1faGF2ZVByZWZl
cmVuY2VzKGZhbHNlKQogewogfQogCkBAIC01NSw2ICs1Nyw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dGltZXJGaXJlZChUaW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiYpCiAK
IHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6bm90aWZ5KCkKIHsKKyAgICBtX2hhdmVQcmVm
ZXJlbmNlcyA9IHRydWU7CiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDApOwogfQpAQCAtNjcsMzQgKzcwLDczIEBAIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpj
YXB0aW9uRGlzcGxhCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25EaXNw
bGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbW9kZSkK
IHsKICAgICBtX2Rpc3BsYXlNb2RlID0gbW9kZTsKKyAgICBpZiAobV90ZXN0aW5nTW9kZSAmJiBt
b2RlICE9IEFsd2F5c09uKSB7CisgICAgICAgIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2Up
OworICAgICAgICBzZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhmYWxzZSk7CisgICAgfQogICAgIG5v
dGlmeSgpOwogfQogCi1ib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2Fw
dGlvbnMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MpCisgICAgUGFnZSog
cGFnZSA9ICoobV9wYWdlR3JvdXAucGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxh
eUNhcHRpb25zKCk7CisgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc2hvdWxkRGlzcGxheUNh
cHRpb25zKCk7CiB9CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNT
dWJ0aXRsZXMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAordm9pZCBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKIHsKLSAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGlu
Z3MpCisgICAgUGFnZSogcGFnZSA9ICoobV9wYWdlR3JvdXAucGFnZXMoKS5iZWdpbigpKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
U2hvdWxkRGlzcGxheUNhcHRpb25zKHByZWZlcmVuY2UpOworICAgIG5vdGlmeSgpOworfQorCiti
b29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKCkgY29uc3QK
K3sKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAoKS5wYWdlcygpLmJlZ2luKCkpOworICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNldHRpbmdz
LT5zaG91bGREaXNwbGF5U3VidGl0bGVzKCk7CisgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCku
c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpOwogfQogCi1ib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJv
b2wgcHJlZmVyZW5jZSkKIHsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0
aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MpCisgICAgUGFnZSogcGFnZSA9ICoobV9wYWdlR3Jv
dXAucGFnZXMoKS5iZWdpbigpKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhwcmVmZXJlbmNl
KTsKKyAgICBub3RpZnkoKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2Vy
UHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKSBjb25zdAoreworICAgIFBhZ2UqIHBhZ2UgPSAqKG1f
cGFnZUdyb3VwLnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc2hvdWxkRGlzcGxh
eVRleHREZXNjcmlwdGlvbnMoKTsKK30KKwordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpz
ZXRVc2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQoreworICAgIFBh
Z2UqIHBhZ2UgPSAqKG1fcGFnZUdyb3VwLnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9ucyhwcmVmZXJlbmNlKTsKKyAgICBub3RpZnkoKTsKK30KIAot
ICAgIHJldHVybiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKTsKK3Zv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7
CisgICAgbV9wYWdlR3JvdXAuY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCiBWZWN0
b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBj
b25zdApAQCAtMTU0LDE5ICsxOTYsMTkgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmEKICAgICBy
ZXR1cm4gdHJhY2tzRm9yTWVudTsKIH0KIAotaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRl
eHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ssIEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CitpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGV4dFRyYWNrU2Vs
ZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0CiB7
CiAgICAgaW50IHRyYWNrU2NvcmUgPSAwOwogCiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4
dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6
c3VidGl0bGVzS2V5d29yZCgpKQogICAgICAgICByZXR1cm4gdHJhY2tTY29yZTsKICAgICAKLSAg
ICBpZiAoIXVzZXJQcmVmZXJzU3VidGl0bGVzKGVsZW1lbnQtPmRvY3VtZW50KCkpICYmICF1c2Vy
UHJlZmVyc0NhcHRpb25zKGVsZW1lbnQtPmRvY3VtZW50KCkpKQorICAgIGlmICghdXNlclByZWZl
cnNTdWJ0aXRsZXMoKSAmJiAhdXNlclByZWZlcnNDYXB0aW9ucygpKQogICAgICAgICByZXR1cm4g
dHJhY2tTY29yZTsKICAgICAKLSAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2s6OnN1
YnRpdGxlc0tleXdvcmQoKSAmJiB1c2VyUHJlZmVyc1N1YnRpdGxlcyhlbGVtZW50LT5kb2N1bWVu
dCgpKSkKKyAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdv
cmQoKSAmJiB1c2VyUHJlZmVyc1N1YnRpdGxlcygpKQogICAgICAgICB0cmFja1Njb3JlID0gMTsK
LSAgICBlbHNlIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkgJiYgdXNlclByZWZlcnNDYXB0aW9ucyhlbGVtZW50LT5kb2N1bWVudCgpKSkKKyAgICBlbHNl
IGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdXNl
clByZWZlcnNDYXB0aW9ucygpKQogICAgICAgICB0cmFja1Njb3JlID0gMTsKICAgICAKICAgICBy
ZXR1cm4gdHJhY2tTY29yZSArIHRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUodHJhY2ss
IHByZWZlcnJlZExhbmd1YWdlcygpKTsKQEAgLTE4NiwyMyArMjI4LDI1IEBAIGludCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tMYW5ndWFnZVNlbGVjdGlvblNjb3JlKFRleHRUcmFj
ayogdHJhY2ssIGNvCiAgICAgcmV0dXJuIChwcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgpIC0gbGFu
Z3VhZ2VNYXRjaEluZGV4KSAqIDEwOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Y2FwdGlvbnNTdHlsZVNoZWV0KCkKLXsKLSAgICBpZiAoIW1fY2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUuaXNFbXB0eSgpIHx8IHRlc3RpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBtX2Nh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtQ2FwdGlvbnNT
dHlsZVNoZWV0KCk7Ci19Ci0KIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkZSkKIHsKICAgICBtX2Nh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlID0gb3ZlcnJpZGU7Ci0gICAgY2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCgpOworICAgIHVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpOwogfQog
Ci1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJp
ZGUoKSBjb25zdAordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5
bGVTaGVldE92ZXJpZGUoKQogewotICAgIHJldHVybiBtX2NhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlOworICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5p
cXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlELgorICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVVJMLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJ1c2VyLWNh
cHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIpKTsK
KworICAgIG1fcGFnZUdyb3VwLnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOworCisgICAgU3RyaW5nIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsK
KyAgICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3BhZ2VHcm91cC5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0aW9uc1N0
eWxlU2hlZXRVUkwsIFZlY3RvcjxTdHJpbmc+KCksCisgICAgICAgIFZlY3RvcjxTdHJpbmc+KCks
IEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZlbCwgSW5qZWN0SW5FeGlzdGlu
Z0RvY3VtZW50cyk7CiB9CiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmltYXJ5
QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdApAQCAtMjExLDEzICsyNTUsNyBAQCBT
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92
ZXJyaWRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFn
ZU92ZXJyaWRlOwogICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2UoKTsKIH0KLQotdm9pZCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKLXsKLSAgICBQ
YWdlOjp1cGRhdGVTdHlsZUZvckFsbFBhZ2VzRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgp
OwotICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
KCk7CisgICAgCiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQogI2VuZGlmIC8vIEVOQUJM
RShWSURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgKaW5kZXggOTY5ODIxOWY1N2JiYWE0OTQxMDYyNWM0YTQ4N2UzYTQxZjhlMTlhOC4uM2U1
YTNiOWM0MGMzNDViNjNiMjFmNmQyN2RhOGNlNjA4MjFlYjc2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKQEAgLTQzLDYwICs0Myw2OSBAQCBjbGFz
cyBUZXh0VHJhY2tMaXN0OwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKIHB1Ymxp
YzoKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKCk7CisgICAgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcyhQYWdlR3JvdXAmKTsKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCk7
CiAKLSAgICBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0KCk7Ci0KICAgICBlbnVtIENhcHRpb25E
aXNwbGF5TW9kZSB7CiAgICAgICAgIEF1dG9tYXRpYywKICAgICAgICAgRm9yY2VkT25seSwKICAg
ICAgICAgQWx3YXlzT24KICAgICB9OwotCiAgICAgdmlydHVhbCBDYXB0aW9uRGlzcGxheU1vZGUg
Y2FwdGlvbkRpc3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcHRpb25E
aXNwbGF5TW9kZShDYXB0aW9uRGlzcGxheU1vZGUpOwogCiAgICAgdmlydHVhbCBpbnQgdGV4dFRy
YWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiwgSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgaW50IHRleHRUcmFja0xhbmd1YWdlU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNr
KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlclBy
ZWZlcnNDYXB0aW9ucyhEb2N1bWVudCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJl
ZmVyc1N1YnRpdGxlcyhEb2N1bWVudCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJl
ZmVyc1RleHREZXNjcmlwdGlvbnMoRG9jdW1lbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9v
bCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQ
cmVmZXJzQ2FwdGlvbnMoYm9vbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNTdWJ0
aXRsZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclByZWZlcnNTdWJ0aXRsZXMo
Ym9vbCBwcmVmZXJlbmNlKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNUZXh0
RGVzY3JpcHRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzVGV4
dERlc2NyaXB0aW9ucyhib29sIHByZWZlcmVuY2UpOwogCiAgICAgdmlydHVhbCBmbG9hdCBjYXB0
aW9uRm9udFNpemVTY2FsZUFuZEltcG9ydGFuY2UoYm9vbCYgaW1wb3J0YW50KSBjb25zdCB7IGlt
cG9ydGFudCA9IGZhbHNlOyByZXR1cm4gMC4wNWY7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5nIGNh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aW9uc1N0eWxl
U2hlZXRPdmVycmlkZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnRlcmVzdGVk
SW5DYXB0aW9uUHJlZmVyZW5jZUNoYW5nZXMoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVk
TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVm
ZXJyZWRMYW5ndWFnZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1l
Rm9yVHJhY2soVGV4dFRyYWNrKikgY29uc3Q7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopOwogCi0gICAg
dm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Ci0KLSAgICAvLyBUaGVzZSBhcmUgdXNl
ZCBmb3IgdGVzdGluZyBtb2RlIG9ubHkuCi0gICAgdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZShjb25zdCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3Zl
cnJpZGUoKSBjb25zdDsKICAgICB2b2lkIHNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVy
cmlkZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKSB7IG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFn
ZU92ZXJyaWRlID0gbGFuZ3VhZ2U7ICB9CiAgICAgU3RyaW5nIHByaW1hcnlBdWRpb1RyYWNrTGFu
Z3VhZ2VPdmVycmlkZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VGVzdGluZ01vZGUoYm9vbCBvdmVy
cmlkZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7IH0KLSAgICBib29sIHRlc3RpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9kZTsgfQorCisgICAgdmlydHVhbCBib29sIHRl
c3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9kZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXN0aW5nTW9kZShib29sIG92ZXJyaWRlKSB7IG1fdGVzdGluZ01vZGUgPSBvdmVy
cmlkZTsgfQogICAgIAorICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlR3JvdXA7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlQ2FwdGlvblN0eWxl
U2hlZXRPdmVyaWRlKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM+Jik7CiAgICAgdm9pZCBub3RpZnkoKTsKIAotICAgIHZpcnR1
YWwgU3RyaW5nIHBsYXRmb3JtQ2FwdGlvbnNTdHlsZVNoZWV0KCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLQotICAgIFRpbWVyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fdGltZXI7Ci0KLSAgICAv
LyBUaGVzZSBhcmUgdXNlZCBmb3IgdGVzdGluZyBtb2RlIG9ubHkuCisgICAgUGFnZUdyb3VwJiBt
X3BhZ2VHcm91cDsKICAgICBDYXB0aW9uRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZTsKKyAgICBU
aW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiBtX3RpbWVyOwogICAgIFN0cmluZyBtX3VzZXJQ
cmVmZXJyZWRMYW5ndWFnZTsKICAgICBTdHJpbmcgbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlk
ZTsKICAgICBTdHJpbmcgbV9wcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGU7CiAgICAg
Ym9vbCBtX3Rlc3RpbmdNb2RlOworICAgIGJvb2wgbV9oYXZlUHJlZmVyZW5jZXM7CiB9OwotCisg
ICAgCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBlOTI4MTVlNDhhMzBkY2RkZGUwMTM0N2Vi
YzliNTJiY2UzOWI4ZTQyLi41NTAyNmQzODNjMjJmZTgxYzk2YmM2YmFiNmVjNWQwYjY5ZGRkZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcApAQCAtMjksNyArMjksOSBAQAogCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuaCIKIAotI2luY2x1ZGUgIkNhcHRpb25TdHlsZVNoZWV0TWVkaWFB
Ri5oIgorI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisjaW5jbHVkZSAi
Q29yZVRleHQvQ29yZVRleHQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQw
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRleHRUcmFj
a0N1ZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJVc2VyU3R5bGVT
aGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC03
Myw1MSArNzYsNzQgQEAKICNlbmRpZgogCiBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SSyhNZWRpYUFj
Y2Vzc2liaWxpdHkpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SSyhDb3JlVGV4dCkKIAogU09GVF9M
SU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUdldERpc3BsYXlUeXBlLCBNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGUsIChN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKQogU09GVF9MSU5LX0FW
Rl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5j
ZVNldERpc3BsYXlUeXBlLCB2b2lkLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4s
IE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSksIChkb21haW4sIGRp
c3BsYXlUeXBlKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChNZWRpYUFjY2Vzc2li
aWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yLCBDR0NvbG9yUmVm
LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VC
ZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZUX0xJTktfQVZGX0ZS
QU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29w
eUJhY2tncm91bmRDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4g
ZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwg
YmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciwgQ0dDb2xvclJlZiwgKE1B
Q2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZp
b3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdP
UktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVn
cm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4s
IE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlv
cikpCitTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpi
ZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKK1NPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lN
UE9SVChNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFj
aXR5LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCitTT0ZU
X0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cywgQ0dGbG9hdCwgKE1BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJl
aGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1Q
T1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3Jp
cHRvckZvclN0eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURv
bWFpbiBkb21haW4sICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yLCBNQUNh
cHRpb25BcHBlYXJhbmNlRm9udFN0eWxlIGZvbnRTdHlsZSksIChkb21haW4sIGJlaGF2aW9yLCBm
b250U3R5bGUpKQorU09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSwgQ0dGbG9h
dCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNl
QmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQorU09GVF9MSU5LX0FWRl9G
UkFNRVdPUktfSU1QT1JUKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dFRleHRFZGdlU3R5bGUsIE1BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlLCAoTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAq
YmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpCiBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19J
TVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQWRkU2VsZWN0ZWRM
YW5ndWFnZSwgYm9vbCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBDRlN0cmlu
Z1JlZiBsYW5ndWFnZSksIChkb21haW4sIGxhbmd1YWdlKSk7CiBTT0ZUX0xJTktfQVZGX0ZSQU1F
V09SS19JTVBPUlQoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVNl
bGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBk
b21haW4pLCAoZG9tYWluKSk7CiBTT0ZUX0xJTktfQVZGX0ZSQU1FV09SS19JTVBPUlQoTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVByZWZlcnJlZENhcHRpb25pbmdN
ZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluIGRvbWFpbiksIChkb21haW4pKTsKLVNPRlRfTElOS19BVkZfRlJBTUVXT1JLX0lNUE9SVChN
ZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3Rl
clNpemUsIENHRmxvYXQsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKKwor
U09GVF9MSU5LX0FWRl9GUkFNRVdPUktfSU1QT1JUKENvcmVUZXh0LCBDVEZvbnREZXNjcmlwdG9y
Q29weUF0dHJpYnV0ZSwgIENGVHlwZVJlZiwgKENURm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRv
ciwgQ0ZTdHJpbmdSZWYgYXR0cmlidXRlKSwgKGRlc2NyaXB0b3IsIGF0dHJpYnV0ZSkpOwogCiAj
aWYgUExBVEZPUk0oV0lOKQogLy8gVGhlc2UgYXJlIG5lZWRlZCBvbiBXaW5kb3dzIGR1ZSB0byB0
aGUgd2F5IERMTHMgd29yay4gV2UgZG8gbm90IG5lZWQgdGhlbSBvbiBvdGhlciBwbGF0Zm9ybXMK
ICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldERpc3BsYXlUeXBlIHNvZnRMaW5rX01BQ2Fw
dGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5VHlwZQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNl
U2V0RGlzcGxheVR5cGUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZVNldERpc3BsYXlUeXBl
CisjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yIHNvZnRMaW5r
X01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yCisjZGVmaW5lIE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yIHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5QmFja2dyb3VuZENvbG9yCisjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2lu
ZG93Q29sb3Igc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcgorI2Rl
ZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkgc29mdExpbmtfTUFD
YXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5CisjZGVmaW5lIE1BQ2FwdGlvbkFw
cGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSBzb2Z0TGlua19NQUNhcHRpb25BcHBlYXJhbmNl
R2V0QmFja2dyb3VuZE9wYWNpdHkKKyNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d09wYWNpdHkgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkKKyNk
ZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXMgc29m
dExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXMKKyNk
ZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlIHNvZnRM
aW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JGb3JTdHlsZQorI2RlZmlu
ZSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplIHNvZnRMaW5rX01B
Q2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUKKyNkZWZpbmUgTUFDYXB0
aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5j
ZUdldFRleHRFZGdlU3R5bGUKICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVk
TGFuZ3VhZ2Ugc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3VhZ2UK
ICNkZWZpbmUgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyBzb2Z0TGlu
a19NQUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzCiAjZGVmaW5lIE1BQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNz
IHNvZnRMaW5rX01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlh
Q2hhcmFjdGVyaXN0aWNzCi0jZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNo
YXJhY3RlclNpemUgc29mdExpbmtfTUFDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFj
dGVyU2l6ZQorI2RlZmluZSBDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZSBzb2Z0TGlua19D
VEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZQogI2VuZGlmCiAKIFNPRlRfTElOS19BVkZfUE9J
TlRFUihNZWRpYUFjY2Vzc2liaWxpdHksIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtNQVhDYXB0aW9uQXBwZWFy
YW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiBnZXRrTUFYQ2FwdGlvbkFwcGVhcmFuY2VT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKQogCitTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29y
ZVRleHQsIGtDVEZvbnROYW1lQXR0cmlidXRlLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NURm9u
dE5hbWVBdHRyaWJ1dGUgZ2V0a0NURm9udE5hbWVBdHRyaWJ1dGUoKQogI2VuZGlmCiAKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09S
SykKIHN0YXRpYyB2b2lkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9u
Q2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmlu
Z1JlZiwgY29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYpCiB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBzdGF0aWNfY2FzdDxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRio+KG9ic2Vy
dmVyKS0+Y2FwdGlvbkFwcGVyZW5jZUNoYW5nZWQoKTsKKyAgICBzdGF0aWNfY2FzdDxDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRio+KG9ic2VydmVyKS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZCgpOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYqPihvYnNlcnZlciktPmNhcHRpb25BcHBlcmVu
Y2VDaGFuZ2VkKCk7CisgICAgICAgIHN0YXRpY19jYXN0PENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGKj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgfSk7
CiAjZW5kaWYKIH0KICNlbmRpZgogCi1DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYoKQoteworQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGKFBhZ2VHcm91cCYgZ3JvdXApCisg
ICAgOiBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKQogI2lmIEhBVkUoTUVESUFfQUNDRVNT
SUJJTElUWV9GUkFNRVdPUkspCi0gICAgaWYgKE1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSAm
JiBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pCi0gICAg
ICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJH
ZXRMb2NhbENlbnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlm
aWNhdGlvbkNhbGxiYWNrLCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24sIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOwor
ICAgICwgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyhmYWxzZSkKICNlbmRpZgorewog
fQogCiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6fkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGKCkKQEAgLTEzMCwxNSArMTU2LDYgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6On5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRigpCiAKICNpZiBIQVZFKE1FRElB
X0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQogCi12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uQXBwZXJlbmNlQ2hhbmdlZCgpCi17Ci0gICAgLy8gSW52YWxpZGF0ZSB0
aGUgY2FwdGlvbiBzdHlsZSBzaGVldC4KLSAgICBtX2NhcHRpb25TdHlsZVNoZWV0ID0gU3RyaW5n
KCk7Ci0KLSAgICAvLyBUZWxsIHRoZSBiYXNlIGNsYXNzIHRvIGludmFsaWRhdGUgYWxsIHRoZSB1
c2VzIG9mIGl0LgotICAgIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKLX0KLQogQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uRGlzcGxheU1vZGUoKSBjb25zdAogewogICAgIGlmICh0ZXN0aW5n
TW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCkBAIC0xODksOSArMjA2LDkg
QEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0Q2FwdGlvbkRpc3BsYXlN
b2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXMKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlU2V0RGlz
cGxheVR5cGUoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCBkaXNwbGF5VHlwZSk7CiB9
CiAKLWJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnVzZXJQcmVmZXJzQ2FwdGlv
bnMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRjo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0CiB7Ci0gICAgYm9vbCBjYXB0aW9u
U2V0dGluZyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoZG9j
dW1lbnQpOworICAgIGJvb2wgY2FwdGlvblNldHRpbmcgPSBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgaWYgKGNhcHRpb25TZXR0aW5nIHx8IHRlc3Rp
bmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJu
IGNhcHRpb25TZXR0aW5nOwogICAgIApAQCAtMTk5LDkgKzIxNiw5IEBAIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoRG9jdW1lbnQmIGRvY3Vt
ZW50KSBjb25zCiAgICAgcmV0dXJuIGNhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyAmJiBD
RkFycmF5R2V0Q291bnQoY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0aWNzLmdldCgpKTsKIH0K
IAotYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6dXNlclByZWZlcnNTdWJ0aXRs
ZXMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRjo6dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdAogewotICAgIGJvb2wgc3VidGl0
bGVzU2V0dGluZyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVz
KGRvY3VtZW50KTsKKyAgICBib29sIHN1YnRpdGxlc1NldHRpbmcgPSBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjp1c2VyUHJlZmVyc1N1YnRpdGxlcygpOwogICAgIGlmIChzdWJ0aXRsZXNTZXR0aW5n
IHx8IHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAg
ICAgcmV0dXJuIHN1YnRpdGxlc1NldHRpbmc7CiAgICAgCkBAIC0yMDksNiArMjI2LDIyMiBAQCBi
b29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp1c2VyUHJlZmVyc1N1YnRpdGxlcyhE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbgogICAgIHJldHVybiAhKGNhcHRpb25pbmdNZWRpYUNoYXJh
Y3RlcmlzdGljcyAmJiBDRkFycmF5R2V0Q291bnQoY2FwdGlvbmluZ01lZGlhQ2hhcmFjdGVyaXN0
aWNzLmdldCgpKSk7CiB9CiAKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNl
dEludGVyZXN0ZWRJbkNhcHRpb25QcmVmZXJlbmNlQ2hhbmdlcygpCit7CisgICAgaWYgKCFNZWRp
YUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgha01B
WENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMpIHsKKyAg
ICAgICAgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2Nh
bENlbnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24sIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgICAg
ICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQor
eworICAgIGlmIChtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKQorICAgICAgICB1cGRh
dGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKKworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKworU3RyaW5nIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1dpbmRvd0NTUygpIGNvbnN0Cit7CisgICAgTUFD
YXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworICAgIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjb2xvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcihr
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworCisgICAgQ29sb3Ig
d2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgp
KQorICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKworICAgIGJvb2wg
aW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZh
bHVlOworICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dP
cGFjaXR5KGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICBp
ZiAoIWltcG9ydGFudCkKKyAgICAgICAgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOworICAgIFN0cmluZyB3aW5kb3dTdHlsZSA9IGNv
bG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yKHdpbmRvd0Nv
bG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRp
Y19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQpOworCisgICAgaWYgKCFvcGFj
aXR5KQorICAgICAgICByZXR1cm4gd2luZG93U3R5bGU7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQod2luZG93U3R5bGUpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eVBhZGRpbmcpKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgiOiAuNGVtICFpbXBvcnRhbnQ7Iik7CisKKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVl
IG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5j
c3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCisgICAgLy8gYW5kIHdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3IoMCwgMCwgMCwgMC44ICog
MjU1KSkpOworCisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOworCisg
ICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJh
bmNlQ29weUJhY2tncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZi
ZWhhdmlvcikpOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcihjb2xvci5nZXQoKSk7CisgICAg
aWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOworCisgICAgYm9vbCBpbXBvcnRhbnQgPSBiZWhhdmlv
ciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CisgICAgQ0dGbG9hdCBv
cGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KGtNQUNhcHRp
b25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICBpZiAoIWltcG9ydGFudCkK
KyAgICAgICAgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvclVzZVZhbHVlOworICAgIHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xv
ci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNp
dHkgKiAyNTUpKSwgaW1wb3J0YW50KTsKK30KKworQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QKK3sKKyAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgUmV0YWluUHRyPENH
Q29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91
bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOworICAg
IENvbG9yIHRleHRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxp
ZCgpKQorICAgICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0
aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10
ZXh0LXRyYWNrLWNvbnRhaW5lci4KKyAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOwor
ICAgIAorICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZTsKKyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNl
R2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVo
YXZpb3IpOworICAgIGlmICghaW1wb3J0YW50KQorICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlv
ciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CisgICAgcmV0dXJuIENv
bG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9yLmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCks
IHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOworfQorICAgIAorU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRDb2xvckNTUygpIGNvbnN0Cit7
CisgICAgYm9vbCBpbXBvcnRhbnQ7CisgICAgQ29sb3IgdGV4dENvbG9yID0gY2FwdGlvbnNUZXh0
Q29sb3IoaW1wb3J0YW50KTsKKworICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gY29sb3JQcm9wZXJ0eUNTUyhD
U1NQcm9wZXJ0eUNvbG9yLCB0ZXh0Q29sb3IsIGltcG9ydGFudCk7Cit9CisgICAgCitTdHJpbmcg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OndpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXND
U1MoKSBjb25zdAoreworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsK
KyAgICBDR0Zsb2F0IHJhZGl1cyA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dSb3VuZGVk
Q29ybmVyUmFkaXVzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsK
KyAgICBpZiAoIXJhZGl1cykKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKSk7CisgICAgYnVpbGRlci5hcHBlbmQoU3Ry
aW5nOjpmb3JtYXQoIjolLjAyZnB4IiwgcmFkaXVzKSk7CisgICAgaWYgKGJlaGF2aW9yID09IGtN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiAhaW1wb3J0YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKworICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCitDb2xvciBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6Y2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRl
eHRDb2xvcikgY29uc3QKK3sKKyAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNl
U3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7CisgICAgaW50IGRpc3RhbmNlRnJvbUJs
YWNrID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOworICAgIAor
ICAgIGlmIChkaXN0YW5jZUZyb21XaGl0ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQorICAgICAgICBy
ZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsKKyAgICAKKyAgICByZXR1cm4gdGV4dENvbG9yLmxpZ2h0
KCk7Cit9CisKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBDb2xvciYgdGV4dENvbG9yLCBib29sIGltcG9ydGFudCkgY29uc3QKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVy
dHlOYW1lU3RyaW5nKGlkKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh2YWx1ZSk7CisgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFw
cGVuZChjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNlcmlhbGl6ZWQo
KSk7CisgICAgaWYgKGltcG9ydGFudCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0
YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNvbG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yLCBi
b29sIGltcG9ydGFudCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
CisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFwcGVuZChjb2xvci5zZXJpYWxpemVkKCkp
OworICAgIGlmIChpbXBvcnRhbnQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFu
dCIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgCisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBlZGdlU3R5bGVEZXByZXNzZWQsICgiIC4wNWVtIC4wNWVtIDAgIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBlZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisKKyAgICBib29sIHVudXNlZDsKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25z
VGV4dENvbG9yKHVudXNlZCk7CisgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGNv
bG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7CisgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xv
ckZvclRleHRDb2xvcihjb2xvcik7CisKKyAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
YmVoYXZpb3I7CisgICAgTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VT
dHlsZSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKKyAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUp
IHsKKyAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZDoK
KyAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZU5vbmU6CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgCisgICAgY2FzZSBrTUFDYXB0aW9u
QXBwZWFyYW5jZVRleHRFZGdlU3R5bGVSYWlzZWQ6CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0
eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2Vk
LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVl
KTsKKyAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoK
KyAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNzZWQsIGNvbG9yLCBiZWhhdmlvciA9PSBrTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOworICAgIGNhc2Uga01BQ2FwdGlvbkFwcGVh
cmFuY2VUZXh0RWRnZVN0eWxlRHJvcFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEcm9wU2hh
ZG93LCBjb2xvciwgYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZh
bHVlKTsKKyAgICBjYXNlIGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZVVuaWZvcm06
CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29sb3IsIGJlaGF2aW9yID09IGtN
QUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSk7CisgICAgICAgICAgICAKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKSBjb25zdAor
eworICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICAKKyAgICBS
ZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udCA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9t
YWluVXNlciwgJmJlaGF2aW9yLCBrTUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQp
KTsKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAg
UmV0YWluUHRyPENGVHlwZVJlZj4gbmFtZSA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlB
dHRyaWJ1dGUoZm9udC5nZXQoKSwga0NURm9udE5hbWVBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIW5h
bWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJp
bmcoQ1NTUHJvcGVydHlGb250RmFtaWx5KSk7CisgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsK
KyAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4obmFtZS5nZXQoKSkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CisgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAh
aW1wb3J0YW50Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y2FwdGlvbkZvbnRTaXplU2NhbGVBbmRJbXBvcnRhbmNlKGJvb2wmIGltcG9ydGFudCkg
Y29uc3QKIHsKICAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGli
cmFyeSgpKQpAQCAtMjc0LDYgKzUwNyw1OCBAQCBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKIH0KICNlbmRpZiAv
LyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQogCitTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QK
K3sKKyAgICBpZiAodGVzdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAgCisgICAgU3RyaW5n
QnVpbGRlciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKKworI2lmIEhBVkUoTUVESUFfQUND
RVNTSUJJTElUWV9GUkFNRVdPUkspCisgICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5
KCkpCisgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uc1N0eWxl
U2hlZXRPdmVycmlkZSgpOworICAgIAorICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlv
bnNUZXh0Q29sb3JDU1MoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRn
ZUNTUygpOworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKTsK
KyAgICBTdHJpbmcgYmFja2dyb3VuZCA9IGNhcHRpb25zQmFja2dyb3VuZENTUygpOworICAgIGlm
ICghYmFja2dyb3VuZC5pc0VtcHR5KCkgfHwgIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpIHx8ICFl
ZGdlU3R5bGUuaXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1
ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7
CisgICAgICAgIAorICAgICAgICBpZiAoIWJhY2tncm91bmQuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGJhY2tncm91bmQpOworICAgICAg
ICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNhcHRpb25zQ29sb3IpOworICAgICAgICBpZiAoIWVkZ2VT
dHlsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoZWRnZVN0eWxlKTsKKyAgICAgICAgaWYgKCFmb250TmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZm9udE5hbWUpOworICAg
ICAgICAKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7Cisg
ICAgfQorICAgIAorICAgIFN0cmluZyB3aW5kb3dDb2xvciA9IGNhcHRpb25zV2luZG93Q1NTKCk7
CisgICAgU3RyaW5nIHdpbmRvd0Nvcm5lclJhZGl1cyA9IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRp
dXNDU1MoKTsKKyAgICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHkoKSB8fCAhd2luZG93Q29ybmVy
UmFkaXVzLmlzRW1wdHkoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAg
CisgICAgICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0NvbG9yKTsKKyAgICAgICAgaWYgKCF3
aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlk
ZVN0eWxlU2hlZXQuYXBwZW5kKHdpbmRvd0Nvcm5lclJhZGl1cyk7CisgICAgICAgIAorICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisjZW5kaWYg
Ly8gSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKworICAgIExPRyhNZWRpYSwg
IkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlk
ZVNldHRpbmcgc3l0bGUgdG86XG4lcyIsIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQudG9TdHJpbmcoKTsKK30KIAogc3RhdGljIFN0cmluZyBsYW5ndWFnZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZUNvZGUpCiB7CkBAIC0zNTAsMTQgKzYzNSw2IEBAIHN0YXRp
YyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShUZXh0VHJhY2sqIHRyYWNrKQogICAgIHJldHVybiBk
aXNwbGF5TmFtZS50b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OnBsYXRmb3JtQ2FwdGlvbnNTdHlsZVNoZWV0KCkKLXsKLSAgICBpZiAoIW1fY2Fw
dGlvblN0eWxlU2hlZXQpCi0gICAgICAgIG1fY2FwdGlvblN0eWxlU2hlZXQgPSBkZWZhdWx0Q2Fw
dGlvbnNTdHlsZVNoZWV0KCk7Ci0KLSAgICByZXR1cm4gbV9jYXB0aW9uU3R5bGVTaGVldDsKLX0K
LQogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpkaXNwbGF5TmFtZUZvclRy
YWNrKFRleHRUcmFjayogdHJhY2spIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRyYWNrRGlzcGxheU5h
bWUodHJhY2spOwpAQCAtMzY3LDcgKzY0NCw3IEBAIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNCiB7
CiAgICAgQ2FwdGlvbkRpc3BsYXlNb2RlIGRpc3BsYXlNb2RlID0gY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgYm9vbCBsZWdhY3lPdmVycmlkZSA9IG1lZGlhRWxlbWVudC0+d2Via2l0Q2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKCk7Ci0gICAgaWYgKGRpc3BsYXlNb2RlID09IEFsd2F5c09uICYmICgh
dXNlclByZWZlcnNTdWJ0aXRsZXMobWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKSAmJiAhdXNlclBy
ZWZlcnNDYXB0aW9ucyhtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkpICYmICFsZWdhY3lPdmVycmlk
ZSkpCisgICAgaWYgKGRpc3BsYXlNb2RlID09IEFsd2F5c09uICYmICghdXNlclByZWZlcnNTdWJ0
aXRsZXMoKSAmJiAhdXNlclByZWZlcnNDYXB0aW9ucygpICYmICFsZWdhY3lPdmVycmlkZSkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6Y2Fw
dGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6Zm9yY2VkS2V5d29yZCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQyNyw3ICs3MDQsNyBAQCBpbnQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ss
IEhUTQogCiAgICAgaW50IHRyYWNrU2NvcmUgPSAwOwogCi0gICAgaWYgKHVzZXJQcmVmZXJzQ2Fw
dGlvbnMobWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKSkgeworICAgIGlmICh1c2VyUHJlZmVyc0Nh
cHRpb25zKCkpIHsKICAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBwcmVmZXJzIGFjY2Vzc2libGl0
eSB0cmFja3MsIHJhbmsgaXMgU0RILCB0aGVuIENDLCB0aGVuIHN1YnRpdGxlcy4KICAgICAgICAg
aWYgKHRyYWNrLT5raW5kKCkgPT0gdHJhY2stPnN1YnRpdGxlc0tleXdvcmQoKSkKICAgICAgICAg
ICAgIHRyYWNrU2NvcmUgPSAxOwpAQCAtNDg5LDcgKzc2Niw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZv
ck1lbnUoCiAKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHRyYWNrc0Zvck1lbnU7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IGxhbmd1YWdlc0luY2x1ZGVkOwotICAgIGJvb2wgcHJlZmVyc0Fj
Y2Vzc2liaWxpdHlUcmFja3MgPSB1c2VyUHJlZmVyc0NhcHRpb25zKHRyYWNrTGlzdC0+bWVkaWFF
bGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIGJvb2wgcHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFj
a3MgPSB1c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgYm9vbCBmaWx0ZXJUcmFja0xpc3QgPSBz
aG91bGRGaWx0ZXJUcmFja01lbnUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0
aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtNTcxLDcgKzg0
OCw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoCiAKICAgICByZXR1cm4gdHJhY2tzRm9yTWVu
dTsKIH0KLQorICAgIAogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oCmlu
ZGV4IDEzYTM4Njk4MTE1OWY5N2Y1MWFlMjBhM2NkM2IxNTU5NmMzZmE2NmEuLjgyM2Y4YWEzZmEz
MmM2MDU5YTkzODRlNmQxMDQ2ODMxOTA2N2QzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgKQEAgLTM3LDM1ICszNyw1MCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGIDogcHVibGljIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMgewogcHVibGljOgotICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGKCk7CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYoUGFnZUdyb3VwJik7CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYoKTsKIAogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAg
dm9pZCBjYXB0aW9uQXBwZXJlbmNlQ2hhbmdlZCgpOwotCiAgICAgdmlydHVhbCBDYXB0aW9uRGlz
cGxheU1vZGUgY2FwdGlvbkRpc3BsYXlNb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uRGlzcGxheU1vZGUpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoRG9jdW1lbnQmKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNTdWJ0aXRsZXMoRG9jdW1l
bnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9u
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxl
cygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVT
Y2FsZUFuZEltcG9ydGFuY2UoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCB2
b2lkIHNldEludGVyZXN0ZWRJbkNhcHRpb25QcmVmZXJlbmNlQ2hhbmdlcygpIG92ZXJyaWRlOwor
CiAgICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZCgpIG92ZXJyaWRlOworCiAgICAgYm9vbCBzaG91bGRGaWx0ZXJUcmFja01lbnUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAjZWxzZQogICAgIGJvb2wgc2hvdWxkRmlsdGVyVHJhY2tNZW51
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBTdHJpbmcg
cGxhdGZvcm1DYXB0aW9uc1N0eWxlU2hlZXQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgaW50IHRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayosIEhUTUxNZWRpYUVsZW1l
bnQqKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
Pj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0Kikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9jYXB0aW9uU3R5bGVTaGVldDsKKyNpZiBI
QVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQorICAgIFN0cmluZyBjYXB0aW9uc1dp
bmRvd0NTUygpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc0JhY2tncm91bmRDU1MoKSBjb25z
dDsKKyAgICBTdHJpbmcgY2FwdGlvbnNUZXh0Q29sb3JDU1MoKSBjb25zdDsKKyAgICBDb2xvciBj
YXB0aW9uc1RleHRDb2xvcihib29sJikgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zRGVmYXVs
dEZvbnRDU1MoKSBjb25zdDsKKyAgICBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xv
cihjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFN0cmluZyB3aW5kb3dSb3VuZGVkQ29ybmVyUmFk
aXVzQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VDU1MoKSBjb25zdDsK
KyAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0OworICAgIFN0cmluZyBjb2xv
clByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9yJiwgYm9vbCkgY29uc3Q7CisK
KyAgICBib29sIG1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXM7CisjZW5kaWYKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhlNzU3YzM5ZDRhOWZhNjlhMmYyOTczMjRkYzRhYmIy
MzY3ZmNhYjEuLmQ0NjM4ZTlkMGNlMzU3MzZkZjM3MmMzNDgyMTcxZTc2YTliOGNmMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtOTIsMTQgKzkyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IEhBVkUo
TUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0jaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuaCIKLSNlbHNlCi0jaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oIgotI2VuZGlmCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFz
aFNldDxQYWdlKj4qIGFsbFBhZ2VzOwpAQCAtMTUwMSwyOCArMTQ5Myw2IEBAIHZvaWQgUGFnZTo6
aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25TdGF0ZUNoYW5nZWQoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1DYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQYWdlOjpj
YXB0aW9uUHJlZmVyZW5jZXMoKQotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUg
YSBzaW5nbGV0b24uCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IEhB
VkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPiBwcmVmZXJlbmNlczsKLSNlbHNlCi0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IHByZWZlcmVu
Y2VzOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcHJlZmVyZW5jZXM7Ci19Ci0KLXZvaWQgUGFnZTo6
dXBkYXRlU3R5bGVGb3JBbGxQYWdlc0ZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQotewot
ICAgIGlmICghYWxsUGFnZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byBwYWdl
IDogKmFsbFBhZ2VzKQotICAgICAgICBwYWdlLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
Ci19Ci0KLQogdm9pZCBQYWdlOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIHsKICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZTViNTA3MDYxMjQ5MTljZmZh
ODA4NTlhNjc5MzNhNGJkYzg1YWU5MS4uZjBiMzMxNzM3Njc1ODA2Nzk1YWRiYmQ1NzQ3YWE0MzJm
ZTQzZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYxLDcgKzYxLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQmFja0ZvcndhcmRDb250
cm9sbGVyOwogY2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7Ci1jbGFzcyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOwogY2xhc3MgQ2hyb21lOwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ2xpZW50
UmVjdExpc3Q7CkBAIC00MDMsOCArNDAyLDYgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxQYWdlc0Zv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
JiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsKICAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggNzA5YTZiYTFi
YWQ4NzVjMDM1YzIyOGVmMjM1OWIwMGQ4NzNjZTBmNy4uOGExY2QyMDgxZGZhZjlhYjAzMDcyNmIy
OGY1OGRhZDFiOTc4YzIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtNDIsNiAr
NDIsMTQgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIChQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJB
TUVXT1JLKQorI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgiCisjZWxz
ZQorI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKKyNlbmRpZgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHVuc2lnbmVkIGdldFVuaXF1ZUlkZW50aWZp
ZXIoKQpAQCAtMzAyLDQgKzMxMCwyNiBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlQWxsVXNlckNv
bnRlbnQoKQogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVBbGxVc2VyQ29udGVu
dCgpOwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQordm9pZCBQYWdlR3JvdXA6OmNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGZvciAoYXV0byBpdCA9IG1fcGFnZXMuYmVn
aW4oKSwgZW5kID0gbV9wYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0
KS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFn
ZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKK3sKKyAgICBpZiAoIW1fY2Fw
dGlvblByZWZlcmVuY2VzKSB7CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykp
IHx8IEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCisgICAgICAgIG1fY2FwdGlv
blByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRj4oKnRoaXMpOworI2Vsc2UKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHJldHVybiBtX2NhcHRpb25QcmVmZXJlbmNlcy5nZXQoKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCAwNmNi
MmU5MmE1MWU4ZmY1NmM3NzQ5ODZiMzQ0YjJiODIxYmVjZjZlLi4wMWYyZTMzZTg3NTZkMTZhYjcx
Yzk1NzFlMWIzNjMyMmVmZGFlZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTQ1LDYg
KzQ1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBWaXNpdGVkTGlua1Byb3Zp
ZGVyOwogICAgIGNsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlcjsKIAorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXI7Cisg
ICAgY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczsKKyNlbmRpZgorCiAgICAgY2xhc3MgUGFn
ZUdyb3VwIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2VHcm91cD4gewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQYWdlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6CkBAIC05OCw2ICsxMDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIEdyb3VwU2V0dGluZ3MmIGdyb3VwU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiAqbV9ncm91
cFNldHRpbmdzOyB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIHZvaWQgY2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
KiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBhZGRWaXNpdGVkTGluayhMaW5rSGFzaCk7CiAKQEAgLTExNiw2ICsxMjYsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8VXNlckNvbnRlbnRDb250cm9sbGVyPiBt
X3VzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdzOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4gbV9jYXB0
aW9uUHJlZmVyZW5jZXM7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCA2OWM2
N2QyNjRkMjA2ZDYyZTBmMjhkNjhlOTQ1Yzc3OTdjZmMyZWZjLi5kYzdkYTFlOTJmYzA0MDIxMjhh
YWQ3ZjJhZTA1YjdmMTczYjlmOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAKQEAgLTQxMywxMiArNDEzLDE2IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5n
czo6c2V0U2hvdWxkRGlzcGxheVRyYWNrS2luZChjb25zdCBTdHJpbmcmIGtpbmQsIGJvb2wgZW5h
YmxlCiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IHBhZ2UoKS0+Z3JvdXAo
KS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5k
LCAiU3VidGl0bGVzIikpCi0gICAgICAgIHNldHRpbmdzKCktPnNldFNob3VsZERpc3BsYXlTdWJ0
aXRsZXMoZW5hYmxlZCk7CisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZl
cnNTdWJ0aXRsZXMoZW5hYmxlZCk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2lu
ZCwgIkNhcHRpb25zIikpCi0gICAgICAgIHNldHRpbmdzKCktPnNldFNob3VsZERpc3BsYXlDYXB0
aW9ucyhlbmFibGVkKTsKKyAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVy
c0NhcHRpb25zKGVuYWJsZWQpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtpbmQs
ICJUZXh0RGVzY3JpcHRpb25zIikpCi0gICAgICAgIHNldHRpbmdzKCktPnNldFNob3VsZERpc3Bs
YXlUZXh0RGVzY3JpcHRpb25zKGVuYWJsZWQpOworICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMt
PnNldFVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhlbmFibGVkKTsKICAgICBlbHNlCiAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKICNlbHNlCkBAIC00MzIsMTIgKzQzNiwxNiBAQCBib29sIElu
dGVybmFsU2V0dGluZ3M6OnNob3VsZERpc3BsYXlUcmFja0tpbmQoY29uc3QgU3RyaW5nJiBraW5k
LCBFeGNlcHRpb25Db2RlJgogICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzUmV0
dXJuKGZhbHNlKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoIXBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRp
b25QcmVmZXJlbmNlcyA9IHBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKwog
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiU3VidGl0bGVzIikpCi0gICAgICAgIHJl
dHVybiBzZXR0aW5ncygpLT5zaG91bGREaXNwbGF5U3VidGl0bGVzKCk7CisgICAgICAgIHJldHVy
biBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzU3VidGl0bGVzKCk7CiAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGtpbmQsICJDYXB0aW9ucyIpKQotICAgICAgICByZXR1cm4gc2V0dGlu
Z3MoKS0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9uUHJl
ZmVyZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2Uoa2luZCwgIlRleHREZXNjcmlwdGlvbnMiKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzKCkt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CisgICAgICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpOwogCiAgICAgZWMgPSBT
WU5UQVhfRVJSOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCAyNjE3ZDYyMDljNzFhNmVkMTJmYmNmYjRiYzY3ZDI1MjNiMzkyYWY0Li41ZjQ2
MjM5M2JkMmIyNjljNDE1M2QwM2IyNDJmZWMxMzA2ODBhNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0yODEsOCArMjgxLDggQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFnZSkKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGZhbHNlKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgIVBMQVRGT1JNKFdJTikKLSAgICBwYWdlLT5jYXB0aW9uUHJlZmVyZW5jZXMo
KS5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShlbXB0eVN0cmluZygpKTsKLSAgICBwYWdl
LT5jYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5nTW9kZShmYWxzZSk7CisgICAgcGFnZS0+
Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJp
ZGUoZW1wdHlTdHJpbmcoKSk7CisgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMo
KS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogI2VuZGlmCiAgICAgaWYgKCFwYWdlLT5tYWluRnJh
bWUoKS5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQogICAgICAg
ICBwYWdlLT5tYWluRnJhbWUoKS5lZGl0b3IoKS50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2lu
ZygpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmICFQTEFURk9STShXSU4pCiAg
ICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50LT5w
YWdlKCktPmNhcHRpb25QcmVmZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRydWUpOworICAgICAg
ICBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRUZXN0
aW5nTW9kZSh0cnVlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTIw
NTEsNyArMjA1MSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgIVBMQVRGT1JNKFdJTikKLSAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+Y2FwdGlvblBy
ZWZlcmVuY2VzKCkuY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKKyAgICByZXR1cm4gZG9j
dW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAjZW5k
aWYKQEAgLTIwNjYsNyArMjA2Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRDYXB0aW9uc1N0eWxl
U2hlZXRPdmVycmlkZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlLCBFeGNlcHRpb25DCiAgICAgfQog
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiAhUExBVEZPUk0oV0lOKQotICAgIGRvY3VtZW50
LT5wYWdlKCktPmNhcHRpb25QcmVmZXJlbmNlcygpLnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKG92ZXJyaWRlKTsKKyAgICBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpLT5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShvdmVycmlkZSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShvdmVycmlkZSk7CiAjZW5kaWYKQEAgLTIwODEsNyArMjA4MSw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUo
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjCiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiAhUExBVEZPUk0oV0lOKQotICAgIGRvY3VtZW50LT5wYWdlKCktPmNhcHRpb25QcmVm
ZXJlbmNlcygpLnNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZShsYW5ndWFnZSk7
CisgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0
UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKGxhbmd1YWdlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGxhbmd1YWdlKTsKICNlbmRpZgpAQCAtMjA5NiwxOCArMjA5NiwxNCBAQCB2
b2lkIEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogICAgIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgIVBMQVRGT1JNKFdJTikKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBjYXB0aW9uUHJl
ZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFnZSgpLT5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBkb2N1bWVudC0+cGFn
ZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwogICAgIAotICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShtb2RlLCAiQXV0b21hdGljIikpIHsKLSAgICAgICAgY2FwdGlvblByZWZlcmVu
Y2VzLnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBdXRvbWF0
aWMpOwotICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLnNldFNob3VsZERpc3Bs
YXlDYXB0aW9ucyhmYWxzZSk7Ci0gICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCku
c2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyhmYWxzZSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShtb2RlLCAiRm9yY2VkT25seSIpKSB7Ci0gICAgICAgIGNhcHRpb25QcmVmZXJl
bmNlcy5zZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Rm9yY2Vk
T25seSk7Ci0gICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCkuc2V0U2hvdWxkRGlz
cGxheUNhcHRpb25zKGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3Mo
KS5zZXRTaG91bGREaXNwbGF5U3VidGl0bGVzKGZhbHNlKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG1vZGUsICJBbHdheXNPbiIpKQotICAgICAgICBjYXB0aW9uUHJlZmVyZW5j
ZXMuc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkFsd2F5c09u
KTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobW9kZSwgIkF1dG9tYXRpYyIpKQorICAgICAg
ICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpBdXRvbWF0aWMpOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1v
ZGUsICJGb3JjZWRPbmx5IikpCisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0Q2FwdGlv
bkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOworICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1vZGUsICJBbHdheXNPbiIpKQorICAgICAgICBjYXB0
aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpBbHdheXNPbik7CiAgICAgZWxzZQogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAjZWxz
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>