<?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>234290</bug_id>
          
          <creation_ts>2021-12-13 21:50:47 -0800</creation_ts>
          <short_desc>Remove unnecessary TiledBacking virtual functions that aren&apos;t called by WebCore common layer</short_desc>
          <delta_ts>2021-12-16 13:18:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Compositing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>233676</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823905</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-13 21:50:47 -0800</bug_when>
    <thetext>Remove GraphicsLayerCA specific TiledBacking virtual functions

I&apos;m going to implement TiledBacking subclass for WinCairo (Bug 233676).
TiledBacking has a lot of GraphicsLayerCA specific virtual functions.
Let&apos;s remove them.

Covariant return type will help to do that.

https://en.wikipedia.org/wiki/Covariant_return_type
https://en.cppreference.com/w/cpp/language/virtual</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823906</commentid>
    <comment_count>1</comment_count>
      <attachid>447108</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-13 22:08:31 -0800</bug_when>
    <thetext>Created attachment 447108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824028</commentid>
    <comment_count>2</comment_count>
      <attachid>447108</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 09:31:55 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt; Source/WebCore/ChangeLog:9
&gt; +        TiledBacking had a lot of GraphicsLayerCA specific virtual
&gt; +        functions. It unnecessary made difficult to implement a subclass

I&apos;m not sure I agree with this. Doesn&apos;t any platform need the concepts of visible rect, coverage rect and might want to optimize live resize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824066</commentid>
    <comment_count>3</comment_count>
      <attachid>447108</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-14 12:01:50 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        functions. It unnecessary made difficult to implement a subclass
&gt; 
&gt; I&apos;m not sure I agree with this. Doesn&apos;t any platform need the concepts of visible rect, coverage rect and might want to optimize live resize?

This patch removes unnecessary virtual functions which are not called by WebCore common code.
They are called only by GraphicsLayerCA implementation layer.
If the WebCore common code will need the virtual methods, we can add them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824072</commentid>
    <comment_count>4</comment_count>
      <attachid>447108</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-14 12:19:09 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt; +        functions. It unnecessary made difficult to implement a subclass
&gt;&gt; 
&gt;&gt; I&apos;m not sure I agree with this. Doesn&apos;t any platform need the concepts of visible rect, coverage rect and might want to optimize live resize?
&gt; 
&gt; This patch removes unnecessary virtual functions which are not called by WebCore common code.
&gt; They are called only by GraphicsLayerCA implementation layer.
&gt; If the WebCore common code will need the virtual methods, we can add them.

I misunderstood the reason why we remove them.
We should remove those TiledBacking virtual functions because they aren&apos;t called by WebCore layer, not because they are platform-specific.
I should change the bug title and the change log.

GraphicsContext interface has some platfrom specifix virtual functions.
But, we can&apos;t remove them because they are called by WebCore layer, they are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824263</commentid>
    <comment_count>5</comment_count>
      <attachid>447108</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 23:10:38 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:282
&gt; +    virtual TileController* tiledBacking() = 0;

All the tiledBacking() functions that return a TileController need to be renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824308</commentid>
    <comment_count>6</comment_count>
      <attachid>447108</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-15 03:24:14 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:282
&gt;&gt; +    virtual TileController* tiledBacking() = 0;
&gt; 
&gt; All the tiledBacking() functions that return a TileController need to be renamed.

How do you think about an idea renaming TileController to CATiledBacking or TiledBackingCA?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824693</commentid>
    <comment_count>7</comment_count>
      <attachid>447108</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-15 23:05:26 -0800</bug_when>
    <thetext>Comment on attachment 447108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447108&amp;action=review

&gt;&gt;&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:282
&gt;&gt;&gt; +    virtual TileController* tiledBacking() = 0;
&gt;&gt; 
&gt;&gt; All the tiledBacking() functions that return a TileController need to be renamed.
&gt; 
&gt; How do you think about an idea renaming TileController to CATiledBacking or TiledBackingCA?

Because GraphicsLayerCA::tiledBacking() is a override function I can&apos;t rename even thouth this patch changed it to return TileController*.
I think renaming TileController seems better.
regardless of whether the method or the class will rename, I think I should separate patches for brevity.
WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824861</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-16 13:18:32 -0800</bug_when>
    <thetext>Umm, this refactoring shouldn&apos;t be controversial. But, I give up this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447108</attachid>
            <date>2021-12-13 22:08:31 -0800</date>
            <delta_ts>2021-12-16 13:17:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234290-20211214150830.patch</filename>
            <type>text/plain</type>
            <size>33802</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM2MGJhNDZjYjFiMGUx
NDEyM2Y5MDg4OWViNWJhYjE2NTdhYTU4Zi4uNmIxNzEwNzZkMGQ2YTFlYzA4NWFhMjU3MWEwMzQw
NzFlYTc5NmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTEyLTEzICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFJlbW92ZSBH
cmFwaGljc0xheWVyQ0Egc3BlY2lmaWMgVGlsZWRCYWNraW5nIHZpcnR1YWwgZnVuY3Rpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyOTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaWxlZEJhY2tp
bmcgaGFkIGEgbG90IG9mIEdyYXBoaWNzTGF5ZXJDQSBzcGVjaWZpYyB2aXJ0dWFsCisgICAgICAg
IGZ1bmN0aW9ucy4gSXQgdW5uZWNlc3NhcnkgbWFkZSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IGEg
c3ViY2xhc3MKKyAgICAgICAgZm9yIG90aGVyIHBvcnRzLgorCisgICAgICAgIENoYW5nZWQgdGhl
IHJldHVybiB0eXBlIG9mIEdyYXBoaWNzTGF5ZXJDQTo6dGlsZWRCYWNraW5nIGZyb20KKyAgICAg
ICAgVGlsZWRCYWNraW5nIHRvIHRoZSBjb3ZhcmlhbnQgcmV0dXJuIHR5cGUsIFRpbGVDb250cm9s
bGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZVZpc2libGVSZWN0Q2hhbmdl
UmVxdWlyZXNGbHVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnRpbGVkQmFja2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvdmVyYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6Y29tcHV0ZVRpbGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp3aWxsU3RhcnRMaXZlUmVzaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpkaWRFbmRMaXZlUmVzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
dGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJU
aWxlZEJhY2tpbmdMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1dlYlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXll
ciB0aWxlZEJhY2tpbmddKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FD
RkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6
Om1haW5GcmFtZVRpbGVkQmFja2luZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlRGVidWdJbmZvTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1D
QUxheWVyV2luOjp0aWxlZEJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHA6Cisg
ICAgICAgIChXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6dGlsZWRCYWNraW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uaDoKKwog
MjAyMS0xMi0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgY3Jhc2hlcyBhdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0OjptYXRjaGVzQWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNTkzM2E2ZTY1YWY2MmVkNjI1
YWY2NmQ4NWVlZGM0ZGY4NzJmOTQuLjk2YjU1MWEwNzAxZjExNTE4NTc4NGU3NzFkZWI4NjE0OTcx
NGQ0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTItMTMgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBoaWNz
TGF5ZXJDQSBzcGVjaWZpYyBUaWxlZEJhY2tpbmcgdmlydHVhbCBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDI5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRp
bGVkQmFja2luZy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VS
ZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
Om1haW5GcmFtZVRpbGVkQmFja2luZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVEZWJ1Z0luZm9MYXllcik6CisKIDIwMjEtMTIt
MTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBbGxvdyBXS0NvbnRlbnRSdWxlTGlzdCB0byBydW4gcmVnZXhlcyBvbiBjdXJyZW50IGZyYW1l
J3MgVVJMLCBub3QganVzdCB0b3AgZnJhbWUncyBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggOTMyZjYwMjhhZjY2MTEzYmI1YjUz
OTVlZGI2MjVkZjBhMzNhNGUxNy4uOTkzY2FmODYxMzg5NDJkYTc1NDkxZDJhYTIwYTVkYTI3NDgy
ZTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nLmgKQEAgLTM0LDcgKzM0LDYgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7
CiAKIHN0cnVjdCBWZWxvY2l0eURhdGE7CiAKQEAgLTU0LDE2ICs1Myw5IEBAIGNsYXNzIFRpbGVk
QmFja2luZyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGlsZWRCYWNraW5nKCkgPSBkZWZhdWx0
OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0g
MDsKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0ID0gMDsKLQogICAg
IC8vIE9ubHkgdXNlZCB0byB1cGRhdGUgdGhlIHRpbGUgY292ZXJhZ2UgbWFwLiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pikg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3Qm
KSA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCB0aWxlc1dvdWxkQ2hhbmdlRm9yQ292ZXJhZ2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBzZXRUaWxlZFNjcm9sbGlu
Z0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCkgPSAwOwogCkBAIC05NSwyMiArODcsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRpbGVDb3ZlcmFnZShUaWxlQ292ZXJhZ2UpID0g
MDsKICAgICB2aXJ0dWFsIFRpbGVDb3ZlcmFnZSB0aWxlQ292ZXJhZ2UoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBhZGp1c3RUaWxlQ292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgY292ZXJhZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWJsZVJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgY3VycmVudFZpc2libGVSZWN0LCBib29sIHNpemVDaGFuZ2VkKSA9
IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgYWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9s
bGluZyhjb25zdCBGbG9hdFJlY3QmIGNvdmVyYWdlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBuZXdT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWJsZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgY3VycmVudFZpc2libGVSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kTGl2ZVJlc2l6ZSgpID0gMDsKLQotICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgp
IGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZXZhbGlkYXRlVGlsZXMoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsK
ICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSByZXRhaW5lZFRpbGVCYWNraW5nU3RvcmVNZW1vcnko
KSBjb25zdCA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SGFzTWFyZ2lucyhib29sIG1hcmdp
blRvcCwgYm9vbCBtYXJnaW5Cb3R0b20sIGJvb2wgbWFyZ2luTGVmdCwgYm9vbCBtYXJnaW5SaWdo
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXJnaW5TaXplKGludCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNNYXJnaW5zKCkgY29uc3QgPSAwOwpAQCAtMTIyLDIxICsxMDEsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgaW50IGxlZnRNYXJnaW5XaWR0aCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGludCByaWdodE1hcmdpbldpZHRoKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldFpvb21lZE91dENvbnRlbnRzU2NhbGUoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFs
IGZsb2F0IHpvb21lZE91dENvbnRlbnRzU2NhbGUoKSBjb25zdCA9IDA7Ci0KICAgICAvLyBJbmNs
dWRlcyBtYXJnaW5zLgogICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc1dpdGhvdXRNYXJnaW4oKSBjb25zdCA9IDA7CiAKLSAg
ICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5nCi0gICAgdmlydHVhbCBJbnRSZWN0IHRpbGVDb3ZlcmFn
ZVJlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRpbGVHcmlkRXh0ZW50KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdNb2RlSW5kaWNhdGlvbihT
Y3JvbGxpbmdNb2RlSW5kaWNhdGlvbikgPSAwOwotCi0jaWYgVVNFKENBKQotICAgIHZpcnR1YWwg
UGxhdGZvcm1DQUxheWVyKiB0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCkgPSAwOwotI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBhMTgy
YzUyNTRlODAyY2E3OWEwNGE2NzZhYWRmMWE1MWJkNjA4ZTQ3Li42NmZhOGVjYmNkODVjNTEwOGY5
ZGY4ZTkxYzcyMzgwZTkwYWFmMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAK
ICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
LSNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgog
I2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPFF1YXJ0
ekNvcmUvQ0FUcmFuc2Zvcm0zRC5oPgpAQCAtMTQ5NCw3ICsxNDkzLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZVZpc2libGVSZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb25zdCBD
b21taXRTdGF0ZSYKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocmVjdHMuY292ZXJh
Z2VSZWN0ICE9IG1fY292ZXJhZ2VSZWN0KSB7Ci0gICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRp
bGVkQmFja2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygpKSB7CisgICAgICAgIGlmIChhdXRvKiB0
aWxlZEJhY2tpbmcgPSB0aGlzLT50aWxlZEJhY2tpbmcoKSkgewogICAgICAgICAgICAgaWYgKHRp
bGVkQmFja2luZy0+dGlsZXNXb3VsZENoYW5nZUZvckNvdmVyYWdlUmVjdChyZWN0cy5jb3ZlcmFn
ZVJlY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNTI2
LDcgKzE1MjUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6dmlzaWJsZVJlY3RDaGFuZ2VSZXF1
aXJlc0ZsdXNoKGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCiAgICAgcmV0dXJuIHJlY3Vyc2l2
ZVZpc2libGVSZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb21taXRTdGF0ZSwgc3RhdGUpOwogfQog
Ci1UaWxlZEJhY2tpbmcqIEdyYXBoaWNzTGF5ZXJDQTo6dGlsZWRCYWNraW5nKCkgY29uc3QKK1Rp
bGVDb250cm9sbGVyKiBHcmFwaGljc0xheWVyQ0E6OnRpbGVkQmFja2luZygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fbGF5ZXItPnRpbGVkQmFja2luZygpOwogfQpAQCAtMjY4NSw3ICsyNjg0LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURyYXdzQ29udGVudCgpCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlQ292ZXJhZ2UoY29uc3QgQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRl
KQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNldCBjb3ZlcmFnZSBvbiBjbG9uZSBsYXllcnMg
dG9vLgotICAgIGlmIChUaWxlZEJhY2tpbmcqIGJhY2tpbmcgPSB0aWxlZEJhY2tpbmcoKSkgewor
ICAgIGlmIChhdXRvKiBiYWNraW5nID0gdGlsZWRCYWNraW5nKCkpIHsKICAgICAgICAgYmFja2lu
Zy0+c2V0VmlzaWJsZVJlY3QobV92aXNpYmxlUmVjdCk7CiAgICAgICAgIGJhY2tpbmctPnNldENv
dmVyYWdlUmVjdChtX2NvdmVyYWdlUmVjdCk7CiAgICAgfQpAQCAtNDgwMyw3ICs0ODAyLDcgQEAg
ZG91YmxlIEdyYXBoaWNzTGF5ZXJDQTo6YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSBjb25z
dAogICAgIC8vIGNvbnRlbnRzTGF5ZXIgaXMgZ2l2ZW4gdG8gdXMsIHNvIHdlIGRvbid0IHJlYWxs
eSBrbm93IGFueXRoaW5nIGFib3V0IGl0cyBjb250ZW50cy4KICAgICAvLyBGSVhNRTogaWdub3Jl
cyBsYXllciBjbG9uZXMuCiAgICAgCi0gICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5n
ID0gdGhpcy0+dGlsZWRCYWNraW5nKCkpCisgICAgaWYgKGF1dG8qIHRpbGVkQmFja2luZyA9IHRo
aXMtPnRpbGVkQmFja2luZygpKQogICAgICAgICByZXR1cm4gdGlsZWRCYWNraW5nLT5yZXRhaW5l
ZFRpbGVCYWNraW5nU3RvcmVNZW1vcnkoKTsKIAogICAgIGlmICghYmFja2luZ1N0b3JlQXR0YWNo
ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgKaW5kZXggZjZiMmM5NGNiM2Q2ZmZhZDAzNWViNzQ5MmEyNTU4MjI1OTJh
MDBjYy4uZWQ5MmI0ZmI2NjYxZmE1NzA5MmRkOTkzZWM2ZDE1NzBmYTk0Yzg3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC0xOTEsNyArMTkyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB2aXNpYmxlUmVjdENoYW5nZVJlcXVpcmVzRmx1c2goY29uc3QgRmxvYXRSZWN0JiB2
aXNpYmxlUmVjdCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBUaWxlZEJh
Y2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IFRpbGVDb250cm9sbGVyKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRl
ZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggOGEy
MWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZS4uYmI3NzEwNjA4ODRkYzE1ZmZj
NzNkZjlmZjgxNjRhY2E4OWYwOTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xh
c3MgTGF5ZXJQb29sOwogY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgUGxhdGZvcm1DQUFu
aW1hdGlvbjsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKK2NsYXNzIFRpbGVDb250cm9s
bGVyOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1D
QUxheWVyTGlzdDsKIApAQCAtMjc4LDcgKzI3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKLSAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgPSAwOworICAgIHZp
cnR1YWwgVGlsZUNvbnRyb2xsZXIqIHRpbGVkQmFja2luZygpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dEF0UG9pbnQoQ0dDb250ZXh0UmVmLCBDR0Zsb2F0IHgsIENHRmxvYXQgeSwg
Q0dTaXplIHNjYWxlLCBDR0Zsb2F0IGZvbnRTaXplLCBjb25zdCBjaGFyKiB0ZXh0LCBzaXplX3Qg
bGVuZ3RoLCBDR0Zsb2F0IHN0cm9rZVdpZHRoQXNQZXJjZW50YWdlT2ZGb250U2l6ZSA9IDAsIENv
bG9yIHN0cm9rZUNvbG9yID0gQ29sb3IoKSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA5Yjll
MjBmMmZiMzgzMmNhYjIwMTU2ZDEwY2RkZTczNzU2ODhjNWVmLi43NTliYTc0N2YzYTFlNWU0MWVk
MDQ1YzQ5YjBlZWQ3ZDRjZGYxMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC01MjgsMTcgKzUyOCw2IEBA
IGJvb2wgVGlsZUNvbnRyb2xsZXI6OnNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMo
KSBjb25zdAogICAgIHJldHVybiBvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXll
clNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMobV90aWxlQ2FjaGVMYXllcik7CiB9
CiAKLXZvaWQgVGlsZUNvbnRyb2xsZXI6OndpbGxTdGFydExpdmVSZXNpemUoKQotewotICAgIG1f
aW5MaXZlUmVzaXplID0gdHJ1ZTsKLX0KLQotdm9pZCBUaWxlQ29udHJvbGxlcjo6ZGlkRW5kTGl2
ZVJlc2l6ZSgpCi17Ci0gICAgbV9pbkxpdmVSZXNpemUgPSBmYWxzZTsKLSAgICBtX3RpbGVTaXpl
TG9ja2VkID0gZmFsc2U7IC8vIExldCB0aGUgZW5kIG9mIGEgbGl2ZSByZXNpemUgdXBkYXRlIHRo
ZSB0aWxlcy4KLX0KLQogdm9pZCBUaWxlQ29udHJvbGxlcjo6bm90ZVBlbmRpbmdUaWxlU2l6ZUNo
YW5nZSgpCiB7CiAgICAgaWYgKG1faXNUaWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRGb3JUZXN0
aW5nKQpAQCAtNTYzLDcgKzU1Miw3IEBAIEludFNpemUgVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXpl
KCkgY29uc3QKIAogSW50U2l6ZSBUaWxlQ29udHJvbGxlcjo6Y29tcHV0ZVRpbGVTaXplKCkKIHsK
LSAgICBpZiAobV9pbkxpdmVSZXNpemUgfHwgbV90aWxlU2l6ZUxvY2tlZCkKKyAgICBpZiAobV90
aWxlU2l6ZUxvY2tlZCkKICAgICAgICAgcmV0dXJuIHRpbGVHcmlkKCkudGlsZVNpemUoKTsKIAog
ICAgIGNvbnN0IGludCBrTG93ZXN0Q29tbW9uRGVub21pbmF0b3JNYXhUaWxlU2l6ZSA9IDQgKiAx
MDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b250cm9sbGVyLmgKaW5kZXggYzQ5Y2NmOThhNGEzNTkyOTQ3N2Q5ZWY3NDE0ZjdmYjNmZjljYmQ0
MC4uM2U5NDgxYTc1NWFhMTNhZTQwMjlhYzA5YTdjYTcxY2QyZTMxMzk0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBA
IC04NywxMiArODcsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGls
ZURlYnVnQm9yZGVyV2lkdGgoZmxvYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGls
ZURlYnVnQm9yZGVyQ29sb3IoQ29sb3IpOwogCi0gICAgRmxvYXRSZWN0IHZpc2libGVSZWN0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV92aXNpYmxlUmVjdDsgfQotICAgIEZsb2F0UmVjdCBjb3Zl
cmFnZVJlY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvdmVyYWdlUmVjdDsgfQorICAgIEZs
b2F0UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVJlY3Q7IH0KKyAg
ICB2b2lkIHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIEZsb2F0UmVjdCBj
b3ZlcmFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvdmVyYWdlUmVjdDsgfQorICAgIHZvaWQg
c2V0Q292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdw
b3J0UmVjdDsgfQogCi0gICAgdm9pZCBzZXRUaWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRGb3JU
ZXN0aW5nKGJvb2wpIGZpbmFsOwotCiAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50KCkgY29u
c3Q7CiAgICAgc3RhdGljIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudEZvclRpbGVzKGNvbnN0IFBs
YXRmb3JtTGF5ZXJMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50UG9pbnQmKTsKIApA
QCAtMTA3LDI1ICsxMDcsMTAgQEAgcHVibGljOgogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV90aWxlRGVidWdCb3JkZXJXaWR0aDsgfQogICAgIFNjcm9s
bGluZ01vZGVJbmRpY2F0aW9uIGluZGljYXRvck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luZGlj
YXRvck1vZGU7IH0KIAotICAgIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIGZpbmFsOwotICAg
IHZvaWQgZGlkRW5kTGl2ZVJlc2l6ZSgpIGZpbmFsOworICAgIEludFNpemUgdGlsZVNpemUoKSBj
b25zdDsKIAotICAgIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBmaW5hbDsKLSAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0IGZpbmFsOwotICAgIEludFJlY3QgYm91bmRzV2l0aG91dE1hcmdpbigp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgaGFzTWFyZ2lucygpIGNvbnN0IGZpbmFsOwotICAgIGJv
b2wgaGFzSG9yaXpvbnRhbE1hcmdpbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGhhc1ZlcnRp
Y2FsTWFyZ2lucygpIGNvbnN0IGZpbmFsOwotICAgIGludCB0b3BNYXJnaW5IZWlnaHQoKSBjb25z
dCBmaW5hbDsKLSAgICBpbnQgYm90dG9tTWFyZ2luSGVpZ2h0KCkgY29uc3QgZmluYWw7Ci0gICAg
aW50IGxlZnRNYXJnaW5XaWR0aCgpIGNvbnN0IGZpbmFsOwotICAgIGludCByaWdodE1hcmdpbldp
ZHRoKCkgY29uc3QgZmluYWw7Ci0gICAgVGlsZUNvdmVyYWdlIHRpbGVDb3ZlcmFnZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fdGlsZUNvdmVyYWdlOyB9Ci0KLSAgICBGbG9hdFJlY3QgYWRqdXN0
VGlsZUNvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIGNvdmVyYWdlUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBwcmV2aW91c1Zpc2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnRWaXNp
YmxlUmVjdCwgYm9vbCBzaXplQ2hhbmdlZCkgZmluYWw7Ci0gICAgRmxvYXRSZWN0IGFkanVzdFRp
bGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29uc3QgRmxvYXRSZWN0JiBjb3ZlcmFnZVJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBwcmV2aW91c1Zpc2li
bGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnRWaXNpYmxlUmVjdCwgZmxvYXQgY29udGVu
dHNTY2FsZSkgZmluYWw7Ci0KLSAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlVGVzdGluZ0Vu
YWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlVGVzdGlu
Z0VuYWJsZWQ7IH0KKyAgICBGbG9hdFJlY3QgYWRqdXN0VGlsZUNvdmVyYWdlUmVjdChjb25zdCBG
bG9hdFJlY3QmIGNvdmVyYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBwcmV2aW91c1Zpc2libGVS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnRWaXNpYmxlUmVjdCwgYm9vbCBzaXplQ2hhbmdl
ZCk7CisgICAgRmxvYXRSZWN0IGFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29u
c3QgRmxvYXRSZWN0JiBjb3ZlcmFnZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBwcmV2aW91c1Zpc2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJl
bnRWaXNpYmxlUmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAKICAgICBJbnRTaXplIGNvbXB1
dGVUaWxlU2l6ZSgpOwogCkBAIC0xNDYsMTggKzEzMSwxOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBsb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudCk7
CiAKLXByaXZhdGU6Ci0gICAgVGlsZUdyaWQmIHRpbGVHcmlkKCkgeyByZXR1cm4gKm1fdGlsZUdy
aWQ7IH0KLQotICAgIHZvaWQgc2NoZWR1bGVUaWxlUmV2YWxpZGF0aW9uKFNlY29uZHMgaW50ZXJ2
YWwpOwotCi0gICAgZmxvYXQgdG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BD
b250ZW50SW5zZXQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvcmNlUmVwYWludCgpOwor
ICAgIGJvb2wgdGlsZXNXb3VsZENoYW5nZUZvckNvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3Qm
KSBjb25zdDsKKyAgICB2b2lkIHJldmFsaWRhdGVUaWxlcygpOworICAgIGRvdWJsZSByZXRhaW5l
ZFRpbGVCYWNraW5nU3RvcmVNZW1vcnkoKSBjb25zdDsKKyAgICB2b2lkIHNldFpvb21lZE91dENv
bnRlbnRzU2NhbGUoZmxvYXQpOworICAgIGZsb2F0IHpvb21lZE91dENvbnRlbnRzU2NhbGUoKSBj
b25zdDsKKyAgICBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdDsKKyAgICBJbnRSZWN0
IHRpbGVHcmlkRXh0ZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1DQUxh
eWVyKiB0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCk7CiAKICAgICAvLyBUaWxlZEJhY2tp
bmcgbWVtYmVyIGZ1bmN0aW9ucy4KLSAgICB2b2lkIHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRSZWN0KHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PikgZmluYWw7Ci0gICAgdm9pZCBzZXRDb3ZlcmFnZVJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7Ci0gICAgYm9vbCB0aWxlc1dvdWxkQ2hhbmdlRm9yQ292ZXJhZ2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JikgZmluYWw7CiAgICAgdm9pZCBz
ZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpIGZpbmFsOwogICAgIHZvaWQgc2V0VmVsb2NpdHkoY29u
c3QgVmVsb2NpdHlEYXRhJikgZmluYWw7CkBAIC0xNjYsMjAgKzE1MSwyOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKSBmaW5hbDsKICAgICBib29sIGlzSW5XaW5kb3co
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzSW5XaW5kb3c7IH0KICAgICB2b2lkIHNldFRpbGVD
b3ZlcmFnZShUaWxlQ292ZXJhZ2UpIGZpbmFsOwotICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKCkg
ZmluYWw7Ci0gICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBmaW5hbDsKLSAgICBJbnRSZWN0IHRpbGVH
cmlkRXh0ZW50KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZVRlc3RpbmdFbmFibGVkKGJvb2wgZmxhZykgZmluYWwgeyBtX3Njcm9sbGluZ1BlcmZvcm1hbmNl
VGVzdGluZ0VuYWJsZWQgPSBmbGFnOyB9Ci0gICAgZG91YmxlIHJldGFpbmVkVGlsZUJhY2tpbmdT
dG9yZU1lbW9yeSgpIGNvbnN0IGZpbmFsOwotICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCgp
IGNvbnN0IGZpbmFsOwotI2lmIFVTRShDQSkKLSAgICBQbGF0Zm9ybUNBTGF5ZXIqIHRpbGVkU2Ny
b2xsaW5nSW5kaWNhdG9yTGF5ZXIoKSBmaW5hbDsKLSNlbmRpZgogICAgIHZvaWQgc2V0U2Nyb2xs
aW5nTW9kZUluZGljYXRpb24oU2Nyb2xsaW5nTW9kZUluZGljYXRpb24pIGZpbmFsOwogICAgIHZv
aWQgc2V0SGFzTWFyZ2lucyhib29sIG1hcmdpblRvcCwgYm9vbCBtYXJnaW5Cb3R0b20sIGJvb2wg
bWFyZ2luTGVmdCwgYm9vbCBtYXJnaW5SaWdodCkgZmluYWw7CiAgICAgdm9pZCBzZXRNYXJnaW5T
aXplKGludCkgZmluYWw7Ci0gICAgdm9pZCBzZXRab29tZWRPdXRDb250ZW50c1NjYWxlKGZsb2F0
KSBmaW5hbDsKLSAgICBmbG9hdCB6b29tZWRPdXRDb250ZW50c1NjYWxlKCkgY29uc3QgZmluYWw7
CisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRSZWN0IGJvdW5kc1dp
dGhvdXRNYXJnaW4oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc01hcmdpbnMoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGhhc0hvcml6b250YWxNYXJnaW5zKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBoYXNWZXJ0aWNhbE1hcmdpbnMoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgdG9wTWFyZ2lu
SGVpZ2h0KCkgY29uc3QgZmluYWw7CisgICAgaW50IGJvdHRvbU1hcmdpbkhlaWdodCgpIGNvbnN0
IGZpbmFsOworICAgIGludCBsZWZ0TWFyZ2luV2lkdGgoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQg
cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0IGZpbmFsOworICAgIFRpbGVDb3ZlcmFnZSB0aWxlQ292
ZXJhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RpbGVDb3ZlcmFnZTsgfQorICAgIGJvb2wg
c2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0VGls
ZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9yVGVzdGluZyhib29sKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBUaWxlR3JpZCYgdGlsZUdyaWQoKSB7IHJldHVybiAqbV90aWxlR3JpZDsgfQorCisg
ICAgdm9pZCBzY2hlZHVsZVRpbGVSZXZhbGlkYXRpb24oU2Vjb25kcyBpbnRlcnZhbCk7CisKKyAg
ICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJbnNl
dDsgfQogCiAgICAgdm9pZCB1cGRhdGVNYXJnaW5zKCk7CiAgICAgdm9pZCBjbGVhclpvb21lZE91
dFRpbGVHcmlkKCk7CkBAIC0yNDIsNyArMjM2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3Vw
cG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RpbGVz
QXJlT3BhcXVlIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2Nh
bGVGYWN0b3IgeyBmYWxzZSB9OyAvLyBVc2VkIHRvIG1ha2UgbG93LXJlcyB0aWxlcyB3aGVuIHpv
b21pbmcuCi0gICAgYm9vbCBtX2luTGl2ZVJlc2l6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Rp
bGVTaXplTG9ja2VkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGF2ZUV4dGVybmFsVmVsb2NpdHlE
YXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNUaWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRG
b3JUZXN0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4
IDgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0OWIyYjQuLjA0MWJjZWQzYTQwOTA4
MTg1YThlNmY2NDRkMjczZThhMmU2NzczYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBU
aWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOworICAgIFRpbGVDb250cm9sbGVy
KiB0aWxlZEJhY2tpbmcoKSBvdmVycmlkZTsKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNs
b25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDJhNDVkZGM0NThkZTA2N2JhZGIwMWE1
N2VkZmIyYjlhYjk1MzAzMGQuLmM2MDg5MDEwOWE0ZDYzOTE1N2I5MGIyOGQ5NGI3N2RkNGUzZTYw
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0zNyw3ICszNyw2IEBA
CiAjaW1wb3J0ICJQbGF0Zm9ybUNBRmlsdGVycy5oIgogI2ltcG9ydCAiU2Nyb2xsYmFyVGhlbWVN
YWMuaCIKICNpbXBvcnQgIlRpbGVDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJUaWxlZEJhY2tpbmcu
aCIKICNpbXBvcnQgIldlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5
ZXIuaCIKQEAgLTExMzQsNyArMTEzMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnVw
ZGF0ZUNvbnRlbnRzRm9ybWF0KCkKICAgICB9CiB9CiAKLVRpbGVkQmFja2luZyogUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnRpbGVkQmFja2luZygpCitUaWxlQ29udHJvbGxlciogUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OnRpbGVkQmFja2luZygpCiB7CiAgICAgaWYgKCF1c2VzVGlsZWRCYWNraW5nTGF5
ZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5
ZXIuaAppbmRleCBlMzZlYzUwMzliYzlmNjc2NWY4YjcwMzRiNThkYThmNDE1NDFhZGY0Li41NGY0
ZDcwNTQ3NWIyMTc1NTcxODAxYjlkYTUzMTE0Mjc4MGJlNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVk
QmFja2luZ0xheWVyLmgKQEAgLTI5LDcgKzI5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIGNsYXNzIFRpbGVDb250cm9sbGVy
OwotY2xhc3MgVGlsZWRCYWNraW5nOwogfQogCiBAaW50ZXJmYWNlIFdlYlRpbGVkQmFja2luZ0xh
eWVyIDogQ0FMYXllciB7CkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIFRpbGVkQmFja2luZzsKIH0K
IAogLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKWNyZWF0ZVRpbGVDb250cm9sbGVyOihXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXllcjsKLS0gKFdlYkNvcmU6OlRpbGVkQmFja2lu
ZyopdGlsZWRCYWNraW5nOworLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKXRpbGVkQmFja2lu
ZzsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogLSAodm9pZClzZXRXYW50c0RlZXBDb2xvckJhY2tp
bmdTdG9yZTooQk9PTCl3YW50c0RlZXBDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5
ZXIubW0KaW5kZXggMGM3MWQ0MzhlZTQzNTkzNTE2MDkzZjgzYWMxYjRhNzQyMTNmMjgwZC4uNTAw
YmZjMWMyMzY4ZDVhZDgyZDVhYTlkZjg1ZDZiNTU5YzQwOGY2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGls
ZWRCYWNraW5nTGF5ZXIubW0KQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgIHJldHVybiBfdGlsZUNv
bnRyb2xsZXIgPyBfdGlsZUNvbnRyb2xsZXItPmNvbnRlbnRzU2NhbGUoKSA6IDE7CiB9CiAKLS0g
KFdlYkNvcmU6OlRpbGVkQmFja2luZyopdGlsZWRCYWNraW5nCistIChXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlciopdGlsZWRCYWNraW5nCiB7CiAgICAgcmV0dXJuIF90aWxlQ29udHJvbGxlci5nZXQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IGRmZjQxYmY0MzBkYzJiOGI2OTRj
YzhiMGZlZjNiNjU1ZmZiNTM0NjguLmNhYjJkNjkyYTQxZTNkNjIxNThjMTViMDk0NWU5OGIwNjg2
ZTUyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlRpbGVkQmFja2luZy5oIgorI2luY2x1
ZGUgIlRpbGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV0tDQUNGVmlld0xheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxRdWFydHpD
b3JlL0NBQmFzZS5oPgpAQCAtMzQ5LDcgKzM0OSw3IEBAIFN0cmluZyBDQUNGTGF5ZXJUcmVlSG9z
dDo6bGF5ZXJUcmVlQXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3Jvb3RMYXllci0+bGF5
ZXJUcmVlQXNTdHJpbmcoKTsKIH0KIAotVGlsZWRCYWNraW5nKiBDQUNGTGF5ZXJUcmVlSG9zdDo6
bWFpbkZyYW1lVGlsZWRCYWNraW5nKCkgY29uc3QKK1RpbGVDb250cm9sbGVyKiBDQUNGTGF5ZXJU
cmVlSG9zdDo6bWFpbkZyYW1lVGlsZWRCYWNraW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTgsMTQgKzM1OCwxNCBAQCBUaWxlZEJh
Y2tpbmcqIENBQ0ZMYXllclRyZWVIb3N0OjptYWluRnJhbWVUaWxlZEJhY2tpbmcoKSBjb25zdAog
ICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBy
ZXR1cm4gZnJhbWVWaWV3LT50aWxlZEJhY2tpbmcoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGlsZUNvbnRyb2xsZXIqPihmcmFtZVZpZXctPnRpbGVkQmFja2luZygpKTsKIH0KIAogdm9pZCBD
QUNGTGF5ZXJUcmVlSG9zdDo6dXBkYXRlRGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIpCiB7
CiAgICAgaWYgKHNob3dMYXllcikgewogICAgICAgICBpZiAoIW1fZGVidWdJbmZvTGF5ZXIpIHsK
LSAgICAgICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRp
bGVkQmFja2luZygpKQorICAgICAgICAgICAgaWYgKGF1dG8qIHRpbGVkQmFja2luZyA9IG1haW5G
cmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICAgICAgICAgIG1fZGVidWdJbmZvTGF5ZXIgPSB0
aWxlZEJhY2tpbmctPnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FD
RkxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9DQUNGTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGM3NjcxYTA3NDk5YWM3OGQ2NDU3ZGIzYjZjYjNk
YzQ2ZWYwM2FhODQuLjZlZTI4NGVkZDljMTM3ZDc2YjRmZDM2NjcxNGMxMDcwMzZhNzA4ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9DQUNGTGF5ZXJUcmVlSG9zdC5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQ7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5
ZXI7Ci1jbGFzcyBUaWxlZEJhY2tpbmc7CitjbGFzcyBUaWxlQ29udHJvbGxlcjsKIAogY2xhc3Mg
Q0FDRkxheWVyVHJlZUhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDQUNGTGF5ZXJUcmVlSG9zdD4s
IHByaXZhdGUgQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CkBAIC04OSw3ICs4
OSw3IEBAIHByb3RlY3RlZDoKICAgICBIV05EIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2lu
ZG93OyB9CiAgICAgdm9pZCBub3RpZnlBbmltYXRpb25zU3RhcnRlZCgpOwogCi0gICAgVGlsZWRC
YWNraW5nKiBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSBjb25zdDsKKyAgICBUaWxlQ29udHJvbGxl
ciogbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkgY29uc3Q7CiAKICAgICAvLyBBYnN0cmFjdENBQ0ZM
YXllclRyZWVIb3N0CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBlNzUwZjZkZTZiNmYzODA1MWQw
ZWM3OWEyY2FlZTRjNTM0MmU2YWUwLi41MTViNDlhODJhMjg5ZTNhNmUwMDEyOTU3YWU5ZjliYzBk
OTE4MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtODY2LDcgKzg2Niw3IEBA
IFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlQ29tcGF0aWJs
ZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6CiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllcldpbjo6
Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50KTsKIH0KIAotVGlsZWRCYWNraW5nKiBQbGF0Zm9ybUNB
TGF5ZXJXaW46OnRpbGVkQmFja2luZygpCitUaWxlQ29udHJvbGxlciogUGxhdGZvcm1DQUxheWVy
V2luOjp0aWxlZEJhY2tpbmcoKQogewogICAgIGlmICghdXNlc1RpbGVkQmFja2luZ0xheWVyKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCmluZGV4IDI0
ZTAzNzEwMTRiZGJlMDQ3NTAxYmMwOGEwNWNjMjg1MDYxMWExOWEuLmM5ZWM0MGFjMWJmNzczNWE4
ODI4MTIxNGVlM2M4MzUxN2RmMGNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKQEAgLTE1
OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5j
ZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBl
YXJhbmNlOyB9CiAgICAgdm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6
OkN1c3RvbUFwcGVhcmFuY2UgY3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFw
cGVhcmFuY2UgPSBjdXN0b21BcHBlYXJhbmNlOyB9CiAKLSAgICBUaWxlZEJhY2tpbmcqIHRpbGVk
QmFja2luZygpIG92ZXJyaWRlOworICAgIFRpbGVDb250cm9sbGVyKiB0aWxlZEJhY2tpbmcoKSBv
dmVycmlkZTsKICAgICAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNMYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDI5NmY5MDE0MDMyMzlmNjE2NDU4
NzgzMzk4YTExNTliZDZhNGM1YjEuLjY4OWRlZmNlNTk2MDNiMDM3Zjg3OWY5ZDAzNDc0MWMyMzkx
YzI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJUaWxlZEJhY2tpbmcuaCIKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmgKaW5kZXggY2Q3ODE0ODAwZmQ5Y2FiNWRmZWM0OTVkODk5OTBjOGM2OTA3Y2I0NS4u
MDIzZWIwMDc2MjljNjJjYWY2NzJiOTZlZTRiNGQ3ZmZkNjU4YTkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgKQEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgQ29sb3I7
CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBUaWxlQ29u
dHJvbGxlcjsKLWNsYXNzIFRpbGVkQmFja2luZzsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRC
YWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IGI1M2EzMzdiYTRjY2RjZjIzZjc4NTQ5MDViMjc2MDdl
YzkwYzA2NGEuLjU5ZjQ3NDA1YWYxYThhMTBhZDJkMTUxM2FmZjhjMTAwNWQyNzY1ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
ICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKQEAgLTE2OCw3ICsxNjcsNyBAQCBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcgogICAg
IHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCi1UaWxlZEJhY2tpbmcqIFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjp0aWxlZEJhY2tpbmcoKQorVGlsZUNvbnRyb2xsZXIqIFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjp0aWxlZEJhY2tpbmcoKQogewogICAgIHJldHVybiBtX3RpbGVD
b250cm9sbGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uaAppbmRl
eCAxZjBiNWY3NTAyMTI0ZDYwZWI3N2U4YmFjOGVmYjhkMDE4YjdhMDBmLi5mZDMzZjgxNDYwMDg3
Mjg2NjYyYWYxODdkZWRjMTM1ZTg2YjcwMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJUaWxlZEJhY2tp
bmdMYXllciBGZWF0dXJlcwogICAgIFRpbGVDb250cm9sbGVyKiBjcmVhdGVUaWxlQ29udHJvbGxl
cihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcik7Ci0gICAgVGlsZWRCYWNraW5nKiB0aWxlZEJh
Y2tpbmcoKTsKKyAgICBUaWxlQ29udHJvbGxlciogdGlsZWRCYWNraW5nKCk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmgKaW5kZXggNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYz
YzhkZi4uMGQ4NTQyYzNjZTIxM2U4NzkyMTJhOGI0ZDMxYzIzMDkyOTk4MDQ1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTk1LDcgKzE5NSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpUaWxlZEJhY2tpbmcq
IHRpbGVkQmFja2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXZWJDb3Jl
OjpUaWxlQ29udHJvbGxlciogdGlsZWRCYWNraW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY2xvbmUoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcuaAppbmRleCBkOTczNGIzNzk2MjJlMzA2MDk3OTc5ZDBiYjQ1N2NkNmFhYzdkMTRmLi4xOGFi
OTM4ZjllN2EzMTcwMjNiNjNhZDQ5MDQ3MGVhNjE5MzVlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
Jik7CiAKLSAgICBXZWJDb3JlOjpUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlciogdGlsZWRCYWNraW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90aWxlQ29udHJvbGxl
ci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KaW5kZXggNTY0ODg5MmVhOGM1NDExOWM2Mjg3MDc1ZGE0YzkxZDg5
NDUzMzI2My4uMjgyMDk2ZGZhMzE0MTRkMWJhMWY1MzUwMWNkN2VhYjE5MDVkZjJiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpA
QCAtMjEyLDEwICsyMTIsMTIgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zm9y
Y2VSZXBhaW50KCkKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fd2ViUGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7Ci0g
ICAgICAgIGlmICghZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPnRpbGVkQmFja2luZygpKQorICAg
ICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZy
YW1lVmlldy0+dGlsZWRCYWNraW5nKCktPmZvcmNlUmVwYWludCgpOworICAgICAgICBhdXRvIHRp
bGVDb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGlsZUNvbnRyb2xsZXIqPihmcmFtZVZpZXctPnRp
bGVkQmFja2luZygpKTsKKyAgICAgICAgaWYgKCF0aWxlQ29udHJvbGxlcikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB0aWxlQ29udHJvbGxlci0+Zm9yY2VSZXBhaW50KCk7CiAgICAg
fQogCiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCmluZGV4IDc0OGVjNzUzMmQ2MjBmZjEzYTA5NGYzNGY1NmU5NTNhMGIzMjY3ZjAu
LjFkZWQ4MzY0NjA4OTlkYzM3ZmJmNmJmMTYwNzEzYzgzNzRkN2M5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIGNsYXNz
IFJ1bkxvb3BPYnNlcnZlcjsKLWNsYXNzIFRpbGVkQmFja2luZzsKK2NsYXNzIFRpbGVDb250cm9s
bGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqKTsKICAgICB2b2lk
IHVwZGF0ZVJvb3RMYXllcnMoKTsKIAotICAgIFdlYkNvcmU6OlRpbGVkQmFja2luZyogbWFpbkZy
YW1lVGlsZWRCYWNraW5nKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqIG1h
aW5GcmFtZVRpbGVkQmFja2luZygpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlRGVidWdJbmZvTGF5
ZXIoYm9vbCBzaG93TGF5ZXIpOwogCiAgICAgdm9pZCBzY2FsZVZpZXdUb0ZpdERvY3VtZW50SWZO
ZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA4
NWY1YTQ4YWFlZmNmM2I2MzA4YWY2YzRmN2I0NTFmMGIyZmExNWNlLi41NjU3MjVkMmY0NDIwYTg2
NjgxYzA4MDVkZDY4ZWY5ZWIwMjE1ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCkBAIC01OCw3ICs1OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3BP
YnNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9UaWxlZEJhY2tpbmcuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvVGlsZUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWN0
aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd0V2
ZW50TG9vcC5oPgogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KQEAgLTE2NiwxMCArMTY2
LDEyIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgp
CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAg
ICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOwotICAgICAgICBpZiAo
IWZyYW1lVmlldyB8fCAhZnJhbWVWaWV3LT50aWxlZEJhY2tpbmcoKSkKKyAgICAgICAgaWYgKCFm
cmFtZVZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBmcmFtZVZpZXctPnRp
bGVkQmFja2luZygpLT5mb3JjZVJlcGFpbnQoKTsKKyAgICAgICAgYXV0byB0aWxlQ29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PFRpbGVDb250cm9sbGVyKj4oZnJhbWVWaWV3LT50aWxlZEJhY2tpbmco
KSk7CisgICAgICAgIGlmICghdGlsZUNvbnRyb2xsZXIpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgdGlsZUNvbnRyb2xsZXItPmZvcmNlUmVwYWludCgpOwogICAgIH0KIAogICAgIHVw
ZGF0ZVJlbmRlcmluZygpOwpAQCAtNjk4LDEwICs3MDAsMTAgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqbGF5ZXIp
CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAotVGlsZWRCYWNraW5nKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6bWFpbkZyYW1lVGlsZWRCYWNraW5nKCkgY29uc3QKK1Rp
bGVDb250cm9sbGVyKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6bWFpbkZyYW1lVGls
ZWRCYWNraW5nKCkgY29uc3QKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFn
ZS5tYWluRnJhbWVWaWV3KCk7Ci0gICAgcmV0dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+dGls
ZWRCYWNraW5nKCkgOiBudWxscHRyOworICAgIHJldHVybiBmcmFtZVZpZXcgPyBzdGF0aWNfY2Fz
dDxUaWxlQ29udHJvbGxlcio+KGZyYW1lVmlldy0+dGlsZWRCYWNraW5nKCkpIDogbnVsbHB0cjsK
IH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlRGVidWdJbmZv
TGF5ZXIoYm9vbCBzaG93TGF5ZXIpCkBAIC03MTIsNyArNzE0LDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlRGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIp
CiAgICAgfQogICAgIAogICAgIGlmIChzaG93TGF5ZXIpIHsKLSAgICAgICAgaWYgKFRpbGVkQmFj
a2luZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKSB7CiAgICAg
ICAgICAgICBpZiAoUGxhdGZvcm1DQUxheWVyKiBpbmRpY2F0b3JMYXllciA9IHRpbGVkQmFja2lu
Zy0+dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpKQogICAgICAgICAgICAgICAgIG1fZGVi
dWdJbmZvTGF5ZXIgPSBpbmRpY2F0b3JMYXllci0+cGxhdGZvcm1MYXllcigpOwogICAgICAgICB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>