<?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>57046</bug_id>
          
          <creation_ts>2011-03-24 13:05:39 -0700</creation_ts>
          <short_desc>LayerTreeHostMac&apos;s code should be shareable with Windows</short_desc>
          <delta_ts>2011-03-24 14:51:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>57051</dependson>
          <blocked>45567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373014</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 13:05:39 -0700</bug_when>
    <thetext>LayerTreeHost and LayerTreeHostMac should just be a single class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373015</commentid>
    <comment_count>1</comment_count>
      <attachid>86818</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 13:06:10 -0700</bug_when>
    <thetext>Created attachment 86818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373033</commentid>
    <comment_count>2</comment_count>
      <attachid>86818</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 13:14:45 -0700</bug_when>
    <thetext>Comment on attachment 86818
Patch

I&apos;m going to take a slightly different approach after talking to Anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373101</commentid>
    <comment_count>3</comment_count>
      <attachid>86839</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 14:30:44 -0700</bug_when>
    <thetext>Created attachment 86839
Split Mac-specific parts of LayerTreeHostCA into LayerTreeHostCAMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373118</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 14:51:29 -0700</bug_when>
    <thetext>Committed r81903: &lt;http://trac.webkit.org/changeset/81903&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86818</attachid>
            <date>2011-03-24 13:06:10 -0700</date>
            <delta_ts>2011-03-24 14:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57046-20110324160626.patch</filename>
            <type>text/plain</type>
            <size>37861</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5ZjI5ZjA2ZTZiYmU0Njky
ZGFmNmRmMjVlODM0ZTU0ZGVhZmY5Mzc3Li40NDJiOGJlOTg0MDVmOTZjNDUwYjhkY2I0ZDEwYmM3
NjY3ZGY4OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTEtMDMtMjQgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIExheWVyVHJlZUhvc3Qg
YW5kIExheWVyVHJlZUhvc3RNYWMKKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCBlYXNpZXIg
dG8gc2hhcmUgY29kZSB3aXRoIHRoZSBXaW5kb3dzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAg
IEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MDQ2PiBMYXllclRyZWVIb3N0IGFuZCBMYXll
clRyZWVIb3N0TWFjIHNob3VsZCBqdXN0IGJlIGEgc2luZ2xlCisgICAgICAgIGNsYXNzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQgTGF5ZXJUcmVlSG9zdE1hYy5oLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGUpOiBKdXN0IGNyZWF0ZSBhIHZhbmlsbGEgTGF5
ZXJUcmVlSG9zdCwgc2luY2UgTGF5ZXJUcmVlSG9zdE1hYworICAgICAgICBpcyBub3cgZ29uZS4K
KworICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpMYXllclRyZWVIb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6fkxheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0OjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXll
ckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRz
TmVlZERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzY3JvbGxOb25D
b21wb3NpdGVkQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzaXpl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6ZGlkSW5zdGFsbFBhZ2VPdmVybGF5
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6ZGlkVW5pbnN0YWxsUGFnZU92ZXJs
YXkpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXRQYWdlT3ZlcmxheU5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6Om5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpub3RpZnlTeW5jUmVx
dWlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6c2hvd0RlYnVnQm9yZGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6ZGlkUGVyZm9ybVNjaGVkdWxlZExheWVy
Rmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGVQYWdlT3Zlcmxh
eUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6ZGVzdHJveVBhZ2VPdmVy
bGF5TGF5ZXIpOgorICAgICAgICBNb3ZlZCBjb2RlIGhlcmUgZnJvbSBMYXllclRyZWVIb3N0TWFj
LiBNYWMtc3BlY2lmaWMgY29kZSByZW1haW5zIGluIExheWVyVHJlZUhvc3RNYWMubW0gYW5kCisg
ICAgICAgIGlzIGludm9rZWQgdmlhIHBsYXRmb3JtKiBmdW5jdGlvbnMuIGZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNhbGxiYWNrIHdhcworICAgICAgICByZW5hbWVkIHRv
IHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoLCBhbmQgc29tZSBvZiBpdHMgY29kZSB3YXMgZXh0
cmFjdGVkIGludG8KKyAgICAgICAgW3BsYXRmb3JtXURpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZs
dXNoLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDogTWVy
Z2VkIHRoaXMgY2xhc3Mgd2l0aCBMYXllclRyZWVIb3N0TWFjLCB3aGljaCBhbGxvd2VkCisgICAg
ICAgIG1hbnkgZnVuY3Rpb25zIHRvIGJlY29tZSBub24tdmlydHVhbC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oOiBSZW1vdmVkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBDb250YWlucyBN
YWMtc3BlY2lmaWMgY29kZSB0aGF0IHVzZWQgdG8gYmUgaW4KKyAgICAgICAgdGhlIGNvbnN0cnVj
dG9yLgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzY2hlZHVsZUxheWVyRmx1c2gp
OiBKdXN0IHJlbmFtZWQgZnJvbQorICAgICAgICBMYXllclRyZWVIb3N0TWFjOjpzY2hlZHVsZUxh
eWVyRmx1c2guCisKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1JbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1TaXplRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1Gb3JjZVJl
cGFpbnQpOgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMgY29udGFpbiBNYWMtc3BlY2lmaWMgY29k
ZSB0aGF0IHVzZWQgdG8gYmUgaW4gdGhlIG5vbi1wbGF0Zm9ybSogdmFyaWFudHMuCisKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9v
cE9ic2VydmVyQ2FsbGJhY2spOiBVcGRhdGVkIGZvcgorICAgICAgICByZW5hbWVzLgorCisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnBsYXRmb3JtRGlkUGVyZm9ybVNjaGVkdWxlZExh
eWVyRmx1c2gpOiBDb250YWlucyBNYWMtc3BlY2lmaWMgY29kZQorICAgICAgICB0aGF0IHVzZWQg
dG8gYmUgaW4gZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2su
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyVHJlZUhvc3RXaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVMYXllckZsdXNo
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1JbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1TaXplRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1Gb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwbGF0Zm9ybURpZFBlcmZvcm1TY2hlZHVs
ZWRMYXllckZsdXNoKToKKyAgICAgICAgU3R1YmJlZCBvdXQgdGhlc2UgZnVuY3Rpb25zLgorCisg
ICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOiBBZGRlZCBMYXllclRyZWVIb3N0V2luLmNwcCBh
bmQgbGV0IFZTIHJlb3JkZXIgZmlsZXMuCisKIDIwMTEtMDMtMjMgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjNmZTFlNTA0
OWM4YWNlNTU2MzVmOTIyMDU2OWY4ZmUyZDRlNjVlOS4uNjg3OTM2NzE5Nzk3ZjkwN2RhZWM3MTA2
YTc5M2ZlZjc2Nzc3ZTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3LDcgKzEzNyw2IEBACiAJCTFBNjQyNTY4MTJERTQy
RUMwMENBQUUyQyAvKiBCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyNTY2MTJERTQyRUMwMENBQUUyQyAvKiBCYWNraW5nU3Rv
cmUuaCAqLzsgfTsKIAkJMUE2NDI1NjkxMkRFNDJFQzAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjU2
NzEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmNwcCAqLzsgfTsKIAkJMUE2NDI5MkQx
MkRFNUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyOTJDMTJERTVGOTgwMENBQUUyQyAvKiBC
YWNraW5nU3RvcmVNYWMubW0gKi87IH07Ci0JCTFBNjkwRDE3MTJGMzlFMzMwMEVDRDI4OSAvKiBM
YXllclRyZWVIb3N0TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTY5MEQxNjEyRjM5RTMzMDBFQ0QyODkgLyogTGF5ZXJUcmVlSG9zdE1hYy5oICov
OyB9OwogCQkxQTZGOUY5MDExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkY5RjhFMTFFMTNFRkMw
MERCMTM3MSAvKiBDb21tYW5kTGluZS5oICovOyB9OwogCQkxQTZGOUZCNzExRTE0MDg1MDBEQjEz
NzEgLyogQ29tbWFuZExpbmVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFj
LmNwcCAqLzsgfTsKIAkJMUE2RkEwMUUxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nlc3NNYWlu
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2
RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nlc3NNYWluTWFjLm1tICovOyB9OwpAQCAt
OTkxLDcgKzk5MCw2IEBACiAJCTFBNjQyNTY2MTJERTQyRUMwMENBQUUyQyAvKiBCYWNraW5nU3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2luZ1N0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjQyNTY3MTJERTQyRUMwMENBQUUyQyAvKiBC
YWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFj
a2luZ1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDI5MkMxMkRF
NUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEJhY2tpbmdTdG9yZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUE2OTBEMTYxMkYzOUUzMzAwRUNEMjg5IC8qIExheWVyVHJlZUhvc3RNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJUcmVlSG9zdE1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyog
Q29tbWFuZExpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2RjlGQjYxMUUxNDA4NTAwREIx
MzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbW1hbmRMaW5lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nlc3NNYWluTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc01haW5NYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTQ4LDcgKzI5NDYsNiBAQAogCQkJCTI5Q0Q1
NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oICovLAog
CQkJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dC5tbSAqLywKIAkJCQlCQzVGN0JCODExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhTWFjLmNwcCAqLywKLQkJCQkxQTY5MEQxNjEyRjM5RTMzMDBFQ0QyODkgLyogTGF5
ZXJUcmVlSG9zdE1hYy5oICovLAogCQkJCTFBMTg3MTg0MTJFRjk4NzcwMDhFNUYzNyAvKiBMYXll
clRyZWVIb3N0TWFjLm1tICovLAogCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBh
Z2VNYWMubW0gKi8sCkBAIC0zNTQ0LDcgKzM1NDEsNiBAQAogCQkJCUJGQTYxNzlGMTJGMEI5OUQw
MDMzRTBDQSAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTk2MzZCRDEy
RjM0ODQ5MDA3OEEwNjIgLyogU2hhcmVhYmxlU3VyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE5NjM5RjcxMkYzOEVDRDAwNzhBMDYyIC8qIENvcmVBbmltYXRpb25SZW5kZXJlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMUE2OTBEMTcxMkYzOUUzMzAwRUNEMjg5IC8qIExheWVyVHJlZUhvc3RN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODE0N0E5MTJGNjRDREEwMDdCMkMzMiAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODE0N0Q1
MTJGNjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNzA0M0NDMTJGNzVFRTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDExMTJkMzkzY2UxOWYzNDlm
YmQzMWJhMjBhODZhMDU0YjM4NDE3NjYuLmJjNjEzYWIyNjEyZmVhN2U1ZWQ3Y2EzZGI0MDBmYjNj
MGY2ZTE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9M
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1
ZGUgIkxheWVyVHJlZUhvc3RNYWMuaCIKLSNlbmRpZgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1w
bC5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oV0lOKQogI2Vycm9yICJUaGlzIGNsYXNzIGlzIG5vdCByZWFkeSBmb3IgdXNlIGJ5
IG90aGVyIHBvcnRzIHlldC4iCkBAIC00MSwxOSArNDQsMjE5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogUGFzc1JlZlB0cjxMYXllclRyZWVIb3N0PiBMYXllclRyZWVIb3N0OjpjcmVhdGUoV2ViUGFn
ZSogd2ViUGFnZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIExheWVyVHJlZUhv
c3RNYWM6OmNyZWF0ZSh3ZWJQYWdlKTsKLSNlbmRpZgotCisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBMYXllclRyZWVIb3N0KHdlYlBhZ2UpKTsKKyNlbHNlCiAgICAgcmV0dXJuIDA7CisjZW5kaWYK
IH0KIAogTGF5ZXJUcmVlSG9zdDo6TGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3ZWJQYWdlKQogICAg
IDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX2lzVmFsaWQodHJ1ZSkKKyAgICAsIG1fbm90
aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQogeworICAgIC8vIENyZWF0ZSBhIHJv
b3QgbGF5ZXIuCisgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7
CisjaWZuZGVmIE5ERUJVRworICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJMYXllclRyZWVIb3N0
IHJvb3QgbGF5ZXIiKTsKKyNlbmRpZgorICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQo
ZmFsc2UpOworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKHdlYlBhZ2UtPnNpemUoKSk7CisKKyAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhp
cyk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
TmFtZSgiTGF5ZXJUcmVlSG9zdCBub24tY29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKyAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKG1fd2ViUGFn
ZS0+ZHJhd3NCYWNrZ3JvdW5kKCkgJiYgIW1fd2ViUGFnZS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQoKSk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKHdlYlBh
Z2UtPnNpemUoKSk7CisgICAgaWYgKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+
YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50TGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyh0cnVlKTsKKworICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgIAorICAg
IGlmIChtX3dlYlBhZ2UtPmhhc1BhZ2VPdmVybGF5KCkpCisgICAgICAgIGNyZWF0ZVBhZ2VPdmVy
bGF5TGF5ZXIoKTsKKworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworCisgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7CiB9CiAKIExheWVyVHJlZUhvc3Q6On5MYXllclRyZWVIb3N0KCkKIHsKKyAg
ICBBU1NFUlQoIW1faXNWYWxpZCk7CisgICAgQVNTRVJUKCFtX3Jvb3RMYXllcik7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIEFTU0VSVCghbV9mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29w
T2JzZXJ2ZXIpOworICAgIEFTU0VSVCghbV9yZW1vdGVMYXllckNsaWVudCk7CisjZW5kaWYKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0OjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRM
YXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKQoreworICAgIG1f
bm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXll
ckZsdXNoOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OnNldFJvb3RDb21wb3NpdGluZ0xheWVy
KEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworCisgICAgLy8gQWRkIHRoZSBhY2NlbGVy
YXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KKyAgICBpZiAoZ3JhcGhpY3NMYXllcikKKyAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5hZGRDaGlsZChncmFwaGljc0xheWVyKTsK
K30KKwordm9pZCBMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9p
c1ZhbGlkKTsKKyAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKKyAgICBtX3Jvb3RMYXllciA9IG51
bGxwdHI7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6
c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVj
dChyZWN0KTsKKyAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQorICAgICAgICBtX3BhZ2VPdmVy
bGF5TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKworICAgIHNjaGVkdWxlTGF5
ZXJGbHVzaCgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxP
ZmZzZXQpCit7CisgICAgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoc2Nyb2xs
UmVjdCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBuZXdTaXplKQoreworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1NpemUpOworICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIGlm
IChtX3BhZ2VPdmVybGF5TGF5ZXIpCisgICAgICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0U2l6
ZShuZXdTaXplKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIGZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpOworCisgICAgcGxhdGZvcm1TaXplRGlkQ2hhbmdlKCk7Cit9CisKK3Zv
aWQgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKK3sKKyAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKKyAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBwbGF0Zm9ybUZvcmNl
UmVwYWludCgpOworfSAgICAKKwordm9pZCBMYXllclRyZWVIb3N0OjpkaWRJbnN0YWxsUGFnZU92
ZXJsYXkoKQoreworICAgIGNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIoKTsKKyAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjpkaWRVbmluc3RhbGxQYWdlT3Zl
cmxheSgpCit7CisgICAgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKTsKKyAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjpzZXRQYWdlT3ZlcmxheU5lZWRz
RGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEFTU0VSVChtX3BhZ2VPdmVybGF5
TGF5ZXIpOworICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJl
Y3QpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6
Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRv
dWJsZSB0aW1lKQoreworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6Om5vdGlmeVN5bmNSZXF1aXJl
ZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikKK3sKK30KKwordm9pZCBMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaWYgKGdyYXBoaWNzTGF5ZXIgPT0g
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyKSB7CisgICAgICAgIG1fd2ViUGFnZS0+ZHJhd1Jl
Y3QoZ3JhcGhpY3NDb250ZXh0LCBjbGlwUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBtX3BhZ2VPdmVybGF5TGF5ZXIpIHsKKyAgICAgICAg
bV93ZWJQYWdlLT5kcmF3UGFnZU92ZXJsYXkoZ3JhcGhpY3NDb250ZXh0LCBjbGlwUmVjdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK2Jvb2wgTGF5ZXJUcmVlSG9zdDo6c2hvd0RlYnVn
Qm9yZGVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpOworfQorCitib29sIExheWVyVHJlZUhvc3Q6OnNo
b3dSZXBhaW50Q291bnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2hvd1JlcGFpbnRDb3VudGVyKCk7Cit9CisKK2Jvb2wgTGF5ZXJU
cmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBtX3Jvb3RMYXllci0+
c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsK
KyAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQorICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXIt
PnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCisgICAgcmV0dXJuIG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5n
U3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjpwZXJm
b3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCit7CisgICAgeworICAgICAgICBSZWZQdHI8TGF5ZXJU
cmVlSG9zdD4gcHJvdGVjdCh0aGlzKTsKKyAgICAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRl
ZCgpOworCisgICAgICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgTGF5
ZXJUcmVlSG9zdDo6ZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKQoreworICAgIHBsYXRm
b3JtRGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKKworICAgIGlmIChtX25vdGlmeUFm
dGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkgeworICAgICAgICAvLyBMZXQgdGhlIGRyYXdpbmcgYXJl
YSBrbm93IHRoYXQgd2UndmUgZG9uZSBhIGZsdXNoIG9mIHRoZSBsYXllciBjaGFuZ2VzLgorICAg
ICAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYUltcGwqPihtX3dlYlBhZ2UtPmRyYXdpbmdBcmVh
KCkpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOworICAgICAgICBtX25vdGlmeUFmdGVyU2No
ZWR1bGVkTGF5ZXJGbHVzaCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBMYXllclRyZWVIb3N0
OjpjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcGFnZU92ZXJsYXlM
YXllcik7CisKKyAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
dGhpcyk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0TmFtZSgi
TGF5ZXJUcmVlSG9zdCBwYWdlIG92ZXJsYXkgY29udGVudCIpOworI2VuZGlmCisKKyAgICBtX3Bh
Z2VPdmVybGF5TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBtX3BhZ2VPdmVybGF5
TGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOworCisgICAgbV9yb290TGF5ZXItPmFk
ZENoaWxkKG1fcGFnZU92ZXJsYXlMYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9z
dDo6ZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKQoreworICAgIEFTU0VSVChtX3BhZ2VPdmVybGF5
TGF5ZXIpOworICAgIG1fcGFnZU92ZXJsYXlMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAg
IG1fcGFnZU92ZXJsYXlMYXllciA9IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmgKaW5kZXggYmJiOTRlOGM0ZDEzM2EyYzA2ZmE2OGFlZjRhY2Q1NzIwNmUyMzYwOC4uMjViYjE1
NjZmMTUxNjM3YjZkMzJiMWJlM2RlMzM5MGNhMzlmYWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNiwxMyArMjYsMjAg
QEAKICNpZm5kZWYgTGF5ZXJUcmVlSG9zdF9oCiAjZGVmaW5lIExheWVyVHJlZUhvc3RfaAogCisj
aW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NM
YXllckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBQTEFURk9STShN
QUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfX1dLQ0FS
ZW1vdGVMYXllckNsaWVudFJlZiogV0tDQVJlbW90ZUxheWVyQ2xpZW50UmVmOworI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNp
emU7Ci0gICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00MCwzMCArNDcsNzkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBMYXllclRyZWVDb250
ZXh0OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSZWZD
b3VudGVkPExheWVyVHJlZUhvc3Q+IHsKK2NsYXNzIExheWVyVHJlZUhvc3QgOiBwdWJsaWMgUmVm
Q291bnRlZDxMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllclRyZWVIb3N0PiBjcmVh
dGUoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkxheWVyVHJlZUhvc3QoKTsKIAotICAgIHZpcnR1
YWwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKKyAgICBjb25z
dCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgeyByZXR1cm4gbV9sYXllclRy
ZWVDb250ZXh0OyB9CisgICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICB2b2lkIHNl
dFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCk7CisgICAgdm9p
ZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENv
bnRlbnRzTmVlZERpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOworICAg
IHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOworICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bE9mZnNldCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKKyAgICB2b2lkIHNpemVEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRVbmluc3Rh
bGxQYWdlT3ZlcmxheSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZU92ZXJsYXlOZWVk
c0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2b2lkIGRpZEluc3Rh
bGxQYWdlT3ZlcmxheSgpOworICAgIHZvaWQgZGlkVW5pbnN0YWxsUGFnZU92ZXJsYXkoKTsKKyAg
ICB2b2lkIHNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBleHBsaWNpdCBMYXllclRyZWVIb3N0KFdl
YlBhZ2UqKTsKIAorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKKyAgICB2b2lkIHBsYXRmb3JtU2l6ZURpZENoYW5nZSgpOworICAg
IHZvaWQgcGxhdGZvcm1Gb3JjZVJlcGFpbnQoKTsKKworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzKCk7CisKKyAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Cisg
ICAgdm9pZCBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOworICAgIHZvaWQgcGxhdGZv
cm1EaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOworCisgICAgdm9pZCBjcmVhdGVQYWdl
T3ZlcmxheUxheWVyKCk7CisgICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOworCisg
ICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7Cisg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7
CisgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgc3RhdGljIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyQ2Fs
bGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKiBjb250
ZXh0KTsKKyNlbmRpZgorCiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOworCisgICAgLy8gVGhlIGNv
bnRleHQgZm9yIHRoaXMgbGF5ZXIgdHJlZS4KKyAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJU
cmVlQ29udGV4dDsKKworICAgIC8vIFdoZXRoZXIgdGhlIGxheWVyIHRyZWUgaG9zdCBpcyB2YWxp
ZCBvciBub3QuCisgICAgYm9vbCBtX2lzVmFsaWQ7ICAgIAorCisgICAgLy8gV2hldGhlciB3ZSBz
aG91bGQgbGV0IHRoZSBkcmF3aW5nIGFyZWEga25vdyB0aGUgbmV4dCB0aW1lIHdlJ3ZlIGZsdXNo
ZWQKKyAgICAvLyBsYXllciB0cmVlIGNoYW5nZXMuCisgICAgYm9vbCBtX25vdGlmeUFmdGVyU2No
ZWR1bGVkTGF5ZXJGbHVzaDsKKyAgICAKKyAgICAvLyBUaGUgcm9vdCBsYXllci4KKyAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisKKyAgICAvLyBUaGUgbGF5
ZXIgd2hpY2ggY29udGFpbnMgYWxsIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQuCisgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllcjsKKwor
ICAgIC8vIFRoZSBwYWdlIG92ZXJsYXkgbGF5ZXIuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSdzIG5v
IHBhZ2Ugb3ZlcmxheS4KKyAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdl
T3ZlcmxheUxheWVyOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxXS0NBUmVt
b3RlTGF5ZXJDbGllbnRSZWY+IG1fcmVtb3RlTGF5ZXJDbGllbnQ7CisgICAgUmV0YWluUHRyPENG
UnVuTG9vcE9ic2VydmVyUmVmPiBtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNl
cnZlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDVlNDNlMGZjZGVhZDJhMmQ4N2E5ODc1
ZTdkNzQ2OWYzNzkyZGUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9z
dE1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIExheWVyVHJlZUhvc3RNYWNfaAotI2RlZmluZSBMYXllclRyZWVIb3N0TWFjX2gKLQotI2lu
Y2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKLSNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX19X
S0NBUmVtb3RlTGF5ZXJDbGllbnRSZWYqIFdLQ0FSZW1vdGVMYXllckNsaWVudFJlZjsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIExheWVyVHJlZUhvc3RNYWMgOiBwdWJsaWMgTGF5ZXJU
cmVlSG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdE1hYz4gY3JlYXRlKFdlYlBhZ2UqKTsKLSAgICB+
TGF5ZXJUcmVlSG9zdE1hYygpOwotICAgIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYXllclRy
ZWVIb3N0TWFjKFdlYlBhZ2UqKTsKLQotICAgIC8vIExheWVyVHJlZUhvc3QuCi0gICAgdmlydHVh
bCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCk7Ci0gICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRO
b3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21w
b3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQp
OwotICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IG5ld1NpemUpOwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBkaWRJbnN0YWxsUGFnZU92ZXJsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVW5p
bnN0YWxsUGFnZU92ZXJsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZU92ZXJsYXlOZWVk
c0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCi0gICAgLy8gR3JhcGhpY3NMYXll
ckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeVN5bmNSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1Bo
YXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7Ci0gICAgdmlydHVhbCBib29s
IHNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRD
b3VudGVyKCkgY29uc3Q7Ci0KLSAgICBzdGF0aWMgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXNSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29w
QWN0aXZpdHksIHZvaWQqKTsKLSAgICB2b2lkIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxv
b3BPYnNlcnZlckNhbGxiYWNrKCk7Ci0gICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMo
KTsKLQotICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwotICAgIHZvaWQgZGVzdHJv
eVBhZ2VPdmVybGF5TGF5ZXIoKTsKLQotICAgIC8vIFRoZSBjb250ZXh0IGZvciB0aGlzIGxheWVy
IHRyZWUuCi0gICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7Ci0KLSAgICAv
LyBXaGV0aGVyIHRoZSBsYXllciB0cmVlIGhvc3QgaXMgdmFsaWQgb3Igbm90LgotICAgIGJvb2wg
bV9pc1ZhbGlkOyAgICAKLQotICAgIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIGxldCB0aGUgZHJhd2lu
ZyBhcmVhIGtub3cgdGhlIG5leHQgdGltZSB3ZSd2ZSBmbHVzaGVkCi0gICAgLy8gbGF5ZXIgdHJl
ZSBjaGFuZ2VzLgotICAgIGJvb2wgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci0g
ICAgCi0gICAgLy8gVGhlIHJvb3QgbGF5ZXIuCi0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI+IG1fcm9vdExheWVyOwotCi0gICAgLy8gVGhlIGxheWVyIHdoaWNoIGNvbnRhaW5zIGFs
bCBub24tY29tcG9zaXRlZCBjb250ZW50LgotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXI7Ci0KLSAgICAvLyBUaGUgcGFnZSBvdmVy
bGF5IGxheWVyLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUncyBubyBwYWdlIG92ZXJsYXkuCi0gICAg
T3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKLQotICAg
IFJldGFpblB0cjxXS0NBUmVtb3RlTGF5ZXJDbGllbnRSZWY+IG1fcmVtb3RlTGF5ZXJDbGllbnQ7
Ci0gICAgUmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPiBtX2ZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlc1J1bkxvb3BPYnNlcnZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gTGF5ZXJUcmVlSG9zdE1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMubW0KaW5kZXggM2I4ZWNl
NWJiYWNiZmYyNzNjZjE1ZmY5ZTg2Y2FmZjUyZWVmMjJjOC4uNTlmZThmM2VlZjhiMjRjMmJlNTYx
YmRjMGU4NzU0NDg1MGVkNzgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbQpAQCAtMjQsMTYgKzI0LDEx
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJMYXllclRyZWVIb3N0TWFj
LmgiCisjaW1wb3J0ICJMYXllclRyZWVIb3N0LmgiCiAKLSNpbXBvcnQgIkRyYXdpbmdBcmVhSW1w
bC5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KIAogQGludGVyZmFjZSBDQVRyYW5zYWN0aW9uIChEZXRhaWxzKQpAQCAtNDQsNjUg
KzM5LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc1JlZlB0cjxMYXllclRyZWVIb3N0TWFjPiBMYXllclRyZWVIb3N0TWFjOjpjcmVhdGUo
V2ViUGFnZSogd2ViUGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyVHJlZUhv
c3RNYWMod2ViUGFnZSkpOwotfQotCi1MYXllclRyZWVIb3N0TWFjOjpMYXllclRyZWVIb3N0TWFj
KFdlYlBhZ2UqIHdlYlBhZ2UpCi0gICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCi0gICAgLCBt
X2lzVmFsaWQodHJ1ZSkKLSAgICAsIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZh
bHNlKQordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIG1h
Y2hfcG9ydF90IHNlcnZlclBvcnQgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1Jl
bmRlclNlcnZlclBvcnQoKTsKICAgICBtX3JlbW90ZUxheWVyQ2xpZW50ID0gV0tDQVJlbW90ZUxh
eWVyQ2xpZW50TWFrZVdpdGhTZXJ2ZXJQb3J0KHNlcnZlclBvcnQpOwogCi0gICAgLy8gQ3JlYXRl
IGEgcm9vdCBsYXllci4KLSAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSh0
aGlzKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkxheWVyVHJl
ZUhvc3Qgcm9vdCBsYXllciIpOwotI2VuZGlmCi0gICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29u
dGVudChmYWxzZSk7Ci0gICAgbV9yb290TGF5ZXItPnNldFNpemUod2ViUGFnZS0+c2l6ZSgpKTsK
LQogICAgIFttX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpIHNldEdlb21ldHJ5RmxpcHBlZDpZ
RVNdOwogCi0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKHRoaXMpOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwot
I2VuZGlmCi0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRDb250ZW50c09wYXF1
ZShtX3dlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgpICYmICFtX3dlYlBhZ2UtPmRyYXdzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKCkpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
U2l6ZSh3ZWJQYWdlLT5zaXplKCkpOwotICAgIGlmIChtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNl
dHRpbmdzKCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcodHJ1ZSk7Ci0KLSAgICBt
X3Jvb3RMYXllci0+YWRkQ2hpbGQobV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLmdldCgpKTsK
LQogICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudFNldExheWVyKG1fcmVtb3RlTGF5ZXJDbGllbnQu
Z2V0KCksIG1fcm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCi0gICAgaWYgKG1fd2ViUGFn
ZS0+aGFzUGFnZU92ZXJsYXkoKSkKLSAgICAgICAgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwot
Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0KICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29u
dGV4dElEID0gV0tDQVJlbW90ZUxheWVyQ2xpZW50R2V0Q2xpZW50SWQobV9yZW1vdGVMYXllckNs
aWVudC5nZXQoKSk7CiB9CiAKLUxheWVyVHJlZUhvc3RNYWM6On5MYXllclRyZWVIb3N0TWFjKCkK
LXsKLSAgICBBU1NFUlQoIW1faXNWYWxpZCk7Ci0gICAgQVNTRVJUKCFtX2ZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlcik7Ci0gICAgQVNTRVJUKCFtX3JlbW90ZUxheWVyQ2xp
ZW50KTsKLSAgICBBU1NFUlQoIW1fcm9vdExheWVyKTsKLX0KLQotY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYgTGF5ZXJUcmVlSG9zdE1hYzo6bGF5ZXJUcmVlQ29udGV4dCgpCi17Ci0gICAgcmV0dXJu
IG1fbGF5ZXJUcmVlQ29udGV4dDsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0TWFjOjpzY2hlZHVs
ZUxheWVyRmx1c2goKQordm9pZCBMYXllclRyZWVIb3N0OjpzY2hlZHVsZUxheWVyRmx1c2goKQog
ewogICAgIENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQo
KTsKICAgICAKQEAgLTEyMCwyNCArNjksOCBAQCB2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNjaGVk
dWxlTGF5ZXJGbHVzaCgpCiAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoY3VycmVudFJ1bkxvb3As
IG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldFNob3VsZE5v
dGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRlclNjaGVkdWxl
ZExheWVyRmx1c2gpCi17Ci0gICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggPSBu
b3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdE1h
Yzo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
LXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7
Ci0KLSAgICAvLyBBZGQgdGhlIGFjY2VsZXJhdGVkIGxheWVyIHRyZWUgaGllcmFyY2h5LgotICAg
IGlmIChncmFwaGljc0xheWVyKQotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PmFkZENoaWxkKGdyYXBoaWNzTGF5ZXIpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RNYWM6Omlu
dmFsaWRhdGUoKQordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewot
ICAgIEFTU0VSVChtX2lzVmFsaWQpOwotCiAgICAgaWYgKG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzUnVuTG9vcE9ic2VydmVyKSB7CiAgICAgICAgIENGUnVuTG9vcE9ic2VydmVySW52YWxpZGF0
ZShtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlci5nZXQoKSk7CiAgICAg
ICAgIG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyID0gbnVsbHB0cjsK
QEAgLTE0NSwxNjEgKzc4LDM0IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6aW52YWxpZGF0ZSgp
CiAKICAgICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRJbnZhbGlkYXRlKG1fcmVtb3RlTGF5ZXJDbGll
bnQuZ2V0KCkpOwogICAgIG1fcmVtb3RlTGF5ZXJDbGllbnQgPSBudWxscHRyOwotICAgIG1fcm9v
dExheWVyID0gbnVsbHB0cjsKLSAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLX0KLQotdm9pZCBMYXll
clRyZWVIb3N0TWFjOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwotICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCi0gICAg
ICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwotCi0g
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6c2Ny
b2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0
IEludFNpemUmIHNjcm9sbE9mZnNldCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6cGxhdGZvcm1TaXpl
RGlkQ2hhbmdlKCkKIHsKLSAgICBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShz
Y3JvbGxSZWN0KTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0TWFjOjpzaXplRGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIG5ld1NpemUpCi17Ci0gICAgbV9yb290TGF5ZXItPnNldFNpemUobmV3U2l6
ZSk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKG5ld1NpemUpOwot
Ci0gICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKLSAgICAgICAgbV9wYWdlT3ZlcmxheUxheWVy
LT5zZXRTaXplKG5ld1NpemUpOwotCi0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgZmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0KICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RN
YWM6OmZvcmNlUmVwYWludCgpCit2b2lkIExheWVyVHJlZUhvc3Q6OnBsYXRmb3JtRm9yY2VSZXBh
aW50KCkKIHsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMoKTsKLQogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKICAgICBbQ0FUcmFuc2Fj
dGlvbiBzeW5jaHJvbml6ZV07CiB9ICAgIAogCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OmRpZElu
c3RhbGxQYWdlT3ZlcmxheSgpCi17Ci0gICAgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwotICAg
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OmRpZFVu
aW5zdGFsbFBhZ2VPdmVybGF5KCkKLXsKLSAgICBkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwot
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OnNl
dFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgQVNT
RVJUKG1fcGFnZU92ZXJsYXlMYXllcik7Ci0gICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZv
aWQgTGF5ZXJUcmVlSG9zdE1hYzo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCi17Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9z
dE1hYzo6bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQot
ewotfQotCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKLXsK
LSAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIpIHsK
LSAgICAgICAgbV93ZWJQYWdlLT5kcmF3UmVjdChncmFwaGljc0NvbnRleHQsIGNsaXBSZWN0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChncmFwaGljc0xheWVyID09IG1fcGFn
ZU92ZXJsYXlMYXllcikgewotICAgICAgICBtX3dlYlBhZ2UtPmRyYXdQYWdlT3ZlcmxheShncmFw
aGljc0NvbnRleHQsIGNsaXBSZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotYm9v
bCBMYXllclRyZWVIb3N0TWFjOjpzaG93RGVidWdCb3JkZXJzKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCk7
Ci19Ci0KLWJvb2wgTGF5ZXJUcmVlSG9zdE1hYzo6c2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zaG93UmVw
YWludENvdW50ZXIoKTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0TWFjOjpmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwg
Q0ZSdW5Mb29wQWN0aXZpdHksIHZvaWQqIGNvbnRleHQpCit2b2lkIExheWVyVHJlZUhvc3Q6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNhbGxiYWNrKENGUnVuTG9vcE9i
c2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSwgdm9pZCogY29udGV4dCkKIHsKICAgICAvLyBU
aGlzIGdldHMgY2FsbGVkIG91dHNpZGUgb2YgdGhlIG5vcm1hbCBldmVudCBsb29wIHNvIHdyYXAg
aW4gYW4gYXV0b3JlbGVhc2UgcG9vbAogICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tO
U0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgc3RhdGljX2Nhc3Q8TGF5ZXJUcmVl
SG9zdE1hYyo+KGNvbnRleHQpLT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2
ZXJDYWxsYmFjaygpOworICAgIHN0YXRpY19jYXN0PExheWVyVHJlZUhvc3QqPihjb250ZXh0KS0+
cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKICAgICBbcG9vbCBkcmFpbl07CiB9CiAKLXZv
aWQgTGF5ZXJUcmVlSG9zdE1hYzo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2Vy
dmVyQ2FsbGJhY2soKQordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybURpZFBlcmZvcm1TY2hl
ZHVsZWRMYXllckZsdXNoKCkKIHsKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxMYXllclRyZWVIb3N0
TWFjPiBwcm90ZWN0KHRoaXMpOwotICAgICAgICBtX3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7
Ci0KLSAgICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgLy8gV2Ugc3VjY2Vzc2Z1bGx5IGZsdXNoZWQgdGhlIHBlbmRpbmcgbGF5ZXIgY2hhbmdl
cywgcmVtb3ZlIHRoZSBydW4gbG9vcCBvYnNlcnZlci4KICAgICBBU1NFUlQobV9mbHVzaFBlbmRp
bmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXIpOwogICAgIENGUnVuTG9vcE9ic2VydmVySW52
YWxpZGF0ZShtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlci5nZXQoKSk7
CiAgICAgbV9mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXIgPSAwOwotCi0g
ICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7Ci0gICAgICAgIC8vIExl
dCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3ZSd2ZSBkb25lIGEgZmx1c2ggb2YgdGhlIGxh
eWVyIGNoYW5nZXMuCi0gICAgICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhSW1wbCo+KG1fd2Vi
UGFnZS0+ZHJhd2luZ0FyZWEoKSktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7Ci0gICAgICAg
IG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gZmFsc2U7Ci0gICAgfQotfQotCi1i
b29sIExheWVyVHJlZUhvc3RNYWM6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCi17Ci0gICAg
bV9yb290TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCk7Ci0gICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKLSAgICAgICAgbV9wYWdl
T3ZlcmxheUxheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKLQot
ICAgIHJldHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5
bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Ci19Ci0KLXZvaWQgTGF5ZXJU
cmVlSG9zdE1hYzo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcigpCi17Ci0gICAgQVNTRVJUKCFtX3Bh
Z2VPdmVybGF5TGF5ZXIpOwotCi0gICAgbV9wYWdlT3ZlcmxheUxheWVyID0gR3JhcGhpY3NMYXll
cjo6Y3JlYXRlKHRoaXMpOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX3BhZ2VPdmVybGF5TGF5ZXIt
PnNldE5hbWUoIkxheWVyVHJlZUhvc3QgcGFnZSBvdmVybGF5IGNvbnRlbnQiKTsKLSNlbmRpZgot
Ci0gICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgbV9w
YWdlT3ZlcmxheUxheWVyLT5zZXRTaXplKG1fd2ViUGFnZS0+c2l6ZSgpKTsKLQotICAgIG1fcm9v
dExheWVyLT5hZGRDaGlsZChtX3BhZ2VPdmVybGF5TGF5ZXIuZ2V0KCkpOwotfQotCi12b2lkIExh
eWVyVHJlZUhvc3RNYWM6OmRlc3Ryb3lQYWdlT3ZlcmxheUxheWVyKCkKLXsKLSAgICBBU1NFUlQo
bV9wYWdlT3ZlcmxheUxheWVyKTsKLSAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPnJlbW92ZUZyb21Q
YXJlbnQoKTsKLSAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBudWxscHRyOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vTGF5ZXJUcmVlSG9zdFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL0xheWVyVHJlZUhvc3RXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlOWQ0MDQyNDdl
NjU1MzAyY2VkYzA4ZGYyNjI5OTM3NDJiYjdjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyVHJlZUhvc3RXaW4uY3BwCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TGF5ZXJUcmVlSG9zdC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybUluaXRp
YWxpemUoKQoreworICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi80NTU2Nz4gSW1w
bGVtZW50IHRoaXMuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVI
b3N0OjpzY2hlZHVsZUxheWVyRmx1c2goKQoreworICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtp
dC5vcmcvYi80NTU2Nz4gSW1wbGVtZW50IHRoaXMuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIC8vIEZJ
WE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi80NTU2Nz4gSW1wbGVtZW50IHRoaXMuCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybVNpemVEaWRD
aGFuZ2UoKQoreworICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi80NTU2Nz4gSW1w
bGVtZW50IHRoaXMuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVI
b3N0OjpwbGF0Zm9ybUZvcmNlUmVwYWludCgpCit7CisgICAgLy8gRklYTUU6IDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzQ1NTY3PiBJbXBsZW1lbnQgdGhpcy4KKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fSAgICAKKwordm9pZCBMYXllclRyZWVIb3N0OjpwbGF0Zm9ybURpZFBlcmZvcm1TY2hlZHVsZWRM
YXllckZsdXNoKCkKK3sKKyAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvNDU1Njc+
IEltcGxlbWVudCB0aGlzLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4IGE4ZTU1OWJjZjdlMDYy
YWMxZDk2M2U2MmY1NTkxYTA4NWUxZDc0NzcuLjlmMmUxODk5OTljODc0ZDRmZDM3YWNjZWM0NTU4
NTdlYmExZGUwMDggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKQEAgLTE4NDEsNiArMTg0
MSwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVx3aW5cTGF5ZXJUcmVlSG9zdFdpbi5jcHAiCisJ
CQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
V2ViUHJvY2Vzc1xXZWJQYWdlXHdpblxXZWJJbnNwZWN0b3JXaW4uY3BwIgogCQkJCQkJPgogCQkJ
CQk8L0ZpbGU+CkBAIC0yNTkxLDE0ICsyNTk1LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLSAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5jcHAiCi0gCQkJCT4KLSAJCQk8L0ZpbGU+Ci0gCQkJPEZpbGUKLSAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgotIAkJCQk+
Ci0gCQkJPC9GaWxlPgotIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Nc
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFVJUHJvY2Vzc1xXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpAQCAtMzY3MSwyMiArMzY3NSwyMiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0gCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAiCi0gCQkJCT4KLSAJCQk8L0ZpbGU+Ci0gCQkJPEZpbGUKLSAJCQkJUmVsYXRpdmVQYXRo
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCIKLSAJCQkJPgotIAkJCTwvRmlsZT4K
LSAJCQk8RmlsZQotIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAiCi0gCQkJCT4KLSAJCQk8L0ZpbGU+Ci0gCQkJPEZpbGUKLSAJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgot
IAkJCQk+Ci0gCQkJPC9GaWxlPgotIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2Vz
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="79170"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86839</attachid>
            <date>2011-03-24 14:30:44 -0700</date>
            <delta_ts>2011-03-24 14:33:07 -0700</delta_ts>
            <desc>Split Mac-specific parts of LayerTreeHostCA into LayerTreeHostCAMac.mm</desc>
            <filename>0001-Split-Mac-specific-parts-of-LayerTreeHostCA-into-Lay.patch</filename>
            <type>text/plain</type>
            <size>23724</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBlNjk1N2ViZjQ3OTQzMTk3NjM4YTgzNmEyYzE1ZmJhZGVjOWNlNDYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDI0IE1hciAyMDExIDE3OjI4OjQ0IC0wNDAwClN1YmplY3Q6IFtQRlJdIFNwbGl0IE1hYy1z
cGVjaWZpYyBwYXJ0cyBvZiBMYXllclRyZWVIb3N0Q0EgaW50byBMYXllclRyZWVIb3N0Q0FNYWMu
bW0KCkZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MDQ2PiBMYXllclRyZWVIb3N0TWFjJ3Mg
Y29kZSBzaG91bGQgYmUgc2hhcmVhYmxlIHdpdGggV2luZG93cwoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgoqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKCiogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLm1tLgooV2ViS2l0
OjpMYXllclRyZWVIb3N0Q0E6OkxheWVyVHJlZUhvc3RDQSk6IE1vdmVkIHNvbWUgTWFjLXNwZWNp
ZmljIGNvZGUgdG8KTGF5ZXJUcmVlSG9zdENBTWFjLm1tLgooV2ViS2l0OjpMYXllclRyZWVIb3N0
Q0E6On5MYXllclRyZWVIb3N0Q0EpOiBXcmFwcGVkIHNvbWUgTWFjLXNwZWNpZmljIGNvZGUgaW4K
UExBVEZPUk0oTUFDKS4KCihXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6aW52YWxpZGF0ZSk6CihX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6c2l6ZURpZENoYW5nZSk6CihXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RDQTo6Zm9yY2VSZXBhaW50KToKTW92ZWQgc29tZSBNYWMtc3BlY2lmaWMgY29kZSB0byBM
YXllclRyZWVIb3N0Q0FNYWMubW0uCgooV2ViS2l0OjpMYXllclRyZWVIb3N0Q0E6OnBlcmZvcm1T
Y2hlZHVsZWRMYXllckZsdXNoKTogUmVuYW1lZCBmcm9tCmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
c1J1bkxvb3BPYnNlcnZlckNhbGxiYWNrLiBNb3ZlZCBzb21lIGNvZGUgZnJvbSBoZXJlLi4uCihX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6ZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2gpOiAu
Li50byBoZXJlLiBNb3ZlZCBzb21lCk1hYy1zcGVjaWZpYyBjb2RlIHRvIExheWVyVHJlZUhvc3RD
QU1hYy5tbS4KCiogV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oOiBBZGRl
ZCBuZXcgZnVuY3Rpb25zLCB3cmFwcGVkIHNvbWUgTWFjLXNwZWNpZmljCmRlY2xhcmF0aW9ucyBp
biBQTEFURk9STShNQUMpLgoKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2EvbWFjL0xheWVyVHJlZUhv
c3RDQU1hYy5tbTogQWRkZWQuCihXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6cGxhdGZvcm1Jbml0
aWFsaXplKToKKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpzY2hlZHVsZUxheWVyRmx1c2gpOgoo
V2ViS2l0OjpMYXllclRyZWVIb3N0Q0E6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CihXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RDQTo6cGxhdGZvcm1TaXplRGlkQ2hhbmdlKToKKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdENBOjpwbGF0Zm9ybUZvcmNlUmVwYWludCk6CihXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2spOgooV2ViS2l0
OjpMYXllclRyZWVIb3N0Q0E6OnBsYXRmb3JtRGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2gp
OgpDb2RlIHdhcyBleHRyYWN0ZWQgZnJvbSBMYXllclRyZWVIb3N0Q0EuY3BwLgotLS0KIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysr
KysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8
ICAgMjAgKysrLQogLi4uL2NhL3tMYXllclRyZWVIb3N0Q0EubW0gPT4gTGF5ZXJUcmVlSG9zdENB
LmNwcH0gfCAgIDkzICsrKysrLS0tLS0tLS0tLS0tCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L0xheWVyVHJlZUhvc3RDQS5oICAgICAgICB8ICAgMjEgKysrKy0KIC4uLi9XZWJQYWdlL2NhL21h
Yy9MYXllclRyZWVIb3N0Q0FNYWMubW0gICAgICAgICAgIHwgIDEwOSArKysrKysrKysrKysrKysr
KysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0p
CiByZW5hbWUgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3tMYXllclRyZWVI
b3N0Q0EubW0gPT4gTGF5ZXJUcmVlSG9zdENBLmNwcH0gKDcxJSkKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvbWFjL0xheWVyVHJlZUhvc3RD
QU1hYy5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0MWFjMTkwLi4wM2Y5OTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNDQgQEAKIDIwMTEtMDMtMjQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CisgICAgICAgIFNwbGl0IE1hYy1zcGVjaWZpYyBwYXJ0cyBvZiBMYXllclRyZWVIb3N0Q0EgaW50
byBMYXllclRyZWVIb3N0Q0FNYWMubW0KKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5v
cmcvYi81NzA0Nj4gTGF5ZXJUcmVlSG9zdE1hYydzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3
aXRoIFdpbmRvd3MKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5tbS4KKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpMYXllclRyZWVIb3N0Q0EpOiBNb3ZlZCBz
b21lIE1hYy1zcGVjaWZpYyBjb2RlIHRvCisgICAgICAgIExheWVyVHJlZUhvc3RDQU1hYy5tbS4K
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjp+TGF5ZXJUcmVlSG9zdENBKTogV3Jh
cHBlZCBzb21lIE1hYy1zcGVjaWZpYyBjb2RlIGluCisgICAgICAgIFBMQVRGT1JNKE1BQykuCisK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlSG9zdENBOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICBNb3ZlZCBzb21lIE1h
Yy1zcGVjaWZpYyBjb2RlIHRvIExheWVyVHJlZUhvc3RDQU1hYy5tbS4KKworICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0Q0E6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKTogUmVuYW1l
ZCBmcm9tCisgICAgICAgIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNh
bGxiYWNrLiBNb3ZlZCBzb21lIGNvZGUgZnJvbSBoZXJlLi4uCisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RDQTo6ZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2gpOiAuLi50byBoZXJl
LiBNb3ZlZCBzb21lCisgICAgICAgIE1hYy1zcGVjaWZpYyBjb2RlIHRvIExheWVyVHJlZUhvc3RD
QU1hYy5tbS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0
Q0EuaDogQWRkZWQgbmV3IGZ1bmN0aW9ucywgd3JhcHBlZCBzb21lIE1hYy1zcGVjaWZpYworICAg
ICAgICBkZWNsYXJhdGlvbnMgaW4gUExBVEZPUk0oTUFDKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9jYS9tYWMvTGF5ZXJUcmVlSG9zdENBTWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0Q0E6OnNjaGVkdWxlTGF5ZXJGbHVzaCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdENBOjpwbGF0Zm9ybVNpemVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0Q0E6OnBsYXRmb3JtRm9yY2VSZXBhaW50KToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29w
T2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQTo6cGxh
dGZvcm1EaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCk6CisgICAgICAgIENvZGUgd2FzIGV4
dHJhY3RlZCBmcm9tIExheWVyVHJlZUhvc3RDQS5jcHAuCisKKzIwMTEtMDMtMjQgIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJlbmFtZSBMYXllclRyZWVIb3N0TWFj
IHRvIExheWVyVHJlZUhvc3RDQQogCiAgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93
YXJkIHNoYXJpbmcgY29kZSB3aXRoIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDU5YzZjNi4uNTAzYTQwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNzQ3LDEzICs3NDcsMTQgQEAKIAkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktl
eWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzAzMzdERDIxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwICov
OyB9OwogCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDMzN0RENzEyN0E1
MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgKi87IH07CiAJCUMwMzM3REREMTI3QTUy
MUMwMDhGRjRGNCAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAzMzdEREMxMjdBNTIxQzAwOEZGNEY0IC8q
IFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgKi87IH07CisJCUMwM0ExMzZDMTMzQkVCRjkwMEQ3
NjdEMSAvKiBMYXllclRyZWVIb3N0Q0FNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMDNBMTM2QjEzM0JFQkY5MDBENzY3RDEgLyogTGF5ZXJUcmVl
SG9zdENBTWFjLm1tICovOyB9OwogCQlDMDY0NTA0QTEzM0JFNzA5MDAzNDcwRTIgLyogTGF5ZXJU
cmVlSG9zdENBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMDk4QTA1MzEzM0JFMUM1MDBCMTk5QTQgLyogTGF5ZXJUcmVlSG9zdENBLmggKi87IH07CiAJ
CUMwNkM2MDk1MTI0QzE0NEIwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwNkM2MDkz
MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLzsgfTsK
IAkJQzA5QUU1RTkxMjUyNTdDMjAwMjU4MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwOUFFNUU4MTI1MjU3QzIwMDI1
ODI1RCAvKiBXS05hdGl2ZUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQlDMENFNzJBMDEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMENFNzI5RTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCUMwQ0U3MkExMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQ0U3MjlG
MTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZXMuaCAqLzsgfTsKIAkJQzBDRTcyQUQx
MjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQ0U3MkFDMTI0N0U3OEQwMEJDMEVDNCAvKiBIYW5k
bGVNZXNzYWdlLmggKi87IH07Ci0JCUMwRDc0RERFMTMzQkUyRDkwMDg5Q0Q0NCAvKiBMYXllclRy
ZWVIb3N0Q0EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMDk4QTA1NDEzM0JFMUM1MDBCMTk5QTQgLyogTGF5ZXJUcmVlSG9zdENBLm1tICovOyB9Owor
CQlDMEQ3NERERTEzM0JFMkQ5MDA4OUNENDQgLyogTGF5ZXJUcmVlSG9zdENBLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwOThBMDU0MTMzQkUxQzUw
MEIxOTlBNCAvKiBMYXllclRyZWVIb3N0Q0EuY3BwICovOyB9OwogCQlDMEUzQUE3QTEyMDlFODMw
MDBBNDlEMDEgLyogTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZU1hYy5tbSAq
LzsgfTsKIAkJQzBFM0FBN0IxMjA5RTgzNTAwQTQ5RDAxIC8qIE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0NTEyMDlFMkJBMDBB
NDlEMDEgLyogTW9kdWxlLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8q
IE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovOyB9OwpAQCAtMTYzOSwxMSAr
MTY0MCwxMiBAQAogCQlDMDMzN0REMjEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLZXlib2FyZEV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzAzMzdERDcxMjdBNTFCNjAw
OEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVG91Y2hFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMwMzM3RERDMTI3QTUyMUMwMDhGRjRGNCAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzAzQTEzNkIxMzNCRUJGOTAwRDc2
N0QxIC8qIExheWVyVHJlZUhvc3RDQU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IExheWVyVHJlZUhvc3RDQU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNkM2
MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA4RkRFODcxMjRBODUxQzAwNzY0NUJEIC8q
IG1lc3NhZ2VzX3VuaXR0ZXN0LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gbWVzc2FnZXNfdW5pdHRlc3QucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMw
OThBMDUzMTMzQkUxQzUwMEIxOTlBNCAvKiBMYXllclRyZWVIb3N0Q0EuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJUcmVlSG9zdENBLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMwOThBMDU0MTMzQkUxQzUwMEIxOTlBNCAvKiBMYXllclRyZWVIb3N0Q0Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXllclRyZWVIb3N0
Q0EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwOThBMDU0MTMzQkUxQzUwMEIx
OTlBNCAvKiBMYXllclRyZWVIb3N0Q0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTGF5ZXJUcmVlSG9zdENBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzA5QUU1RTgxMjUyNTdDMjAwMjU4MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXRpdmVFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMENFNzI1ODEyNDdFNERBMDBCQzBFQzQgLyogV2ViUGFnZS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQYWdlLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMENFNzI5RTEyNDdFNzFEMDBCQzBFQzQgLyogV2Vi
UGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMwNzMsMTEgKzMwNzUsMjAgQEAKIAkJCXBhdGggPSBjZzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUMwM0ExMzZBMTMzQkVCRjkwMEQ3NjdEMSAvKiBtYWMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMwM0ExMzZCMTMz
QkVCRjkwMEQ3NjdEMSAvKiBMYXllclRyZWVIb3N0Q0FNYWMubW0gKi8sCisJCQkpOworCQkJcGF0
aCA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUMwOThBMDUyMTMz
QkUxQzUwMEIxOTlBNCAvKiBjYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQzAzQTEzNkExMzNCRUJGOTAwRDc2N0QxIC8qIG1hYyAqLywKIAkJCQlDMDk4
QTA1MzEzM0JFMUM1MDBCMTk5QTQgLyogTGF5ZXJUcmVlSG9zdENBLmggKi8sCi0JCQkJQzA5OEEw
NTQxMzNCRTFDNTAwQjE5OUE0IC8qIExheWVyVHJlZUhvc3RDQS5tbSAqLywKKwkJCQlDMDk4QTA1
NDEzM0JFMUM1MDBCMTk5QTQgLyogTGF5ZXJUcmVlSG9zdENBLmNwcCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gY2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDIxNyw3ICs0MjI4LDgg
QEAKIAkJCQkzM0QzQTNDODEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQ0ExMzM5NjE3OTAw
NzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE2MEJGRTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFj
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQzBENzREREUxMzNCRTJEOTAwODlDRDQ0IC8qIExheWVy
VHJlZUhvc3RDQS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMwRDc0RERFMTMzQkUyRDkwMDg5Q0Q0
NCAvKiBMYXllclRyZWVIb3N0Q0EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzAzQTEzNkMxMzNC
RUJGOTAwRDc2N0QxIC8qIExheWVyVHJlZUhvc3RDQU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhv
c3RDQS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVI
b3N0Q0EuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EubW0KcmVuYW1lIHRvIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwCmluZGV4
IDQ2MDViNzcuLjI0NjA2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKQEAgLTIzLDIyICsyMywxNiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiTGF5ZXJUcmVlSG9zdENBLmgiCi0KLSNpbXBvcnQgIkRyYXdpbmdBcmVh
SW1wbC5oIgotI2ltcG9ydCAiV2ViUGFnZS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgotI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KLQotQGludGVyZmFjZSBDQVRyYW5zYWN0aW9uIChEZXRhaWxzKQotKyAodm9p
ZClzeW5jaHJvbml6ZTsKLUBlbmQKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXll
clRyZWVIb3N0Q0EuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgorI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNTQsOCArNDgsNiBAQCBMYXllclRyZWVIb3N0Q0E6OkxheWVyVHJl
ZUhvc3RDQShXZWJQYWdlKiB3ZWJQYWdlKQogICAgICwgbV9pc1ZhbGlkKHRydWUpCiAgICAgLCBt
X25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaChmYWxzZSkKIHsKLSAgICBtYWNoX3BvcnRf
dCBzZXJ2ZXJQb3J0ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2
ZXJQb3J0KCk7Ci0gICAgbV9yZW1vdGVMYXllckNsaWVudCA9IFdLQ0FSZW1vdGVMYXllckNsaWVu
dE1ha2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0KTsKIAogICAgIC8vIENyZWF0ZSBhIHJvb3Qg
bGF5ZXIuCiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBA
IC02NSw4ICs1Nyw2IEBAIExheWVyVHJlZUhvc3RDQTo6TGF5ZXJUcmVlSG9zdENBKFdlYlBhZ2Uq
IHdlYlBhZ2UpCiAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAg
bV9yb290TGF5ZXItPnNldFNpemUod2ViUGFnZS0+c2l6ZSgpKTsKIAotICAgIFttX3Jvb3RMYXll
ci0+cGxhdGZvcm1MYXllcigpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotCiAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwogI2lm
bmRlZiBOREVCVUcKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5hbWUoIkxh
eWVyVHJlZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwpAQCAtNzksMjIgKzY5LDIyIEBA
IExheWVyVHJlZUhvc3RDQTo6TGF5ZXJUcmVlSG9zdENBKFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAg
ICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLmdldCgp
KTsKIAotICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudFNldExheWVyKG1fcmVtb3RlTGF5ZXJDbGll
bnQuZ2V0KCksIG1fcm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotCiAgICAgaWYgKG1fd2Vi
UGFnZS0+aGFzUGFnZU92ZXJsYXkoKSkKICAgICAgICAgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigp
OwogCi0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CiAKLSAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gV0tDQVJlbW90ZUxheWVyQ2xp
ZW50R2V0Q2xpZW50SWQobV9yZW1vdGVMYXllckNsaWVudC5nZXQoKSk7CisgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7CiB9CiAKIExheWVyVHJlZUhvc3RDQTo6fkxheWVyVHJlZUhvc3RDQSgpCiB7
CiAgICAgQVNTRVJUKCFtX2lzVmFsaWQpOworICAgIEFTU0VSVCghbV9yb290TGF5ZXIpOworI2lm
IFBMQVRGT1JNKE1BQykKICAgICBBU1NFUlQoIW1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVu
TG9vcE9ic2VydmVyKTsKICAgICBBU1NFUlQoIW1fcmVtb3RlTGF5ZXJDbGllbnQpOwotICAgIEFT
U0VSVCghbV9yb290TGF5ZXIpOworI2VuZGlmCiB9CiAKIGNvbnN0IExheWVyVHJlZUNvbnRleHQm
IExheWVyVHJlZUhvc3RDQTo6bGF5ZXJUcmVlQ29udGV4dCgpCkBAIC0xMDIsMjQgKzkyLDYgQEAg
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgTGF5ZXJUcmVlSG9zdENBOjpsYXllclRyZWVDb250ZXh0
KCkKICAgICByZXR1cm4gbV9sYXllclRyZWVDb250ZXh0OwogfQogCi12b2lkIExheWVyVHJlZUhv
c3RDQTo6c2NoZWR1bGVMYXllckZsdXNoKCkKLXsKLSAgICBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1
bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHdl
IHdha2UgdXAgdGhlIGxvb3Agb3IgdGhlIG9ic2VydmVyIGNvdWxkIGJlIGRlbGF5ZWQgdW50aWwg
c29tZSBvdGhlciBzb3VyY2UgZmlyZXMuCi0gICAgQ0ZSdW5Mb29wV2FrZVVwKGN1cnJlbnRSdW5M
b29wKTsKLQotICAgIGlmIChtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUnVuIGJlZm9yZSB0aGUgQ29yZSBBbmltYXRp
b24gY29tbWl0IG9ic2VydmVyLCB3aGljaCBoYXMgb3JkZXIgMjAwMDAwMC4KLSAgICBjb25zdCBD
RkluZGV4IHJ1bkxvb3BPcmRlciA9IDIwMDAwMDAgLSAxOwotICAgIENGUnVuTG9vcE9ic2VydmVy
Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgbV9mbHVzaFBlbmRp
bmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXIuYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNy
ZWF0ZSgwLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCB0cnVlLCBy
dW5Mb29wT3JkZXIsIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNhbGxi
YWNrLCAmY29udGV4dCkpOwotCi0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoY3VycmVudFJ1bkxv
b3AsIG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyLmdldCgpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwotfQotCiB2b2lkIExheWVyVHJlZUhvc3RDQTo6c2V0U2hvdWxk
Tm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVzaChib29sIG5vdGlmeUFmdGVyU2NoZWR1
bGVkTGF5ZXJGbHVzaCkKIHsKICAgICBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9
IG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaDsKQEAgLTEzNywxNCArMTA5LDcgQEAgdm9p
ZCBMYXllclRyZWVIb3N0Q0E6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIpCiB2b2lkIExheWVyVHJlZUhvc3RDQTo6aW52YWxpZGF0ZSgpCiB7CiAg
ICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0KLSAgICBpZiAobV9mbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXNSdW5Mb29wT2JzZXJ2ZXIpIHsKLSAgICAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlkYXRl
KG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyLmdldCgpKTsKLSAgICAg
ICAgbV9mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXIgPSBudWxscHRyOwot
ICAgIH0KLQotICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudEludmFsaWRhdGUobV9yZW1vdGVMYXll
ckNsaWVudC5nZXQoKSk7Ci0gICAgbV9yZW1vdGVMYXllckNsaWVudCA9IG51bGxwdHI7CisgICAg
cGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOwogICAgIG1f
aXNWYWxpZCA9IGZhbHNlOwogfQpAQCAtMTc0LDggKzEzOSw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dENBOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7CiAgICAgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CiAKLSAgICBbQ0FU
cmFuc2FjdGlvbiBmbHVzaF07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVdOworICAg
IHBsYXRmb3JtU2l6ZURpZENoYW5nZSgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RDQTo6Zm9y
Y2VSZXBhaW50KCkKQEAgLTE4Myw4ICsxNDcsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RDQTo6Zm9y
Y2VSZXBhaW50KCkKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXMoKTsKIAotICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKLSAgICBbQ0FUcmFu
c2FjdGlvbiBzeW5jaHJvbml6ZV07CisgICAgcGxhdGZvcm1Gb3JjZVJlcGFpbnQoKTsKIH0gICAg
CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdENBOjpkaWRJbnN0YWxsUGFnZU92ZXJsYXkoKQpAQCAtMjM3
LDE1ICsyMDAsNyBAQCBib29sIExheWVyVHJlZUhvc3RDQTo6c2hvd1JlcGFpbnRDb3VudGVyKCkg
Y29uc3QKICAgICByZXR1cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zaG93
UmVwYWludENvdW50ZXIoKTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0Q0E6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVm
LCBDRlJ1bkxvb3BBY3Rpdml0eSwgdm9pZCogY29udGV4dCkKLXsKLSAgICAvLyBUaGlzIGdldHMg
Y2FsbGVkIG91dHNpZGUgb2YgdGhlIG5vcm1hbCBldmVudCBsb29wIHNvIHdyYXAgaW4gYW4gYXV0
b3JlbGVhc2UgcG9vbAotICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxl
YXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgc3RhdGljX2Nhc3Q8TGF5ZXJUcmVlSG9zdENBKj4o
Y29udGV4dCktPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlckNhbGxiYWNr
KCk7Ci0gICAgW3Bvb2wgZHJhaW5dOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RDQTo6Zmx1c2hQ
ZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2soKQordm9pZCBMYXllclRy
ZWVIb3N0Q0E6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKIHsKICAgICB7CiAgICAgICAg
IFJlZlB0cjxMYXllclRyZWVIb3N0Q0E+IHByb3RlY3QodGhpcyk7CkBAIC0yNTgsMTAgKzIxMywx
MiBAQCB2b2lkIExheWVyVHJlZUhvc3RDQTo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9v
cE9ic2VydmVyQ2FsbGJhY2soKQogICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFdlIHN1Y2Nlc3NmdWxseSBmbHVzaGVkIHRoZSBw
ZW5kaW5nIGxheWVyIGNoYW5nZXMsIHJlbW92ZSB0aGUgcnVuIGxvb3Agb2JzZXJ2ZXIuCi0gICAg
QVNTRVJUKG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyKTsKLSAgICBD
RlJ1bkxvb3BPYnNlcnZlckludmFsaWRhdGUobV9mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5M
b29wT2JzZXJ2ZXIuZ2V0KCkpOwotICAgIG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9v
cE9ic2VydmVyID0gMDsKKyAgICBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOworfQor
Cit2b2lkIExheWVyVHJlZUhvc3RDQTo6ZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKQor
eworICAgIHBsYXRmb3JtRGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKIAogICAgIGlm
IChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkgewogICAgICAgICAvLyBMZXQgdGhl
IGRyYXdpbmcgYXJlYSBrbm93IHRoYXQgd2UndmUgZG9uZSBhIGZsdXNoIG9mIHRoZSBsYXllciBj
aGFuZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L0xheWVyVHJlZUhvc3RDQS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L0xheWVyVHJlZUhvc3RDQS5oCmluZGV4IDg1MDgyY2IuLmJhNGUzM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLmgK
QEAgLTMwLDkgKzMwLDE0IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KworI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKE1BQykKIHR5cGVkZWYgc3RydWN0IF9fV0tDQVJlbW90ZUxheWVyQ2xp
ZW50UmVmKiBXS0NBUmVtb3RlTGF5ZXJDbGllbnRSZWY7CisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTY3LDEzICs3MiwyMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBz
aG93RGVidWdCb3JkZXJzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291
bnRlcigpIGNvbnN0OwogCi0gICAgc3RhdGljIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
UnVuTG9vcE9ic2VydmVyQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFj
dGl2aXR5LCB2b2lkKik7Ci0gICAgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29w
T2JzZXJ2ZXJDYWxsYmFjaygpOworICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisgICAg
dm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKKyAgICB2b2lkIHBsYXRmb3JtU2l6ZURpZENoYW5n
ZSgpOworICAgIHZvaWQgcGxhdGZvcm1Gb3JjZVJlcGFpbnQoKTsKKworICAgIHZvaWQgcGVyZm9y
bVNjaGVkdWxlZExheWVyRmx1c2goKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRMYXll
ckZsdXNoKCk7CisgICAgdm9pZCBwbGF0Zm9ybURpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNo
KCk7CiAgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIAogICAgIHZvaWQgY3Jl
YXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIo
KTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCBmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZS
dW5Mb29wQWN0aXZpdHksIHZvaWQqKTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIGNvbnRleHQgZm9y
IHRoaXMgbGF5ZXIgdHJlZS4KICAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4
dDsKIApAQCAtOTMsOCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHBhZ2Ugb3Zlcmxh
eSBsYXllci4gV2lsbCBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gcGFnZSBvdmVybGF5LgogICAgIE93
blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7CiAKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdLQ0FSZW1vdGVMYXllckNsaWVudFJlZj4gbV9y
ZW1vdGVMYXllckNsaWVudDsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWY+IG1f
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9jYS9tYWMvTGF5ZXJUcmVlSG9zdENBTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2NhL21hYy9MYXllclRyZWVIb3N0Q0FNYWMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTllNWU3ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9tYWMvTGF5ZXJUcmVlSG9zdENBTWFj
Lm1tCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJMYXllclRyZWVIb3N0Q0EuaCIKKworI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9y
dCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+Cisj
aW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKworQGludGVyZmFjZSBDQVRyYW5zYWN0
aW9uIChEZXRhaWxzKQorKyAodm9pZClzeW5jaHJvbml6ZTsKK0BlbmQKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorewor
ICAgIG1hY2hfcG9ydF90IHNlcnZlclBvcnQgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3Np
dGluZ1JlbmRlclNlcnZlclBvcnQoKTsKKyAgICBtX3JlbW90ZUxheWVyQ2xpZW50ID0gV0tDQVJl
bW90ZUxheWVyQ2xpZW50TWFrZVdpdGhTZXJ2ZXJQb3J0KHNlcnZlclBvcnQpOworCisgICAgW21f
cm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CisKKyAg
ICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRTZXRMYXllcihtX3JlbW90ZUxheWVyQ2xpZW50LmdldCgp
LCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsKKworICAgIG1fbGF5ZXJUcmVlQ29udGV4
dC5jb250ZXh0SUQgPSBXS0NBUmVtb3RlTGF5ZXJDbGllbnRHZXRDbGllbnRJZChtX3JlbW90ZUxh
eWVyQ2xpZW50LmdldCgpKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0Q0E6OnNjaGVkdWxlTGF5
ZXJGbHVzaCgpCit7CisgICAgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wID0gQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWtlIHVwIHRoZSBsb29w
IG9yIHRoZSBvYnNlcnZlciBjb3VsZCBiZSBkZWxheWVkIHVudGlsIHNvbWUgb3RoZXIgc291cmNl
IGZpcmVzLgorICAgIENGUnVuTG9vcFdha2VVcChjdXJyZW50UnVuTG9vcCk7CisKKyAgICBpZiAo
bV9mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFJ1biBiZWZvcmUgdGhlIENvcmUgQW5pbWF0aW9uIGNvbW1pdCBvYnNlcnZl
ciwgd2hpY2ggaGFzIG9yZGVyIDIwMDAwMDAuCisgICAgY29uc3QgQ0ZJbmRleCBydW5Mb29wT3Jk
ZXIgPSAyMDAwMDAwIC0gMTsKKyAgICBDRlJ1bkxvb3BPYnNlcnZlckNvbnRleHQgY29udGV4dCA9
IHsgMCwgdGhpcywgMCwgMCwgMCB9OworICAgIG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVu
TG9vcE9ic2VydmVyLmFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoMCwga0NGUnVuTG9v
cEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgdHJ1ZSwgcnVuTG9vcE9yZGVyLCBmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXNSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjaywgJmNvbnRleHQpKTsK
KworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKGN1cnJlbnRSdW5Mb29wLCBtX2ZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNlcnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0Q0E6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7Cisg
ICAgaWYgKG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyKSB7CisgICAg
ICAgIENGUnVuTG9vcE9ic2VydmVySW52YWxpZGF0ZShtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
c1J1bkxvb3BPYnNlcnZlci5nZXQoKSk7CisgICAgICAgIG1fZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzUnVuTG9vcE9ic2VydmVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBXS0NBUmVtb3RlTGF5
ZXJDbGllbnRJbnZhbGlkYXRlKG1fcmVtb3RlTGF5ZXJDbGllbnQuZ2V0KCkpOworICAgIG1fcmVt
b3RlTGF5ZXJDbGllbnQgPSBudWxscHRyOworfQorCit2b2lkIExheWVyVHJlZUhvc3RDQTo6cGxh
dGZvcm1TaXplRGlkQ2hhbmdlKCkKK3sKKyAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CisgICAg
W0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVdOworfQorCit2b2lkIExheWVyVHJlZUhvc3RDQTo6
cGxhdGZvcm1Gb3JjZVJlcGFpbnQoKQoreworICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKKyAg
ICBbQ0FUcmFuc2FjdGlvbiBzeW5jaHJvbml6ZV07Cit9ICAgIAorCit2b2lkIExheWVyVHJlZUhv
c3RDQTo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2soQ0ZS
dW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKiBjb250ZXh0KQorewor
ICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgbm9ybWFsIGV2ZW50IGxvb3Ag
c28gd3JhcCBpbiBhbiBhdXRvcmVsZWFzZSBwb29sCisgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBv
b2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgICBzdGF0aWNfY2FzdDxM
YXllclRyZWVIb3N0Q0EqPihjb250ZXh0KS0+cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsK
KyAgICBbcG9vbCBkcmFpbl07Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBOjpwbGF0Zm9ybURp
ZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKK3sKKyAgICAvLyBXZSBzdWNjZXNzZnVsbHkg
Zmx1c2hlZCB0aGUgcGVuZGluZyBsYXllciBjaGFuZ2VzLCByZW1vdmUgdGhlIHJ1biBsb29wIG9i
c2VydmVyLgorICAgIEFTU0VSVChtX2ZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1J1bkxvb3BPYnNl
cnZlcik7CisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlkYXRlKG1fZmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzUnVuTG9vcE9ic2VydmVyLmdldCgpKTsKKyAgICBtX2ZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlc1J1bkxvb3BPYnNlcnZlciA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAot
LSAKMS43LjQuMQoK
</data>
<flag name="review"
          id="79195"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>