<?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>121373</bug_id>
          
          <creation_ts>2013-09-14 15:58:16 -0700</creation_ts>
          <short_desc>Use FINAL instead of virtualChildren trick in render tree classes</short_desc>
          <delta_ts>2013-09-15 01:50:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929317</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-14 15:58:16 -0700</bug_when>
    <thetext>Use FINAL instead of virtualChildren trick in render tree classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929347</commentid>
    <comment_count>1</comment_count>
      <attachid>211682</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-14 21:19:16 -0700</bug_when>
    <thetext>Created attachment 211682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929349</commentid>
    <comment_count>2</comment_count>
      <attachid>211682</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-14 21:26:56 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1916218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929350</commentid>
    <comment_count>3</comment_count>
      <attachid>211682</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-14 21:35:15 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1916219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929351</commentid>
    <comment_count>4</comment_count>
      <attachid>211682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-14 21:46:35 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1878542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929354</commentid>
    <comment_count>5</comment_count>
      <attachid>211682</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-14 21:53:03 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1801737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929355</commentid>
    <comment_count>6</comment_count>
      <attachid>211682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-14 22:01:53 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1911528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929359</commentid>
    <comment_count>7</comment_count>
      <attachid>211682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-14 22:59:46 -0700</bug_when>
    <thetext>Comment on attachment 211682
Patch

Attachment 211682 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1834497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929378</commentid>
    <comment_count>8</comment_count>
      <attachid>211692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:01:08 -0700</bug_when>
    <thetext>Created attachment 211692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929386</commentid>
    <comment_count>9</comment_count>
      <attachid>211692</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-15 01:20:47 -0700</bug_when>
    <thetext>Comment on attachment 211692
Patch

Delightful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929395</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:50:40 -0700</bug_when>
    <thetext>Committed r155802: &lt;http://trac.webkit.org/changeset/155802&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211682</attachid>
            <date>2013-09-14 21:19:16 -0700</date>
            <delta_ts>2013-09-15 01:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121373-20130914211915.patch</filename>
            <type>text/plain</type>
            <size>39666</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUwMTE1YjI2NDQ5NWJm
YWY0OTBiM2ZmNzcwYmYxOWZiZTEwZDliYS4uMWRiZTA3OTk5YWRlODJlNWU5NzA5YmM5MzkwMjIy
Y2VmNzc4MjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA5LTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgRklOQUwgaW5zdGVhZCBv
ZiB2aXJ0dWFsQ2hpbGRyZW4gdHJpY2sgaW4gcmVuZGVyIHRyZWUgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyU3R5bGUpOiBVc2UgY2hpbGRyZW4gaW5zdGVhZCBvZgorICAgICAgICB2aXJ0dWFsQ2hpbGRy
ZW4uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZCk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bW92ZUNoaWxkVG8pOiBEaXR0by4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6YWRkQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cmVtb3ZlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFu
ZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25DaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkUmVjdXJzaXZlKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDogQ2hhbmdlZCBmaXJzdENo
aWxkIGFuZCBsYXN0Q2hpbGQgdG8gdXNlCisgICAgICAgIG1fY2hpbGRyZW4gZGlyZWN0bHkgaW5z
dGVhZCBvZiBhIGZ1bmN0aW9uLiBNYWRlIHRoZSBjaGlsZHJlbiBmdW5jdGlvbgorICAgICAgICBh
IGZpbmFsIHZpcnR1YWwgb3ZlcnJpZGUuIERlbGV0ZWQgdGhlIHZpcnR1YWxDaGlsZHJlbiBvdmVy
cmlkZS4gQWRkZWQKKyAgICAgICAgb3ZlcnJpZGUga2V5d29yZHMgdG8gb3RoZXIgdmlydHVhbCBm
dW5jdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDogRGl0dG8uCisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpm
aXJzdENoaWxkKTogVXNlIGNoaWxkcmVuIGluc3RlYWQgb2YgdmlydHVhbENoaWxkcmVuLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpsYXN0Q2hpbGQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2hpbGRyZW4pOiBSZW5hbWVkIGZyb20gdmlydHVhbENo
aWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4p
OiBVc2UgY2hpbGRyZW4gaW5zdGVhZCBvZiB2aXJ0dWFsQ2hpbGRyZW4uCisKIDIwMTMtMDktMTQg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgR1RLIGJ1aWxkIGZpeCBhZnRlciByMTU1Nzc0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggOTZjMTcwZWI4NDFlMmJiOGI2Zjk5ZDAwOTFlYTIyMjEzZGEy
ZTRlOC4uNzFlMjE0MGYyOGE4NmZiYzgwNzZiM2ZmZTZmZWNmYWRlZmE0YTcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01ODY1LDcgKzU4NjUsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAgICB9CiAgICAgICAgIC8vIFRvIHByZXZlbnQg
cmVtb3ZhbCBvZiBzaW5nbGUgYW5vbnltb3VzIGJsb2NrIGluIFJlbmRlckJsb2NrOjpyZW1vdmVD
aGlsZCBhbmQgY2F1c2luZwogICAgICAgICAvLyB8bmV4dFNpYmxpbmd8IHRvIGdvIHN0YWxlLCB3
ZSByZW1vdmUgdGhlIG9sZCBmaXJzdCBsZXR0ZXIgdXNpbmcgcmVtb3ZlQ2hpbGROb2RlIGZpcnN0
LgotICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+dmlydHVhbENoaWxkcmVuKCktPnJlbW92
ZUNoaWxkTm9kZShmaXJzdExldHRlckNvbnRhaW5lciwgZmlyc3RMZXR0ZXIpOworICAgICAgICBm
aXJzdExldHRlckNvbnRhaW5lci0+Y2hpbGRyZW4oKS0+cmVtb3ZlQ2hpbGROb2RlKGZpcnN0TGV0
dGVyQ29udGFpbmVyLCBmaXJzdExldHRlcik7CiAgICAgICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95
KCk7CiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CiAgICAgICAgIGZpcnN0
TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAzZDgzM2FjODhlYTMyZDRkODFl
ODMzZTllYjZkZjhlNDAyODYxYjU2Li4yZjE0N2JkODJkNjY2NThjNjJjNjY2ZjY5NTIyY2QzNzM3
Zjc2N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTAzLDE3
ICsxMDMsMTcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJCbG9jayog
Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50Kik7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0
dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgfQotICAgIFJlbmRlck9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJl
dHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOyB9CisgICAgUmVu
ZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmxhc3RDaGls
ZCgpOyB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNo
aWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRl
ck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVy
biAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbigpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAKICAgICBib29s
IGJlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gbV9iZWluZ0Rlc3Ryb3llZDsgfQogCiAg
ICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5lLWJsb2Nr
LgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7CisgICAgdmlydHVh
bCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBSZW5kZXJMaW5lQm94TGlzdCYgbGluZUJveGVzKCkg
eyByZXR1cm4gbV9saW5lQm94ZXM7IH0KICAgICBjb25zdCBSZW5kZXJMaW5lQm94TGlzdCYgbGlu
ZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXM7IH0KQEAgLTU2OCwxMCArNTY4LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGF5b3V0U2hhcGVEZXNjZW5kYW50SWZNb3ZlZChSZW5k
ZXJCbG9jayogY2hpbGQsIExheW91dFNpemUgb2Zmc2V0KTsKICAgICBMYXlvdXRTaXplIGxvZ2lj
YWxPZmZzZXRGcm9tU2hhcGVBbmNlc3RvckNvbnRhaW5lcihjb25zdCBSZW5kZXJCbG9jayogY29u
dGFpbmVyKSBjb25zdDsKICNlbmRpZgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0gICAgdmlydHVhbCBj
b25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0
dXJuIGNoaWxkcmVuKCk7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyQmxvY2soKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5saW5lQmxvY2tPcklu
bGluZVRhYmxlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gaXNJbmxpbmUoKSAmJiBp
c1JlcGxhY2VkKCk7IH0KQEAgLTczOSw3ICs3MzcsNyBAQCBwcml2YXRlOgogCiAgICAgCiAgICAg
Ym9vbCBoaXRUZXN0Q29sdW1ucyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCBi
b29sIGhpdFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CisgICAgdmlydHVhbCBi
b29sIGhpdFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgRklOQUw7CiAgICAgYm9v
bCBoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5PdmVy
Zmxvd0NvbnRyb2woSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwpAQCAtNzc4
LDggKzc3Niw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIExvZ2ljYWxTZWxl
Y3Rpb25PZmZzZXRDYWNoZXM7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBMYXlvdXRVbml0IGRl
c2lyZWRDb2x1bW5XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGRlc2lyZWRDb2x1bW5Db3Vu
dCgpIGNvbnN0OwpAQCAtODg2LDcgKzg4NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiBwdWJsaWM6Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIFJlbmRlclJlZ2lvbiog
cmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHRlbXBvcmFyeSB0byBhbGxvdyB1cyB0byBtb3ZlIGNvZGUgZnJvbSBSZW5kZXJCbG9j
ayBpbnRvIFJlbmRlckJsb2NrRmxvdyB0aGF0IGFjY2Vzc2VzIG1lbWJlciB2YXJpYWJsZXMgdGhh
dCB3ZSBoYXZlbid0IG1vdmVkIG91dCBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCAxYzExZDNiZjljY2I4OWUxYmZkZWY1OTY5YTdhZWQ0NjY2ZmQzN2ZkLi4xZWRl
NDVlYTlmZTNmYTc2MjQ0Y2Q3OThkYTQzYjIxNGNjM2E4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDY1NCw3ICs0NjU0LDcgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJCb3g6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZChSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWwKICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHRhYmxlIHJlcGFpbnRpbmcgbG9n
aWMga25vd3MgdGhlIHN0cnVjdHVyZSBpcyBkaXJ0eS4KICAgICAgICAgICAgIC8vIFNlZSBmb3Ig
ZXhhbXBsZSBSZW5kZXJUYWJsZUNlbGw6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQuCiAg
ICAgICAgICAgICBtYXJrQm94Rm9yUmVsYXlvdXRBZnRlclNwbGl0KHBhcmVudEJveCk7Ci0gICAg
ICAgICAgICBwYXJlbnRCb3gtPnZpcnR1YWxDaGlsZHJlbigpLT5pbnNlcnRDaGlsZE5vZGUocGFy
ZW50Qm94LCBwb3N0Qm94LCBib3hUb1NwbGl0LT5uZXh0U2libGluZygpKTsKKyAgICAgICAgICAg
IHBhcmVudEJveC0+Y2hpbGRyZW4oKS0+aW5zZXJ0Q2hpbGROb2RlKHBhcmVudEJveCwgcG9zdEJv
eCwgYm94VG9TcGxpdC0+bmV4dFNpYmxpbmcoKSk7CiAgICAgICAgICAgICBib3hUb1NwbGl0LT5t
b3ZlQ2hpbGRyZW5Ubyhwb3N0Qm94LCBiZWZvcmVDaGlsZCwgMCwgdHJ1ZSk7CiAKICAgICAgICAg
ICAgIG1hcmtCb3hGb3JSZWxheW91dEFmdGVyU3BsaXQoYm94VG9TcGxpdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBlNWJk
OTdlMDQyOTNiYTE3YmZkYzZiN2ZmODQ3ZmM4MTNkODNkMTJiLi4zOWJiZGEwMmZjNWVhNWE0ODg0
N2NlZWRhYjE1NWE2Mzk5YWM0ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI3NzUsOSArMjc3NSw5IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6Om1vdmVDaGlsZFRvKFJlbmRlckJveE1vZGVsT2JqZWN0KiB0b0Jv
eE1vZGVsT2JqZWN0LCBSCiAgICAgaWYgKGZ1bGxSZW1vdmVJbnNlcnQgJiYgKHRvQm94TW9kZWxP
YmplY3QtPmlzUmVuZGVyQmxvY2soKSB8fCB0b0JveE1vZGVsT2JqZWN0LT5pc1JlbmRlcklubGlu
ZSgpKSkgewogICAgICAgICAvLyBUYWtlcyBjYXJlIG9mIGFkZGluZyB0aGUgbmV3IGNoaWxkIGNv
cnJlY3RseSBpZiB0b0Jsb2NrIGFuZCBmcm9tQmxvY2sKICAgICAgICAgLy8gaGF2ZSBkaWZmZXJl
bnQga2luZCBvZiBjaGlsZHJlbiAoYmxvY2sgdnMgaW5saW5lKS4KLSAgICAgICAgdG9Cb3hNb2Rl
bE9iamVjdC0+YWRkQ2hpbGQodmlydHVhbENoaWxkcmVuKCktPnJlbW92ZUNoaWxkTm9kZSh0aGlz
LCBjaGlsZCksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgdG9Cb3hNb2RlbE9iamVjdC0+YWRkQ2hp
bGQoY2hpbGRyZW4oKS0+cmVtb3ZlQ2hpbGROb2RlKHRoaXMsIGNoaWxkKSwgYmVmb3JlQ2hpbGQp
OwogICAgIH0gZWxzZQotICAgICAgICB0b0JveE1vZGVsT2JqZWN0LT52aXJ0dWFsQ2hpbGRyZW4o
KS0+aW5zZXJ0Q2hpbGROb2RlKHRvQm94TW9kZWxPYmplY3QsIHZpcnR1YWxDaGlsZHJlbigpLT5y
ZW1vdmVDaGlsZE5vZGUodGhpcywgY2hpbGQsIGZ1bGxSZW1vdmVJbnNlcnQpLCBiZWZvcmVDaGls
ZCwgZnVsbFJlbW92ZUluc2VydCk7CisgICAgICAgIHRvQm94TW9kZWxPYmplY3QtPmNoaWxkcmVu
KCktPmluc2VydENoaWxkTm9kZSh0b0JveE1vZGVsT2JqZWN0LCBjaGlsZHJlbigpLT5yZW1vdmVD
aGlsZE5vZGUodGhpcywgY2hpbGQsIGZ1bGxSZW1vdmVJbnNlcnQpLCBiZWZvcmVDaGlsZCwgZnVs
bFJlbW92ZUluc2VydCk7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1vdmVDaGls
ZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0KiB0b0JveE1vZGVsT2JqZWN0LCBSZW5kZXJPYmpl
Y3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQsIGJvb2wgZnVsbFJlbW92ZUluc2VydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggYzMzMzgzNWIwNzdmOTE1NWQwNTY2
OWVmYjhlNTkzNGQ2ZGVjZmE3NC4uMmI0NzZmMjM5ZTRhNzcwYzcwMGI2ZTdkYTljNzZlNzFlZjIw
ZDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmgKQEAgLTcyLDE0ICs3MiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIEN1cnNv
ckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBP
VkVSUklERTsKIAotICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBj
b25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCog
Y2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNo
aWxkcmVuKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
RW1iZWRkZWRPYmplY3QiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0VtYmVkZGVkT2JqZWN0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBJbWFnZSopOwpAQCAtMTAzLDggKzEwMyw2IEBAIHByaXZhdGU6CiAg
ICAgTGF5b3V0UmVjdCB1bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckJvdW5kcyhjb25zdCBMYXlv
dXRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2
aXJ0dWFsQ2hpbGRyZW4oKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0g
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAppbmRleCA2MTdiYmI0YmE4NDI1
NjBkZWNhYzVjNGUyMTlmZWJmMjY3YWI4ZjQwLi44OWE3MzFjNTc2YWVmNzgxMGY1MjdjNzM2NjEz
OTVjNTE1YTkyN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
aApAQCAtNTgsMTEgKzU4LDExIEBAIHB1YmxpYzoKICAgICBSZW5kZXJGcmFtZVNldChIVE1MRnJh
bWVTZXRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyRnJhbWVTZXQoKTsKIAotICAgIFJl
bmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmly
dHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyB9Ci0gICAg
UmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZp
cnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmxhc3RDaGlsZCgpOyB9CisgICAg
UmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5maXJz
dENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW4ubGFzdENoaWxkKCk7IH0KIAotICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxk
TGlzdCogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRl
ck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAg
IHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIGNoaWxkcmVuKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAog
ICAgIEZyYW1lRWRnZUluZm8gZWRnZUluZm8oKSBjb25zdDsKIApAQCAtOTMsMTYgKzkzLDEzIEBA
IHByaXZhdGU6CiAgICAgICAgIGludCBtX3NwbGl0UmVzaXplT2Zmc2V0OwogICAgIH07CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyByZXR1
cm4gY2hpbGRyZW4oKTsgfQotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZHJlbigpOyB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJl
bmRlckZyYW1lU2V0IjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZyYW1lU2V0IjsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0ZyYW1lU2V0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3Qq
LCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1
cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFs
bG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJz
b3ImKSBjb25zdCBPVkVSUklERTsKIAogICAgIGlubGluZSBIVE1MRnJhbWVTZXRFbGVtZW50KiBm
cmFtZVNldCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
aW5kZXggZmU4OTY0OTQyZmZiMDc1NDg1MjYzNTc3NTczYTBkYzZhNWNiMGQ5OS4uMTQ4YTA1Nzdm
NDc3MjBlOTFmNjA1YzNiMWE4NThiODNlYmI5ZDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaApAQCAtMzcsMTAgKzM3LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBSZW5kZXJJbmxpbmUqIGNyZWF0ZUFub255bW91cyhEb2N1bWVudCopOwogCi0gICAgUmVuZGVy
T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFs
Q2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IH0KLSAgICBSZW5k
ZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVh
bENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+bGFzdENoaWxkKCk7IH0KKyAgICBSZW5k
ZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hp
bGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRl
ck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1h
cmdpbkxlZnQoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWFyZ2luUmlnaHQoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5FbmQoY29uc3QgUmVuZGVyU3R5bGUq
IG90aGVyU3R5bGUgPSAwKSBjb25zdCBPVkVSUklERSBGSU5BTDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3
YXNGaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0
RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9m
ZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKQEAgLTk0LDE3
ICs5NCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoaXRUZXN0Q3VsbGVkSW5saW5lKGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsK
IAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiBjaGlsZHJl
bigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxD
aGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLSAg
ICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KLSAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyBy
ZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxk
TGlzdCogY2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiAmbV9jaGlsZHJl
bjsgfQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIE9WRVJS
SURFIEZJTkFMIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcklubGluZSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWEuaAppbmRleCA0ZTYzZjk0N2ZkZTVmY2I3MzJjZmYyZDdlNmY0YmFk
ZTJlNWFkMWMzLi5iNmIyNDg3N2YyMWFmZWQ3NTQ0M2JjOTIyOWU4MmQ4OTMxNGVlZWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaApAQCAtNDAsMTEgKzQwLDExIEBAIHB1
YmxpYzoKICAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYg
aW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyTWVkaWEoKTsKIAotICAgIFJlbmRl
ck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVh
bENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyB9Ci0gICAgUmVu
ZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1
YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmxhc3RDaGlsZCgpOyB9CisgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5maXJzdENo
aWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hpbGRyZW4ubGFzdENoaWxkKCk7IH0KIAotICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRlck9i
amVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9WRVJS
SURFIEZJTkFMIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRy
ZW47IH0KIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0OwogCkBA
IC01MiwxNCArNTIsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENo
aWxkcmVuKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQotICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJNZWRpYSI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAiUmVuZGVyTWVkaWEiOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVk
aWEoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW1hZ2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0
eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTc4LDQgKzc2LDUgQEAgdm9pZCB0b1JlbmRlck1lZGlhKGNvbnN0IFJlbmRlck1l
ZGlhKik7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgorCiAjZW5kaWYgLy8gUmVu
ZGVyTWVkaWFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBjNzgzODBlMzE0MmNkMjkwOTU3MTk1Y2E3YjY1ZmRmMTczNmE4NTZlLi44MzRkMmQ2MTgyZDU1
YWY4YjMwMjE3ODY3NTEyNTk1MjhmMDNkNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpz
ZXRGbG93VGhyZWFkU3RhdGVJbmNsdWRpbmdEZXNjZW5kYW50cyhGbG93VGhyZWFkU3RhdGUgc3Rh
dGUpCiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogewotICAgIFJlbmRlck9iamVjdENoaWxkTGlz
dCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKTsKKyAgICBSZW5kZXJPYmplY3RDaGlsZExp
c3QqIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAgICBBU1NFUlQoY2hpbGRyZW4pOwog
ICAgIGlmICghY2hpbGRyZW4pCiAgICAgICAgIHJldHVybjsKQEAgLTM3Myw3ICszNzMsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCkKIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUNoaWxkKFJl
bmRlck9iamVjdCogb2xkQ2hpbGQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpOworICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hp
bGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAgIEFTU0VSVChjaGlsZHJlbik7CiAgICAgaWYg
KCFjaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5OSw3ICsxODk5LDcgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmhhbmRsZUR5bmFtaWNGbG9hdFBvc2l0aW9uQ2hhbmdlKCkKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBBbiBhbm9ueW1vdXMgYmxvY2sgbXVzdCBiZSBtYWRlIHRv
IHdyYXAgdGhpcyBpbmxpbmUuCiAgICAgICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1Jl
bmRlckJsb2NrKHBhcmVudCgpKS0+Y3JlYXRlQW5vbnltb3VzQmxvY2soKTsKLSAgICAgICAgICAg
IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRsaXN0ID0gcGFyZW50KCktPnZpcnR1YWxDaGls
ZHJlbigpOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZGxpc3QgPSBw
YXJlbnQoKS0+Y2hpbGRyZW4oKTsKICAgICAgICAgICAgIGNoaWxkbGlzdC0+aW5zZXJ0Q2hpbGRO
b2RlKHBhcmVudCgpLCBibG9jaywgdGhpcyk7CiAgICAgICAgICAgICBibG9jay0+Y2hpbGRyZW4o
KS0+YXBwZW5kQ2hpbGROb2RlKGJsb2NrLCBjaGlsZGxpc3QtPnJlbW92ZUNoaWxkTm9kZShwYXJl
bnQoKSwgdGhpcykpOwogICAgICAgICB9CkBAIC0yNjQ3LDcgKzI2NDcsNyBAQCBpbmxpbmUgdm9p
ZCBSZW5kZXJPYmplY3Q6OmNsZWFyTGF5b3V0Um9vdElmTmVlZGVkKCkgY29uc3QKIHZvaWQgUmVu
ZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIC8vIERlc3Ryb3kgYW55IGxlZnRv
dmVyIGFub255bW91cyBjaGlsZHJlbi4KLSAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxk
cmVuID0gdmlydHVhbENoaWxkcmVuKCk7CisgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CiAgICAgaWYgKGNoaWxkcmVuKQogICAgICAgICBjaGls
ZHJlbi0+ZGVzdHJveUxlZnRvdmVyQ2hpbGRyZW4oKTsKIApAQCAtMjc4Nyw3ICsyNzg3LDcgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCkKIAogdm9pZCBS
ZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkUmVjdXJzaXZlKFJlbmRlckZs
b3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWQpCiB7Ci0gICAgaWYgKGNvbnN0IFJlbmRlck9iamVj
dENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKSkgeworICAgIGlmIChjb25z
dCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKSkgewog
ICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBjaGlsZHJlbi0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGNoaWxk
LT5yZW1vdmVGcm9tUmVuZGVyRmxvd1RocmVhZFJlY3Vyc2l2ZShyZW5kZXJGbG93VGhyZWFkKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZmM5MWFj
ZDY2YmNmMTIwOWZjYmZmOGQwMTY0ZDNhMmJmMjY4ZDRhYy4uMzVjN2JkMDE1YjhmZDBiYTQ3ZmQ2
ZGE2ODMwNjdiMDJkZTgyOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtMTY0LDI1ICsxNjQsMjUgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogbmV4
dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgcmVuYW1lZCBzbG93Rmlyc3RDaGlsZCwgc2xvd0xhc3RDaGlsZCwgZXRjLgot
ICAgIC8vIHRvIGRpc2NvdXJhZ2UgdGhlaXIgdXNlLiBUaGUgdmlydHVhbENoaWxkcmVuKCkgY2Fs
bCBpbnNpZGUgdGhlc2UKKyAgICAvLyB0byBkaXNjb3VyYWdlIHRoZWlyIHVzZS4gVGhlIHZpcnR1
YWwgY2FsbCB0byBjaGlsZHJlbiBpbnNpZGUgdGhlc2UKICAgICAvLyBjYW4gYmUgc2xvdyBmb3Ig
aG90IGNvZGUgcGF0aHMuCi0gICAgLy8gQ3VycmVudGx5LCBzb21lIHN1YmNsYXNzZXMgbGlrZSBS
ZW5kZXJCbG9jaywgb3ZlcnJpZGUgdGhlc2UgTk9OLXZpcnR1YWwKLSAgICAvLyBmdW5jdGlvbnMg
dG8gbWFrZSB0aGVzZSBmYXN0IHdoZW4gd2UgYWxyZWFkeSBoYXZlIGEgbW9yZSBzcGVjaWZpYyBw
b2ludGVyIHR5cGUuCisgICAgLy8gRGVyaXZlZCBjbGFzc2VzIGxpa2UgUmVuZGVyQmxvY2sgb3Zl
cnJpZGUgdGhlc2Ugbm9uLXZpcnR1YWwKKyAgICAvLyBmdW5jdGlvbnMgdG8gbWFrZSB0aGVtIGZh
c3Qgd2hlbiB3ZSBhbHJlYWR5IGhhdmUgYSBtb3JlIHNwZWNpZmljIHBvaW50ZXIgdHlwZS4KICAg
ICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKSkK
KyAgICAgICAgaWYgKGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB0aGlz
LT5jaGlsZHJlbigpKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuLT5maXJzdENoaWxkKCk7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBj
aGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpKQorICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gY2hpbGRyZW4tPmxhc3RDaGlsZCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0
dWFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgY29uc3Qg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAog
ICAgIFJlbmRlck9iamVjdCogbmV4dEluUHJlT3JkZXIoKSBjb25zdDsKICAgICBSZW5kZXJPYmpl
Y3QqIG5leHRJblByZU9yZGVyKGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3Q7
CkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIFJlbmRlck9iamVjdCB0
cmVlIG1hbmlwdWxhdGlvbgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biB2aXJ0dWFsQ2hpbGRyZW4oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVH
ZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dl
ZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuaAppbmRleCAyMzJkMzMxNWM5ZTI5OGIyMGRiMGVmOTMxOTI1MWFhNTkwNjk1ODQ5Li45
YTBmMzlmYmQ2Nzc4YmNkMDMwZmJmOTYyNDg3MGJjMjZkOTdhMjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAtMzgsMTEgKzM4LDExIEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBSZW5kZXJUYWJsZUNvbChFbGVtZW50Jik7CiAgICAgRWxlbWVudCYgZXhp
c3RpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gKlJlbmRlckJveDo6ZWxlbWVudCgpOyB9CiAK
LSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigp
ID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsg
fQotICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4o
KSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsg
fQorICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRy
ZW4uZmlyc3RDaGlsZCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuLmxhc3RDaGlsZCgpOyB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAg
ICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIE9WRVJSSURFIHsgcmV0dXJuICZtX2NoaWxkcmVu
OyB9CiAKICAgICB2b2lkIGNsZWFyUHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5Qml0cygpOwog
CkBAIC04MCwyNSArODAsMjIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQo
KSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0gICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUYWJsZUNvbCI7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVy
VGFibGVDb2wiOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFibGVDb2woKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b1RyZWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVl
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2Jq
ZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChSZW5kZXJPYmpl
Y3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7
CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqID0gMCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICBSZW5kZXJUYWJsZSogdGFibGUoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCAzNTdiYTIw
NzEyZDJlNzFmYWVhOWExMDY5NjE4NTNkNWExYWVkMzE1Li5jMWUwYjcwOGEwNmQzYWMwMzg3ZDZk
MWU3NDg3OWFlYjJhZTU0NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuaApAQCAtMzYsMTEgKzM2LDExIEBAIGNsYXNzIFJlbmRlclRhYmxlUm93IEZJTkFMIDog
cHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3co
RWxlbWVudCopOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NF
UlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5m
aXJzdENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNT
RVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+
bGFzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2No
aWxkcmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJu
ICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSB7IHJldHVy
biAmbV9jaGlsZHJlbjsgfQogCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gdG9SZW5kZXJUYWJsZVNlY3Rpb24ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVy
VGFibGUqIHRhYmxlKCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJUYWJsZShwYXJlbnQoKS0+cGFy
ZW50KCkpOyB9CkBAIC04OSwyNyArODksMjQgQEAgcHVibGljOgogICAgIGNvbnN0IEJvcmRlclZh
bHVlJiBib3JkZXJBZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFs
Q2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxk
cmVuKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVu
ZGVyVGFibGVSb3cgKGFub255bW91cykiIDogIlJlbmRlclRhYmxlUm93IjsgfQogCi0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gKGlzQW5vbnltb3Vz
KCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93IChhbm9ueW1vdXMpIiA6
ICJSZW5kZXJUYWJsZVJvdyI7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRl
ck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKLSAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSB8
fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc0NsaXBQYXRoKCkg
fHwgY3JlYXRlc0dyb3VwKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CisgICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkg
T1ZFUlJJREU7CiAKICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QgbV9jaGlsZHJlbjsKICAgICB1
bnNpZ25lZCBtX3Jvd0luZGV4IDogMzE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNmMxZTI0M2UzMzY4MjQ1YjA1Mzc3Yzc2OTE5OTM5ZTNl
ZWZjNjJiOS4uYTEzNTEyNDhmNmQ4MTJjYjVjNDM0MjEwYTUyZGRmODJmODFmOTkwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjUsMTMg
KzY1LDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCopOwogICAg
IHZpcnR1YWwgflJlbmRlclRhYmxlU2VjdGlvbigpOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJz
dENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7
IHJldHVybiBjaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxh
c3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkp
OyByZXR1cm4gY2hpbGRyZW4oKS0+bGFzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZp
cnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAg
IFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0
Q2hpbGQoKTsgfQogCi0gICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBS
ZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRy
ZW4oKSBPVkVSUklERSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBpbnQg
Zmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKIApAQCAtMTk5LDI0ICsxOTks
MjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGls
ZHJlbigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1
YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KKyAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAoaXNBbm9ueW1v
dXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFibGVTZWN0aW9uIChhbm9ueW1v
dXMpIiA6ICJSZW5kZXJUYWJsZVNlY3Rpb24iOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0Vs
ZW1lbnQoKSkgPyAiUmVuZGVyVGFibGVTZWN0aW9uIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJs
ZVNlY3Rpb24iOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZVNlY3Rpb24oKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGFibGVTZWN0aW9uKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENlbGwoUmVuZGVyVGFibGVDZWxsKiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKKyAgICB2b2lkIHBhaW50Q2VsbChSZW5kZXJUYWJsZUNlbGwqLCBQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CisgICAgdmly
dHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0g
MCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRl
c3RBY3Rpb24pIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCBmMjc5NzcyYjc1ZmYwMTM5ZDljYWFmNzBkYjQ5
NmYxMDg5YjRkYmE0Li5jM2Y1NzYwNjlkYmZiMjM2ZDQ1Y2UwZjY1YjIwNzMyY2U0OWMyY2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmgKQEAgLTM1LDEzICszNSwxMyBAQCBjbGFzcyBSZW5kZXJTVkdDb250YWluZXIgOiBwdWJsaWMg
UmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR0Nv
bnRhaW5lcigpOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NF
UlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5m
aXJzdENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNT
RVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+
bGFzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2No
aWxkcmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJu
ICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0K
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSBG
SU5BTCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIE9WRVJSSURFIEZJTkFMIHsgbV9uZWVkc0JvdW5k
YXJpZXNVcGRhdGUgPSB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzQm91bmRhcmllc1Vw
ZGF0ZSgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9
CiAgICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC01MCw5ICs1MCw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCog
dmlydHVhbENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gY2hpbGRyZW4o
KTsgfQotCiAgICAgdmlydHVhbCBib29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggM2EwYzZk
ZTg1YTk3ODYxYTkzYWU5ZWEwNTU2NTJkMDIyYTU1YWM4NC4uY2Q4ZTFiZmQzMTM5MGRjY2Y5MzRk
NzZlN2QxYjJjOGQyZmEyZGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgKQEAgLTQ0LDE4ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
YmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3Vn
aEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXpl
LCBkb3VibGUmIGludHJpbnNpY1JhdGlvLCBib29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXpl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRp
b24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvLCBib29s
JiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdCBPVkVSUklERTsKIAotICAgIFJlbmRl
ck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVh
bENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyB9Ci0gICAgUmVu
ZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1
YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmxhc3RDaGlsZCgpOyB9CisgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5maXJzdENo
aWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hpbGRyZW4ubGFzdENoaWxkKCk7IH0KIAotICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRlck9i
amVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZp
cnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGls
ZExpc3QqIGNoaWxkcmVuKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAogICAg
IGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXpl
Q2hhbmdlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSB7
IG1fbmVlZHNCb3VuZGFyaWVzT3JUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIE9WRVJSSURFIHsgbV9uZWVkc0JvdW5k
YXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNC
b3VuZGFyaWVzVXBkYXRlKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNPclRy
YW5zZm9ybVVwZGF0ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpIHsgbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBPVkVSUklERSB7IG1fbmVlZHNC
b3VuZGFyaWVzT3JUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKICAgICBJbnRTaXplIGNvbnRh
aW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5lclNpemU7IH0KICAgICB2b2lkIHNl
dENvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSkgeyBtX2NvbnRhaW5l
clNpemUgPSBjb250YWluZXJTaXplOyB9CkBAIC03NywzMSArNzcsMjggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJl
dHVybiBjaGlsZHJlbigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExp
c3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Jv
b3QiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAg
PSBDb21wdXRlQWN0dWFsKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRM
b2dpY2FsSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGls
ZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIGJvb2wgZmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAg
ICBib29sIHN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXBhaW50Qm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGlu
Z0JveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fc3Ryb2tlQm91bmRpbmdCb3g7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVw
YWludEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3JlcGFp
bnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQogCiAgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKQEAgLTExMiw4ICsxMDksOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwg
TWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQg
PSAwKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRCb3VuZGFy
aWVzKCk7CiAgICAgdm9pZCBidWlsZExvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211692</attachid>
            <date>2013-09-15 01:01:08 -0700</date>
            <delta_ts>2013-09-15 01:20:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121373-20130915010108.patch</filename>
            <type>text/plain</type>
            <size>38831</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODExNTY1M2ZjN2Q4NjVi
ZjAwZWEwNGY4ZGRhYjQ5ODZlNDllMmE0MS4uYzUzN2E5MGM3YzlmOTc4OTk4NzVjNGU4NDhjZWNi
Mzk3ZTJhZjU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA5LTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgRklOQUwgaW5zdGVhZCBv
ZiB2aXJ0dWFsQ2hpbGRyZW4gdHJpY2sgaW4gcmVuZGVyIHRyZWUgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyU3R5bGUpOiBVc2UgY2hpbGRyZW4gaW5zdGVhZCBvZgorICAgICAgICB2aXJ0dWFsQ2hpbGRy
ZW4uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZCk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bW92ZUNoaWxkVG8pOiBEaXR0by4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6YWRkQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cmVtb3ZlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFu
ZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25DaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkUmVjdXJzaXZlKTogRGl0
dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDogQ2hhbmdlZCBmaXJzdENo
aWxkIGFuZCBsYXN0Q2hpbGQgdG8gdXNlCisgICAgICAgIG1fY2hpbGRyZW4gZGlyZWN0bHkgaW5z
dGVhZCBvZiBhIGZ1bmN0aW9uLiBNYWRlIHRoZSBjaGlsZHJlbiBmdW5jdGlvbgorICAgICAgICBh
IGZpbmFsIHZpcnR1YWwgb3ZlcnJpZGUuIERlbGV0ZWQgdGhlIHZpcnR1YWxDaGlsZHJlbiBvdmVy
cmlkZS4gQWRkZWQKKyAgICAgICAgb3ZlcnJpZGUga2V5d29yZHMgdG8gb3RoZXIgdmlydHVhbCBm
dW5jdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaDogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDogRGl0dG8uCisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpm
aXJzdENoaWxkKTogVXNlIGNoaWxkcmVuIGluc3RlYWQgb2YgdmlydHVhbENoaWxkcmVuLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpsYXN0Q2hpbGQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2hpbGRyZW4pOiBSZW5hbWVkIGZyb20gdmlydHVhbENo
aWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4p
OiBVc2UgY2hpbGRyZW4gaW5zdGVhZCBvZiB2aXJ0dWFsQ2hpbGRyZW4uCisKIDIwMTMtMDktMTUg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2Yg
cmVmLWNvdW50aW5nIG9uIFJlbmRlcldpZGdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDk2YzE3MGViODQxZTJiYjhiNmY5OWQwMDkxZWEyMjIxM2RhMmU0
ZTguLjcxZTIxNDBmMjhhODZmYmM4MDc2YjNmZmU2ZmVjZmFkZWZhNGE3MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTg2NSw3ICs1ODY1LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0
TGV0dGVyQmxvY2ssIFJlbmRlck8KICAgICAgICAgfQogICAgICAgICAvLyBUbyBwcmV2ZW50IHJl
bW92YWwgb2Ygc2luZ2xlIGFub255bW91cyBibG9jayBpbiBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hp
bGQgYW5kIGNhdXNpbmcKICAgICAgICAgLy8gfG5leHRTaWJsaW5nfCB0byBnbyBzdGFsZSwgd2Ug
cmVtb3ZlIHRoZSBvbGQgZmlyc3QgbGV0dGVyIHVzaW5nIHJlbW92ZUNoaWxkTm9kZSBmaXJzdC4K
LSAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPnZpcnR1YWxDaGlsZHJlbigpLT5yZW1vdmVD
aGlsZE5vZGUoZmlyc3RMZXR0ZXJDb250YWluZXIsIGZpcnN0TGV0dGVyKTsKKyAgICAgICAgZmly
c3RMZXR0ZXJDb250YWluZXItPmNoaWxkcmVuKCktPnJlbW92ZUNoaWxkTm9kZShmaXJzdExldHRl
ckNvbnRhaW5lciwgZmlyc3RMZXR0ZXIpOwogICAgICAgICBmaXJzdExldHRlci0+ZGVzdHJveSgp
OwogICAgICAgICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExl
dHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggM2Q4MzNhYzg4ZWEzMmQ0ZDgxZTgz
M2U5ZWI2ZGY4ZTQwMjg2MWI1Ni4uMjQzYTdmNzZkNjgyZGMzM2QwNGM4OTUyOWM4MzEyNzFmOGEx
NjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTEwMywxNyAr
MTAzLDE3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGNy
ZWF0ZUFub255bW91cyhEb2N1bWVudCopOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxk
KCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVy
biBjaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGls
ZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1
cm4gY2hpbGRyZW4oKS0+bGFzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRl
ck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQo
KTsgfQogCi0gICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0
IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRy
ZW4oKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCiAgICAgYm9vbCBi
ZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVpbmdEZXN0cm95ZWQ7IH0KIAogICAg
IC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJyaWRkZW4gZm9yIGlubGluZS1ibG9jay4K
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZpcnR1YWwg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgUmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygpIHsg
cmV0dXJuIG1fbGluZUJveGVzOyB9CiAgICAgY29uc3QgUmVuZGVyTGluZUJveExpc3QmIGxpbmVC
b3hlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CkBAIC01NjgsMTAgKzU2OCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWxheW91dFNoYXBlRGVzY2VuZGFudElmTW92ZWQoUmVuZGVy
QmxvY2sqIGNoaWxkLCBMYXlvdXRTaXplIG9mZnNldCk7CiAgICAgTGF5b3V0U2l6ZSBsb2dpY2Fs
T2Zmc2V0RnJvbVNoYXBlQW5jZXN0b3JDb250YWluZXIoY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRh
aW5lcikgY29uc3Q7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCog
dmlydHVhbENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQotICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biBjaGlsZHJlbigpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckJsb2NrKCkgY29uc3QgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZUJsb2NrT3JJbmxp
bmVUYWJsZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGlzSW5saW5lKCkgJiYgaXNS
ZXBsYWNlZCgpOyB9CkBAIC03NzgsOCArNzc2LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBmcmll
bmQgY2xhc3MgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlczsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVSUklERTsK
IAogICAgIExheW91dFVuaXQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgZGVzaXJlZENvbHVtbkNvdW50KCkgY29uc3Q7CkBAIC04ODYsNyArODg0LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgYm9vbCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgUmVuZGVyUmVnaW9uKiByZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQpIGNvbnN0
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5IHRvIGFsbG93IHVzIHRvIG1vdmUg
Y29kZSBmcm9tIFJlbmRlckJsb2NrIGludG8gUmVuZGVyQmxvY2tGbG93IHRoYXQgYWNjZXNzZXMg
bWVtYmVyIHZhcmlhYmxlcyB0aGF0IHdlIGhhdmVuJ3QgbW92ZWQgb3V0IG9mCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDFjMTFkM2JmOWNjYjg5ZTFiZmRlZjU5Njlh
N2FlZDQ2NjZmZDM3ZmQuLjFlZGU0NWVhOWZlM2ZhNzYyNDRjZDc5OGRhNDNiMjE0Y2MzYThiZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00NjU0LDcgKzQ2NTQs
NyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6c3BsaXRBbm9ueW1vdXNCb3hlc0Fyb3VuZENo
aWxkKFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbAogICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUg
dGFibGUgcmVwYWludGluZyBsb2dpYyBrbm93cyB0aGUgc3RydWN0dXJlIGlzIGRpcnR5LgogICAg
ICAgICAgICAgLy8gU2VlIGZvciBleGFtcGxlIFJlbmRlclRhYmxlQ2VsbDpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludC4KICAgICAgICAgICAgIG1hcmtCb3hGb3JSZWxheW91dEFmdGVyU3Bs
aXQocGFyZW50Qm94KTsKLSAgICAgICAgICAgIHBhcmVudEJveC0+dmlydHVhbENoaWxkcmVuKCkt
Pmluc2VydENoaWxkTm9kZShwYXJlbnRCb3gsIHBvc3RCb3gsIGJveFRvU3BsaXQtPm5leHRTaWJs
aW5nKCkpOworICAgICAgICAgICAgcGFyZW50Qm94LT5jaGlsZHJlbigpLT5pbnNlcnRDaGlsZE5v
ZGUocGFyZW50Qm94LCBwb3N0Qm94LCBib3hUb1NwbGl0LT5uZXh0U2libGluZygpKTsKICAgICAg
ICAgICAgIGJveFRvU3BsaXQtPm1vdmVDaGlsZHJlblRvKHBvc3RCb3gsIGJlZm9yZUNoaWxkLCAw
LCB0cnVlKTsKIAogICAgICAgICAgICAgbWFya0JveEZvclJlbGF5b3V0QWZ0ZXJTcGxpdChib3hU
b1NwbGl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCmluZGV4IGU1YmQ5N2UwNDI5M2JhMTdiZmRjNmI3ZmY4NDdmYzgxM2Q4M2QxMmIu
LjM5YmJkYTAyZmM1ZWE1YTQ4ODQ3Y2VlZGFiMTU1YTYzOTlhYzRkMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjc3NSw5
ICsyNzc1LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bW92ZUNoaWxkVG8oUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHRvQm94TW9kZWxPYmplY3QsIFIKICAgICBpZiAoZnVsbFJlbW92ZUlu
c2VydCAmJiAodG9Cb3hNb2RlbE9iamVjdC0+aXNSZW5kZXJCbG9jaygpIHx8IHRvQm94TW9kZWxP
YmplY3QtPmlzUmVuZGVySW5saW5lKCkpKSB7CiAgICAgICAgIC8vIFRha2VzIGNhcmUgb2YgYWRk
aW5nIHRoZSBuZXcgY2hpbGQgY29ycmVjdGx5IGlmIHRvQmxvY2sgYW5kIGZyb21CbG9jawogICAg
ICAgICAvLyBoYXZlIGRpZmZlcmVudCBraW5kIG9mIGNoaWxkcmVuIChibG9jayB2cyBpbmxpbmUp
LgotICAgICAgICB0b0JveE1vZGVsT2JqZWN0LT5hZGRDaGlsZCh2aXJ0dWFsQ2hpbGRyZW4oKS0+
cmVtb3ZlQ2hpbGROb2RlKHRoaXMsIGNoaWxkKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICB0b0Jv
eE1vZGVsT2JqZWN0LT5hZGRDaGlsZChjaGlsZHJlbigpLT5yZW1vdmVDaGlsZE5vZGUodGhpcywg
Y2hpbGQpLCBiZWZvcmVDaGlsZCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHRvQm94TW9kZWxPYmpl
Y3QtPnZpcnR1YWxDaGlsZHJlbigpLT5pbnNlcnRDaGlsZE5vZGUodG9Cb3hNb2RlbE9iamVjdCwg
dmlydHVhbENoaWxkcmVuKCktPnJlbW92ZUNoaWxkTm9kZSh0aGlzLCBjaGlsZCwgZnVsbFJlbW92
ZUluc2VydCksIGJlZm9yZUNoaWxkLCBmdWxsUmVtb3ZlSW5zZXJ0KTsKKyAgICAgICAgdG9Cb3hN
b2RlbE9iamVjdC0+Y2hpbGRyZW4oKS0+aW5zZXJ0Q2hpbGROb2RlKHRvQm94TW9kZWxPYmplY3Qs
IGNoaWxkcmVuKCktPnJlbW92ZUNoaWxkTm9kZSh0aGlzLCBjaGlsZCwgZnVsbFJlbW92ZUluc2Vy
dCksIGJlZm9yZUNoaWxkLCBmdWxsUmVtb3ZlSW5zZXJ0KTsKIH0KIAogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6bW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvQm94TW9k
ZWxPYmplY3QsIFJlbmRlck9iamVjdCogc3RhcnRDaGlsZCwgUmVuZGVyT2JqZWN0KiBlbmRDaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgYm9vbCBmdWxsUmVtb3ZlSW5zZXJ0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAppbmRleCBj
MzMzODM1YjA3N2Y5MTU1ZDA1NjY5ZWZiOGU1OTM0ZDZkZWNmYTc0Li4yYjQ3NmYyMzllNGE3NzBj
NzAwYjZlN2RhOWM3NmU3MWVmMjBkMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtNzIsMTQgKzcyLDE0IEBAIHByb3RlY3RlZDoK
IAogICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2lu
dCYsIEN1cnNvciYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9Ci0gICAgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3Qg
T1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiAmbV9j
aGlsZHJlbjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJS
SURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJFbWJlZGRlZE9iamVjdCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyRW1iZWRk
ZWRPYmplY3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHBhaW50U25hcHNob3RJ
bWFnZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdlKik7CkBAIC0xMDMsOCAr
MTAzLDYgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRSZWN0IHVuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9yQm91bmRzKGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gY2hpbGRy
ZW4oKTsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlV2lkZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5o
CmluZGV4IDYxN2JiYjRiYTg0MjU2MGRlY2FjNWM0ZTIxOWZlYmYyNjdhYjhmNDAuLjg5YTczMWM1
NzZhZWY3ODEwZjUyN2M3MzY2MTM5NWM1MTVhOTI3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5oCkBAIC01OCwxMSArNTgsMTEgQEAgcHVibGljOgogICAgIFJl
bmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJG
cmFtZVNldCgpOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NF
UlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5m
aXJzdENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNT
RVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+
bGFzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2No
aWxkcmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJu
ICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSB7IHJldHVy
biAmbV9jaGlsZHJlbjsgfQogCiAgICAgRnJhbWVFZGdlSW5mbyBlZGdlSW5mbygpIGNvbnN0Owog
CkBAIC05MywxNiArOTMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fc3BsaXRSZXNpemVP
ZmZzZXQ7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0
dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBS
ZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNo
aWxkcmVuKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAiUmVuZGVyRnJhbWVTZXQiOyB9CisgICAgdmlydHVhbCBib29sIGlz
RnJhbWVTZXQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRnJhbWVTZXQi
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRB
bGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBD
dXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25z
dCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW5saW5lIEhU
TUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBmZTg5NjQ5NDJmZmIwNzU0ODUyNjM1Nzc1NzNhMGRj
NmE1Y2IwZDk5Li4xNDhhMDU3N2Y0NzcyMGU5MWY2MDVjM2IxYTg1OGI4M2ViYjlkMjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0zNywxMCArMzcsMTAgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFJlbmRlcklubGluZSogY3JlYXRlQW5vbnltb3VzKERvY3Vt
ZW50Kik7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChj
aGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0
Q2hpbGQoKTsgfQotICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQo
Y2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5sYXN0
Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmxhc3RDaGlsZCgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwpA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVu
ZChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSA9IDApIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBPVkVSUklERSBGSU5BTDsK
LSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExh
eW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKIApAQCAtOTQsMTcgKzk0LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGhpdFRlc3RD
dWxsZWRJbmxpbmUoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxC
ZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gY2hpbGRyZW4oKTsgfQotICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRy
ZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRlck9iamVjdENoaWxk
TGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExp
c3QqIGNoaWxkcmVuKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVySW5saW5lKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdHJ1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IDRlNjNmOTQ3ZmRl
NWZjYjczMmNmZjJkN2U2ZjRiYWRlMmU1YWQxYzMuLmI2YjI0ODc3ZjIxYWZlZDc1NDQzYmM5MjI5
ZTgyZDg5MzE0ZWVlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBA
IC00MCwxMSArNDAsMTEgQEAgcHVibGljOgogICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1l
bnQqLCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJN
ZWRpYSgpOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQo
Y2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5maXJz
dENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJU
KGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+bGFz
dENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVy
biBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxk
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgY29uc3Qg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxk
cmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZt
X2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNo
aWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSBGSU5B
TCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KCkgY29uc3Q7CiAKQEAgLTUyLDE0ICs1MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiBjaGls
ZHJlbigpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1
YWxDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlck1lZGlhIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJNZWRpYSI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZWRpYSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IE9WRVJSSURF
IEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtNzgsNCArNzYsNSBAQCB2b2lkIHRvUmVuZGVy
TWVkaWEoY29uc3QgUmVuZGVyTWVkaWEqKTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCisKICNlbmRpZiAvLyBSZW5kZXJNZWRpYV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGM3ODM4MGUzMTQyY2QyOTA5NTcxOTVjYTdiNjVmZGYxNzM2
YTg1NmUuLjgzNGQyZDYxODJkNTVhZjhiMzAyMTc4Njc1MTI1OTUyOGYwM2Q1MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OnNldEZsb3dUaHJlYWRTdGF0ZUluY2x1ZGluZ0Rlc2NlbmRhbnRz
KEZsb3dUaHJlYWRTdGF0ZSBzdGF0ZSkKIAogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZENoaWxkKFJl
bmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7Ci0gICAg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpOworICAg
IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAg
IEFTU0VSVChjaGlsZHJlbik7CiAgICAgaWYgKCFjaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogCiB2b2lkIFJlbmRlck9i
amVjdDo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KiBvbGRDaGlsZCkKIHsKLSAgICBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdmlydHVhbENoaWxkcmVuKCk7CisgICAgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CiAgICAgQVNTRVJU
KGNoaWxkcmVuKTsKICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICByZXR1cm47CkBAIC0xODk5
LDcgKzE4OTksNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6aGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRp
b25DaGFuZ2UoKQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIEFuIGFub255bW91cyBi
bG9jayBtdXN0IGJlIG1hZGUgdG8gd3JhcCB0aGlzIGlubGluZS4KICAgICAgICAgICAgIFJlbmRl
ckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxvY2socGFyZW50KCkpLT5jcmVhdGVBbm9ueW1vdXNC
bG9jaygpOwotICAgICAgICAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZGxpc3QgPSBw
YXJlbnQoKS0+dmlydHVhbENoaWxkcmVuKCk7CisgICAgICAgICAgICBSZW5kZXJPYmplY3RDaGls
ZExpc3QqIGNoaWxkbGlzdCA9IHBhcmVudCgpLT5jaGlsZHJlbigpOwogICAgICAgICAgICAgY2hp
bGRsaXN0LT5pbnNlcnRDaGlsZE5vZGUocGFyZW50KCksIGJsb2NrLCB0aGlzKTsKICAgICAgICAg
ICAgIGJsb2NrLT5jaGlsZHJlbigpLT5hcHBlbmRDaGlsZE5vZGUoYmxvY2ssIGNoaWxkbGlzdC0+
cmVtb3ZlQ2hpbGROb2RlKHBhcmVudCgpLCB0aGlzKSk7CiAgICAgICAgIH0KQEAgLTI2NDcsNyAr
MjY0Nyw3IEBAIGlubGluZSB2b2lkIFJlbmRlck9iamVjdDo6Y2xlYXJMYXlvdXRSb290SWZOZWVk
ZWQoKSBjb25zdAogdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAg
Ly8gRGVzdHJveSBhbnkgbGVmdG92ZXIgYW5vbnltb3VzIGNoaWxkcmVuLgotICAgIFJlbmRlck9i
amVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKTsKKyAgICBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAgICBpZiAoY2hp
bGRyZW4pCiAgICAgICAgIGNoaWxkcmVuLT5kZXN0cm95TGVmdG92ZXJDaGlsZHJlbigpOwogCkBA
IC0yNzg3LDcgKzI3ODcsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVJlbmRlckZs
b3dUaHJlYWQoKQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVJlbmRlckZsb3dUaHJl
YWRSZWN1cnNpdmUoUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZCkKIHsKLSAgICBp
ZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9IHZpcnR1YWxDaGlsZHJl
bigpKSB7CisgICAgaWYgKGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB0
aGlzLT5jaGlsZHJlbigpKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNo
aWxkcmVuLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KQogICAgICAgICAgICAgY2hpbGQtPnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkUmVjdXJzaXZl
KHJlbmRlckZsb3dUaHJlYWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCAwZTkwMGFhZGJiMTlhOTQyZmMyMjE4OWE2MGE5YzAzMDcxMDBiZDBlLi5h
YWQ2MTlhYWEzMTc1YWZkNDY1ZTkxZTg4NjZlMGY5YzExZWY5YmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xNjQsMjUgKzE2NCwyNSBAQCBwdWJsaWM6CiAg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQog
CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSByZW5hbWVkIHNsb3dGaXJzdENoaWxkLCBz
bG93TGFzdENoaWxkLCBldGMuCi0gICAgLy8gdG8gZGlzY291cmFnZSB0aGVpciB1c2UuIFRoZSB2
aXJ0dWFsQ2hpbGRyZW4oKSBjYWxsIGluc2lkZSB0aGVzZQorICAgIC8vIHRvIGRpc2NvdXJhZ2Ug
dGhlaXIgdXNlLiBUaGUgdmlydHVhbCBjYWxsIHRvIGNoaWxkcmVuIGluc2lkZSB0aGVzZQogICAg
IC8vIGNhbiBiZSBzbG93IGZvciBob3QgY29kZSBwYXRocy4KLSAgICAvLyBDdXJyZW50bHksIHNv
bWUgc3ViY2xhc3NlcyBsaWtlIFJlbmRlckJsb2NrLCBvdmVycmlkZSB0aGVzZSBOT04tdmlydHVh
bAotICAgIC8vIGZ1bmN0aW9ucyB0byBtYWtlIHRoZXNlIGZhc3Qgd2hlbiB3ZSBhbHJlYWR5IGhh
dmUgYSBtb3JlIHNwZWNpZmljIHBvaW50ZXIgdHlwZS4KKyAgICAvLyBEZXJpdmVkIGNsYXNzZXMg
bGlrZSBSZW5kZXJCbG9jayBvdmVycmlkZSB0aGVzZSBub24tdmlydHVhbAorICAgIC8vIGZ1bmN0
aW9ucyB0byBtYWtlIHRoZW0gZmFzdCB3aGVuIHdlIGFscmVhZHkgaGF2ZSBhIG1vcmUgc3BlY2lm
aWMgcG9pbnRlciB0eXBlLgogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbiA9
IHZpcnR1YWxDaGlsZHJlbigpKQorICAgICAgICBpZiAoY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0KiBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCkpCiAgICAgICAgICAgICByZXR1cm4gY2hp
bGRyZW4tPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIFJlbmRl
ck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChjb25zdCBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdmlydHVhbENoaWxkcmVuKCkpCisgICAgICAg
IGlmIChjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRy
ZW4oKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi0+bGFzdENoaWxkKCk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2
aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0SW5QcmVPcmRlcigpIGNv
bnN0OwogICAgIFJlbmRlck9iamVjdCogbmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBzdGF5V2l0aGluKSBjb25zdDsKQEAgLTI3NSw3ICsyNzUsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgLy8gUmVuZGVyT2JqZWN0IHRyZWUgbWFuaXB1bGF0aW9uCiAgICAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxDaGlsZHJlbigpOyB9CisgICAgdmlydHVhbCBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IDIzMmQzMzE1YzllMjk4YjIwZGIwZWY5
MzE5MjUxYWE1OTA2OTU4NDkuLjlhMGYzOWZiZDY3NzhiY2QwMzBmYmY5NjI0ODcwYmMyNmQ5N2Ey
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC0zOCwx
MSArMzgsMTEgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ29sKEVsZW1lbnQm
KTsKICAgICBFbGVtZW50JiBleGlzdGluZ0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiAqUmVuZGVy
Qm94OjplbGVtZW50KCk7IH0KIAotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0
IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRy
ZW4oKS0+Zmlyc3RDaGlsZCgpOyB9Ci0gICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25z
dCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxk
cmVuKCktPmxhc3RDaGlsZCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbi5maXJzdENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3Qq
IGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4ubGFzdENoaWxkKCk7IH0KIAot
ICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biAmbV9jaGlsZHJlbjsgfQotICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7
IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9
CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgT1ZFUlJJREUg
eyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAogICAgIHZvaWQgY2xlYXJQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzRGlydHlCaXRzKCk7CiAKQEAgLTgwLDI1ICs4MCwyMiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogCi0gICAg
dmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJu
IGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCog
dmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQotCi0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclRhYmxl
Q29sIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuICJSZW5kZXJUYWJsZUNvbCI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJUYWJsZUNvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKSBPVkVSUklERSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ2hp
bGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwg
Y29uc3QgSW50UmVjdCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAogICAgIFJlbmRlclRh
YmxlKiB0YWJsZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oCmluZGV4IDM1N2JhMjA3MTJkMmU3MWZhZWE5YTEwNjk2MTg1M2Q1YTFhZWQzMTUuLmMx
ZTBiNzA4YTA2ZDNhYzAzODdkNmQxZTc0ODc5YWViMmFlNTQ0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC0zNiwxMSArMzYsMTEgQEAgY2xhc3MgUmVu
ZGVyVGFibGVSb3cgRklOQUwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBSZW5kZXJUYWJsZVJvdyhFbGVtZW50Kik7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0
Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsg
cmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgfQotICAgIFJlbmRlck9iamVjdCogbGFz
dENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7
IHJldHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogZmly
c3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOyB9CisgICAg
UmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmxhc3RD
aGlsZCgpOyB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkg
Y29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAm
bV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJl
bigpIE9WRVJSSURFIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAKICAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHNlY3Rpb24oKSBjb25zdCB7IHJldHVybiB0b1JlbmRlclRhYmxlU2VjdGlvbihwYXJl
bnQoKSk7IH0KICAgICBSZW5kZXJUYWJsZSogdGFibGUoKSBjb25zdCB7IHJldHVybiB0b1JlbmRl
clRhYmxlKHBhcmVudCgpLT5wYXJlbnQoKSk7IH0KQEAgLTg5LDI3ICs4OSwyNCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVu
ZGVyVGFibGVDZWxsKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkg
Y29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNl
dWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFi
bGVSb3ciOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFi
bGVSb3cgKGFub255bW91cykiIDogIlJlbmRlclRhYmxlUm93IjsgfQotCi0gICAgdmlydHVhbCBi
b29sIGlzVGFibGVSb3coKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGlzVGFibGVSb3coKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNl
KCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBjcmVhdGVzR3JvdXAoKTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVj
dCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwg
Y29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAogICAgIFJlbmRlck9iamVjdENoaWxkTGlz
dCBtX2NoaWxkcmVuOwogICAgIHVuc2lnbmVkIG1fcm93SW5kZXggOiAzMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCA2YzFlMjQzZTMzNjgy
NDViMDUzNzdjNzY5MTk5MzllM2VlZmM2MmI5Li5hMTM1MTI0OGY2ZDgxMmNiNWM0MzQyMTBhNTJk
ZGY4MmY4MWY5OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oCkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlU2Vj
dGlvbihFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9uKCk7CiAKLSAg
ICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09
IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgfQot
ICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9
PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsgfQor
ICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4u
Zmlyc3RDaGlsZCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLmxhc3RDaGlsZCgpOyB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAgICBS
ZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIE9WRVJSSURFIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURF
OwogCkBAIC0xOTksMjQgKzE5OSwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGls
ZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9i
amVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4o
KTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJU
YWJsZVNlY3Rpb24gKGFub255bW91cykiIDogIlJlbmRlclRhYmxlU2VjdGlvbiI7IH0KIAotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIChpc0Fub255
bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255
bW91cykiIDogIlJlbmRlclRhYmxlU2VjdGlvbiI7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1Rh
YmxlU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNU
YWJsZVNlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Q2VsbChSZW5kZXJUYWJsZUNlbGwqLCBQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQgcGFpbnRDZWxsKFJlbmRlclRhYmxl
Q2VsbCosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50
UmVjdCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciwgY29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IGYyNzk3NzJi
NzVmZjAxMzlkOWNhYWY3MGRiNDk2ZjEwODliNGRiYTQuLmMzZjU3NjA2OWRiZmIyMzZkNDVjZTBm
NjViMjA3MzJjZTQ5YzJjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuaApAQCAtMzUsMTMgKzM1LDEzIEBAIGNsYXNzIFJlbmRlclNW
R0NvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHQ29udGFpbmVyKCk7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0
Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsg
cmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgfQotICAgIFJlbmRlck9iamVjdCogbGFz
dENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7
IHJldHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogZmly
c3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3RDaGlsZCgpOyB9CisgICAg
UmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuLmxhc3RD
aGlsZCgpOyB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkg
Y29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KLSAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiAmbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBj
aGlsZHJlbigpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgT1ZFUlJJREUg
RklOQUwgeyBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9uZWVk
c0JvdW5kYXJpZXNVcGRhdGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkVHJhbnNmb3JtVG9Sb290
VXBkYXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUwLDkgKzUwLDYgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IFJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQotICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBjaGlsZHJlbigpOyB9Ci0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWlu
ZXIoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlclNW
R0NvbnRhaW5lciI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaAppbmRleCAzYTBjNmRlODVhOTc4NjFhOTNhZTllYTA1NTY1MmQwMjJhNTVhYzg0Li5j
ZDhlMWJmZDMxMzkwZGNjZjkzNGQ3NmU3ZDFiMmM4ZDJmYTJkYjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNDQsMTggKzQ0LDE4IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBi
b29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9h
dFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8sIGJvb2wmIGlzUGVy
Y2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYg
aW50cmluc2ljUmF0aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0IE9W
RVJSSURFOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQo
Y2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5maXJz
dENoaWxkKCk7IH0KLSAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJU
KGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+bGFz
dENoaWxkKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVy
biBtX2NoaWxkcmVuLmZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxk
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5sYXN0Q2hpbGQoKTsgfQogCi0gICAgY29uc3Qg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxk
cmVuOyB9Ci0gICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZt
X2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNo
aWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBPVkVSUklERSB7IHJldHVybiAm
bV9jaGlsZHJlbjsgfQogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
Qm91bmRhcmllc1VwZGF0ZSgpIHsgbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9
IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgT1ZF
UlJJREUgeyBtX25lZWRzQm91bmRhcmllc09yVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBPVkVSUklERSB7IHJldHVybiBt
X25lZWRzQm91bmRhcmllc09yVHJhbnNmb3JtVXBkYXRlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzQm91bmRhcmllc09yVHJhbnNmb3JtVXBk
YXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
IE9WRVJSSURFIHsgbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
IAogICAgIEludFNpemUgY29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmVy
U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBjb250YWlu
ZXJTaXplKSB7IG1fY29udGFpbmVyU2l6ZSA9IGNvbnRhaW5lclNpemU7IH0KQEAgLTc3LDMxICs3
NywyOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9E
RUxFVEVEX0ZVTkNUSU9OOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZp
cnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Y2hpbGRyZW4oKTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQog
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91
bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCBMYXlvdXRV
bml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAotICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxs
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgYm9vbCBmaWxsQ29udGFpbnMoY29uc3QgRmxv
YXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgc3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJl
Y3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94
OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQorICAgIHZpcnR1YWwgRmxv
YXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9vYmpl
Y3RCb3VuZGluZ0JveDsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQorICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KICAgICB2aXJ0dWFsIEZsb2F0
UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURF
OwpAQCAtMTEyLDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lk
IHVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMoKTsKICAgICB2b2lkIGJ1aWxkTG9jYWxUb0JvcmRlckJv
eFRyYW5zZm9ybSgpOwo=
</data>
<flag name="review"
          id="233808"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>