<?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>225849</bug_id>
          
          <creation_ts>2021-05-15 19:34:23 -0700</creation_ts>
          <short_desc>Move more logic from AudioDestinationNode to its subclasses</short_desc>
          <delta_ts>2021-05-17 09:54:17 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225843</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760542</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-15 19:34:23 -0700</bug_when>
    <thetext>Move more logic from AudioDestinationNode to its subclasses. In particular, AudioDestinationNode contains a lot of things that are specific to real-time audio rendering and those should go to DefaultAudioDestinationNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760546</commentid>
    <comment_count>1</comment_count>
      <attachid>428767</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-15 19:37:59 -0700</bug_when>
    <thetext>Created attachment 428767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760791</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-17 09:53:45 -0700</bug_when>
    <thetext>Committed r277586 (237811@main): &lt;https://commits.webkit.org/237811@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428767.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760792</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-17 09:54:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78109378&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428767</attachid>
            <date>2021-05-15 19:37:59 -0700</date>
            <delta_ts>2021-05-17 09:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225849-20210515193758.patch</filename>
            <type>text/plain</type>
            <size>26440</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmEwM2Q3ZmUwMjk3NWJi
MDQ2MDVjMTAxMjg5YTFiM2RlMGNhOGQ4NC4uYjBjZTdiZTA5ODZkMzZmNGVlZmRhNzgxNjg1ODcz
OTQyZDAzNDFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA1LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3JlIGxvZ2ljIGZy
b20gQXVkaW9EZXN0aW5hdGlvbk5vZGUgdG8gaXRzIHN1YmNsYXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgbW9yZSBsb2dpYyBmcm9tIEF1
ZGlvRGVzdGluYXRpb25Ob2RlIHRvIGl0cyBzdWJjbGFzc2VzLiBJbiBwYXJ0aWN1bGFyLCBBdWRp
b0Rlc3RpbmF0aW9uTm9kZQorICAgICAgICBjb250YWlucyBhIGxvdCBvZiB0aGluZ3MgdGhhdCBh
cmUgc3BlY2lmaWMgdG8gcmVhbC10aW1lIGF1ZGlvIHJlbmRlcmluZyBhbmQgdGhvc2Ugc2hvdWxk
IGdvIHRvCisgICAgICAgIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS4KKworICAgICAgICBU
aGlzIGFsbG93cyB1cyB0byBtb3ZlIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZnJvbSBCYXNl
QXVkaW9Db250ZXh0IHRvIEF1ZGlvQ29udGV4dCBhbHNvLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5k
ZXJRdWFudHVtKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZnJh
bWVzUGVyQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6c2V0SXNTaWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjppc1BsYXlpbmdEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1cGRhdGVJc0VmZmVjdGl2ZWx5UGxheWluZ0F1
ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXJPbkF1ZGlvVGhyZWFkKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
CiAyMDIxLTA1LTE1ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXSBNb3ZlIHRhYmxlIGZvcm1hdHRpbmcgZ2VvbWV0cnkgdG8gaXRzIG93biBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4
IDc3NzZhNTFmMGRhOWFkMmU5Yzk1MGNhZWZkMzI4MzhkNDEyMDU0MjYuLmYwNDgwNjc1ZmVlNTdm
ZDc1Y2UxZTE4ZDc2OTBmMjdmMDNlODU5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTUwNCw2ICs1MDQsMjAgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIG1heVJl
c3VtZVBsYXliYWNrKHRydWUpOwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVk
aW9EaWRDaGFuZ2UoKQoreworICAgIC8vIEhlYXAgYWxsb2NhdGlvbnMgYXJlIGZvcmJpZGRlbiBv
biB0aGUgYXVkaW8gdGhyZWFkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHNvIHdlIG5lZWQgdG8K
KyAgICAvLyBleHBsaWNpdGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KKyAg
ICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVN
YWxsb2NSZXN0cmljdGlvbnM7CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6
dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCisgICAgLy8g
d2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50
byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBwcm90
ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGNv
bnN0IExvZ2dlciYgQXVkaW9Db250ZXh0Ojpsb2dnZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYTZlZjY3YzFiMzZh
Mzk3NWUwNjM4OWFmZTc3ZDFjNTVhNmNlN2M4Yi4uZWVlY2U0NTA4ZGRjN2EyYmZiYTEwYmMyMGRh
ODgyMDNiYmMyMjkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRS
ZW5kZXJpbmcoKTsKIAorICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsKKwogICAg
IC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCiAgICAgZW51bSBC
ZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCmluZGV4IDQ1MTNmN2Q4NjU4NmNiNzZjZDJmM2U0M2IyY2ZkNjEzMzk4MjQ0
MTEuLjUxZTllMzEwZWZhNTI0Mjk5NGZhODk3NDViMmI3MmYyNjBhOWVkM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxLCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDcgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgiCiAKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgor
I2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0Lmgi
CiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9VdGlsaXRpZXMu
aCIKQEAgLTU1LDcgKzU4LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRpb0Rlc3RpbmF0
aW9uTm9kZSgpCiAgICAgdW5pbml0aWFsaXplKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBjb25zdCBBdWRpb0lPUG9zaXRpb24mIG91dHB1dFBvc2l0aW9uKQor
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyUXVhbnR1bShBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgY29uc3QgQXVkaW9JT1Bvc2l0aW9uJiBv
dXRwdXRQb3NpdGlvbikKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IGRlbm9ybWFscyBzbG93aW5n
IGRvd24gYW55IG9mIHRoZSBhdWRpbyBwcm9jZXNzaW5nCiAgICAgLy8gc2luY2UgdGhleSBjYW4g
dmVyeSBzZXJpb3VzbHkgaHVydCBwZXJmb3JtYW5jZS4KQEAgLTcxLDE0ICs3NCwxMiBAQCB2b2lk
IEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHNpemVfdCBudQogICAgIAogICAgIGlmICghY29udGV4dCgpLmlzSW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwotICAgICAgICBzZXRJc1Np
bGVudCh0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChudW1iZXJP
ZkZyYW1lcyk7CiAgICAgaWYgKCFudW1iZXJPZkZyYW1lcykgewogICAgICAgICBkZXN0aW5hdGlv
bkJ1cy0+emVybygpOwotICAgICAgICBzZXRJc1NpbGVudCh0cnVlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTEzLDM3ICsxMTQsNiBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBudQog
CiAgICAgaWYgKHdvcmtsZXRHbG9iYWxTY29wZSkKICAgICAgICAgd29ya2xldEdsb2JhbFNjb3Bl
LT5oYW5kbGVQb3N0UmVuZGVyVGFza3MobV9jdXJyZW50U2FtcGxlRnJhbWUpOwotCi0gICAgc2V0
SXNTaWxlbnQoZGVzdGluYXRpb25CdXMtPmlzU2lsZW50KCkpOwotCi0gICAgLy8gVGhlIHJlYXNv
biB3ZSBhcmUgaGFuZGxpbmcgbXV0ZSBhZnRlciB0aGUgY2FsbCB0byBzZXRJc1NpbGVudCgpIGlz
IGJlY2F1c2UgdGhlIG11dGVkIHN0YXRlIGRvZXMKLSAgICAvLyBub3QgYWZmZWN0IHRoZSBhdWRp
byBkZXN0aW5hdGlvbiBub2RlJ3MgZWZmZWN0aXZlIHBsYXlpbmcgc3RhdGUuCi0gICAgaWYgKG1f
bXV0ZWQpCi0gICAgICAgIGRlc3RpbmF0aW9uQnVzLT56ZXJvKCk7Ci19Ci0KLXZvaWQgQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmlzUGxheWluZ0RpZENoYW5nZSgpCi17Ci0gICAgdXBkYXRlSXNFZmZl
Y3RpdmVseVBsYXlpbmdBdWRpbygpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpz
ZXRJc1NpbGVudChib29sIGlzU2lsZW50KQotewotICAgIGlmIChtX2lzU2lsZW50ID09IGlzU2ls
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzU2lsZW50ID0gaXNTaWxlbnQ7Ci0gICAg
dXBkYXRlSXNFZmZlY3RpdmVseVBsYXlpbmdBdWRpbygpOwotfQotCi12b2lkIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjp1cGRhdGVJc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvKCkKLXsKLSAgICBib29s
IGlzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmcoKSAmJiAhbV9pc1NpbGVudDsK
LSAgICBpZiAobV9pc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvID09IGlzRWZmZWN0aXZlbHlQbGF5
aW5nQXVkaW8pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNFZmZlY3RpdmVseVBsYXlpbmdB
dWRpbyA9IGlzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW87Ci0gICAgY29udGV4dCgpLmlzUGxheWlu
Z0F1ZGlvRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlZigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKaW5kZXggMjZmNTYzNTRhYmE5ZWVmYmQ4NGI4NDNjMjljY2E2NDg0NmI3OTA3
NS4uOWYzNGI1OTAwZDg1ZTlkY2QxOTU2YTAzODQ5ZTkxMGQzNWM0OTY1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSwgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCwyNiArMjUsMjEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBdWRpb0J1
cy5oIgotI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsKK2NsYXNzIEF1
ZGlvQnVzOworc3RydWN0IEF1ZGlvSU9Qb3NpdGlvbjsKKworY2xhc3MgQXVkaW9EZXN0aW5hdGlv
bk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShC
YXNlQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdmlydHVhbCB+QXVkaW9E
ZXN0aW5hdGlvbk5vZGUoKTsKKyAgICB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKICAg
ICAvLyBBdWRpb05vZGUgICAKLSAgICB2b2lkIHByb2Nlc3Moc2l6ZV90KSBvdmVycmlkZSB7IH07
IC8vIHdlJ3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxlZAotICAg
IAotICAgIC8vIFRoZSBhdWRpbyBoYXJkd2FyZSBjYWxscyByZW5kZXIoKSB0byBnZXQgdGhlIG5l
eHQgcmVuZGVyIHF1YW50dW0gb2YgYXVkaW8gaW50byBkZXN0aW5hdGlvbkJ1cy4KLSAgICAvLyBJ
dCB3aWxsIG9wdGlvbmFsbHkgZ2l2ZSB1cyBsb2NhbC9saXZlIGF1ZGlvIGlucHV0IGluIHNvdXJj
ZUJ1cyAoaWYgaXQncyBub3QgMCkuCi0gICAgdm9pZCByZW5kZXIoQXVkaW9CdXMqIHNvdXJjZUJ1
cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGNvbnN0
IEF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcHJv
Y2VzcyhzaXplX3QpIGZpbmFsIHsgfSAvLyB3ZSdyZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhp
cyBpcyBuZXZlciBjYWxsZWQKIAogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIApAQCAtNTYsMzQgKzUyLDI0IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsgfQotICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHJlc3RhcnRSZW5kZXJpbmcoKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBp
c1BsYXlpbmcoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1f
aXNFZmZlY3RpdmVseVBsYXlpbmdBdWRpbzsgfQotICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRl
ZCkgeyBtX211dGVkID0gbXV0ZWQ7IH0KLQogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlcyBh
cmUgb3duZWQgYnkgdGhlIEJhc2VBdWRpb0NvbnRleHQgc28gd2UgZm9yd2FyZCB0aGUgcmVmY291
bnRpbmcgdG8gaXRzIEJhc2VBdWRpb0NvbnRleHQuCiAgICAgdm9pZCByZWYoKSBmaW5hbDsKICAg
ICB2b2lkIGRlcmVmKCkgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAgICBkb3VibGUgdGFpbFRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKEJh
c2VBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIHNldElzU2lsZW50KGJvb2wpOwot
ICAgIHZvaWQgdXBkYXRlSXNFZmZlY3RpdmVseVBsYXlpbmdBdWRpbygpOworICAgIHZvaWQgcmVu
ZGVyUXVhbnR1bShBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cywgY29uc3QgQXVkaW9JT1Bvc2l0aW9uJiBvdXRwdXRQb3NpdGlvbik7CiAKK3ByaXZhdGU6CiAg
ICAgLy8gQ291bnRzIHRoZSBudW1iZXIgb2Ygc2FtcGxlLWZyYW1lcyBwcm9jZXNzZWQgYnkgdGhl
IGRlc3RpbmF0aW9uLgogICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV9jdXJyZW50U2FtcGxlRnJh
bWUgeyAwIH07Ci0KICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7Ci0gICAgYm9vbCBtX2lzU2lsZW50
IHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9pc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVk
aW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5jcHAKaW5kZXggMDYyNWYyMWUzYjg0MDI3OTQzZDRmYTE1ZWRiNGZiMjRiZDQ0NWY2
YS4uNDZiZTZlNTI4MDc1N2QyNDMxMmRiNGNiYmJiNWUzMGU4ZjJkMGM5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBA
IC04NTMsMjEgKzg1Myw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEJhc2VBdWRpb0NvbnRl
eHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IG1vdmUgdG8gQXVkaW9Db250ZXh0Lgotdm9pZCBCYXNlQXVkaW9Db250ZXh0
Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCi17Ci0gICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBh
cmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
c28gd2UgbmVlZCB0bwotICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxv
Y2F0aW9uKHMpLgotICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFk
U2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKLQotICAgIC8vIE1ha2Ugc3VyZSB0byBj
YWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwg
c2luY2UKLSAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFu
ZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxvY2suCi0gICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSAgICB9KTsKLX0KLQogdm9pZCBCYXNlQXVkaW9D
b250ZXh0OjppbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCiB7CiAgICAgKyttX2FjdGl2ZVNv
dXJjZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
YXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VB
dWRpb0NvbnRleHQuaAppbmRleCA1NjMwNmZhMzVjNzUxZTA4YmVlMTg1ZjdjOThmYTBiMmZmYjFj
ZDdlLi5kOWZlMmI1YTYxYmQwMWI3NWZlNTk2Yzk3MmRjNmRiNGZhNWMwOGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF1
ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNp
bmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiT3NjaWxsYXRvclR5cGUu
aCIKQEAgLTIxNCw4ICsyMTUsNiBAQCBwdWJsaWM6CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7Ci0KICAgICB2aXJ0dWFs
IHZvaWQgc291cmNlTm9kZVdpbGxCZWdpblBsYXliYWNrKEF1ZGlvTm9kZSYpOwogICAgIC8vIFdo
ZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmluaXNo
ZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2UgaXQu
CiAgICAgdm9pZCBzb3VyY2VOb2RlRGlkRmluaXNoUGxheWJhY2soQXVkaW9Ob2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMDlmZDBjMDhhZWFmNTE0MmQ4YTEwMWVlYzE3
YzMzYjA4N2Q4MjYzNC4uNzI4YmI5Mjg2YTM1NWQwMDdkOWNiMDE4MTM1Y2Y2YzE5MzRiMWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDUsOSArMTA2LDkgQEAgdm9pZCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsZWFyRGVzdGluYXRpb24oKQogCiB2b2lkIERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24oKQogewotICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgImNvbnRleHRTYW1wbGVSYXRlID0gIiwgbV9zYW1wbGVS
YXRlLCAiLCBoYXJkd2FyZVNhbXBsZVJhdGUgPSAiLCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2Fy
ZVNhbXBsZVJhdGUoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY29udGV4dFNh
bXBsZVJhdGUgPSAiLCBzYW1wbGVSYXRlKCksICIsIGhhcmR3YXJlU2FtcGxlUmF0ZSA9ICIsIEF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKTsKICAgICBBU1NFUlQoIW1fZGVz
dGluYXRpb24pOwotICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVk
aWFTdHJhdGVneSgpLmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJ
ZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBtX3NhbXBsZVJhdGUp
OworICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVn
eSgpLmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1i
ZXJPZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBzYW1wbGVSYXRlKCkpOwogfQogCiB2
b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVjcmVhdGVEZXN0aW5hdGlvbigpCkBA
IC0yMzYsMTQgKzIzNyw0NSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBjaGFubmVsQwogICAgIHJldHVybiB7
IH07CiB9CiAKLWJvb2wgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjppc1BsYXlpbmcoKQor
dW5zaWduZWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpmcmFtZXNQZXJCdWZmZXIoKSBj
b25zdAogewotICAgIHJldHVybiBtX2Rlc3RpbmF0aW9uICYmIG1fZGVzdGluYXRpb24tPmlzUGxh
eWluZygpOworICAgIHJldHVybiBtX2Rlc3RpbmF0aW9uID8gbV9kZXN0aW5hdGlvbi0+ZnJhbWVz
UGVyQnVmZmVyKCkgOiAwOwogfQogCi11bnNpZ25lZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OmZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0Cit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMsIGNvbnN0IEF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pCiB7
Ci0gICAgcmV0dXJuIG1fZGVzdGluYXRpb24gPyBtX2Rlc3RpbmF0aW9uLT5mcmFtZXNQZXJCdWZm
ZXIoKSA6IDAuOworICAgIHJlbmRlclF1YW50dW0oZGVzdGluYXRpb25CdXMsIG51bWJlck9mRnJh
bWVzLCBvdXRwdXRQb3NpdGlvbik7CisKKyAgICBzZXRJc1NpbGVudChkZXN0aW5hdGlvbkJ1cy0+
aXNTaWxlbnQoKSk7CisKKyAgICAvLyBUaGUgcmVhc29uIHdlIGFyZSBoYW5kbGluZyBtdXRlIGFm
dGVyIHRoZSBjYWxsIHRvIHNldElzU2lsZW50KCkgaXMgYmVjYXVzZSB0aGUgbXV0ZWQgc3RhdGUg
ZG9lcworICAgIC8vIG5vdCBhZmZlY3QgdGhlIGF1ZGlvIGRlc3RpbmF0aW9uIG5vZGUncyBlZmZl
Y3RpdmUgcGxheWluZyBzdGF0ZS4KKyAgICBpZiAobV9tdXRlZCkKKyAgICAgICAgZGVzdGluYXRp
b25CdXMtPnplcm8oKTsKK30KKwordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnNl
dElzU2lsZW50KGJvb2wgaXNTaWxlbnQpCit7CisgICAgaWYgKG1faXNTaWxlbnQgPT0gaXNTaWxl
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTaWxlbnQgPSBpc1NpbGVudDsKKyAgICB1
cGRhdGVJc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvKCk7Cit9CisKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjppc1BsYXlpbmdEaWRDaGFuZ2UoKQoreworICAgIHVwZGF0ZUlzRWZm
ZWN0aXZlbHlQbGF5aW5nQXVkaW8oKTsKK30KKwordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnVwZGF0ZUlzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW8oKQoreworICAgIGJvb2wgaXNF
ZmZlY3RpdmVseVBsYXlpbmdBdWRpbyA9IG1fZGVzdGluYXRpb24gJiYgbV9kZXN0aW5hdGlvbi0+
aXNQbGF5aW5nKCkgJiYgIW1faXNTaWxlbnQ7CisgICAgaWYgKG1faXNFZmZlY3RpdmVseVBsYXlp
bmdBdWRpbyA9PSBpc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2lzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW8gPSBpc0VmZmVjdGl2ZWx5UGxheWluZ0F1
ZGlvOworICAgIGNvbnRleHQoKS5pc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA5NGNiYWY5
YWRlODAwMzllYzZjOTgyODMxNTI3MmIwNzkyOTIxMjg1Li5lNWU0Nzg1OGEwMTYwMmJhNjgyMjQx
MjQxODIxZDdjODUyY2VmYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEsIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzQg
KzI2LDQ2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgiCisjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKICAgICAKLWNs
YXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSB7CitjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250
ZXh0JiwgT3B0aW9uYWw8ZmxvYXQ+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBleHBsaWNpdCBEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgT3B0aW9uYWw8ZmxvYXQ+IHNh
bXBsZVJhdGUgPSBXVEY6Om51bGxvcHQpOworICAgIH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoKTsKIAogICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpOwogICAgIGNvbnN0IEF1ZGlvQ29u
dGV4dCYgY29udGV4dCgpIGNvbnN0OwotICAgIAotICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSgpOwogCiAgICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Q7
CiAgICAgCiAgICAgdm9pZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9p
ZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4mJik7CisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworCisgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0
ZWQgPSBtdXRlZDsgfQorICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBt
X2lzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW87IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0
ZURlc3RpbmF0aW9uKCk7CiAgICAgdm9pZCBjbGVhckRlc3RpbmF0aW9uKCk7CiAgICAgdm9pZCBy
ZWNyZWF0ZURlc3RpbmF0aW9uKCk7CiAKKyAgICAvLyBBdWRpb0lPQ2FsbGJhY2sKKyAgICAvLyBU
aGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRlciBx
dWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCisgICAgLy8gSXQgd2lsbCBvcHRp
b25hbGx5IGdpdmUgdXMgbG9jYWwvbGl2ZSBhdWRpbyBpbnB1dCBpbiBzb3VyY2VCdXMgKGlmIGl0
J3Mgbm90IDApLgorICAgIHZvaWQgcmVuZGVyKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBjb25zdCBBdWRpb0lPUG9z
aXRpb24mIG91dHB1dFBvc2l0aW9uKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ0RpZENoYW5n
ZSgpIGZpbmFsOworCisgICAgdm9pZCBzZXRJc1NpbGVudChib29sKTsKKyAgICB2b2lkIHVwZGF0
ZUlzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW8oKTsKKwogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rp
b248dm9pZCgpPiYmKT4gZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKQEAgLTY0LDEyICs3NywxNCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBmaW5hbDsKICAg
ICB2b2lkIHJlc3RhcnRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICB1bnNpZ25lZCBtYXhDaGFubmVs
Q291bnQoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsOwogCiAgICAg
UmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247Ci0gICAgYm9vbCBtX3dhc0Rl
c3RpbmF0aW9uU3RhcnRlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsK
ICAgICB1bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFubmVscyB7IDAgfTsKKyAgICBib29sIG1f
d2FzRGVzdGluYXRpb25TdGFydGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNFZmZlY3RpdmVs
eVBsYXlpbmdBdWRpbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU2lsZW50IHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNWVmODZhZmNkODFkZTRmYTgxODVi
NDMyMDBmMTE0NDBmMGNjZDM0Zi4uYWVmZTJhODQzNmQzNjVlMTg2ODEzMjY3ZTM4YWM4NjE3NGJi
ZmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKIAorI2luY2x1ZGUgIkF1
ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0NvbnRl
eHQuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgpAQCAtNDksOSArNTEsOSBAQCBPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShPZmZs
aW5lQXVkaW9Db250ZXh0JiBjbwogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQog
ICAgICwgbV9yZW5kZXJUYXJnZXQoV1RGTW92ZShyZW5kZXJUYXJnZXQpKQorICAgICwgbV9yZW5k
ZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUpKQogICAgICwgbV9mcmFtZXNUb1Byb2Nlc3MobV9yZW5kZXJUYXJn
ZXQgPyBtX3JlbmRlclRhcmdldC0+bGVuZ3RoKCkgOiAwKQogewotICAgIG1fcmVuZGVyQnVzID0g
QXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6cmVuZGVy
UXVhbnR1bVNpemUpOwogICAgIGluaXRpYWxpemVEZWZhdWx0Tm9kZU9wdGlvbnMobnVtYmVyT2ZD
aGFubmVscywgQ2hhbm5lbENvdW50TW9kZTo6RXhwbGljaXQsIENoYW5uZWxJbnRlcnByZXRhdGlv
bjo6U3BlYWtlcnMpOwogfQogCkBAIC03MCwxMSArNzIsNiBAQCBjb25zdCBPZmZsaW5lQXVkaW9D
b250ZXh0JiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNvbnRleHQoKSBjb25zdAogICAg
IHJldHVybiBkb3duY2FzdDxPZmZsaW5lQXVkaW9Db250ZXh0PihBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6Y29udGV4dCgpKTsKIH0KIAotdW5zaWduZWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjptYXhDaGFubmVsQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX251bWJlck9mQ2hhbm5l
bHM7Ci19Ci0KIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKCkK
IHsKICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQpAQCAtMTIxLDE4ICsxMTgsMTggQEAgdm9pZCBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWwKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKIAogICAgIGF1dG8gb2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IG9mZmxpbmVSZW5kZXIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVz
dWx0LCBjdXJyZW50U2FtcGxlRnJhbWUgPSBtX2N1cnJlbnRTYW1wbGVGcmFtZS5sb2FkKCksIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJlbmRlck9uQXVkaW9UaHJlYWQoKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgcmVzdWx0LCBjdXJyZW50U2FtcGxlRnJhbWUgPSB0aGlzLT5jdXJyZW50
U2FtcGxlRnJhbWUoKSwgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjb250ZXh0KCkucG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXN1bHQsIGN1cnJlbnRTYW1wbGVGcmFt
ZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBtX3N0YXJ0ZWRSZW5kZXJpbmcgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGNh
c2UgT2ZmbGluZVJlbmRlclJlc3VsdDo6RmFpbHVyZToKKyAgICAgICAgICAgICAgICBjYXNlIFJl
bmRlclJlc3VsdDo6RmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCgpLmZpbmlz
aGVkUmVuZGVyaW5nKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBPZmZsaW5lUmVuZGVyUmVzdWx0OjpDb21wbGV0ZToKKyAgICAgICAgICAg
ICAgICBjYXNlIFJlbmRlclJlc3VsdDo6Q29tcGxldGU6CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQoKS5maW5pc2hlZFJlbmRlcmluZyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBPZmZsaW5lUmVuZGVyUmVzdWx0OjpTdXNwZW5kZWQ6
CisgICAgICAgICAgICAgICAgY2FzZSBSZW5kZXJSZXN1bHQ6OlN1c3BlbmRlZDoKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCgpLmRpZFN1c3BlbmRSZW5kZXJpbmcoY3VycmVudFNhbXBsZUZy
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MTUyLDI1ICsxNDksMjUgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0
UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWwKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEY6Om51bGxvcHQpOwogfQogCi1hdXRvIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6b2ZmbGluZVJlbmRlcigpIC0+IE9mZmxpbmVSZW5kZXJSZXN1bHQKK2F1dG8gT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXJPbkF1ZGlvVGhyZWFkKCkgLT4gUmVuZGVyUmVz
dWx0CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVy
QnVzLmdldCgpKTsKIAogICAgIGlmICghbV9yZW5kZXJCdXMuZ2V0KCkpCi0gICAgICAgIHJldHVy
biBPZmZsaW5lUmVuZGVyUmVzdWx0OjpGYWlsdXJlOworICAgICAgICByZXR1cm4gUmVuZGVyUmVz
dWx0OjpGYWlsdXJlOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dCgpLmlzSW5pdGlhbGl6
ZWQoKSk7CiAKICAgICBib29sIGNoYW5uZWxzTWF0Y2ggPSBtX3JlbmRlckJ1cy0+bnVtYmVyT2ZD
aGFubmVscygpID09IG1fcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgQVNT
RVJUKGNoYW5uZWxzTWF0Y2gpOwogICAgIGlmICghY2hhbm5lbHNNYXRjaCkKLSAgICAgICAgcmV0
dXJuIE9mZmxpbmVSZW5kZXJSZXN1bHQ6OkZhaWx1cmU7CisgICAgICAgIHJldHVybiBSZW5kZXJS
ZXN1bHQ6OkZhaWx1cmU7CiAKICAgICBib29sIGlzUmVuZGVyQnVzQWxsb2NhdGVkID0gbV9yZW5k
ZXJCdXMtPmxlbmd0aCgpID49IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKICAg
ICBBU1NFUlQoaXNSZW5kZXJCdXNBbGxvY2F0ZWQpOwogICAgIGlmICghaXNSZW5kZXJCdXNBbGxv
Y2F0ZWQpCi0gICAgICAgIHJldHVybiBPZmZsaW5lUmVuZGVyUmVzdWx0OjpGYWlsdXJlOworICAg
ICAgICByZXR1cm4gUmVuZGVyUmVzdWx0OjpGYWlsdXJlOwogCiAgICAgLy8gQnJlYWsgdXAgdGhl
IHJlbmRlciB0YXJnZXQgaW50byBzbWFsbGVyICJyZW5kZXIgcXVhbnRpemUiIHNpemVkIHBpZWNl
cy4KICAgICAvLyBSZW5kZXIgdW50aWwgd2UncmUgZmluaXNoZWQuCkBAIC0xNzgsMTAgKzE3NSwx
MCBAQCBhdXRvIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJlbmRlcigpIC0+
IE9mZmxpbmVSZW5kZXJSZXN1bHQKIAogICAgIHdoaWxlIChtX2ZyYW1lc1RvUHJvY2VzcyA+IDAp
IHsKICAgICAgICAgaWYgKGNvbnRleHQoKS5zaG91bGRTdXNwZW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gT2ZmbGluZVJlbmRlclJlc3VsdDo6U3VzcGVuZGVkOworICAgICAgICAgICAgcmV0dXJu
IFJlbmRlclJlc3VsdDo6U3VzcGVuZGVkOwogCiAgICAgICAgIC8vIFJlbmRlciBvbmUgcmVuZGVy
IHF1YW50dW0uCi0gICAgICAgIHJlbmRlcigwLCBtX3JlbmRlckJ1cy5nZXQoKSwgQXVkaW9VdGls
aXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCB7IH0pOworICAgICAgICByZW5kZXJRdWFudHVtKG1f
cmVuZGVyQnVzLmdldCgpLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUsIHsgfSk7
CiAgICAgICAgIAogICAgICAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxlVG9Db3B5ID0gc3RkOjpt
aW4obV9mcmFtZXNUb1Byb2Nlc3MsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSk7
CiAgICAgICAgIApAQCAtMTk1LDcgKzE5Miw3IEBAIGF1dG8gT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpvZmZsaW5lUmVuZGVyKCkgLT4gT2ZmbGluZVJlbmRlclJlc3VsdAogICAgICAgICBt
X2ZyYW1lc1RvUHJvY2VzcyAtPSBmcmFtZXNBdmFpbGFibGVUb0NvcHk7CiAgICAgfQogCi0gICAg
cmV0dXJuIE9mZmxpbmVSZW5kZXJSZXN1bHQ6OkNvbXBsZXRlOworICAgIHJldHVybiBSZW5kZXJS
ZXN1bHQ6OkNvbXBsZXRlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaAppbmRleCBiYmNhYmFhMGFhNWMwOWNjNzU4ZmNiZjIyNmI5MmI3NzM4NjNl
NmUxLi5jOTU0NjhkOWU3ZTVmZTU2ZTNmNzI5NTZmYjY3NjdmNTYwMzQyODU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMjMgKzI1LDIxIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9CdWZmZXI7CiBjbGFzcyBBdWRpb0J1
czsKLWNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIE9mZmxpbmVBdWRpb0NvbnRleHQ7CiAgICAg
CiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGUoT2ZmbGluZUF1ZGlvQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOwotCi0gICAg
dmlydHVhbCB+T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CisgICAgfk9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZSgpOwogCiAgICAgT2ZmbGluZUF1ZGlvQ29udGV4dCYgY29udGV4dCgp
OwogICAgIGNvbnN0IE9mZmxpbmVBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKQEAgLTQ4
LDIxICs0NywyMSBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LmdldCgpOyB9CiAgICAgCiAgICAgLy8gQXVkaW9O
b2RlICAgCi0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRp
YWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lk
IHVuaW5pdGlhbGl6ZSgpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKLSAg
ICB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
ZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CiAgICAgdm9pZCBzdGFydFJlbmRl
cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZp
bmFsOwogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgT2ZmbGluZVJlbmRlclJlc3VsdCB7IEZh
aWx1cmUsIFN1c3BlbmRlZCwgQ29tcGxldGUgfTsKLSAgICBPZmZsaW5lUmVuZGVyUmVzdWx0IG9m
ZmxpbmVSZW5kZXIoKTsKKyAgICBlbnVtIGNsYXNzIFJlbmRlclJlc3VsdCB7IEZhaWx1cmUsIFN1
c3BlbmRlZCwgQ29tcGxldGUgfTsKKyAgICBSZW5kZXJSZXN1bHQgcmVuZGVyT25BdWRpb1RocmVh
ZCgpOwogICAgIHZvaWQgbm90aWZ5T2ZmbGluZVJlbmRlcmluZ1N1c3BlbmRlZCgpOwogCiAgICAg
Ym9vbCByZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHVuc2lnbmVkIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVu
c2lnbmVkIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbnVtYmVyT2ZD
aGFubmVsczsgfQogCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZkNoYW5uZWxzOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>