<?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>94678</bug_id>
          
          <creation_ts>2012-08-22 01:21:49 -0700</creation_ts>
          <short_desc>REGRESSION(r126182): The patch causes crashes on GTK builds (Requested by zdobersek on #webkit).</short_desc>
          <delta_ts>2012-08-24 02:57:11 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>alex</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>701663</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 01:21:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126182 broke the build:
The patch causes crashes on GTK builds (Requested by zdobersek on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701665</commentid>
    <comment_count>1</comment_count>
      <attachid>159877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 01:22:26 -0700</bug_when>
    <thetext>Created attachment 159877
ROLLOUT of r126182

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701681</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-08-22 01:47:02 -0700</bug_when>
    <thetext>People are apparently working on the crashes, so the rollout should not proceed just yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703933</commentid>
    <comment_count>3</comment_count>
      <attachid>159877</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-08-24 02:57:03 -0700</bug_when>
    <thetext>Comment on attachment 159877
ROLLOUT of r126182

The issues were fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159877</attachid>
            <date>2012-08-22 01:22:26 -0700</date>
            <delta_ts>2012-08-24 02:57:03 -0700</delta_ts>
            <desc>ROLLOUT of r126182</desc>
            <filename>bug-94678-20120822082844.patch</filename>
            <type>text/plain</type>
            <size>52959</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjM2E3MTdhZDcxOGVj
YmViYzE1OGRiNjA3ODU5ZjE5NjMxYjBmMi4uNmIyNjIwOTZmOTc0ODJjMTZjZGE1MmYyNzY5NTIw
NmJmNmRmNmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTIyICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI2MTgyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjYxODIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0Njc4CisKKyAgICAgICAgVGhlIHBhdGNoIGNhdXNlcyBjcmFzaGVzIG9uIEdU
SyBidWlsZHMgKFJlcXVlc3RlZCBieSB6ZG9iZXJzZWsKKyAgICAgICAgb24gI3dlYmtpdCkuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAoR0xDb250ZXh0R0xYKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOiBSZW1v
dmVkLgorCiAyMDEyLTA4LTIyICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBEeW5hbWljYWxseSBzdHlsaW5nIFNoYWRvd0RvbSBjb250ZW50IG9uIGEgbm9k
ZSBkaXN0cmlidXRlZCB0byBhbm90aGVyIHNoYWRvdyBpbnNlcnRpb24gcG9pbnQgZmFpbHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggMmVmNzkxOTA4ZDUwYWEwNzMwNTg3OGZlZDc4N2E1OTcxMzAxM2Nl
MS4uMmM0NGJlZTQ4MDMzOWFlZmVjNTAxYWIyZTE0ZTVhMDc5ZTZhZjQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4LTIyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTI2MTgyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjYxODIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0Njc4CisK
KyAgICAgICAgVGhlIHBhdGNoIGNhdXNlcyBjcmFzaGVzIG9uIEdUSyBidWlsZHMgKFJlcXVlc3Rl
ZCBieSB6ZG9iZXJzZWsKKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5oOgorICAgICAgICAoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Z2xDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxh
eWVyc1RvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjaGVkdWxlUm9vdExheWVyUmVwYWludCk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemVSb290TGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpzeW5jTGF5ZXJzVGltZW91dENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om1hcmtGb3JTeW5jKToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXll
cnNOb3cpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
c3luY0xheWVyc1RpbWVvdXQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpwYWdlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6d2lkZ2V0U2l6ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVXaWRnZXRSZWN0KToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cGVyZm9ybUFs
bFBlbmRpbmdTY3JvbGxzKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Zm9yY2VQYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3Jv
bGwpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllclN5bmMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgor
ICAgICAgICAoQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhdyk6CisgICAgICAgIChyZXNpemVXZWJW
aWV3RnJvbUFsbG9jYXRpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NpemVfYWxsb2Nh
dGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxpemUpOgorCiAyMDEyLTA4LTIxICBK
b2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KICAgICAgICAgW0d0a10gTm8gYWNj
ZXNzaWJsZSBjYXJldC1tb3ZlZCBldmVudHMgZm91bmQgaW4gY2VydGFpbiBjb250ZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjgxMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDM2ZDVkNDY3MWMwYjJiMDRjMDRhNzgyZDYxZThjZDk2YjMxNzRkOGIuLjEwMjA5ZjEz
YmQ2ZGE2ZmZiMDlkOTNlMjg4YWRlMTY0NGFlMzM2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMi0wOC0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjE4Mi4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2MTgyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDY3OAorCisgICAgICAgIFRoZSBwYXRj
aCBjYXVzZXMgY3Jhc2hlcyBvbiBHVEsgYnVpbGRzIChSZXF1ZXN0ZWQgYnkgemRvYmVyc2VrCisg
ICAgICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTIt
MDgtMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjYyMTYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDM5NDA5ODYxNmU1NWQ2YTI5Yzc0MWZmMGY5OWYwODczYmE1NzQ1MTkuLmY5ZWFiMjQ0MTg2
NTNlZDUzMjk2ZGJmMjBiOTM2YTdkM2U1OGI0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0x
MDU2LDcgKzEwNTYsNiBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCSQoTElCWFNM
VF9DRkxBR1MpIFwKIAkkKFNRTElURTNfQ0ZMQUdTKSBcCiAJJChVTklDT0RFX0NGTEFHUykgXAot
CSQoWENPTVBPU0lURV9DRkxBR1MpIFwKIAkkKFhSRU5ERVJfQ0ZMQUdTKSBcCiAJJChYVF9DRkxB
R1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGI3MzM2Y2NmZjk1OWY4ZmRi
ZmQwZjQyOGRhMzQ0MDA1YjgwMGRiMTYuLjQzNjExNzNhMWJlNmVmNDNjZTkzMGQwMzk4YTNmYWIz
NWJkMjkwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTg3Nyw4ICs1ODc3
LDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HTENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1dpZGdldEJhY2tpbmdTdG9yZVgxMS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL2d0ay9ndGsyeHRiaW4uYyBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsv
Z3RrMnh0YmluLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblBhY2thZ2VH
dGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggOTU0MGI4NmEwYmFmNDQ2YmZiNmY2OWQwYmQ2ODY5Mjdm
NWU3OTIxMy4uOTQ5NmZjOTFhZjMxM2QwMWJkNDBlOWJiOWUzNGEwODZiMmMxNjE1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdM
WC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gYmVjYXVzZSBp
dCBtaWdodCBsZWFkIHRvIGNyYXNoZXMgaW4gc29tZSBkcml2ZXJzIChmZ2xyeCkuIFdlIHVzZSBh
IHNoYXJlZCBkaXNwbGF5CiAvLyBwb2ludGVyIGhlcmUuCiBzdGF0aWMgRGlzcGxheSogZ1NoYXJl
ZERpc3BsYXkgPSAwOwotRGlzcGxheSogR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCkKK3N0
YXRpYyBEaXNwbGF5KiBzaGFyZWREaXNwbGF5KCkKIHsKICAgICBpZiAoIWdTaGFyZWREaXNwbGF5
KQogICAgICAgICBnU2hhcmVkRGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAppbmRleCBi
M2IxOGMxNTZjYzMxY2RjNmIxMzJkYTA3ZTEyZmUyZTczMjhkZTZiLi41ZThjNjFjZTRlNDFjNzZi
NmM4ZTliNTUwODgzNzVhNWY4NGNjNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdMQ29udGV4dEdMWCA6IHB1YmxpYyBHTENvbnRleHQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEdMWCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdM
Q29udGV4dCogc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4
dEdMWD4gY3JlYXRlQ29udGV4dChYSUQsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQo
WElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CiAKICAgICB2aXJ0dWFsIH5H
TENvbnRleHRHTFgoKTsKQEAgLTQ4LDggKzQ4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwogICAgIHZpcnR1YWwgSW50U2l6ZSBk
ZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CiAKLSAgICBzdGF0aWMgRGlzcGxheSogc2hhcmVkRGlz
cGxheSgpOwotCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMWQyNjJkNzcwMGI0NGU4OGRmZjA3
ODI0MGFmZGE0MGYwYjQ0MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oIgotCi0jaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCi0jaW5jbHVkZSA8R0wvZ2x4Lmg+Ci0j
aW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgotI2luY2x1ZGUgPGNhaXJvLXhs
aWIuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRl
IDxndGsvZ3RrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShj
b25zdCBJbnRTaXplJiBzaXplKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYgc2l6ZSkKLSAgICA6
IG1fd2luZG93KDApCi0gICAgLCBtX3BhcmVudFdpbmRvdygwKQotICAgICwgbV9waXhtYXAoMCkK
LSAgICAsIG1fc3VyZmFjZSgwKQotICAgICwgbV9wZW5kaW5nUmVzaXplU291cmNlSWQoMCkKLSAg
ICAsIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZShmYWxzZSkKLXsKLSAgICBEaXNwbGF5KiBk
aXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7Ci0KLSAgICAvLyBUaGlzIGlz
IGJhc2VkIG9uIGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFn
ZV90cmFuc3BvcnRfc3VyZmFjZV9saW51eC5jYwotICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdp
bmRvd0F0dHJpYnV0ZXM7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9
IFRydWU7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb3RXaW5kb3coZGlzcGxheSwgRGVmYXVs
dFNjcmVlbihkaXNwbGF5KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x
MDAsIC0xMDAsIDEsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlGcm9tUGFyZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dE91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29weUZyb21QYXJlbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3coZGlzcGxh
eSwgbV9wYXJlbnRXaW5kb3cpOwotCi0gICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0g
U3RydWN0dXJlTm90aWZ5TWFzazsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGly
ZWN0ID0gRmFsc2U7Ci0gICAgbV93aW5kb3cgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyZW50V2luZG93LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
cHlGcm9tUGFyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dE91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weUZyb21QYXJlbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENXRXZlbnRNYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1hcFdpbmRvdyhkaXNwbGF5LCBtX3dpbmRv
dyk7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAgIFhX
aW5kb3dFdmVudChkaXNwbGF5LCBtX3dpbmRvdywgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50
KTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2lu
ZG93ID09IG1fd2luZG93KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFhTZWxlY3RJ
bnB1dChkaXNwbGF5LCBtX3dpbmRvdywgTm9FdmVudE1hc2spOwotCi0gICAgWENvbXBvc2l0ZVJl
ZGlyZWN0V2luZG93KGRpc3BsYXksIG1fd2luZG93LCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7
Ci0KLSAgICByZXNpemUoc2l6ZSk7Ci0gICAgcmVzaXplTGF0ZXIoKTsgLy8gRm9yY2UgdXBkYXRl
IG9mIHRoZSB1c2FibGUgYXJlYS4KLX0KLQotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCi17Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IEdM
Q29udGV4dEdMWDo6c2hhcmVkRGlzcGxheSgpOwotICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAg
WERlc3Ryb3lXaW5kb3coZGlzcGxheSwgbV93aW5kb3cpOwotICAgIGlmIChtX3BhcmVudFdpbmRv
dykKLSAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOwotICAg
IGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0KLSAgICBpZiAobV9wZW5kaW5nUmVz
aXplU291cmNlSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3BlbmRpbmdSZXNpemVTb3Vy
Y2VJZCk7Ci19Ci0KLWdib29sZWFuIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemVM
YXRlckNhbGxiYWNrKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KiB3aW5kb3cpCi17Ci0gICAg
d2luZG93LT5yZXNpemVMYXRlcigpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotdm9pZCBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplTGF0ZXIoKQotewotICAgIG1fdXNhYmxlU2l6
ZSA9IG1fc2l6ZTsKLSAgICBtX3BlbmRpbmdSZXNpemVTb3VyY2VJZCA9IDA7Ci19Ci0KLXZvaWQg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQot
ewotICAgIC8vIFdoZW4gZW5sYXJnaW5nIGEgcmVkaXJlY3RlZCB3aW5kb3csIGZvciB0aGUgZmly
c3QgcmVuZGVyLCB0aGUgbmV3bHkgZXhwb3NlZCBhcmVhcyBzZWVtCi0gICAgLy8gdG8gY29udGFp
biB1bmluaXRpYWxpemVkIG1lbW9yeSBvbiBJbnRlbCBkcml2ZXJzLiBUbyBhdm9pZCByZW5kZXJp
bmcgYXJ0aWZhY3RzIHdoaWxlCi0gICAgLy8gcmVzaXppbmcsIHdlIHdhaXQgdG8gcmVuZGVyIHRo
b3NlIG5ldyBhcmVhcyB1bnRpbCBhZnRlciBhIHNob3J0IHRpbWVvdXQuIFRodXMsIHRoZQotICAg
IC8vICJ1c2FibGUgc2l6ZSIgb2YgdGhlIHdpbmRvdyBpcyBzbWFsbGVyIHRoYW4gdGhlIGFjdHVh
bCBzaXplIG9mIHRoZSB3aW5kb3cgZm9yIHRoZSBmaXJzdAotICAgIC8vIHJlbmRlci4KLSAgICBt
X3VzYWJsZVNpemUgPSBzaXplLnNocnVua1RvKG1fdXNhYmxlU2l6ZSk7Ci0gICAgaWYgKG1fdXNh
YmxlU2l6ZS53aWR0aCgpIDwgc2l6ZS53aWR0aCgpIHx8IG1fdXNhYmxlU2l6ZS5oZWlnaHQoKSA8
IHNpemUuaGVpZ2h0KCkpIHsgLy8gVGhlIHdpbmRvdyBpcyBncm93aW5nLgotICAgICAgICAvLyBX
ZSdyZSBiZWluZyB2ZXJ5IGNvbnNlcnZhdGl2ZSBoZXJlLiBJbnN0ZWFkIG9mIHJpc2tpbmcgZHJh
d2luZyBhcnRpZmFjdHMgd2hpbGUgZG9pbmcgY29udGludW91cwotICAgICAgICAvLyBvcGFxdWUg
cmVzaXppbmcsIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBoYXZpbmcgbW9yZSB1bmRyYXduIGFyZWFz
LgotICAgICAgICBpZiAobV9wZW5kaW5nUmVzaXplU291cmNlSWQpCi0gICAgICAgICAgICBnX3Nv
dXJjZV9yZW1vdmUobV9wZW5kaW5nUmVzaXplU291cmNlSWQpOwotICAgICAgICBtX3BlbmRpbmdS
ZXNpemVTb3VyY2VJZCA9IGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNl
RnVuYz4ocmVzaXplTGF0ZXJDYWxsYmFjayksIHRoaXMpOwotICAgIH0KLQotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBHTENvbnRleHRHTFg6OnNoYXJlZERpc3BsYXkoKTsKLSAgICBYUmVzaXplV2lu
ZG93KGRpc3BsYXksIG1fd2luZG93LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAg
IGdsWFdhaXRYKCk7Ci0KLSAgICAvLyBUaGlzIHN3YXAgaXMgYmFzZWQgb24gY29kZSBpbiBDaHJv
bWl1bS4gSXQgdHJpZXMgdG8gd29yay1hcm91bmQgYSBidWcgaW4gdGhlIEludGVsIGRyaXZlcnMK
LSAgICAvLyB3aGVyZSBhIHN3YXAgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgZnJvbnQgYW5k
IGJhY2sgYnVmZmVycyBhcmUgcHJvcGVybHkgcmVzaXplZC4KLSAgICBpZiAoY29udGV4dCgpID09
IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpKQotICAgICAgICBjb250ZXh0KCktPnN3YXBCdWZmZXJz
KCk7Ci0KLSAgICBtX3NpemUgPSBzaXplOwotICAgIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6
ZSA9IHRydWU7Ci19Ci0KLUdMQ29udGV4dCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNv
bnRleHQoKQotewotICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7Ci0KLSAgICBBU1NFUlQobV93aW5kb3cpOwotICAgIG1fY29udGV4dCA9IEdMQ29udGV4
dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhtX3dpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29u
dGV4dCgpKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwotfQotCi12b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpCi17Ci0g
ICAgaWYgKCFtX3BpeG1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgWEZyZWVQaXhtYXAoY2Fp
cm9feGxpYl9zdXJmYWNlX2dldF9kaXNwbGF5KG1fc3VyZmFjZS5nZXQoKSksIG1fcGl4bWFwKTsK
LSAgICBtX3BpeG1hcCA9IDA7Ci0gICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKLX0KLQotY2Fpcm9f
c3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lk
Z2V0KEd0a1dpZGdldCogd2lkZ2V0KQotewotICAgIGlmICghbV9uZWVkc05ld1BpeG1hcEFmdGVy
UmVzaXplICYmIG1fc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsKLQot
ICAgIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZSA9IGZhbHNlOwotCi0gICAgLy8gSXQncyBp
bXBvcnRhbnQgdGhhdCB0aGUgbmV3IHBpeG1hcCBiZSBjcmVhdGVkIHdpdGggdGhlIHNhbWUgRGlz
cGxheSBwb2ludGVyIGFzIHRoZSB0YXJnZXQKLSAgICAvLyB3aWRnZXQgb3IgZWxzZSBkcmF3aW5n
IHNwZWVkIGNhbiBiZSAxMDB4IHNsb3dlci4KLSAgICBEaXNwbGF5KiBuZXdQaXhtYXBEaXNwbGF5
ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aWRnZXQpKTsK
LSAgICBQaXhtYXAgbmV3UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobmV3UGl4
bWFwRGlzcGxheSwgbV93aW5kb3cpOwotICAgIGlmICghbmV3UGl4bWFwKSB7Ci0gICAgICAgIGNs
ZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgaWYgKCFYR2V0
V2luZG93QXR0cmlidXRlcyhuZXdQaXhtYXBEaXNwbGF5LCBtX3dpbmRvdywgJndpbmRvd0F0dHJp
YnV0ZXMpKSB7Ci0gICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAg
ICAgIFhGcmVlUGl4bWFwKG5ld1BpeG1hcERpc3BsYXksIG5ld1BpeG1hcCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2Ug
PSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG5ld1BpeG1hcERpc3BsYXksIG5l
d1BpeG1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7Ci0KLSAg
ICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUgdGhlaXIgcmVkaXJlY3RlZCB3aW5k
b3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBmZXcgZnJhY3Rpb25zCi0gICAgLy8g
b2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxlIGRvaW5nIGNvbnRpbnVvdXMgcmVz
aXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5kIGNyZWF0ZXMKLSAgICAvLyBwaXht
YXAgd2luZG93LWJhY2tpbmdzKSwgdGhlIHBpeG1hcCBtZW1vcnkgaXMgdW5pbml0aWFsaXplZC4g
VG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSwgcGFpbnQgdGhlIG9sZAotICAgIC8vIHBpeG1hcCB0
byB0aGUgbmV3IG9uZSB0byBwcm9wZXJseSBpbml0aWFsaXplIGl0LgotICAgIGlmIChtX3N1cmZh
Y2UpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRl
KG5ld1N1cmZhY2UuZ2V0KCkpKTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IuZ2V0
KCksIDEsIDEsIDEpOwotICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7Ci0gICAgICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsK
LSAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotICAgIH0KLQotICAgIGNsZWFudXBQaXht
YXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgbV9waXhtYXAgPSBuZXdQaXhtYXA7Ci0gICAgbV9z
dXJmYWNlID0gbmV3U3VyZmFjZTsKLQotICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDM5ZWM3ZWRiMjZiOGRlYTQyNmZiZjRlNjRhOTVlMjU5ZGE0ZDdhMzguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBJZ2FsaWEgUy5M
LgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmICBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvd19oCi0jZGVmaW5lICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvd19oCi0K
LSNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsKLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwot
ICAgIHZpcnR1YWwgflJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplJiB1c2FibGVTaXplKCkgeyByZXR1cm4gbV91c2FibGVTaXplOyB9Ci0gICAgY29uc3Qg
SW50U2l6ZSYgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgdm9pZCByZXNpemUoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSk7Ci0gICAgR0xDb250ZXh0KiBjb250ZXh0KCk7Ci0gICAgY2Fp
cm9fc3VyZmFjZV90KiBjYWlyb1N1cmZhY2VGb3JXaWRnZXQoR3RrV2lkZ2V0Kik7Ci0KLXByaXZh
dGU6Ci0gICAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYpOwotCi0g
ICAgc3RhdGljIGdib29sZWFuIHJlc2l6ZUxhdGVyQ2FsbGJhY2soUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cqKTsKLSAgICB2b2lkIHJlc2l6ZUxhdGVyKCk7Ci0gICAgdm9pZCBjbGVhbnVwUGl4
bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwotCi0gICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgSW50U2l6
ZSBtX3VzYWJsZVNpemU7Ci0gICAgV2luZG93IG1fd2luZG93OwotICAgIFdpbmRvdyBtX3BhcmVu
dFdpbmRvdzsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgT3duUHRyPEdMQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKLSAgICB1bnNp
Z25lZCBpbnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7Ci0gICAgYm9vbCBtX25lZWRzTmV3UGl4
bWFwQWZ0ZXJSZXNpemU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvd19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDAwNDczZjlkNTBiNWE3NTdhNTA1MDgxYmZmOGYyYjE0OGQzYTZlYTMuLjIxNTU3NmU1MTgx
NGNjZjEyY2MwZWZlYjY5MmVkOWRhN2IyNDk0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CkBAIC0xMDEsNyArMTAxLDYgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKFBOR19MSUJT
KSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAotCSQoWENPTVBPU0lU
RV9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKIAkkKFdJTk1NX0xJ
QlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmluZGV4IDQ1ZWY0NzBiNmE3M2Rh
OTU3Yjc5Y2JlNmZiNDY3MTVhYjI0ZWNhYTIuLjI0YTYxNGRiNDVmNGYyZjVjYzMyOWQ0ODhmNGEx
ODdhZjk0MWQ4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaApAQCAtMjgsMTIg
KzI4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIFVTRShURVhUVVJF
X01BUFBFUikKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKLSNlbmRpZgotCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgotI2luY2x1ZGUg
IlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCisjZW5kaWYKKyNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyTGF5ZXIuaCIKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpAQCAtNDksOSArNDcsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgfkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCk7Ci0gICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdM
YXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAgdm9pZCBzZXROb25Db21wb3NpdGVk
Q29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdm9pZCBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlUm9vdExheWVyUmVwYWlu
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBtYXJrRm9yU3luYygpOworICAg
IHZvaWQgc3luY0xheWVyc1RpbWVvdXQoKTsKKyAgICB2b2lkIHN5bmNMYXllcnNOb3coKTsKICAg
ICB2b2lkIHJlc2l6ZVJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgYm9v
bCByZW5kZXJMYXllcnNUb1dpbmRvdyhjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y2xpcFJlY3QpOwogICAgIGJvb2wgZW5hYmxlZCgpOwpAQCAtNjMsMzcgKzYzLDIxIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycyhjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3Q7CiAKLSAgICB2b2lkIGluaXRpYWxp
emUoKTsKLSAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwotICAgIHZvaWQgZmx1
c2hBbmRSZW5kZXJMYXllcnMoKTsKLSAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygp
OwotICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7
Ci0KIHByaXZhdGU6CiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwotICAgIHVuc2lnbmVk
IGludCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQ7CisgICAgdW5zaWduZWQgaW50IG1fc3lu
Y1RpbWVyQ2FsbGJhY2tJZDsKIAogI2lmIFVTRShDTFVUVEVSKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIG1fcm9vdEdyYXBoaWNzTGF5ZXI7CiAgICAgR3RrV2lkZ2V0KiBtX3Jvb3RMYXll
ckVtYmVkZGVyOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIE93blB0cjxXZWJD
b3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93OwotICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOwotICAg
IE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7Ci0gICAgZG91
YmxlIG1fbGFzdEZsdXNoVGltZTsKLSAgICBkb3VibGUgbV9yZWRyYXdQZW5kaW5nVGltZTsKLSAg
ICBib29sIG1fbmVlZHNFeHRyYUZsdXNoOwotCi0gICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJl
ZCgpOwotICAgIHZvaWQgc3RvcEFueVBlbmRpbmdMYXllckZsdXNoKCk7Ci0gICAgc3RhdGljIGdi
b29sZWFuIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2soQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQqKTsKLSAgICBXZWJDb3JlOjpHTENvbnRleHQqIHByZXBhcmVGb3JSZW5kZXJpbmco
KTsKLSAgICB2b2lkIGNsZWFyRXZlcnl3aGVyZSgpOwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogbV9yb290VGV4dHVyZU1hcHBlckxh
eWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RHcmFwaGljc0xh
eWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIFdlYkNvcmU6OkdMQ29udGV4dCogZ2xD
b250ZXh0KCk7CisgICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OworI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYktpdFdl
YlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKaW5kZXggMjli
YTM0OWQ4NGQyY2ZhNWE1ZDAyNjJhOWVkNTAxNTcxZDA3NWU1YS4uNjRlYjkwMTc1OGJkNGVhZThh
OTQ4N2JhMWRjMDE5NjcyYTllNWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRHTC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgpA
QCAtMzYsMTIgKzM1LDEzIEBACiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KIAotY29uc3QgZG91YmxlIGdGcmFtZXNQZXJTZWNvbmQgPSA2MDsKLQotLy8gVGhlcmUg
c2VlbXMgdG8gYmUgYSBkZWxpY2F0ZSBiYWxhbmNlIGJldHdlZW4gdGhlIG1haW4gbG9vcCBiZWlu
ZyBmbG9vZGVkCi0vLyB3aXRoIG1vdGlvbiBldmVudHMgKHRoYXQgZm9yY2UgZmx1c2hlcykgYW5k
IHN0YXJ2aW5nIHRoZSBtYWluIGxvb3Agb2YgZXZlbnRzCi0vLyB3aXRoIGZsdXNoIGNhbGxiYWNr
cy4gVGhpcyBkZWxheSBpcyBlbnRpcmVseSBlbXBpcmljYWwuCi1jb25zdCBkb3VibGUgZ1NjaGVk
dWxlRGVsYXkgPSAoMS4wIC8gKGdGcmFtZXNQZXJTZWNvbmQgLyAzLjApKTsKKyNpZiBkZWZpbmVk
KEdES19XSU5ET1dJTkdfWDExKQorI2RlZmluZSBSZWdpb24gWFJlZ2lvbgorI2RlZmluZSBGb250
IFhGb250CisjZGVmaW5lIEN1cnNvciBYQ3Vyc29yCisjZGVmaW5lIFNjcmVlbiBYU2NyZWVuCisj
aW5jbHVkZSA8Z2RrL2dka3guaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNDksMzIyICs0OSwxNTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi0gICAgLCBtX2xheWVy
Rmx1c2hUaW1lckNhbGxiYWNrSWQoMCkKLSAgICAsIG1fcmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKEludFNpemUoMSwgMSkpKQotICAgICwgbV9sYXN0
Rmx1c2hUaW1lKDApCi0gICAgLCBtX3JlZHJhd1BlbmRpbmdUaW1lKDApCi0gICAgLCBtX25lZWRz
RXh0cmFGbHVzaChmYWxzZSkKLXsKLX0KLQotc3RhdGljIEludFNpemUgZ2V0V2ViVmlld1NpemUo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICAsIG1fc3luY1RpbWVyQ2FsbGJhY2tJZCgwKQor
ICAgICwgbV9yb290VGV4dHVyZU1hcHBlckxheWVyKDApCiB7Ci0gICAgR3RrQWxsb2NhdGlvbiBh
bGxvY2F0aW9uOwotICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24oR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOwotICAgIHJldHVybiBJbnRTaXplKGFsbG9jYXRpb24ud2lkdGgs
IGFsbG9jYXRpb24uaGVpZ2h0KTsKLX0KLQotdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgaWYgKG1fcm9vdExheWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSh0aGlzKTsKLSAg
ICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLQotICAgIEludFNpemUgcGFn
ZVNpemUgPSBnZXRXZWJWaWV3U2l6ZShtX3dlYlZpZXcpOwotICAgIG1fcm9vdExheWVyLT5zZXRT
aXplKHBhZ2VTaXplKTsKLQotICAgIC8vIFRoZSBub24tY29tcG9zaXRlZCBjb250ZW50cyBhcmUg
YSBjaGlsZCBvZiB0aGUgcm9vdCBsYXllci4KLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXRDb250ZW50c09wYXF1ZSghbV93ZWJWaWV3LT5wcml2LT50cmFuc3BhcmVu
dCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKHBhZ2VTaXplKTsK
LSAgICBpZiAoY29yZShtX3dlYlZpZXcpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZERyYXdpbmdF
bmFibGVkKCkpCi0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNjZWxl
cmF0ZXNEcmF3aW5nKHRydWUpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIG1fcm9vdExheWVyLT5z
ZXROYW1lKCJSb290IGxheWVyIik7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5z
ZXROYW1lKCJOb24tY29tcG9zaXRlZCBjb250ZW50Iik7Ci0jZW5kaWYKLQotICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwotICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0KLSAgICAvLyBU
aGUgY3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBj
b250ZXh0LgotICAgIEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+Y29u
dGV4dCgpOwotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIG1fdGV4dHVy
ZU1hcHBlciA9IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlKCk7Ci0KLSAgICB0b1RleHR1cmVNYXBw
ZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJlTWFw
cGVyLmdldCgpKTsKLQotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCkKIHsK
LSAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKLX0KLQotdm9pZCBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6c3RvcEFueVBlbmRpbmdMYXllckZsdXNoKCkKLXsKLSAgICBpZiAo
IW1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGdfc291
cmNlX3JlbW92ZShtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpOwotICAgIG1fbGF5ZXJGbHVz
aFRpbWVyQ2FsbGJhY2tJZCA9IDA7CisgICAgaWYgKG1fc3luY1RpbWVyQ2FsbGJhY2tJZCkKKyAg
ICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fc3luY1RpbWVyQ2FsbGJhY2tJZCk7CiB9CiAKIGJvb2wg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmVuYWJsZWQoKQogewotICAgIHJldHVybiBt
X3Jvb3RMYXllciAmJiBtX3RleHR1cmVNYXBwZXI7CisgICAgcmV0dXJuIG1fcm9vdFRleHR1cmVN
YXBwZXJMYXllciAmJiBtX3RleHR1cmVNYXBwZXI7CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVyc1RvV2luZG93KGNhaXJvX3QqIGNyLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCkKK0dMQ29udGV4dCogQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmdsQ29udGV4dCgpCiB7Ci0gICAgbV9yZWRyYXdQZW5kaW5nVGltZSA9IDA7Ci0KLSAgICBp
ZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQncyBpbXBv
cnRhbnQgdG8gcGFpbnQgYSB3aGl0ZSBiYWNrZ3JvdW5kIChpZiB0aGUgV2ViVmlldyBpc24ndCB0
cmFuc3BhcmVudCksIGJlY2F1c2Ugd2hlbiBncm93aW5nCi0gICAgLy8gdGhlIHJlZGlyZWN0ZWQg
d2luZG93LCB0aGUgdXNhYmxlIHNpemUgb2YgdGhlIHdpbmRvdyBtYXkgYmUgc21hbGxlciB0aGFu
IHRoZSBhbGxvY2F0aW9uIG9mIG91ciB3aWRnZXQuCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBz
aG93IGFydGlmYWN0cyBpbiB0aGF0IGNhc2UuCi0gICAgSW50U2l6ZSB1c2FibGVXaW5kb3dTaXpl
ID0gbV9yZWRpcmVjdGVkV2luZG93LT51c2FibGVTaXplKCk7Ci0gICAgaWYgKHVzYWJsZVdpbmRv
d1NpemUgIT0gbV9yZWRpcmVjdGVkV2luZG93LT5zaXplKCkpIHsKLSAgICAgICAgaWYgKCFtX3dl
YlZpZXctPnByaXYtPnRyYW5zcGFyZW50KSB7Ci0gICAgICAgICAgICBjYWlyb19zZXRfc291cmNl
X3JnYihjciwgMSwgMSwgMSk7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENB
SVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2Fpcm9f
c2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgIGNhaXJvX3Bh
aW50KGNyKTsKLSAgICB9CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogd2luZG93U3VyZmFjZSA9IG1fcmVk
aXJlY3RlZFdpbmRvdy0+Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQobV93ZWJWaWV3
KSk7Ci0gICAgaWYgKCF3aW5kb3dTdXJmYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0
LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IsIHdpbmRvd1N1cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLQotICAgIGlmICgh
bV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkICYmIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9v
dExheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSB8
fCBtX25lZWRzRXh0cmFGbHVzaCkgewotICAgICAgICBtX25lZWRzRXh0cmFGbHVzaCA9IGZhbHNl
OwotICAgICAgICBkb3VibGUgbmV4dEZsdXNoID0gbWF4KCgxIC8gZ0ZyYW1lc1BlclNlY29uZCkg
LSAoY3VycmVudFRpbWUoKSAtIG1fbGFzdEZsdXNoVGltZSksIDAuMCk7Ci0gICAgICAgIG1fbGF5
ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHREtfUFJJT1JJVFlf
RVZFTlRTLCAxMDAwICogbmV4dEZsdXNoLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihs
YXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKSwgdGhpcywgMCk7Ci0gICAgfQorI2lmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19YMTEpCisgICAgLy8gRklYTUU6IEdyYWNlZnVsbHkgYWNjb3VudCBm
b3Igc2l0dWF0aW9ucyB3aGVyZSB3ZSBkbyBub3QgaGF2ZSBhIHJlYWxpemVkIHdpbmRvdy4KKyAg
ICBHZGtXaW5kb3cqIGdka1dpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VU
KG1fd2ViVmlldykpOworICAgIGlmIChnZGtXaW5kb3cgJiYgZ2RrX3dpbmRvd19oYXNfbmF0aXZl
KGdka1dpbmRvdykpCisgICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhHREtfV0lORE9XX1hJRChnZGtXaW5kb3cpLCBHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCkpOworI2VuZGlmCiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9jb250
ZXh0LmdldCgpOwogfQogCi1HTENvbnRleHQqIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnJlbmRlckxheWVyc1RvV2luZG93KGNhaXJvX3QqLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRv
dy0+Y29udGV4dCgpOworICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpCi17Ci0gICAgR0xDb250ZXh0
KiBjb250ZXh0ID0gcHJlcGFyZUZvclJlbmRlcmluZygpOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBJbnRTaXpl
JiB3aW5kb3dTaXplID0gbV9yZWRpcmVjdGVkV2luZG93LT5zaXplKCk7Ci0gICAgZ2xWaWV3cG9y
dCgwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCkpOworICAgIEd0
a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKEdU
S19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9jYXRpb24pOworICAgIGdsVmlld3BvcnQoMCwgMCwg
YWxsb2NhdGlvbi53aWR0aCwgYWxsb2NhdGlvbi5oZWlnaHQpOwogCiAgICAgbV90ZXh0dXJlTWFw
cGVyLT5iZWdpblBhaW50aW5nKCk7Ci0gICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5
ZXIuZ2V0KCkpLT5wYWludCgpOworICAgIG1fcm9vdFRleHR1cmVNYXBwZXJMYXllci0+cGFpbnQo
KTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CiAKICAgICBjb250ZXh0LT5z
d2FwQnVmZmVycygpOwotCi0gICAgLy8gRklYTUU6IEl0IHNlZW1zIHRoYXQgd2hlbiB1c2luZyBk
b3VibGUtYnVmZmVyaW5nIChhbmQgb24gc29tZSBkcml2ZXJzIHNpbmdsZS1idWZmZXJpbmcpCi0g
ICAgLy8gYW5kIFhDb21wb3NpdGUgd2luZG93IHJlZGlyZWN0aW9uLCB0d28gc3dhcCBidWZmZXJz
IGFyZSByZXF1aXJlZCB0byBmb3JjZSB0aGUgcGl4bWFwCi0gICAgLy8gdG8gdXBkYXRlLiBUaGlz
IGlzbid0IGEgcHJvYmxlbSBkdXJpbmcgYW5pbWF0aW9ucywgYmVjYXVzZSBzd2FwQnVmZmVyIGlz
IGNvbnRpbnVvdXNseQotICAgIC8vIGNhbGxlZC4gRm9yIG5vbi1hbmltYXRpb24gc2l0dWF0aW9u
cyB3ZSB1c2UgdGhpcyB0ZXJyaWJsZSBoYWNrIHVudGlsIHdlIGNhbiBnZXQgdG8gdGhlCi0gICAg
Ly8gYm90dG9tIG9mIHRoZSBpc3N1ZS4KLSAgICBpZiAoIXRvVGV4dHVyZU1hcHBlckxheWVyKG1f
cm9vdExheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMo
KSkgewotICAgICAgICBjb250ZXh0LT5zd2FwQnVmZmVycygpOwotICAgICAgICBjb250ZXh0LT5z
d2FwQnVmZmVycygpOwotICAgIH0KLX0KLQotdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6Y2xlYXJFdmVyeXdoZXJlKCkKLXsKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBwcmVw
YXJlRm9yUmVuZGVyaW5nKCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplID0gbV9yZWRpcmVjdGVkV2luZG93LT5zaXpl
KCk7Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUu
aGVpZ2h0KCkpOwotICAgIGdsQ2xlYXJDb2xvcigxLCAxLCAxLCAxKTsKLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKLQotICAg
IC8vIEZJWE1FOiBJdCBzZWVtcyB0aGF0IHdoZW4gdXNpbmcgZG91YmxlLWJ1ZmZlcmluZyAoYW5k
IG9uIHNvbWUgZHJpdmVycyBzaW5nbGUtYnVmZmVyaW5nKQotICAgIC8vIGFuZCBYQ29tcG9zaXRl
IHdpbmRvdyByZWRpcmVjdGlvbiwgdHdvIHN3YXAgYnVmZmVycyBhcmUgcmVxdWlyZWQgdG8gZm9y
Y2UgdGhlIHBpeG1hcAotICAgIC8vIHRvIHVwZGF0ZS4gVGhpcyBpc24ndCBhIHByb2JsZW0gZHVy
aW5nIGFuaW1hdGlvbnMsIGJlY2F1c2Ugc3dhcEJ1ZmZlciBpcyBjb250aW51b3VzbHkKLSAgICAv
LyBjYWxsZWQuIEZvciBub24tYW5pbWF0aW9uIHNpdHVhdGlvbnMgd2UgdXNlIHRoaXMgdGVycmli
bGUgaGFjayB1bnRpbCB3ZSBjYW4gZ2V0IHRvIHRoZQotICAgIC8vIGJvdHRvbSBvZiB0aGUgaXNz
dWUuCi0gICAgaWYgKCF0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPmRl
c2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpIHsKLSAgICAgICAgY29udGV4
dC0+c3dhcEJ1ZmZlcnMoKTsKLSAgICAgICAgY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKLSAgICB9
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIp
Cit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hSb290R3JhcGhpY3NM
YXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIC8vIENsZWFyaW5nIGV2
ZXJ5d2hlcmUgd2hlbiB0dXJuaW5nIG9uIG9yIG9mZiB0aGUgbGF5ZXIgdHJlZSBwcmV2ZW50cyB1
cyBmcm9tIGZsYXNoaW5nCi0gICAgLy8gb2xkIGNvbnRlbnQgYmVmb3JlIHRoZSBmaXJzdCBmbHVz
aC4KLSAgICBjbGVhckV2ZXJ5d2hlcmUoKTsKLQogICAgIGlmICghZ3JhcGhpY3NMYXllcikgewot
ICAgICAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKLQotICAgICAgICAvLyBTaHJpbmsg
dGhlIG9mZnNjcmVlbiB3aW5kb3cgdG8gc2F2ZSBtZW1vcnkgd2hpbGUgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgaXMgdHVybmVkIG9mZi4KLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNp
emUoSW50U2l6ZSgxLCAxKSk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKLSAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0gbnVsbHB0cjsKLSAgICAgICAgbV90ZXh0
dXJlTWFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9yb290R3JhcGhpY3NMYXllci5jbGVhcigp
OworICAgICAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXIgPSAwOworICAgICAgICBtX2NvbnRl
eHQuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChncmFwaGljc0xh
eWVyICYmICFlbmFibGVkKCkpCi0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKGdl
dFdlYlZpZXdTaXplKG1fd2ViVmlldykpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUodGhpcyk7CisgICAgbV9yb290VGV4dHVyZU1hcHBlckxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290R3JhcGhpY3NMYXllci5nZXQoKSk7CisgICAgbV9y
b290R3JhcGhpY3NMYXllci0+YWRkQ2hpbGQoZ3JhcGhpY3NMYXllcik7CisgICAgbV9yb290R3Jh
cGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldFNpemUoY29yZSht
X3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpLT5mcmFtZVJlY3QoKS5zaXplKCkpOwogCi0g
ICAgLy8gQWRkIHRoZSBhY2NlbGVyYXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KLSAgICBpbml0
aWFsaXplKCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5yZW1vdmVBbGxDaGls
ZHJlbigpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+YWRkQ2hpbGQoZ3JhcGhp
Y3NMYXllcik7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gZ2xDb250ZXh0KCk7CisgICAgaWYg
KCFjb250ZXh0KQorICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1
c2goKTsKKyAgICAvLyBUaGUgY29udGV4dCBuZWVkcyB0byBiZSBhY3RpdmUgd2hlbiBjcmVhdGlu
ZyB0aGUgdGV4dHVyZSBtYXBwZXIuIEl0J3MgZmluZSB0bworICAgIC8vIGF2b2lkIGNhbGxpbmcg
c3dhcEJ1ZmZlcnMgaGVyZSwgYmVjYXVzZSBpdCB3aWxsIGp1c3QgaW5pdGlhbGl6ZSBzaGFkZXJz
LgorICAgIGlmICghY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIEZJWE1FOiBUd28gZmx1c2hlcyBzZWVtIG5lY2Vzc2FyeSB0byBnZXQgdGhl
IHByb3BlciByZW5kZXJpbmcgaW4gc29tZSBjYXNlcy4gSXQncyB1bmNsZWFyCi0gICAgLy8gaWYg
dGhpcyBpcyBhIGJ1ZyB3aXRoIHRoZSBSZWRpcmVjdGVkWENvbXBvc2l0ZSB3aW5kb3cgb3Igd2l0
aCB0aGlzIGNsYXNzLgotICAgIG1fbmVlZHNFeHRyYUZsdXNoID0gdHJ1ZTsKLSAgICBzY2hlZHVs
ZUxheWVyRmx1c2goKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CisgICAgZ3RrX3dp
ZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsK
KyAgICBnbFZpZXdwb3J0KDAsIDAsIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0
KTsKIAotICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IGdfdGltZW91dF9hZGRfZnVs
bChHREtfUFJJT1JJVFlfRVZFTlRTLCA1MDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBtX3RleHR1cmVN
YXBwZXIgPSBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZSgpOworICAgIG1fcm9vdFRleHR1cmVNYXBw
ZXJMYXllci0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOworICAgIG1f
cm9vdEdyYXBoaWNzTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgp
OwogfQogCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25Db21wb3Np
dGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2NoZWR1bGVSb290TGF5ZXJSZXBhaW50KGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICBpZiAoIW1fcm9vdEdy
YXBoaWNzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbV9yb290TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBtX3Jvb3RH
cmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChy
ZWN0KTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVy
LT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnJlc2l6ZVJvb3RMYXllcihjb25zdCBJbnRTaXplJiBuZXdTaXplKQor
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKGNvbnN0
IEludFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKCFlbmFibGVkKCkpCisgICAgaWYgKCFtX3Jvb3RH
cmFwaGljc0xheWVyKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yb290TGF5ZXItPnNp
emUoKSA9PSBuZXdTaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlZGlyZWN0ZWRXaW5k
b3ctPnJlc2l6ZShuZXdTaXplKTsKLSAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsK
LQotICAgIC8vIElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFyZWFzIG9mIHRoZSBub24tY29t
cG9zaXRlZCBjb250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5lZWRlZAotICAgIC8vIGZvciB0
aG9zZSBuZXdseSBleHBvc2VkIGFyZWFzLgotICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyLT5zaXplKCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLT5zZXRTaXplKG5ld1NpemUpOwotCi0gICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG9s
ZFNpemUud2lkdGgoKSkgewotICAgICAgICBmbG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNf
Y2FzdDxmbG9hdD4obmV3U2l6ZS5oZWlnaHQoKSksIG9sZFNpemUuaGVpZ2h0KCkpOwotICAgICAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChGbG9h
dFJlY3Qob2xkU2l6ZS53aWR0aCgpLCAwLCBuZXdTaXplLndpZHRoKCkgLSBvbGRTaXplLndpZHRo
KCksIGhlaWdodCkpOwotICAgIH0KLQotICAgIGlmIChuZXdTaXplLmhlaWdodCgpID4gb2xkU2l6
ZS5oZWlnaHQoKSkKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lk
dGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsKLQotICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbmV3U2l6ZSkpOwotICAgIGZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7Ci19Ci0KLXZv
aWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZz
ZXQpCi17Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJ
blJlY3Qoc2Nyb2xsUmVjdCk7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgbV9yb290
R3JhcGhpY3NMYXllci0+c2V0U2l6ZShzaXplKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5z
eW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIH0KIAotZ2Jvb2xlYW4gQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2so
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgZ2Jvb2xlYW4g
c3luY0xheWVyc1RpbWVvdXRDYWxsYmFjayhBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCog
Y29udGV4dCkKIHsKLSAgICBjb250ZXh0LT5sYXllckZsdXNoVGltZXJGaXJlZCgpOworICAgIGNv
bnRleHQtPnN5bmNMYXllcnNUaW1lb3V0KCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi12b2lk
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY2hlZHVsZUxheWVyRmx1c2goKQordm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bWFya0ZvclN5bmMoKQogewotICAgIGlm
ICghZW5hYmxlZCgpKQorICAgIGlmIChtX3N5bmNUaW1lckNhbGxiYWNrSWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFdlIHVzZSBhIEdMaWIgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RL
KyBldmVudCBoYW5kbGluZyBkdXJpbmcgZHJhZ2dpbmcgY2FuCi0gICAgLy8gc3RhcnZlIFdlYkNv
cmUgdGltZXJzLCB3aGljaCBoYXZlIGEgbG93ZXIgcHJpb3JpdHkuCi0gICAgZG91YmxlIG5leHRG
bHVzaCA9IG1heChnU2NoZWR1bGVEZWxheSAtIChjdXJyZW50VGltZSgpIC0gbV9sYXN0Rmx1c2hU
aW1lKSwgMC4wKTsKLSAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQgPSBnX3RpbWVvdXRf
YWRkX2Z1bGwoR0RLX1BSSU9SSVRZX0VWRU5UUywgbmV4dEZsdXNoICogMTAwMCwgcmVpbnRlcnBy
ZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMs
IDApOworICAgIC8vIFdlIHVzZSBhIEdMaWIgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RLKyBl
dmVudCBoYW5kbGluZyBkdXJpbmcKKyAgICAvLyBkcmFnZ2luZyBjYW4gc3RhcnZlIFdlYkNvcmUg
dGltZXJzLCB3aGljaCBoYXZlIGEgbG93ZXIgcHJpb3JpdHkuCisgICAgbV9zeW5jVGltZXJDYWxs
YmFja0lkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9FVkVOVFMsIDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHN5bmNMYXllcnNUaW1lb3V0Q2FsbGJhY2spLCB0aGlz
LCAwKTsKIH0KIAotYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5
bmNMYXllcnNOb3coKQogewotICAgIG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnN5bmND
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAgIHJldHVybiBjb3JlKG1fd2Vi
VmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5n
U3ViZnJhbWVzKCk7CisgICAgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1fcm9v
dEdyYXBoaWNzTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwor
CisgICAgY29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zeW5jQ29tcG9zaXRp
bmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycygpCit2b2lkIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dCgpCiB7Ci0gICAgaWYgKCFlbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJWaWV3
KS0+bWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpIHx8ICFmcmFtZS0+dmlldygpKQorICAgIG1fc3luY1RpbWVyQ2FsbGJhY2tJZCA9IDA7Cisg
ICAgc3luY0xheWVyc05vdygpOworICAgIGlmICghbV9yb290R3JhcGhpY3NMYXllcikKICAgICAg
ICAgcmV0dXJuOwotICAgIGZyYW1lLT52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVk
ZWRSZWN1cnNpdmUoKTsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdp
bmRvdy0+Y29udGV4dCgpOwotICAgIGlmIChjb250ZXh0ICYmICFjb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICh0b1RleHR1cmVNYXBwZXJMYXll
cihtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmlu
Z0FuaW1hdGlvbnMoKSkKKyAgICAgICAgbV9zeW5jVGltZXJDYWxsYmFja0lkID0gZ190aW1lb3V0
X2FkZF9mdWxsKEdES19QUklPUklUWV9FVkVOVFMsIDEwMDAuMCAvIDYwLjAsIHJlaW50ZXJwcmV0
X2Nhc3Q8R1NvdXJjZUZ1bmM+KHN5bmNMYXllcnNUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAwKTsK
IAotICAgIG1fbGFzdEZsdXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgY29tcG9zaXRlTGF5
ZXJzVG9Db250ZXh0KCk7Ci0KLSAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCht
X3dlYlZpZXcpKTsKLQotICAgIC8vIElmIGl0J3MgYmVlbiBhIGxvbmcgdGltZSBzaW5jZSB3ZSd2
ZSBhY3R1YWxseSBwYWludGVkLCB3aGljaCBtZWFucyB0aGF0IGV2ZW50cyBtaWdodAotICAgIC8v
IGJlIHN0YXJ2aW5nIHRoZSBtYWluIGxvb3AsIHdlIHNob3VsZCBmb3JjZSBhIGRyYXcgbm93LiBU
aGlzIHNlZW1zIHRvIHByZXZlbnQgZGlzcGxheQotICAgIC8vIGxhZyBvbiBodHRwOi8vMjAxMi5i
ZWVyY2FtcC5jb20uCi0gICAgaWYgKG1fcmVkcmF3UGVuZGluZ1RpbWUgJiYgY3VycmVudFRpbWUo
KSAtIG1fcmVkcmF3UGVuZGluZ1RpbWUgPiBnU2NoZWR1bGVEZWxheSkKLSAgICAgICAgZ2RrX3dp
bmRvd19wcm9jZXNzX3VwZGF0ZXMoZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV93
ZWJWaWV3KSksIEZBTFNFKTsKLSAgICBlbHNlIGlmICghbV9yZWRyYXdQZW5kaW5nVGltZSkKLSAg
ICAgICAgbV9yZWRyYXdQZW5kaW5nVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci19Ci0KLXZvaWQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKLXsKLSAg
ICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQgPSAwOwotICAgIGZsdXNoQW5kUmVuZGVyTGF5
ZXJzKCk7CisgICAgcmVuZGVyTGF5ZXJzVG9XaW5kb3coMCwgSW50UmVjdCgpKTsKIH0KIAogdm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChj
b25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCkBAIC0zNzgsMTAgKzIwNiw5IEBAIHZv
aWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeVN5bmNSZXF1aXJlZChjb25z
dCBHcmFwaGljc0xheWVyKikKIAogdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVjdCYgcmVjdFRvUGFp
bnQpCiB7Ci0gICAgY29udGV4dC5zYXZlKCk7Ci0gICAgY29udGV4dC5jbGlwKHJlY3RUb1BhaW50
KTsKLSAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPnBhaW50KCZjb250
ZXh0LCByZWN0VG9QYWludCk7Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7CisgICAgY2Fpcm9fdCog
Y3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNvcHlSZWN0RnJvbUNh
aXJvU3VyZmFjZVRvQ29udGV4dChtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdTdG9yZS0+Y2Fpcm9T
dXJmYWNlKCksIGNyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRT
aXplKCksIHJlY3RUb1BhaW50KTsKIH0KIAogYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CmluZGV4IDc0MGUzYmJjYTUxNTFkMGRiYzIzNDlmZjUyYWY0YWU5NWE3YTdmNTUuLjQxYzg0MDky
NDE4OWQ3YzhjNzAyOGQwMjQ3ZWY4ZjkyYWI4YjE5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMTQyLDE4ICsx
NDIsMTcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIH0KIH0KIAotc3RhdGljIEludFJlY3QgZ2V0V2ViVmlld1JlY3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKK0Zsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKIHsK
ICAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRfYWxsb2Nh
dGlvbihHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMTgsIDApCisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VU
KG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyNlbHNlCisgICAgYWxsb2NhdGlvbiA9IEdUS19X
SURHRVQobV93ZWJWaWV3KS0+YWxsb2NhdGlvbjsKKyNlbmRpZgogICAgIHJldHVybiBJbnRSZWN0
KGFsbG9jYXRpb24ueCwgYWxsb2NhdGlvbi55LCBhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9u
LmhlaWdodCk7CiB9CiAKLUZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKLXsKLSAg
ICByZXR1cm4gZ2V0V2ViVmlld1JlY3QobV93ZWJWaWV3KTsKLX0KLQogdm9pZCBDaHJvbWVDbGll
bnQ6OmZvY3VzKCkKIHsKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVChtX3dl
YlZpZXcpKTsKQEAgLTQyMCwyMCArNDE5LDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFyRXZlcnl3aGVy
ZUluQmFja2luZ1N0b3JlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNhaXJvX3QqIGNyKQogCiB2
b2lkIENocm9tZUNsaWVudDo6d2lkZ2V0U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgb2xkV2lk
Z2V0U2l6ZSwgSW50U2l6ZSBuZXdTaXplKQogewotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCogY29tcG9zaXRpbmdDb250
ZXh0ID0gbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5nZXQo
KTsKLSAgICBpZiAoY29tcG9zaXRpbmdDb250ZXh0LT5lbmFibGVkKCkpIHsKLSAgICAgICAgbV93
ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExh
eWVyKG5ld1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCisgICAgV2lkZ2V0
QmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdTdG9y
ZS5nZXQoKTsKIAogICAgIC8vIEdyb3cgdGhlIGJhY2tpbmcgc3RvcmUgYnkgYXQgbGVhc3QgMS41
IHRpbWVzIHRoZSBjdXJyZW50IHNpemUuIFRoaXMgcHJldmVudHMKICAgICAvLyBsb3RzIG9mIHVu
bmVjZXNzYXJ5IGFsbG9jYXRpb25zIGR1cmluZyBhbiBvcGFxdWUgcmVzaXplLgotICAgIFdpZGdl
dEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gbV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3Rv
cmUuZ2V0KCk7Ci0gICAgaWYgKGJhY2tpbmdTdG9yZSAmJiBvbGRXaWRnZXRTaXplID09IG5ld1Np
emUpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChiYWNraW5nU3RvcmUpIHsKICAgICAgICAg
Y29uc3QgSW50U2l6ZSYgb2xkU2l6ZSA9IGJhY2tpbmdTdG9yZS0+c2l6ZSgpOwogICAgICAgICBp
ZiAobmV3U2l6ZS53aWR0aCgpID4gb2xkU2l6ZS53aWR0aCgpKQpAQCAtNTM3LDYgKzUyNiwyMCBA
QCBzdGF0aWMgdm9pZCBwYWludFdlYlZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgRnJhbWUq
IGZyYW1lLCBSZWdpb24gZGlydHlSZWdpbwogICAgIGdjLnJlc3RvcmUoKTsKIH0KIAordm9pZCBD
aHJvbWVDbGllbnQ6OmludmFsaWRhdGVXaWRnZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KiBhY0NvbnRleHQgPSBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmdldCgpOworICAgIGlmIChhY0NvbnRleHQtPmVuYWJsZWQoKSkgewor
ICAgICAgICBhY0NvbnRleHQtPnNjaGVkdWxlUm9vdExheWVyUmVwYWludChyZWN0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVh
KEdUS19XSURHRVQobV93ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWN0LngoKSwgcmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnQ6OnBlcmZvcm1B
bGxQZW5kaW5nU2Nyb2xscygpCiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdT
dG9yZSkKQEAgLTU0Niw3ICs1NDksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6cGVyZm9ybUFsbFBl
bmRpbmdTY3JvbGxzKCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVjdHNUb1Njcm9s
bC5zaXplKCk7IGkrKykgewogICAgICAgICBJbnRSZWN0JiBzY3JvbGxSZWN0ID0gbV9yZWN0c1Rv
U2Nyb2xsW2ldOwogICAgICAgICBtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdTdG9yZS0+c2Nyb2xs
KHNjcm9sbFJlY3QsIG1fc2Nyb2xsT2Zmc2V0c1tpXSk7Ci0gICAgICAgIGd0a193aWRnZXRfcXVl
dWVfZHJhd19hcmVhKEdUS19XSURHRVQobV93ZWJWaWV3KSwgc2Nyb2xsUmVjdC54KCksIHNjcm9s
bFJlY3QueSgpLCBzY3JvbGxSZWN0LndpZHRoKCksIHNjcm9sbFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBpbnZhbGlkYXRlV2lkZ2V0UmVjdChzY3JvbGxSZWN0KTsKICAgICB9CiAKICAgICBtX3Jl
Y3RzVG9TY3JvbGwuY2xlYXIoKTsKQEAgLTU4Miw3ICs1ODUsMTIgQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OnBhaW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogICAgIH0KIAogICAgIGNv
bnN0IEludFJlY3QmIHJlY3QgPSBtX2RpcnR5UmVnaW9uLmJvdW5kcygpOwotICAgIGd0a193aWRn
ZXRfcXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQobV93ZWJWaWV3KSwgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGludmFsaWRhdGVXaWRnZXRS
ZWN0KHJlY3QpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fd2Vi
Vmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnN5bmNMYXllcnNOb3co
KTsKKyAgICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5y
ZW5kZXJMYXllcnNUb1dpbmRvdygwLCByZWN0KTsKKyNlbmRpZgogCiAgICAgbV9kaXJ0eVJlZ2lv
biA9IFJlZ2lvbigpOwogICAgIG1fbGFzdERpc3BsYXlUaW1lID0gY3VycmVudFRpbWUoKTsKQEAg
LTU5OCwxMSArNjA2LDYgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnBhaW50KFdlYkNvcmU6OlRpbWVy
PENocm9tZUNsaWVudD4qKQogCiB2b2lkIENocm9tZUNsaWVudDo6Zm9yY2VQYWludCgpCiB7Ci0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX3dlYlZpZXctPnByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5lbmFibGVkKCkpCi0gICAgICAgIHJldHVy
bjsKLSNlbmRpZgotCiAgICAgbV9mb3JjZVBhaW50ID0gdHJ1ZTsKICAgICBwYWludCgwKTsKICAg
ICBtX2ZvcmNlUGFpbnQgPSBmYWxzZTsKQEAgLTYxNCwxNCArNjE3LDYgQEAgdm9pZCBDaHJvbWVD
bGllbnQ6OmludmFsaWRhdGVSb290Vmlldyhjb25zdCBJbnRSZWN0JiwgYm9vbCBpbW1lZGlhdGUp
CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25z
dCBJbnRSZWN0JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQqIGFj
Q29udGV4dCA9IG1fd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
Z2V0KCk7Ci0gICAgaWYgKGFjQ29udGV4dC0+ZW5hYmxlZCgpKSB7Ci0gICAgICAgIGFjQ29udGV4
dC0+c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkodXBkYXRlUmVjdCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICh1cGRhdGVSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZGlydHlSZWdpb24udW5pdGUodXBkYXRlUmVjdCk7
CkBAIC02MzAsMzQgKzYyNSwxMiBAQCB2b2lkIENocm9tZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRl
bnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgYm9vbAogCiB2b2lkIENo
cm9tZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0
JiB1cGRhdGVSZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKLSAgICBtX2FkanVzdG1lbnRXYXRjaGVy
LnVwZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnNMYXRlcigpOwotCi0jaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KiBh
Y0NvbnRleHQgPSBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmdldCgpOwotICAgIGlmIChhY0NvbnRleHQtPmVuYWJsZWQoKSkgewotICAgICAgICBhY0NvbnRl
eHQtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KHVwZGF0ZVJlY3QpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbnZhbGlkYXRlQ29udGVudHNBbmRS
b290Vmlldyh1cGRhdGVSZWN0LCBpbW1lZGlhdGUpOworICAgIG1fYWRqdXN0bWVudFdhdGNoZXIu
dXBkYXRlQWRqdXN0bWVudHNGcm9tU2Nyb2xsYmFyc0xhdGVyKCk7CiB9CiAKIHZvaWQgQ2hyb21l
Q2xpZW50OjpzY3JvbGwoY29uc3QgSW50U2l6ZSYgZGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RU
b1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgbV9hZGp1c3RtZW50V2F0
Y2hlci51cGRhdGVBZGp1c3RtZW50c0Zyb21TY3JvbGxiYXJzTGF0ZXIoKTsKLQotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dCogY29tcG9zaXRpbmdDb250ZXh0ID0gbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC5nZXQoKTsKLSAgICBpZiAoY29tcG9zaXRpbmdDb250ZXh0LT5lbmFibGVk
KCkpIHsKLSAgICAgICAgQVNTRVJUKCFyZWN0VG9TY3JvbGwuaXNFbXB0eSgpKTsKLSAgICAgICAg
QVNTRVJUKCFkZWx0YS5pc0VtcHR5KCkpOwotCi0gICAgICAgIGNvbXBvc2l0aW5nQ29udGV4dC0+
c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHJlY3RUb1Njcm9sbCwgZGVsdGEpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBtX3JlY3RzVG9TY3JvbGwuYXBwZW5kKHJl
Y3RUb1Njcm9sbCk7CiAgICAgbV9zY3JvbGxPZmZzZXRzLmFwcGVuZChkZWx0YSk7CiAKQEAgLTY4
NCw2ICs2NTcsOCBAQCB2b2lkIENocm9tZUNsaWVudDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIGRl
bHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbgogCiAgICAgbV9kaXJ0eVJlZ2lv
bi51bml0ZShzY3JvbGxSZXBhaW50UmVnaW9uKTsKICAgICBtX2Rpc3BsYXlUaW1lci5zdGFydE9u
ZVNob3QoMCk7CisKKyAgICBtX2FkanVzdG1lbnRXYXRjaGVyLnVwZGF0ZUFkanVzdG1lbnRzRnJv
bVNjcm9sbGJhcnNMYXRlcigpOwogfQogCiBJbnRSZWN0IENocm9tZUNsaWVudDo6cm9vdFZpZXdU
b1NjcmVlbihjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtOTkxLDMyICs5NjYsMTcgQEAg
dm9pZCBDaHJvbWVDbGllbnQ6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVt
ZW50KikKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIENocm9tZUNsaWVu
dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0xheWVyKiBy
b290TGF5ZXIpCiB7Ci0gICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQqIGNvbnRleHQg
PSBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmdldCgpOwot
ICAgIGJvb2wgdHVybmluZ09mZkNvbXBvc2l0aW5nID0gIXJvb3RMYXllciAmJiBjb250ZXh0LT5l
bmFibGVkKCk7Ci0gICAgYm9vbCB0dXJuaW5nT25Db21wb3NpdGluZyA9IHJvb3RMYXllciAmJiAh
Y29udGV4dC0+ZW5hYmxlZCgpOwotCi0gICAgY29udGV4dC0+c2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIocm9vdExheWVyKTsKLQotICAgIGlmICh0dXJuaW5nT25Db21wb3NpdGluZykgewotICAgICAg
ICBtX2Rpc3BsYXlUaW1lci5zdG9wKCk7Ci0gICAgICAgIG1fd2ViVmlldy0+cHJpdi0+YmFja2lu
Z1N0b3JlID0gV2ViQ29yZTo6V2lkZ2V0QmFja2luZ1N0b3JlOjpjcmVhdGUoR1RLX1dJREdFVCht
X3dlYlZpZXcpLCBJbnRTaXplKDEsIDEpKTsKLSAgICB9Ci0KLSAgICBpZiAodHVybmluZ09mZkNv
bXBvc2l0aW5nKSB7Ci0gICAgICAgIG1fd2ViVmlldy0+cHJpdi0+YmFja2luZ1N0b3JlID0gV2Vi
Q29yZTo6V2lkZ2V0QmFja2luZ1N0b3JlOjpjcmVhdGUoR1RLX1dJREdFVChtX3dlYlZpZXcpLCBn
ZXRXZWJWaWV3UmVjdChtX3dlYlZpZXcpLnNpemUoKSk7Ci0gICAgICAgIFJlZlB0cjxjYWlyb190
PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdTdG9y
ZS0+Y2Fpcm9TdXJmYWNlKCkpKTsKLSAgICAgICAgY2xlYXJFdmVyeXdoZXJlSW5CYWNraW5nU3Rv
cmUobV93ZWJWaWV3LCBjci5nZXQoKSk7Ci0gICAgfQorICAgIG1fd2ViVmlldy0+cHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKHJvb3RM
YXllcik7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzZXROZWVkc09uZVNob3REcmF3aW5nU3lu
Y2hyb25pemF0aW9uKCkKIHsKLSAgICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LT5zY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICBtX3dlYlZpZXctPnByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5tYXJrRm9yU3luYygpOwogfQogCiB2b2lk
IENocm9tZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpCiB7Ci0gICAgbV93
ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2NoZWR1bGVMYXll
ckZsdXNoKCk7CisgICAgbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+bWFya0ZvclN5bmMoKTsKIH0KIAogQ2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdn
ZXJGbGFncyBDaHJvbWVDbGllbnQ6OmFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmgKaW5kZXggMjg0YmRhYTM2NjA2YWUxNWFiYmMxNTZiM2VlOGUyMTVkNzJjMWUxYy4uZTVlMmZh
MWViMDIyZmI2NDFkZjM2ZDJhY2ViMTJiZDBiY2U0MzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTE3OSw2ICsxNzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgZG91YmxlIG1fbGFzdERpc3BsYXlUaW1l
OwogICAgICAgICB1bnNpZ25lZCBpbnQgbV9yZXBhaW50U29vblNvdXJjZUlkOwogCisgICAgICAg
IHZvaWQgaW52YWxpZGF0ZVdpZGdldFJlY3QoY29uc3QgSW50UmVjdCYpOwogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVsZW1l
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApp
bmRleCBhNTM2ODk0NGQzZmZmZjJjYzZmM2ExMzQzOTE0NzQ3YzdhM2ZjYWVkLi45NzE3ODA2Mzdh
ZjI3YTQwMTRiMDQ1YTdiNWRmZDc0MzdkOGQyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC02NzksMTAgKzY3OSw4IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQp
LT5wcml2OwogI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICBpZiAocHJpdi0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlbmRlckxheWVyc1RvV2luZG93KGNyLCBjbGlwUmVjdCkp
IHsKLSAgICAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNz
KS0+ZHJhdyh3aWRnZXQsIGNyKTsKKyAgICBpZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQtPnJlbmRlckxheWVyc1RvV2luZG93KGNyLCBjbGlwUmVjdCkpCiAgICAgICAgIHJl
dHVybiBGQUxTRTsKLSAgICB9CiAjZW5kaWYKIAogICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X3Qq
IHJlY3RMaXN0ID0gY2Fpcm9fY29weV9jbGlwX3JlY3RhbmdsZV9saXN0KGNyKTsKQEAgLTg3Nywx
NiArODc1LDE1IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYlZpZXdGcm9tQWxsb2NhdGlvbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtBbGxvY2F0aW9uKiBhCiAgICAgV2ViS2l0OjpDaHJvbWVD
bGllbnQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4o
cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKTsKICAgICBjaHJvbWVDbGllbnQtPndpZGdldFNpemVD
aGFuZ2VkKG9sZFNpemUsIEludFNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhl
aWdodCkpOwogICAgIGNocm9tZUNsaWVudC0+YWRqdXN0bWVudFdhdGNoZXIoKS0+dXBkYXRlQWRq
dXN0bWVudHNGcm9tU2Nyb2xsYmFycygpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIHdlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5y
ZXNpemVSb290TGF5ZXIoSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2NhdGlvbi0+aGVp
Z2h0KSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NpemVfYWxs
b2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCiB7Ci0g
ICAgR3RrQWxsb2NhdGlvbiBvbGRBbGxvY2F0aW9uOwotICAgIGd0a193aWRnZXRfZ2V0X2FsbG9j
YXRpb24od2lkZ2V0LCAmb2xkQWxsb2NhdGlvbik7Ci0KICAgICBHVEtfV0lER0VUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdldCwgYWxsb2Nh
dGlvbik7Ci0gICAgaWYgKGFsbG9jYXRpb24tPndpZHRoID09IG9sZEFsbG9jYXRpb24ud2lkdGgg
JiYgYWxsb2NhdGlvbi0+aGVpZ2h0ID09IG9sZEFsbG9jYXRpb24uaGVpZ2h0KQotICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCk7CiAgICAgaWYgKCFndGtfd2lkZ2V0X2dldF9tYXBwZWQod2lkZ2V0KSkgewpAQCAtMTAw
Niw2ICsxMDAzLDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsaXplKEd0a1dp
ZGdldCogd2lkZ2V0KQogI2VuZGlmCiAgICAgR2RrV2luZG93KiB3aW5kb3cgPSBnZGtfd2luZG93
X25ldyhndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93KHdpZGdldCksICZhdHRyaWJ1dGVzLCBh
dHRyaWJ1dGVzX21hc2spOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBX
RUJLSVRfV0VCX1ZJRVcod2lkZ2V0KS0+cHJpdjsKKyAgICBwcml2LT5oYXNOYXRpdmVXaW5kb3cg
PSBnZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2luZG93KTsKKyNlbmRpZgogICAgIGd0a193aWRn
ZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9k
YXRhKHdpbmRvdywgd2lkZ2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBiYTBhYzY5NTUz
MDE2ODU0MjMxNzNlYWM4OTk3ZGNkZjhjNWQzZmE5Li4zZWRjZTBhYTJmMjFmZDY4YjI5M2QxMGM2
OTVhZWRkYjk3MDZkZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTA4LDcgKzEwOCw2IEBA
IGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19B
UElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJJChHVEtfVU5JWF9QUklOVElOR19DRkxBR1MpIFwK
IAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChVTklDT0RFX0NGTEFHUykgXAotCSQoWENPTVBPU0lU
RV9DRkxBR1MpIFwKIAkkKFhUX0NGTEFHUykKIAogbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DWFhGTEFH
UyA9IFwKQEAgLTE4MSw3ICsxODAsNiBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoU1FM
SVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAotCSQo
WENPTVBPU0lURV9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkMzk3MjJkYjRjOTY4MzQ3ZGMzMDNh
N2Q1NDMxZGUwNzAyNzgxMGUzLi5hNGVlNTg5N2RjMDBmMTc0OTViYWJkNzBiMTg0MmRjYjNiZmQw
NDNlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMDgtMjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjYxODIuCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjE4MgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ2NzgKKworICAgICAgICBUaGUgcGF0Y2gg
Y2F1c2VzIGNyYXNoZXMgb24gR1RLIGJ1aWxkcyAoUmVxdWVzdGVkIGJ5IHpkb2JlcnNlaworICAg
ICAgICBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wOC0y
MSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAog
ICAgICAgICBbRUZMXSBFbmFibGUgQ1NTIFRleHQgRGVjb3JhdGlvbiBieSBkZWZhdWx0CmRpZmYg
LS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjhmOWFmODhiZTM2NTJh
NGJmYTJlMmIzOGEzN2M5MzRhYWRhYTkyMi4uNzhmMjA2N2U2ZWI3ZmZkY2ZhZWFiN2IwN2E4Y2Ji
MTY3ZDZmZjRlZSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpA
QCAtNTY1LDEyICs1NjUsNiBAQCBBQ19BUkdfV0lUSChhY2NlbGVyYXRpb25fYmFja2VuZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCiBBQ19NU0dfUkVTVUxUKFskd2l0aF9hY2NlbGVy
YXRpb25fYmFja2VuZF0pCiAKLWlmIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGlvbl9iYWNrZW5kIiA9
ICJvcGVuZ2wiOyB0aGVuCi0gICAgUEtHX0NIRUNLX01PRFVMRVMoW1hDT01QT1NJVEVdLCBbeGNv
bXBvc2l0ZV0pOwotICAgIEFDX1NVQlNUKFhDT01QT1NJVEVfQ0ZMQUdTKQotICAgIEFDX1NVQlNU
KFhDT01QT1NJVEVfTElCUykKLWZpCi0KICMgT3BlbkdMIGlzIHR1cm5lZCBvbiBieSBkZWZhdWx0
IChhbG9uZyB3aXRoIFdlYkdMIGFuZCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyksIGJ1dCBpZgog
IyBDbHV0dGVyIGlzIGNob3NlbiBhcyB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBiYWNrZW5kLCB3
ZSB3YW50IHRvIGRpc2FibGUgaXQuIENPR0wgZG9lcyAKICMgbm90IHBsYXkgd2VsbCB3aXRoIE9w
ZW5HTC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>