<?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>89740</bug_id>
          
          <creation_ts>2012-06-21 23:05:46 -0700</creation_ts>
          <short_desc>REGRESSION(r120982): [chromium] ASSERTION FAILED: m_allocatedTextureIds.contains(textureId) (Requested by ukai on #webkit).</short_desc>
          <delta_ts>2012-06-21 23:12:05 -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>89045</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>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655254</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 23:05:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/120982 broke the build:
[chromium] ASSERTION FAILED: m_allocatedTextureIds.contains(textureId) (Requested by ukai 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>655256</commentid>
    <comment_count>1</comment_count>
      <attachid>148964</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 23:06:41 -0700</bug_when>
    <thetext>Created attachment 148964
ROLLOUT of r120982

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>655257</commentid>
    <comment_count>2</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2012-06-21 23:09:43 -0700</bug_when>
    <thetext>http://build.chromium.org/p/chromium/buildstatus?builder=Win%20Aura&amp;number=15702

[ RUN      ] LayerWithDelegateTest.ConvertPointToLayer_Simple
ASSERTION FAILED: m_allocatedTextureIds.contains(textureId)


[ RUN      ] ShellTest.CreateWindow
ASSERTION FAILED: m_allocatedTextureIds.contains(textureId)

[ RUN      ] RootWindowTest.CanProcessEventsWithinSubtree
ASSERTION FAILED: m_allocatedTextureIds.contains(textureId)

[ RUN      ] ViewLayerTest.DontPaintChildrenWithLayers
ASSERTION FAILED: m_allocatedTextureIds.contains(textureId)

http://build.chromium.org/p/chromium.chromiumos/buildstatus?builder=Linux%20ChromiumOS%20Tests%20%28dbg%29%283%29&amp;number=6217


[ RUN      ] DetachToBrowserTabDragControllerTest.DragInSameWindow
...
ASSERTION FAILED: m_allocatedTextureIds.contains(textureId)
third_party/WebKit/Source/WebCore/platform/graphics/chromium/TrackingTextureAllocator.cpp(100) : virtual void WebCore::TrackingTextureAllocator::deleteTexture(unsigned 
..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655258</commentid>
    <comment_count>3</comment_count>
      <attachid>148964</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 23:12:01 -0700</bug_when>
    <thetext>Comment on attachment 148964
ROLLOUT of r120982

Clearing flags on attachment: 148964

Committed r121005: &lt;http://trac.webkit.org/changeset/121005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655259</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 23:12:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148964</attachid>
            <date>2012-06-21 23:06:41 -0700</date>
            <delta_ts>2012-06-21 23:12:01 -0700</delta_ts>
            <desc>ROLLOUT of r120982</desc>
            <filename>bug-89740-20120622061137.patch</filename>
            <type>text/plain</type>
            <size>89121</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2NTZiZjMzMGU5M2I0
MzY0MmU2ZWYxMWI1MzI5OTdmM2QwM2E3OC4uNmU5M2Q4MTMzZmUyODg5ZGUyNGM1NDQ0OWIwN2E2
OTdiNmQ0MzkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNi0yMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyMDk4Mi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTIwOTgyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04OTc0MAorCisgICAgICAgIFtjaHJvbWl1bV0gQVNTRVJUSU9OIEZBSUxFRDoK
KyAgICAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5zKHRleHR1cmVJZCkgKFJlcXVl
c3RlZCBieSB1a2FpCisgICAgICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQWRh
cHRlcjo6b25HcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclBpeGVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6
CisgICAgICAgIChUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKFRleHR1cmVNYW5hZ2VyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpj
cmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cjo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmg6CisgICAgICAgIChUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNo
Q29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
c2V0TmVlZHNGb3JjZWRDb21taXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNvdXJjZUZyYW1lQ2FuQmVEcmF3bik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRTb3VyY2VGcmFtZUNhbkJlRHJhd24pOgorICAgICAg
ICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NSZW5kZXJl
ckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21w
bGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkU3dhcEJ1ZmZlcnNDb21w
bGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgorICAgICAgICAoQ0NTY2hlZHVs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNGb3JjZWRDb21taXQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RTZXRDb250ZW50c01lbW9y
eUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdEFuZENvbXBvc2l0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
OgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnNldE5lZWRzRm9yY2VkQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xv
c2VkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKEJl
Z2luRnJhbWVBbmRDb21taXRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVv
TGF5ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVv
TGF5ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBs
Ojp3aWxsRHJhd0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVv
TGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVv
TGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXll
ckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6ZGlkTG9zZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKEZyYW1lUGxhbmUpOgorCiAy
MDEyLTA2LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
YWtlIEZvcm1Db250cm9sU3RhdGUgY2FwYWJsZSB0byBzdG9yZSBtdWx0aXBsZSB2YWx1ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjc2YzFhYjBiNTYzNTAxMGNhYTEzNjFiYmEwYThi
OTRiNDdlMDBhYy4uYmRiNzYyZTcwZmM4YWQ5ZjAzN2FkZjQ1MzhiMThmYzJiMDA5OTQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNi0yMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyMDk4Mi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTIwOTgyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04OTc0MAorCisgICAgICAgIFtjaHJvbWl1bV0gQVNTRVJUSU9OIEZBSUxFRDoK
KyAgICAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5zKHRleHR1cmVJZCkgKFJlcXVl
c3RlZCBieSB1a2FpCisgICAgICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFZpc2liaWxpdHlBbmRBbGxv
Y2F0aW9uQ29udHJvbERyYXdpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
VmlzaWJpbGl0eUFuZEFsbG9jYXRpb25Db250cm9sRHJhd2luZzo6Q0NMYXllclRyZWVIb3N0VGVz
dFZpc2liaWxpdHlBbmRBbGxvY2F0aW9uQ29udHJvbERyYXdpbmcpOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0VmlzaWJpbGl0eUFuZEFsbG9jYXRpb25Db250cm9sRHJhd2luZzo6
YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFZpc2liaWxpdHlB
bmRBbGxvY2F0aW9uQ29udHJvbERyYXdpbmc6OmRpZENvbW1pdEFuZERyYXdGcmFtZSk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RWaXNpYmlsaXR5QW5kQWxsb2NhdGlvbkNvbnRy
b2xEcmF3aW5nOjpkaWRDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
VmlzaWJpbGl0eUFuZEFsbG9jYXRpb25Db250cm9sRHJhd2luZzo6Y29tbWl0Q29tcGxldGVPbkND
VGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFZpc2liaWxpdHlBbmRB
bGxvY2F0aW9uQ29udHJvbERyYXdpbmc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb246OmJlZ2luVGVzdCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbldpdGhGaWx0
ZXJzOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TWFueVN1
cmZhY2VzOjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9D
Q1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VU
ZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKEZha2VXZWJHcmFwaGljc0NvbnRleHQz
RCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorCiAyMDEyLTA2LTIxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBJbml0aWFsaXplIGNvbXBvc2l0b3IncyB2aXNpYmlsaXR5IHN0
YXRlIHVwb24gaW5pdGlhbGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IDU5NWNhZTJlOTI4OTNiYTA3NTNiM2M3NDRiMGNiZWIyY2U2OTg2MDkuLmI2Y2E2
NzQ0NTdmOGQwM2M5NzY2Njc2OTAzYmZlYzU3M2QzYTNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAi
RXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRl
ICJHZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHclRleHR1cmUuaCIKQEAgLTIxOCw3ICsy
MTksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9uR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRP
bkltcGwoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9yeUFsbG9jYXRpb25DSFJPTUlVTSBh
bGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKLSAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRHcHVNZW1vcnlBbGxvY2F0aW9uKGFsbG9j
YXRpb24pOworICAgICAgICBpZiAoIWFsbG9jYXRpb24uc3VnZ2VzdEhhdmVCYWNrYnVmZmVyKQor
ICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5kaXNjYXJkRnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5lbnN1cmVGcmFtZWJ1ZmZlcigp
OworICAgICAgICBtX2xheWVyUmVuZGVyZXItPm1fY2xpZW50LT5zZXRDb250ZW50c01lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKGFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcyk7CiAg
ICAgfQogCiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBtX2xheWVyUmVuZGVyZXI7CkBAIC0y
NDYsNyArMjUxLDYgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21p
dW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LAogICAgICwgbV9kZWZhdWx0UmVuZGVyUGFzcygw
KQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZl
ckRpc2NhcmRlZChmYWxzZSkKLSAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV90ZXh0dXJl
VXBsb2FkZXJTZXR0aW5nKHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CiAgICAgQVNTRVJUKG1f
Y29udGV4dC5nZXQoKSk7CkBAIC0zMzAsNyArMzM0LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmluaXRpYWxpemUoKQogICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5z
aW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGV4dGVu
c2lvbnMpOwogICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+c2V0R3B1TWVtb3J5QWxsb2Nh
dGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKExheWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0
aW9uQ2hhbmdlZENhbGxiYWNrQWRhcHRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBtX2NsaWVudC0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1h
bmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50
LT5zZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpo
aWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOwogICAgIH0KIAogICAgIG1fY2FwYWJpbGl0
aWVzLnVzaW5nRGlzY2FyZEZyYW1lYnVmZmVyID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX2Rpc2NhcmRfZnJhbWVidWZmZXIiKTsKQEAgLTM3MSw5ICszNzUsOCBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqCiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKIHsKLSAgICBpZiAobV92aXNpYmxlID09IHZpc2libGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3Zpc2libGUgPSB2aXNpYmxlOworICAgIGlmICghdmlzaWJsZSkKKyAg
ICAgICAgcmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwogCiAgICAgLy8gVE9ETzogUmVwbGFj
ZSBzZXRWaXNpYmlsaXR5Q0hST01JVU0gd2l0aCBhbiBleHRlbnNpb24gdG8gZXhwbGljaXRseSBt
YW5hZ2UgZnJvbnQvYmFja2J1ZmZlcnMKICAgICAvLyBjcmJ1Zy5jb20vMTE2MDQ5CkBAIC0xMjY3
LDIyICsxMjcwLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9G
cmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldEdwdU1lbW9yeUFsbG9jYXRpb24oRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdwdU1lbW9yeUFs
bG9jYXRpb25DSFJPTUlVTSBhbGxvY2F0aW9uKQotewotICAgIGlmIChtX3Zpc2libGUgJiYgIWFs
bG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFhbGxvY2F0aW9uLnN1Z2dlc3RIYXZlQmFja2J1ZmZlciAmJiAhbV92aXNpYmxlKQotICAg
ICAgICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLQotICAgIGlmICghYWxsb2NhdGlvbi5ncHVSZXNv
dXJjZVNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsK
LSAgICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCk7Ci0gICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
Y2xpZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhhbGxvY2F0aW9uLmdwdVJlc291
cmNlU2l6ZUluQnl0ZXMpOwotfQotCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNo
KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2giLCB0
aGlzLCAwKTsKQEAgLTEyOTEsOCArMTI3OCwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoKCkKIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzKGNv
bnN0IEludFJlY3QmIHN1YkJ1ZmZlcikKIHsKLSAgICBBU1NFUlQobV92aXNpYmxlKTsKLSAgICBB
U1NFUlQoIW1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIG9uY2UgZ3B1IHByb2Nlc3Mgc3VwcG9ydHMgaWdub3Jpbmcgc3dhcCBidWZmZXJzIGNvbW1h
bmQgd2hpbGUgZnJhbWVidWZmZXIgaXMgZGlzY2FyZGVkLgorICAgIC8vICAgICAgICBBbHRlcm5h
dGl2ZWx5IChwcmVmZXJhYmx5PyksIHByb3RlY3QgYWxsIGNjIGNvZGUgc28gYXMgbm90IHRvIGF0
dGVtcHQgYSBzd2FwIGFmdGVyIGEgZnJhbWVidWZmZXIgZGlzY2FyZC4KKyAgICBpZiAobV9pc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkKSB7CisgICAgICAgIG1fY2xpZW50LT5zZXRGdWxsUm9vdExheWVy
RGFtYWdlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyIsIHRoaXMsIDApOwogICAgIC8v
IFdlJ3JlIGRvbmUhIFRpbWUgdG8gc3dhcGJ1ZmZlcnMhCkBAIC0xMzk2LDE0ICsxMzg3LDYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBp
eGVscywgY29uc3QgSW50UmVjdCYgcmUKICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRl
bGV0ZUZyYW1lYnVmZmVyKHRlbXBvcmFyeUZCTykpOwogICAgICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZW1wb3JhcnlUZXh0dXJlKSk7CiAgICAgfQotCi0gICAgaWYg
KCFtX3Zpc2libGUpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVy
Q2hyb21pdW06OmdldEZyYW1lYnVmZmVyUGl4ZWxzIGRyb3BwaW5nIHJlc291cmNlcyBhZnRlciBy
ZWFkYmFjayIpOwotICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIoKTsKLSAgICAgICAgcmVsZWFz
ZVJlbmRlclBhc3NUZXh0dXJlcygpOwotICAgICAgICBtX2NsaWVudC0+cmVsZWFzZUNvbnRlbnRz
VGV4dHVyZXMoKTsKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVzaCgpKTsK
LSAgICB9CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIGRldmljZVJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGY3Y2NiNjUxZjg1MGJkMDM4
MmIwOTUwYzQ3ODViMDM1NzFlZGUzOWQuLmU1MjVkMDc2MDQ2ODA0MzE3ODE0ZDEzZGJiM2NmYzli
ZmE3N2E1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNCw3ICsz
NCw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJF
eHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNs
dWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmVy
LmgiCkBAIC01NCw2ICs1Myw3IEBAIGNsYXNzIENDVGlsZURyYXdRdWFkOwogY2xhc3MgQ0NZVVZW
aWRlb0RyYXdRdWFkOwogY2xhc3MgR2VvbWV0cnlCaW5kaW5nOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CitjbGFzcyBMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxs
YmFja0FkYXB0ZXI7CiBjbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxi
YWNrQWRhcHRlcjsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgU2NvcGVkRW5zdXJlRnJh
bWVidWZmZXJBbGxvY2F0aW9uOwpAQCAtMTExLDkgKzExMSw5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgRmxvYXRRdWFkJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJp
eExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7CiAgICAgdm9p
ZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4
KTsKLSAgICB2b2lkIHNldEdwdU1lbW9yeUFsbG9jYXRpb24oRXh0ZW5zaW9uczNEQ2hyb21pdW06
OkdwdU1lbW9yeUFsbG9jYXRpb25DSFJPTUlVTSk7CiAKIHByb3RlY3RlZDoKKyAgICBmcmllbmQg
Y2xhc3MgTGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFw
dGVyOwogICAgIHZvaWQgZGlzY2FyZEZyYW1lYnVmZmVyKCk7CiAgICAgdm9pZCBlbnN1cmVGcmFt
ZWJ1ZmZlcigpOwogICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsgfQpAQCAtMjU4LDcgKzI1OCw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1faXNWaWV3cG9ydENoYW5nZWQ7CiAgICAgYm9vbCBtX2lzRnJhbWVi
dWZmZXJEaXNjYXJkZWQ7Ci0gICAgYm9vbCBtX3Zpc2libGU7CiAgICAgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uIG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmNwcAppbmRleCBkMWY1MmZhZWI1Njc0Mjg0NzI3NjVjMzBjMWY0OWY1OTM0Y2M1MTlmLi4wYTY4
ODQwYjcwZjg2NjgyMDBlMWMzNzQzMDU3YmI4M2RmNzdmZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuY3BwCkBAIC0yNDIsMTMgKzI0Miw2IEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2
aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgbV9ldmljdGVk
VGV4dHVyZXMuY2xlYXIoKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RBbmRSZW1v
dmVBbGxEZWxldGVkVGV4dHVyZXMoKQotewotICAgIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0g
ICAgcmVkdWNlTWVtb3J5VG9MaW1pdCgwKTsKLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigp
OwotfQotCiB2b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggN2NhMTRmNDM3ODVjMGYwZDNmZWFlMzE4Y2E2ZGE3
ZDJhZGMzODQ3Mi4uMzE0NzYzNWE4MGRmZDgxOTk1MmU2MWRmNjhjZjUxYzliMzVkZTZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIFRleHR1cmVBbGxvY2F0
b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRl
eHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRleHR1cmVzKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+VGV4dHVyZUFsbG9jYXRvcigpIHsgfQpAQCAtODksNyArODgsNiBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0
dXJlVG9rZW4pOwogICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0
b3IqKTsKIAotICAgIHZvaWQgZXZpY3RBbmRSZW1vdmVBbGxEZWxldGVkVGV4dHVyZXMoKTsKICAg
ICB2b2lkIGV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwogCiAg
ICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmNwcAppbmRleCA5NTc3MTFlYWE1ZDNjYTMzNmQ1YzU1OTQ1Mjlj
ODM0MmQ2ZGZhYjA2Li5hYTZjNGVjMGI3NjIyYjAwNDgzMjkyMGY3NjIzNjk2ZjZiZDVkYmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKQEAgLTg5LDcgKzg5
LDYgQEAgdW5zaWduZWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGVUZXh0dXJlKGNv
bnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGYKICAgICAgICAgZXh0ZW5zaW9ucy0+dGV4U3Rv
cmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBzdG9yYWdlRm9ybWF0
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIH0gZWxzZQogICAgICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSk7Ci0g
ICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmFkZCh0ZXh0dXJlSWQpOwogICAgIHJldHVybiB0ZXh0
dXJlSWQ7CiB9CiAKQEAgLTk3LDE2ICs5Niw2IEBAIHZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYKIHsK
ICAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXMoc2l6ZSwgZm9ybWF0KTsKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVy
ZUlkcy5jb250YWlucyh0ZXh0dXJlSWQpKTsKLSAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMucmVt
b3ZlKHRleHR1cmVJZCk7Ci19Ci0KLXZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxl
dGVBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChIYXNoU2V0PHVuc2lnbmVkPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuYmVnaW4oKTsgaXQgIT0gbV9hbGxvY2F0
ZWRUZXh0dXJlSWRzLmVuZCgpOyArK2l0KQotICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBt
X2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoKml0KSk7Ci0gICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0
ZXMgPSAwOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jbGVhcigpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCmluZGV4IDk4MGI5NGUxMmJhMjZlZmM4
ZDhjM2Q3OWQyYTcxZGQzYjEzNTEyNjYuLmE4YTU0OTI5YTJmY2FiMTkzNGVmNjQ0OTFkN2JmMDA3
Yzc5ODgxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCkBAIC0y
Nyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw5ICs0MCw4IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKCk7
CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtIGZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUo
dW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRleHR1cmVzKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBm
b3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUs
IGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogCiAgICAgc2l6ZV90IGN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzOyB9
CiAKQEAgLTU5LDcgKzU3LDYgQEAgcHJvdGVjdGVkOgogICAgIHNpemVfdCBtX2N1cnJlbnRNZW1v
cnlVc2VCeXRlczsKICAgICBUZXh0dXJlVXNhZ2VIaW50IG1fdGV4dHVyZVVzYWdlSGludDsKICAg
ICBib29sIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7Ci0gICAgSGFzaFNldDx1bnNpZ25lZD4gbV9h
bGxvY2F0ZWRUZXh0dXJlSWRzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggN2QxNGNmNWRhM2E1YzMyYmU1ZjMwNDY1YTJhZThmZDhmNDBlM2NmYy4uYmI2YzA2
NDYyYjQ1MTAwYjQ0ODdmNzY3YjdlZWE2NzEwMzM3Y2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCkBAIC03Myw2ICs3Myw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRy
ZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlCiAg
ICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxzZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFsc2Up
CiAgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29udGV4
dExvc3QoZmFsc2UpCiAgICAgLCBtX251bVRpbWVzUmVjcmVhdGVTaG91bGRGYWlsKDApCkBAIC04
MCw2ICs4MSw4IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlCiAgICAgLCBtX3NldHRpbmdzKHNl
dHRpbmdzKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxlKHRy
dWUpCisgICAgLCBtX21lbW9yeUFsbG9jYXRpb25CeXRlcygwKQorICAgICwgbV9tZW1vcnlBbGxv
Y2F0aW9uSXNGb3JEaXNwbGF5KGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKICAg
ICAsIG1fbWluUGFnZVNjYWxlRmFjdG9yKDEpCiAgICAgLCBtX21heFBhZ2VTY2FsZUZhY3Rvcigx
KQpAQCAtMTQ5LDYgKzE1MiwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoKQogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSgwLCAwLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCku
bWF4VGV4dHVyZVNpemUpOwogCisgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNhbWUgYXMgc2V0
Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcywgYnV0CisgICAgLy8gd2UncmUgaW4g
dGhlIG1pZGRsZSBvZiBhIGNvbW1pdCBoZXJlIGFuZCBkb24ndCB3YW50IHRvIGZvcmNlIGFub3Ro
ZXIuCisgICAgbV9tZW1vcnlBbGxvY2F0aW9uQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExp
bWl0Qnl0ZXMoZGV2aWNlVmlld3BvcnRTaXplKCkpOworICAgIG1fbWVtb3J5QWxsb2NhdGlvbklz
Rm9yRGlzcGxheSA9IHRydWU7CisKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRy
dWU7CiAKICAgICBtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IEludFNpemUobWluKG1fc2V0
dGluZ3MuZGVmYXVsdFRpbGVTaXplLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCkBAIC0yNDksNiArMjU3LDggQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKG1f
cGFnZVNjYWxlRmFjdG9yLCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9tYXhQYWdlU2NhbGVGYWN0
b3IpOwogICAgIGhvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIGhvc3RJbXBsLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQobV9oYXNUcmFuc3Bh
cmVudEJhY2tncm91bmQpOworICAgIGhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fdmlzaWJsZSk7Cisg
ICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lQ2FuQmVEcmF3bihtX2ZyYW1lSXNGb3JEaXNwbGF5
KTsKIAogICAgIG1fZnJhbWVOdW1iZXIrKzsKIH0KQEAgLTMxOSw2ICszMjksMTEgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KCkKICAgICBtX3Byb3h5LT5zZXROZWVkc0Nv
bW1pdCgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNGb3JjZWRDb21taXQo
KQoreworICAgIG1fcHJveHktPnNldE5lZWRzRm9yY2VkQ29tbWl0KCk7Cit9CisKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgbV9wcm94eS0+c2V0TmVlZHNS
ZWRyYXcoKTsKQEAgLTM4NCwxNSArMzk5LDM1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRW
aXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBpZiAobV92aXNpYmxlID09IHZpc2libGUpCiAg
ICAgICAgIHJldHVybjsKKwogICAgIG1fdmlzaWJsZSA9IHZpc2libGU7Ci0gICAgbV9wcm94eS0+
c2V0VmlzaWJsZSh2aXNpYmxlKTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzdHVmZiwg
aXQgaXMgaGVyZSBqdXN0IGZvciB0aGUgbTIwIG1lcmdlLgorICAgIGlmICghbV92aXNpYmxlICYm
IG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKSB7CisgICAgICAgIGlmIChtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyKQorICAg
ICAgICAgICAgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygwKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
cyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7
CisgICAgfQorCisgICAgc2V0TmVlZHNGb3JjZWRDb21taXQoKTsKIH0KIAotdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmV2aWN0QWxsQ29udGVudFRleHR1cmVzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCBieXRlcykKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+
ZXZpY3RBbmRSZW1vdmVBbGxEZWxldGVkVGV4dHVyZXMoKTsKKyAgICBpZiAobV9tZW1vcnlBbGxv
Y2F0aW9uQnl0ZXMgPT0gYnl0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVtb3J5QWxs
b2NhdGlvbkJ5dGVzID0gYnl0ZXM7CisgICAgbV9tZW1vcnlBbGxvY2F0aW9uSXNGb3JEaXNwbGF5
ID0gYnl0ZXM7CisKKyAgICAvLyBXaGVuIG5vdCB2aXNpYmxlLCBmb3JjZSBhIGNvbW1pdCBzbyB0
aGF0IHdlIGNoYW5nZSBvdXIgbWVtb3J5IGFsbG9jYXRpb24KKyAgICAvLyBhbmQgZXZpY3QvZGVs
ZXRlIGFueSB0ZXh0dXJlcyBpZiB3ZSBhcmUgYmVpbmcgcmVxdWVzdGVkIHRvLgorICAgIGlmICgh
bV92aXNpYmxlKQorICAgICAgICBzZXROZWVkc0ZvcmNlZENvbW1pdCgpOworICAgIGVsc2UKKyAg
ICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKQEAgLTQzOSwxMCArNDc0
LDE5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVl
ZGVkKCkKIH0KIAogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIsIHNpemVfdCBjb250ZW50c01lbW9yeUxpbWl0Qnl0ZXMpCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKLSAgICBBU1NFUlQo
Y29udGVudHNNZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICAvLyBUaGUgdmlzaWJsZSBzdGF0ZSBhbmQg
bWVtb3J5IGFsbG9jYXRpb24gYXJlIHNldCBpbmRlcGVuZGVudGx5IGFuZCBpbgorICAgIC8vIGFy
Yml0cmFyeSBvcmRlciwgc28gZG8gbm90IGNoYW5nZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gdXNl
ZCBmb3IgdGhlCisgICAgLy8gY3VycmVudCBjb21taXQgdW50aWwgYm90aCB2YWx1ZXMgbWF0Y2gg
aW50ZW50aW9ucy4KKyAgICAvLyBGSVhNRTogVGhlc2UgdHdvIHN0YXRlcyBzaG91bGQgYmUgY29t
YmluZWQgaW50byBhIHNpbmdsZSBhY3Rpb24gc28gd2UKKyAgICAvLyBuZWVkIGEgc2luZ2xlIGNv
bW1pdCB0byBjaGFuZ2UgdmlzaWJsZSBzdGF0ZSwgYW5kIHRoaXMgY2FuIGJlIHJlbW92ZWQuCisg
ICAgYm9vbCBtZW1vcnlBbGxvY2F0aW9uU3RhdGVNYXRjaGVzVmlzaWJpbGl0eSA9IG1fdmlzaWJs
ZSA9PSBtX21lbW9yeUFsbG9jYXRpb25Jc0ZvckRpc3BsYXk7CisgICAgaWYgKG1lbW9yeUFsbG9j
YXRpb25TdGF0ZU1hdGNoZXNWaXNpYmlsaXR5KSB7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMobV9tZW1vcnlBbGxvY2F0aW9u
Qnl0ZXMpOworICAgICAgICBtX2ZyYW1lSXNGb3JEaXNwbGF5ID0gbV9tZW1vcnlBbGxvY2F0aW9u
SXNGb3JEaXNwbGF5OworICAgIH0KIAogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ1MCw4ICs0OTQsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIHNpemVfdCBjb250ZW50c01lbQogICAgIGlm
ICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoY29udGVu
dHNNZW1vcnlMaW1pdEJ5dGVzKTsKLQogICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSwgdXBk
YXRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNmY2OTQ2ZTMxYzdh
MzNhYmFkZjc4ZDY1NjUwZTBiOTM1MjY2NjU0Zi4uNThiN2QyYjhjMThjMmI0ODU0YWM2Y2M1MmIy
OGZmNjA4ZDY4MWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE3MSw3ICsx
NzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCk7
CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUg
dG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4KICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRl
cmVySWZOZWVkZWQoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJiwg
c2l6ZV90IGNvbnRlbnRzTWVtb3J5TGltaXRCeXRlcyk7CisgICAgdm9pZCB1cGRhdGVMYXllcnMo
Q0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQogCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TmVlZHNBbmltYXRlKCk7CiAgICAgLy8gdmlydHVhbCBmb3IgdGVzdGluZwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdCgpOworICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRD
b21taXQoKTsKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAgICAgYm9vbCBjb21taXRSZXF1
ZXN0ZWQoKSBjb25zdDsKIApAQCAtMjI3LDEyICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkgeyBtX2hhc1RyYW5z
cGFyZW50QmFja2dyb3VuZCA9IHRyYW5zcGFyZW50OyB9CiAKICAgICBUZXh0dXJlTWFuYWdlciog
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0OwotCi0gICAgLy8gVGhpcyB3aWxsIGNhdXNl
IGNvbnRlbnRzIHRleHR1cmUgbWFuYWdlciB0byBldmljdCBhbGwgdGV4dHVyZXMsIGJ1dAotICAg
IC8vIHdpdGhvdXQgZGVsZXRpbmcgdGhlbS4gVGhpcyBoYXBwZW5zIGFmdGVyIGFsbCBjb250ZW50
IHRleHR1cmVzIGhhdmUKLSAgICAvLyBhbHJlYWR5IGJlZW4gZGVsZXRlZCBvbiBpbXBsLCBhZnRl
ciBnZXR0aW5nIGEgMCBhbGxvY2F0aW9uIGxpbWl0LgotICAgIC8vIFNldCBkdXJpbmcgYSBjb21t
aXQsIGJ1dCBiZWZvcmUgdXBkYXRlTGF5ZXJzLgotICAgIHZvaWQgZXZpY3RBbGxDb250ZW50VGV4
dHVyZXMoKTsKKyAgICB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90KTsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsg
fQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKQEAgLTI4NSw2ICsyODEsNyBAQCBwcml2YXRl
OgogICAgIENDTGF5ZXJUcmVlSG9zdENsaWVudCogbV9jbGllbnQ7CiAKICAgICBpbnQgbV9mcmFt
ZU51bWJlcjsKKyAgICBib29sIG1fZnJhbWVJc0ZvckRpc3BsYXk7CiAKICAgICBPd25QdHI8Q0NQ
cm94eT4gbV9wcm94eTsKICAgICBib29sIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkOwpAQCAt
MzAzLDYgKzMwMCw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdmlzaWJsZTsKIAorICAgIHNp
emVfdCBtX21lbW9yeUFsbG9jYXRpb25CeXRlczsKKyAgICBib29sIG1fbWVtb3J5QWxsb2NhdGlv
bklzRm9yRGlzcGxheTsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgUmVmUHRyPFJhdGVMaW1pdGVyPiA+IFJhdGVMaW1pdGVyTWFwOwogICAgIFJh
dGVMaW1pdGVyTWFwIG1fcmF0ZUxpbWl0ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCmluZGV4IDlhMTFiZDI4MDhiMjlmM2U4MmM5NGM3ZDYxMGYxZjAwYWM4NWNh
ZjkuLjk0MTQxZDY5YjU0YjllZDJhMDE1YmVjNThjZDdmYzE5YTZlY2YyNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVk
ZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJj
Yy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIK
QEAgLTEyMSw4ICsxMjAsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQwogICAgICwgbV9zZXR0
aW5ncyhzZXR0aW5ncykKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlz
aWJsZSh0cnVlKQotICAgICwgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENv
bW1pdChmYWxzZSkKLSAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1h
bmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSkKKyAgICAsIG1fc291cmNlRnJh
bWVDYW5CZURyYXduKHRydWUpCiAgICAgLCBtX2hlYWRzVXBEaXNwbGF5KENDSGVhZHNVcERpc3Bs
YXk6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlU2NhbGUoMSkKICAgICAsIG1fcGFnZVNjYWxlRGVs
dGEoMSkKQEAgLTE1Nyw3ICsxNTUsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1p
dENvbXBsZXRlKCkKICAgICAvLyBSZWNvbXB1dGUgbWF4IHNjcm9sbCBwb3NpdGlvbjsgbXVzdCBi
ZSBhZnRlciBsYXllciBjb250ZW50IGJvdW5kcyBhcmUKICAgICAvLyB1cGRhdGVkLgogICAgIHVw
ZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdl
ZFNpbmNlTGFzdENvbW1pdCA9IGZhbHNlOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNhbkRyYXcoKQpAQCAtMTY4LDEyICsxNjUsMTIgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYW5EcmF3KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghbV9sYXllclJlbmRl
cmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY29udGVudHNUZXh0dXJlc1dl
cmVQdXJnZWRTaW5jZUxhc3RDb21taXQpCisgICAgaWYgKCFtX3NvdXJjZUZyYW1lQ2FuQmVEcmF3
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCi1DQ0dyYXBo
aWNzQ29udGV4dCogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGV4dCgpIGNvbnN0CitDQ0dyYXBo
aWNzQ29udGV4dCogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGV4dCgpCiB7CiAgICAgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsKIH0KQEAgLTQ3MCwyMCArNDY3LDkgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVy
ZXMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKHNpemVfdCBieXRlcykKIHsKLSAgICBjb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoKS0+ZGVsZXRlQWxsVGV4dHVyZXMoKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVy
Z2VkU2luY2VMYXN0Q29tbWl0ID0gdHJ1ZTsKLX0KLQotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpCi17Ci0gICAgaWYg
KG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMgPT0gYnl0ZXMpCi0gICAgICAgIHJldHVybjsK
LSAgICBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzID0gYnl0ZXM7Ci0KLSAgICBBU1NFUlQo
Ynl0ZXMpOwotICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOworICAg
IG1fY2xpZW50LT5wb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFp
blRocmVhZE9uSW1wbFRocmVhZChieXRlcyk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IDkzOWU0MmU2Yjc2ZmNjNzQ1OWJmMjBlNmNkNmVhNjhiZTBh
NGFhOTcuLjgyNzkxMjQ4N2YyMGIwMTc2N2U0NDE2OTdlNDNkOGZjYTM0YmEzNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093
blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHNpemVfdCkgPSAwOwogfTsKIAogLy8gQ0NMYXll
clRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2Np
YXRlZCByZW5kZXJpbmcgc3RhdGUKQEAgLTEwOCwxMiArMTA5LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
b25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1
bGxSb290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUNv
bnRlbnRzVGV4dHVyZXMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFOwogCiAg
ICAgLy8gSW1wbGVtZW50YXRpb24KICAgICBib29sIGNhbkRyYXcoKTsKLSAgICBDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCgpIGNvbnN0OworICAgIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KCk7CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRG
b250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwpAQCAtMTQ2LDggKzE0Niw4IEBAIHB1
YmxpYzoKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVO
dW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVyOyB9CiAKLSAgICBib29s
IGNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdDsgfQotICAgIHNp
emVfdCBtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5
QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7IH0KKyAgICBib29sIHNvdXJjZUZyYW1lQ2FuQmVEcmF3bigp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRnJhbWVDYW5CZURyYXduOyB9CisgICAgdm9pZCBzZXRT
b3VyY2VGcmFtZUNhbkJlRHJhd24oYm9vbCBzb3VyY2VGcmFtZUNhbkJlRHJhd24pIHsgbV9zb3Vy
Y2VGcmFtZUNhbkJlRHJhd24gPSBzb3VyY2VGcmFtZUNhbkJlRHJhd247IH0KIAogICAgIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9
CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtMjM1LDggKzIz
NSw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBm
bG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV92aXNpYmxlOwotICAgIGJvb2wg
bV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdDsKLSAgICBzaXplX3Qg
bV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsKKyAgICBib29sIG1fc291cmNlRnJhbWVDYW5C
ZURyYXduOwogCiAgICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IG1faGVhZHNVcERpc3BsYXk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaAppbmRleCAxYzJmOWNhZmQ1MzUyNWNmMWI5NDY3NWRkNGEyZjk2ODY0OGYx
OGE1Li5mYjJjYmJhZTk2ZjA3MzMwMDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94
eS5oCkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUg
Y29tcG9zaXRpbmcgc3VyZmFjZSBhc3NvY2lhdGVkIHdpdGggb3VyIGNvbnRleHQgaXMgcmVhZHkg
dG8gdXNlLgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSA9IDA7Ci0KICAgICAvLyBBdHRlbXB0cyB0byBp
bml0aWFsaXplIHRoZSBsYXllciByZW5kZXJlci4gUmV0dXJucyBmYWxzZSBpZiB0aGUgY29udGV4
dCBpc24ndCB1c2FibGUgZm9yIGNvbXBvc2l0aW5nLgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpID0gMDsKIApAQCAtODUsNiArODMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNGb3JjZWRDb21t
aXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRl
eCBhYmFkMDJiYjdkOWQ3YWQ1N2QzYWQzNGY3NTQzNWM0NTg3Y2VkMzc3Li5iODkwODlmMTNkOTdm
YWMxYzg5YzMxMTgwMWViZTZlODg5MWJjMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC00OSw4
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1lbW9y
eUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgPSAwOwogfTsKIAogY2xh
c3MgQ0NSZW5kZXJlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggZDgzNTViZDM2ZWEx
ZDEwZGYyMjg1YzRjMmFiODJjY2ZlOGVjMzY4MC4uODRiODQyMzU4OGJjNDhmMDNjOTY2OGZkZDFj
ZjFjOGRlNzNlZDk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtODgsMTggKzg4LDEx
IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE1haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMoKQog
CiB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUoKQogewotICAgIFRSQUNFX0VW
RU5UMCgiY2MiLCAiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSIpOworICAgIFRSQUNF
X0VWRU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAg
bV9zdGF0ZU1hY2hpbmUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUFib3J0ZWQoKQot
ewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVBYm9ydGVk
Iik7Ci0gICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5GcmFtZUFib3J0ZWQoKTsKLSAgICBwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucygpOwotfQotCiB2b2lkIENDU2NoZWR1bGVyOjpzZXRNYXhGcmFtZXNQ
ZW5kaW5nKGludCBtYXhGcmFtZXNQZW5kaW5nKQogewogICAgIG1fZnJhbWVSYXRlQ29udHJvbGxl
ci0+c2V0TWF4RnJhbWVzUGVuZGluZyhtYXhGcmFtZXNQZW5kaW5nKTsKQEAgLTEwNywxMyArMTAw
LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE1heEZyYW1lc1BlbmRpbmcoaW50IG1heEZyYW1l
c1BlbmRpbmcpCiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKQog
ewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29t
cGxldGUiKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29t
cGxldGUiLCB0aGlzLCAwKTsKICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEZpbmlzaEZy
YW1lKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZExvc2VDb250ZXh0KCkKIHsKLSAgICBU
UkFDRV9FVkVOVDAoImNjIiwgIkNDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4dCIpOworICAgIFRS
QUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkTG9zZUNvbnRleHQiLCB0aGlzLCAwKTsKICAgICBt
X2ZyYW1lUmF0ZUNvbnRyb2xsZXItPmRpZEFib3J0QWxsUGVuZGluZ0ZyYW1lcygpOwogICAgIG1f
c3RhdGVNYWNoaW5lLmRpZExvc2VDb250ZXh0KCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlv
bnMoKTsKQEAgLTEyMSw3ICsxMTQsNyBAQCB2b2lkIENDU2NoZWR1bGVyOjpkaWRMb3NlQ29udGV4
dCgpCiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCgpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250ZXh0Iik7CisgICAg
VFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRSZWNyZWF0ZUNvbnRleHQiLCB0aGlzLCAwKTsK
ICAgICBtX3N0YXRlTWFjaGluZS5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKICAgICBwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpOwogfQpAQCAtMTMyLDcgKzEyNSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6
OnZzeW5jVGljaygpCiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxz
ZTsKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgfQotICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NTY2hlZHVsZXI6OnZzeW5jVGljayIpOworICAgIFRSQUNFX0VWRU5U
KCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7CiAKICAgICBtX3N0YXRlTWFjaGlu
ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCmluZGV4IDNlNmY3YWE3YjgxNTdhYTIyNDYwOWMyOWEzN2Y0NWI2OTZiYmQ2
MTIuLjBlNjk3MTY0MjQ4Y2E2ZmNmZGJhZTFkMzk2MTA0YmI1ZDY3ZmU1ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaApAQCAtOTQsNyArOTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogCiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICB2b2lk
IGJlZ2luRnJhbWVBYm9ydGVkKCk7CiAKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50
KTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCAyM2FiOWFlOTViYjU5MzI1OWI2Nzhk
MWQzYTgzZjAyYTczYWUxZjBhLi45MjhhNmQ2ZDdiZDg4YWIwN2FmNjQ3M2IzZWM4N2UxYmFkMjhk
ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBA
IC0yOTksMTIgKzI5OSw2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJh
bWVDb21wbGV0ZSgpCiAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVM7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVB
Ym9ydGVkKCkKLXsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfRlJB
TUVfSU5fUFJPR1JFU1MpOwotICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfSURMRTsK
LX0KLQogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZykKIHsKICAgICBBU1NFUlQobV9jb21taXRTdGF0
ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IGZlMWIxODBmZTQ5NDc4Mjk5ZjMzNWJhYWQ4
MzY2NWRkZDgyYWQyMTAuLmEzYTk0YzI5NDc3ZWM5NjAwZmFkZjc3ZmZmMTg1OGRkNDcyNDk0NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtMTIwLDEw
ICsxMjAsNiBAQCBwdWJsaWM6CiAgICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJj
ZXMgY2FuIGJlZ2luLgogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKLSAgICAvLyBD
YWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX0JFR0lOX0ZS
QU1FCi0gICAgLy8gZnJvbSBuZXh0U3RhdGUgaWYgdGhlIGNsaWVudCByZWplY3RzIHRoZSBiZWdp
bkZyYW1lIG1lc3NhZ2UuCi0gICAgdm9pZCBiZWdpbkZyYW1lQWJvcnRlZCgpOwotCiAgICAgLy8g
Q2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhl
IHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KICAgICB2b2lkIGJlZ2luVXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBmNTRiYTc3NTA1MjU0OTdkYWNmNjcxNWU4MDdi
MmMxOGNhOGMyYjdjLi4xNGNkZjFjMDgwOGIzNTFjNGQwYWMyNmE4N2M2MGIzYmE1YWUwNDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTUzLDEyICsxNTMs
NiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldFN1cmZhY2VSZWFkeSgpCiAgICAgLy8g
U2NoZWR1bGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSBlbWJlZGRlciBpbiB0aGUgc2luZ2xlIHRo
cmVhZCBjYXNlLCBzbyBub3RoaW5nIHRvIGRvLgogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQotewotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOwotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodmlzaWJsZSk7
Ci19Ci0KIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CkBAIC0yNjQsNiArMjU4
LDEyIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKIH0KIAordm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzZXROZWVkc0ZvcmNlZENvbW1pdCgpCit7CisgICAgLy8gVGhpcyBwcm94eSBk
b2Vzbid0IGJsb2NrIGNvbW1pdHMgd2hlbiBub3QgdmlzaWJsZSBzbyB1c2UgYSBub3JtYWwgY29t
bWl0LgorICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIC8vIEZJWE1FOiBPbmNlIHdlIG1vdmUgcmVuZGVy
X3dpZGdldCBzY2hlZHVsaW5nIGludG8gdGhpcyBjbGFzcywgd2UgY2FuCkBAIC0yOTAsOCArMjkw
LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICAgICAgRGVidWdTY29w
ZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpKQotICAgICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFk
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3Qg
PSAwOwpAQCAtMzExLDYgKzMxMCwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RB
bmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cgogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7
CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cG9zdFNldENvbnRlbnRzTWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90IGJ5dGVzKQor
eworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgRGVidWdTY29wZWRT
ZXRNYWluVGhyZWFkIG1haW47CisgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CisgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKGJ5dGVz
KTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdo
ZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tcG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMzM4LDE1ICszNDUsMTEgQEAg
Ym9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUoKQogewogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLQogICAgIGlmICghbV9sYXllclRyZWVI
b3N0LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVlZGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzV2Vy
ZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmV2aWN0
QWxsQ29udGVudFRleHR1cmVzKCk7Ci0KICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Ci0g
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgbV9sYXllclRyZWVIb3N0
SW1wbC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSk7CisgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21t
aXQoKTsKICAgICBkb0NvbW1pdCh1cGRhdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAppbmRleCA0NmNiMzAyYWM2MTI4NjgwNzJkN2Y5ODgzNWUyZjE3NzA5YWE0MWI1Li45
M2MxMjhiYzg1YTc3YTczMmIxOWEyZGZmZGI3MjM2MmI1ZjkyYTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC00OSw3ICs0OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNTdGFydGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN1cmZhY2VS
ZWFkeSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
Y29tcG9zaXRvcklkZW50aWZpZXI7IH0KQEAgLTU3LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXQo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNGb3JjZWRDb21taXQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgY29tbWl0UmVxdWVzdGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFOwpAQCAtNzMsNiArNzMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJ
REUgeyBtX2xheWVyVHJlZUhvc3QtPnNjaGVkdWxlQ29tcG9zaXRlKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVl
SG9zdC0+c2NoZWR1bGVDb21wb3NpdGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0
aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgYnkgdGhl
IGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nLgogICAg
IHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
aW5kZXggZTJlY2I5YzU4NTkxNWE1MzE2NDA3NGVjZjBiNGM3ZjBkNWFjNTUyNC4uYTliZmJjMWE3
OGFhZWQ5MzYyNDgzMDQxODQ4MDhkZmNiYjU5ZmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKQEAgLTgwLDcgKzgwLDYgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZChmYWxzZSkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZXNBY3F1
aXJlZCh0cnVlKQotICAgICwgbV9pbkNvbXBvc2l0ZUFuZFJlYWRiYWNrKGZhbHNlKQogICAgICwg
bV9tYWluVGhyZWFkUHJveHkoQ0NTY29wZWRUaHJlYWRQcm94eTo6Y3JlYXRlKENDUHJveHk6Om1h
aW5UaHJlYWQoKSkpCiAgICAgLCBtX2JlZ2luRnJhbWVDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQoMCkKICAgICAsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkKDApCkBAIC0xMTUsOSAr
MTE0LDcgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpw
aXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgYmVnaW5G
cmFtZUNvbXBsZXRpb247CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1w
bFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmYmVnaW5GcmFtZUNvbXBsZXRpb24pKSk7
CiAgICAgYmVnaW5GcmFtZUNvbXBsZXRpb24ud2FpdCgpOwotICAgIG1faW5Db21wb3NpdGVBbmRS
ZWFkYmFjayA9IHRydWU7CiAgICAgYmVnaW5GcmFtZSgpOwotICAgIG1faW5Db21wb3NpdGVBbmRS
ZWFkYmFjayA9IGZhbHNlOwogCiAgICAgLy8gUGVyZm9ybSBhIHN5bmNocm9ub3VzIHJlYWRiYWNr
LgogICAgIFJlYWRiYWNrUmVxdWVzdCByZXF1ZXN0OwpAQCAtMjA2LDIyICsyMDMsNiBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVhZCgpCiAgICAgbV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiB9CiAKLXZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCi17Ci0gICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlIik7Ci0gICAgQ0NDb21wbGV0aW9uRXZl
bnQgY29tcGxldGlvbjsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksIHZpc2libGUpKTsKLSAgICBj
b21wbGV0aW9uLndhaXQoKTsKLX0KLQotdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHZpc2libGUpCi17
Ci0gICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBs
VGhyZWFkIik7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsK
LSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKLSAgICBj
b21wbGV0aW9uLT5zaWduYWwoKTsKLX0KLQogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcigpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyIiwgdGhpcywgMCk7CkBAIC0zMTksNiArMzAwLDE4IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQogICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5l
ZWRzRm9yY2VkQ29tbWl0KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2ZvcmNlZENvbW1pdFJlcXVlc3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzRm9yY2VkQ29tbWl0IiwgdGhpcywgMCk7Cisg
ICAgbV9jb21taXRSZXF1ZXN0ZWQgPSB0cnVlOworICAgIG1fZm9yY2VkQ29tbWl0UmVxdWVzdGVk
ID0gdHJ1ZTsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNGb3JjZWRDb21taXRPbkltcGxU
aHJlYWQpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpkaWRMb3NlQ29udGV4dE9uSW1wbFRo
cmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKQEAgLTM1Niw2ICszNDksMTIg
QEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmkKICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRh
c2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25F
dmVudHMsIGV2ZW50cywgd2FsbENsb2NrVGltZSkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6
OnBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKHNpemVfdCBieXRlcykKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMsIGJ5
dGVzKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC00NTcsOCArNDU2LDYgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKICAgICBtX3BlbmRpbmdCZWdpbkZy
YW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3Jv
bGxEZWx0YXMoKTsKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFk
b3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVx
dWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmdldCgp
OwotICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5jb250ZW50c1RleHR1cmVzV2VyZURl
bGV0ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNp
bmNlTGFzdENvbW1pdCgpOwotICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5tZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKCk7CiAKICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKSk7CiAKQEAgLTUw
MSwxNyArNDk4LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAvLyBS
ZS1kbyB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRoZSBzY3JvbGxJbmZv
IG9uIHRoZSBCRkFDIG1lc3NhZ2UuCiAgICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNjcm9sbEFu
ZFNjYWxlKCpyZXF1ZXN0LT5zY3JvbGxJbmZvKTsKIAotICAgIGlmICghbV9pbkNvbXBvc2l0ZUFu
ZFJlYWRiYWNrICYmICFtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSkgewotICAgICAgICBtX2Nv
bW1pdFJlcXVlc3RlZCA9IGZhbHNlOwotICAgICAgICBtX2ZvcmNlZENvbW1pdFJlcXVlc3RlZCA9
IGZhbHNlOwotCi0gICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiRWFybHlPdXRfTm90VmlzaWJs
ZSIpOwotICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFib3J0ZWRPbkltcGxUaHJl
YWQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+d2ls
bEJlZ2luRnJhbWUoKTsKIAorICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBpZiBp
dCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZC4KICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUFuaW1hdGlvbnMocmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAg
IG1fbGF5ZXJUcmVlSG9zdC0+bGF5b3V0KCk7CiAKQEAgLTUyNCwxMCArNTEzLDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAocmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKQotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRleHR1cmVzKCk7Ci0KLSAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygqcmVxdWVzdC0+dXBkYXRlciwgcmVxdWVzdC0+bWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXMpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCpyZXF1
ZXN0LT51cGRhdGVyKTsKIAogICAgIC8vIE9uY2Ugc2luZ2xlIGJ1ZmZlcmVkIGxheWVycyBhcmUg
Y29tbWl0dGVkLCB0aGV5IGNhbm5vdCBiZSBtb2RpZmllZCB1bnRpbAogICAgIC8vIHRoZXkgYXJl
IGRyYXduIGJ5IHRoZSBpbXBsIHRocmVhZC4KQEAgLTU3NSwxNiArNTYxLDYgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqIGNvbXBsZXRpb24KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNv
bXBsZXRlKCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFib3J0ZWRPbklt
cGxUaHJlYWQoKQotewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFib3J0ZWRPbkltcGxUaHJlYWQiKTsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwotICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwotCi0gICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmJlZ2luRnJhbWVBYm9ydGVkKCk7Ci19Ci0KIGJvb2wgQ0NUaHJlYWRQcm94
eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKQEAgLTY4NSw3ICs2NjEsOSBAQCBDQ1NjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZQogICAgICAgICB9CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBs
VGhyZWFkLT5jb21wbGV0aW9uLnNpZ25hbCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9u
SW1wbFRocmVhZCA9IDA7Ci0gICAgfSBlbHNlIGlmIChkcmF3RnJhbWUpCisgICAgfQorCisgICAg
aWYgKGRyYXdGcmFtZSkKICAgICAgICAgcmVzdWx0LmRpZFN3YXAgPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zd2FwQnVmZmVycygpOwogCiAgICAgLy8gVGVsbCB0aGUgbWFpbiB0aHJlYWQgdGhhdCB0
aGUgdGhlIG5ld2x5LWNvbW1pdGVkIGZyYW1lIHdhcyBkcmF3bi4KQEAgLTc2OCw2ICs3NDYsMTQg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnQKICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1h
dGlvbkV2ZW50cyhldmVudHMsIHdhbGxDbG9ja1RpbWUpOwogfQogCit2b2lkIENDVGhyZWFkUHJv
eHk6OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3Qp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldENvbnRlbnRzTWVtb3J5
QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoYnl0ZXMpOworfQorCiBjbGFzcyBDQ1RocmVhZFByb3h5Q29u
dGV4dFJlY3JlYXRpb25UaW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRp
b25UaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXIocHJveHkpKTsgfQpAQCAtODUw
LDggKzgzNiw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiLCB0aGlzLCAw
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoKSkKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgIG1faW5wdXRIYW5k
bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigp
OwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKaW5kZXggNTcyZjlmNDg4M2FmNDZiYTJkNzJlOTlkNTg4NWQ2NWY4YzZiZWE0MC4uNTUy
MWYyZjA2M2MxZWFkYTBjOWY3NjEyZjQ4Zjk3YmM4NTg5ZDM0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaApAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3Rh
cnRlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplQ29udGV4
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9z
aXRvcklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERTsKQEAgLTY0LDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNGb3JjZWRDb21t
aXQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgY29tbWl0UmVxdWVzdGVkKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFIHsgfQpAQCAtODAsNiAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhy
ZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4s
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNl
dENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQoc2l6ZV90KSBPVkVSUklERTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSBPVkVSUklERTsKQEAgLTEwNyw4ICsx
MDgsNiBAQCBwcml2YXRlOgogICAgICAgICBkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWU7
CiAgICAgICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvOwogICAgICAg
ICBDQ1RleHR1cmVVcGRhdGVyKiB1cGRhdGVyOwotICAgICAgICBib29sIGNvbnRlbnRzVGV4dHVy
ZXNXZXJlRGVsZXRlZDsKLSAgICAgICAgc2l6ZV90IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
OwogICAgIH07CiAgICAgT3duUHRyPEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZT4gbV9wZW5kaW5n
QmVnaW5GcmFtZVJlcXVlc3Q7CiAKQEAgLTExNyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZm
ZXJzKCk7CiAgICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2b2lkIHNldENvbnRl
bnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KTsKICAgICB2b2lkIGJlZ2luQ29u
dGV4dFJlY3JlYXRpb24oKTsKICAgICB2b2lkIHRyeVRvUmVjcmVhdGVDb250ZXh0KCk7CiAKQEAg
LTEyOSwxMyArMTI5LDExIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB2b2lkIGZvcmNlQmVnaW5G
cmFtZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgYmVnaW5GcmFt
ZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCBiZWdp
bkZyYW1lQWJvcnRlZE9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25J
bXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNl
QW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKICAgICB2b2lkIGZpbmlz
aEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQg
aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lk
IHNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVhZCgpOwotICAgIHZvaWQgc2V0VmlzaWJsZU9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bnRleHRPbkltcGxUaHJlYWQoQ0NHcmFwaGljc0NvbnRleHQqKTsKICAgICB2b2lkIGluaXRpYWxp
emVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5p
dGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIHZvaWQg
bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpAQCAt
MTU5LDcgKzE1Nyw2IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBt
X2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNNYWluVGhyZWFkQ29weTsKICAgICBib29sIG1fc3Rh
cnRlZDsKICAgICBib29sIG1fdGV4dHVyZXNBY3F1aXJlZDsKLSAgICBib29sIG1faW5Db21wb3Np
dGVBbmRSZWFkYmFjazsKIAogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBtX2xheWVy
VHJlZUhvc3RJbXBsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IGRi
YjA3YTAwNGEzYTcwNGFkNTJmOTJmODMwNjQ4Y2I0OGRhZWI1MmYuLjQ2ZTU3OGY2MzRjOGVhNGIy
M2Y2MDU2YzNmMzUzZjkzMDkwOTcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwu
Y3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiIC8vIEZvciBHTEMgbWFjcm8KICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJ
bWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgpAQCAtNzYsNyArNzUsNyBAQCBDQ1ZpZGVvTGF5ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1w
bCgpCiAgICAgICAgIG1fcHJvdmlkZXItPnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCgwKTsK
ICAgICAgICAgbV9wcm92aWRlciA9IDA7CiAgICAgfQotICAgIGZyZWVQbGFuZURhdGEobGF5ZXJU
cmVlSG9zdEltcGwoKS0+Y29udGV4dCgpKTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhv
c3RJbXBsKCktPmxheWVyUmVuZGVyZXIoKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVz
OyArK2kpCkBAIC0xMjYsNyArMTI1LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJh
dyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY28KICAgICBt
X3Byb3ZpZGVyTXV0ZXgubG9jaygpOwogCiAgICAgd2lsbERyYXdJbnRlcm5hbChsYXllclJlbmRl
cmVyLCBjb250ZXh0KTsKLSAgICBmcmVlVW51c2VkUGxhbmVEYXRhKGNvbnRleHQpOworICAgIGZy
ZWVVbnVzZWRQbGFuZURhdGEobGF5ZXJSZW5kZXJlcik7CiAKICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIG1fcHJvdmlkZXJNdXRleC51bmxvY2soKTsKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lk
IENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJSZW5k
ZXJlciwgQ0NHcmFwaGljc0NvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFh
bGxvY2F0ZVBsYW5lRGF0YShsYXllclJlbmRlcmVyLCBjb250ZXh0KSkgeworICAgIGlmICghYWxs
b2NhdGVQbGFuZURhdGEobGF5ZXJSZW5kZXJlcikpIHsKICAgICAgICAgbV9wcm92aWRlci0+cHV0
Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjgzLDQzICsyODIsMjUgQEAgSW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21w
dXRlVmlzaWJsZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICBy
ZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIEND
VmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVE
YXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIpCiB7CiAgICAgaWYgKHRleHR1cmVJZCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0g
Y29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M0QpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEdMQyhjb250ZXh0M0QsIHRleHR1cmVJZCA9IGNvbnRleHQzRC0+Y3Jl
YXRlVGV4dHVyZSgpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKLSAgICAvLyBEbyBi
YXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMoY29udGV4dDNELCBjb250
ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAvLyBOUE9UIHRleHR1cmVz
IGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFLgotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkp
OwotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotCi0gICAgR0xDKGNvbnRleHQzRCwg
Y29udGV4dDNELT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkpOwotCisgICAgdGV4dHVyZUlkID0g
bGF5ZXJSZW5kZXJlci0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCktPmNyZWF0ZVRleHR1cmUo
c2l6ZSwgZm9ybWF0KTsKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQogCi12b2lkIENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmU6OmZyZWVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyKQogewogICAgIGlmICghdGV4dHVyZUlkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNE
KCk7Ci0gICAgaWYgKCFjb250ZXh0M0QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdMQyhjb250
ZXh0M0QsIGNvbnRleHQzRC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKKyAgICBsYXllclJl
bmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKS0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJl
SWQsIHNpemUsIGZvcm1hdCk7CiAgICAgdGV4dHVyZUlkID0gMDsKIH0KIAotYm9vbCBDQ1ZpZGVv
TGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2Nh
dGVQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBpbnQgbWF4VGV4
dHVyZVNpemUgPSBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZTsK
ICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lSW5kZXggPSAwOyBwbGFuZUluZGV4IDwgbV9mcmFtZS0+
cGxhbmVzKCk7ICsrcGxhbmVJbmRleCkgewpAQCAtMzMxLDEzICszMTIsMTMgQEAgYm9vbCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVy
LCBDQ0dyYXBoaWNzQ28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAo
cGxhbmUuc2l6ZSAhPSByZXF1aXJlZFRleHR1cmVTaXplIHx8IHBsYW5lLmZvcm1hdCAhPSBtX2Zv
cm1hdCkgewotICAgICAgICAgICAgcGxhbmUuZnJlZURhdGEoY29udGV4dCk7CisgICAgICAgICAg
ICBwbGFuZS5mcmVlRGF0YShsYXllclJlbmRlcmVyKTsKICAgICAgICAgICAgIHBsYW5lLnNpemUg
PSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgICAgICAgICAgcGxhbmUuZm9ybWF0ID0gbV9mb3Jt
YXQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXBsYW5lLnRleHR1cmVJZCkgewotICAgICAg
ICAgICAgaWYgKCFwbGFuZS5hbGxvY2F0ZURhdGEoY29udGV4dCkpCisgICAgICAgICAgICBpZiAo
IXBsYW5lLmFsbG9jYXRlRGF0YShsYXllclJlbmRlcmVyKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBwbGFuZS52aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxl
U2l6ZSgqbV9mcmFtZSwgcGxhbmVJbmRleCk7CiAgICAgICAgIH0KQEAgLTM3MCwxNyArMzUxLDE3
IEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXll
clJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXll
clJlbmRlcmVyKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYlZp
ZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVE
YXRhKGNvbnRleHQpOworICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKGxheWVyUmVu
ZGVyZXIpOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVV
bnVzZWRQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcikKIHsKICAgICB1bnNpZ25l
ZCBmaXJzdFVudXNlZFBsYW5lID0gbV9mcmFtZSA/IG1fZnJhbWUtPnBsYW5lcygpIDogMDsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdFVudXNlZFBsYW5lOyBpIDwgV2ViS2l0OjpXZWJWaWRl
b0ZyYW1lOjptYXhQbGFuZXM7ICsraSkKLSAgICAgICAgbV9mcmFtZVBsYW5lc1tpXS5mcmVlRGF0
YShjb250ZXh0KTsKKyAgICAgICAgbV9mcmFtZVBsYW5lc1tpXS5mcmVlRGF0YShsYXllclJlbmRl
cmVyKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRSZWNlaXZlRnJhbWUoKQpAQCAt
NDAwLDcgKzM4MSw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkVXBkYXRlTWF0cml4KGNv
bnN0IGZsb2F0IG1hdHJpeFsxNl0pCiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkTG9zZUNv
bnRleHQoKQogewotICAgIGZyZWVQbGFuZURhdGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+Y29udGV4
dCgpKTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhvc3RJbXBsKCktPmxheWVyUmVuZGVy
ZXIoKSk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6c2V0TmVlZHNSZWRyYXcoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IGIyZTA4OGZjZjcxMzQwMmZkNDJlNWE0Y2Uz
YzI2OTc4ZTA1NTUxMTQuLmJlZjFkNWYwOWU1NTQxNzhlZTE1MTAyNzRjNTBkODI2MDVjNTM2MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGlj
OgogCiAgICAgICAgIEZyYW1lUGxhbmUoKSA6IHRleHR1cmVJZCgwKSB7IH0KIAotICAgICAgICBi
b29sIGFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgICAgICB2b2lkIGZyZWVE
YXRhKENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgIGJvb2wgYWxsb2NhdGVEYXRhKENDUmVu
ZGVyZXIqKTsKKyAgICAgICAgdm9pZCBmcmVlRGF0YShDQ1JlbmRlcmVyKik7CiAgICAgfTsKIAog
cHJpdmF0ZToKQEAgLTg2LDEwICs4NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiVmlkZW9M
YXllciI7IH0KIAogICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVyKiwgQ0NHcmFw
aGljc0NvbnRleHQqKTsKLSAgICBib29sIGFsbG9jYXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqLCBD
Q0dyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgYWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5kZXJl
ciopOwogICAgIGJvb2wgY29weVBsYW5lRGF0YShDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRl
eHQqKTsKLSAgICB2b2lkIGZyZWVQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2
b2lkIGZyZWVVbnVzZWRQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGZy
ZWVQbGFuZURhdGEoQ0NSZW5kZXJlciopOworICAgIHZvaWQgZnJlZVVudXNlZFBsYW5lRGF0YShD
Q1JlbmRlcmVyKik7CiAKICAgICAvLyBHdWFyZHMgdGhlIGRlc3RydWN0aW9uIG9mIG1fcHJvdmlk
ZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAgTXV0ZXggbV9wcm92aWRlck11
dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBkMTliMDM2YmIwMWEyNmNhZGU1MTg0N2QxMzJjNjBm
NTNmMWVkNzE0Li40OTUzNmJiNDg3NDQ0NWYwODU4MTRmOGEwODgwMjVkODk4OWNkYzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRy
YXcgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFk
KCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxp
bWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90KSBPVkVSUklERSB7IH0KIAog
ICAgIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdChi
b29sIHBhcnRpYWxTd2FwLCBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0Nv
bnRleHQsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJvb3RQdHIpCiAgICAgewpAQCAtMTc5MSw3
ICsxNzkyLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcE5v
VXBkYXRlKQogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrQ29udGV4
dCk7CiB9CiAKLWNsYXNzIFBhcnRpYWxTd2FwQ29udGV4dCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0QgeworY2xhc3MgUGFydGlhbFN3YXBDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNE
ZW51bSBuYW1lKQogICAgIHsKQEAgLTIwNDAsMTcgKzIwNDEsMTIgQEAgcHJpdmF0ZToKIC8vIEZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRCBoYXZlIGFuIGlkIG9mIDEpLgogY2xhc3MgU3RyaWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1
YmxpYzoKLSAgICBTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRCgpCi0gICAgICAgIDogRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNEKCkKLSAgICB7Ci0gICAgICAgIG1fbmV4dFRleHR1cmVJZCA9IDc7
IC8vIFN0YXJ0IGFsbG9jYXRpbmcgdGV4dHVyZSBpZHMgbGFyZ2VyIHRoYW4gYW55IG90aGVyIHJl
c291cmNlIElEcyBzbyB3ZSBjYW4gdGVsbCBpZiBzb21lb25lJ3MgbWl4aW5nIHVwIHRoZWlyIHJl
c291cmNlIHR5cGVzLgotICAgIH0KLQogICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVCdWZmZXIo
KSB7IHJldHVybiAyOyB9CiAgICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZUZyYW1lYnVmZmVyKCkg
eyByZXR1cm4gMzsgfQogICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVQcm9ncmFtKCkgeyByZXR1
cm4gNDsgfQogICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVSZW5kZXJidWZmZXIoKSB7IHJldHVy
biA1OyB9CiAgICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZVNoYWRlcihXR0MzRGVudW0pIHsgcmV0
dXJuIDY7IH0KKyAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlVGV4dHVyZSgpIHsgcmV0dXJuIDc7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVCdWZmZXIoV2ViR0xJZCBpZCkKICAgICB7CkBA
IC0yMDgyLDE3ICsyMDc4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFERF9GQUlMVVJFKCkg
PDwgIlRyeWluZyB0byBkZWxldGUgc2hhZGVyIGlkICIgPDwgaWQ7CiAgICAgfQogCi0gICAgdmly
dHVhbCBXZWJHTElkIGNyZWF0ZVRleHR1cmUoKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgdGV4
dHVyZUlkID0gRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCk7Ci0gICAg
ICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5hZGQodGV4dHVyZUlkKTsKLSAgICAgICAgcmV0dXJu
IHRleHR1cmVJZDsKLSAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUoV2ViR0xJ
ZCBpZCkKICAgICB7Ci0gICAgICAgIGlmICghbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5z
KGlkKSkKKyAgICAgICAgaWYgKGlkICE9IDcpCiAgICAgICAgICAgICBBRERfRkFJTFVSRSgpIDw8
ICJUcnlpbmcgdG8gZGVsZXRlIHRleHR1cmUgaWQgIiA8PCBpZDsKLSAgICAgICAgbV9hbGxvY2F0
ZWRUZXh0dXJlSWRzLnJlbW92ZShpZCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRC
dWZmZXIoV0dDM0RlbnVtLCBXZWJHTElkIGlkKQpAQCAtMjEyNyw3ICsyMTE2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXh0dXJlKFdHQzNEZW51bSwgV2ViR0xJZCBpZCkK
ICAgICB7Ci0gICAgICAgIGlmIChpZCAmJiAhbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5z
KGlkKSkKKyAgICAgICAgaWYgKGlkICE9IDcgJiYgaWQpCiAgICAgICAgICAgICBBRERfRkFJTFVS
RSgpIDw8ICJUcnlpbmcgdG8gYmluZCB0ZXh0dXJlIGlkICIgPDwgaWQ7CiAgICAgfQogCkBAIC0y
MTM1LDkgKzIxMjQsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoKSksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgfQotCi1wcml2YXRlOgotICAgIEhh
c2hTZXQ8dW5zaWduZWQ+IG1fYWxsb2NhdGVkVGV4dHVyZUlkczsKIH07CiAKIC8vIEZha2Ugdmlk
ZW8gZnJhbWUgdGhhdCByZXByZXNlbnRzIGEgNHg0IFlVViB2aWRlbyBmcmFtZS4KQEAgLTIyNzcs
MTMgKzIyNjMsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xk
UmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKIGNsYXNzIFRyYWNraW5nV2ViR3JhcGhpY3NDb250
ZXh0M0QgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBU
cmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNEKCkKLSAgICAgICAgOiBGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QoKQorICAgICAgICA6IG1fbmV4dFRleHR1cmVJZCgxKQogICAgICAgICAsIG1fbnVt
VGV4dHVyZXMoMCkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVUZXh0dXJl
KCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIFdlYkdMSWQgaWQgPSBGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgV2ViR0xJZCBpZCA9IG1fbmV4dFRl
eHR1cmVJZDsKKyAgICAgICAgKyttX25leHRUZXh0dXJlSWQ7CiAKICAgICAgICAgbV90ZXh0dXJl
cy5zZXQoaWQsIHRydWUpOwogICAgICAgICArK21fbnVtVGV4dHVyZXM7CkBAIC0yMzE1LDYgKzIz
MDIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtVGV4dHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX251bVRleHR1cmVzOyB9CiAKIHByaXZhdGU6CisgICAgV2ViR0xJZCBtX25leHRUZXh0dXJl
SWQ7CiAgICAgSGFzaE1hcDxXZWJHTElkLCBib29sPiBtX3RleHR1cmVzOwogICAgIHVuc2lnbmVk
IG1fbnVtVGV4dHVyZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZDI3NzM3OTBlYmY1NDc5ZjZkMDMyYThl
ZjI5YmJhMDU3Y2YzOWI2Yi4uNGEyZmQzMWE5MzQ0YTYyZDFmMDM2YTc2MGE4Mjg0M2QyNzAyNWNk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCkBAIC00ODYsNDAgKzQ4Niw2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RU
ZXN0Q29tcG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAg
ICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RBYm9y
dEZyYW1lV2hlbkludmlzaWJsZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25s
eSB7Ci1wdWJsaWM6Ci0gICAgQ0NMYXllclRyZWVIb3N0VGVzdEFib3J0RnJhbWVXaGVuSW52aXNp
YmxlKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCi0gICAg
ewotICAgICAgICAvLyBSZXF1ZXN0IGEgY29tbWl0IChmcm9tIHRoZSBtYWluIHRocmVhZCksIHdo
aWNoIHdpbGwgdHJpZ2dlciB0aGUgY29tbWl0IGZsb3cgZnJvbSB0aGUgaW1wbCBzaWRlLgotICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7Ci0gICAgICAgIC8vIFRoZW4g
bWFyayBvdXJzZWx2ZXMgYXMgbm90IHZpc2libGUgYmVmb3JlIHByb2Nlc3NpbmcgYW55IG1vcmUg
bWVzc2FnZXMgb24gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFZpc2libGUoZmFsc2UpOwotICAgICAgICAvLyBJZiB3ZSBtYWtlIGl0IHdpdGhvdXQga2lja2lu
ZyBhIGZyYW1lLCB3ZSBwYXNzIQotICAgICAgICBlbmRUZXN0QWZ0ZXJEZWxheSgxKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9GQUxTRSh0cnVlKTsKLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBhZnRlclRlc3QoKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci19OwotCi1URVNU
X0YoQ0NMYXllclRyZWVIb3N0VGVzdEFib3J0RnJhbWVXaGVuSW52aXNpYmxlLCBydW5NdWx0aVRo
cmVhZCkKLXsKLSAgICBydW5UZXN0VGhyZWFkZWQoKTsKLX0KLQogCiAvLyBUcmlnZ2VyIGEgZnJh
bWUgd2l0aCBzZXROZWVkc0NvbW1pdC4gVGhlbiwgaW5zaWRlIHRoZSByZXN1bHRpbmcgYW5pbWF0
ZQogLy8gY2FsbGJhY2ssIHJlcXVldCBhbm90aGVyIGZyYW1lIHVzaW5nIHNldE5lZWRzQW5pbWF0
ZS4gRW5kIHRoZSB0ZXN0IHdoZW4KQEAgLTEwMzEsNiArOTk3LDExMyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0VGVzdENvbW1pdCwgcnVuVGVzdCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0VmlzaWJpbGl0eUFuZEFsbG9jYXRpb25Db250cm9sRHJh
d2luZyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKworICAgIENDTGF5
ZXJUcmVlSG9zdFRlc3RWaXNpYmlsaXR5QW5kQWxsb2NhdGlvbkNvbnRyb2xEcmF3aW5nKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgaW50IGxhc3RGcmFtZSA9IG1fbGF5
ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSAtIDE7CisKKyAgICAgICAgLy8gVGhlc2UgZnJhbWVz
IHNob3VsZCBkcmF3LgorICAgICAgICBzd2l0Y2ggKGxhc3RGcmFtZSkgeworICAgICAgICBjYXNl
IDA6CisgICAgICAgICAgICAvLyBTZXQgdGhlIHRyZWUgaW52aXNpYmxlLCB0aGlzIHNob3VsZCBu
b3QgZHJhdy4KKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0VmlzaWJsZShmYWxzZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgLy8gU2V0
IHRoZSB0cmVlIGludmlzaWJsZSBhbmQgZ2l2ZSBhIG5vbi12aXNpYmxlIGFsbG9jYXRpb24sIHRo
aXMKKyAgICAgICAgICAgIC8vIHNob3VsZCBub3QgZHJhdy4KKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgLy8gR2l2ZSBhIG1lbW9yeSBhbGxv
Y2F0aW9uIG5vdCBmb3IgZGlzcGxheSwgYnV0IHdoaWxlIHdlIGFyZQorICAgICAgICAgICAgLy8g
dmlzaWJsZS4gVGhpcyBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdlIHNob3VsZCByZW1haW4KKyAg
ICAgICAgICAgIC8vIHJlYWR5IGZvciBkaXNwbGF5IGFuZCBpdCBzaG91bGQgZHJhdy4KKyAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcygwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY6CisgICAgICAgICAg
ICBlbmRUZXN0KCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkKKyAgICB7CisgICAgICAgIGludCBsYXN0RnJhbWUgPSBt
X2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkgLSAxOworCisgICAgICAgIC8vIFRoZXNlIGZy
YW1lcyBzaG91bGQgbm90IGRyYXcuCisgICAgICAgIHN3aXRjaCAobGFzdEZyYW1lKSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIC8vIFNldCB0aGUgdHJlZSB2aXNpYmxlLCB0aGlzIHNo
b3VsZCBkcmF3LgorICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaXNpYmxlKHRydWUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIC8vIFNl
dCB2aXNpYmxlIHdpdGhvdXQgZ2l2aW5nIGEgdmlzaWJsZSBtZW1vcnkgYWxsb2NhdGlvbiwgdGhp
cworICAgICAgICAgICAgLy8gc2hvdWxkbid0IG1ha2UgdGhlIGltcGwgc2lkZSByZWFkeSBmb3Ig
ZGlzcGxheSwgc28gaXQgc2hvdWxkCisgICAgICAgICAgICAvLyBub3QgZHJhdy4KKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAvLyBOb3cgZ2l2ZSBhIG1lbW9yeSBhbGxv
Y2F0aW9uIGZvciBkaXNwbGF5LCB0aGlzIHNob3VsZCBkcmF3LgorICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKDEpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpIHsKKyAgICAgICAgY2Fz
ZSAwOgorICAgICAgICAgICAgLy8gVGhlIGhvc3Qgc3RhcnRzIG91dCB2aXNpYmxlIGFuZCBhYmxl
IHRvIGRpc3BsYXkgYmVmb3JlIHdlIGRvIGFueSBjb21taXQuCisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShpbXBsLT52aXNpYmxlKCkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaW1wbC0+c291
cmNlRnJhbWVDYW5CZURyYXduKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
MToKKyAgICAgICAgICAgIC8vIFdlIHN0aWxsIGhhdmUgYSBtZW1vcnkgYWxsb2NhdGlvbiBmb3Ig
ZGlzcGxheS4KKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpbXBsLT52aXNpYmxlKCkpOworICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaW1wbC0+c291cmNlRnJhbWVDYW5CZURyYXduKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGltcGwtPnZpc2libGUoKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT5zb3VyY2VG
cmFtZUNhbkJlRHJhd24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwtPnZpc2libGUoKSk7CisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoaW1wbC0+c291cmNlRnJhbWVDYW5CZURyYXduKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGltcGwtPnZp
c2libGUoKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC0+c291cmNlRnJhbWVDYW5C
ZURyYXduKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGltcGwtPnZpc2libGUoKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShpbXBsLT5zb3VyY2VGcmFtZUNhbkJlRHJhd24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSA2OgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoaW1wbC0+dmlzaWJsZSgpKTsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGltcGwtPnNvdXJjZUZyYW1lQ2FuQmVEcmF3bigpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KK307CisKK1NJTkdMRV9BTkRfTVVMVElfVEhSRUFE
X1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0VmlzaWJpbGl0eUFuZEFsbG9jYXRpb25Db250cm9s
RHJhd2luZykKKwogLy8gVmVyaWZpZXMgdGhhdCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbiBldmVu
dHMgcHJvcGFnYXRlIGNvcnJlY3RseSBmcm9tIENDTGF5ZXJUcmVlSG9zdCB0bwogLy8gQ0NMYXll
clRyZWVIb3N0SW1wbCBpbiB0aGUgTVQgY29tcG9zaXRvci4KIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbiA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0
IHsKQEAgLTE2NjEsNyArMTczNCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKG1fbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpKTsK
ICAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CkBAIC0xNjc4LDcgKzE3NTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRh
dGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKQEAgLTE2OTYsNyArMTc2OSw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRl
ZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTcxNiw3ICsxNzg5LDcgQEAgcHVibGljOgog
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkp
OwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29t
cGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQt
Pm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xNzM4LDcgKzE4MTEsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5i
b3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIs
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3Jh
bmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE3NjAsNyArMTgz
Myw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihy
b290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290
TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
dXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgpLCBjaGlsZDItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xNzgzLDcg
KzE4NTYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAg
LTE4MDYsNyArMTg3OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CkBAIC0xODY5LDcgKzE5NDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShtX2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVMYXllclJlbmRlcmVySWZOZWVkZWQoKSk7CiAg
ICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CkBAIC0xODk2LDcgKzE5NjksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwpAQCAtMTk1OCw3ICsyMDMxLDcgQEAgcHVibGljOgogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShsYXllcnNbMF0tPmJvdW5kcygpKTsKICAgICAgICAgQVNT
RVJUX1RSVUUobV9sYXllclRyZWVIb3N0LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVlZGVk
KCkpOwogICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtU3VyZmFjZXMtMTsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHAKaW5kZXggMmUzMWQ0NGQwM2FmYzBhZTE3YzMyNWE0MWI5N2Q0NWI4NjQwYjA0NC4u
YTk5MTQ5YmE5OTU4ZDc5NDQ4OGZiYjUzZmQzN2ViM2MxNWE3ZGFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LmNwcApAQCAtODA3LDcgKzgwNyw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0UmVxdWVzdENvbW1pdEludmlzaWJsZSkKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQog
Ci1URVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVCZWZv
cmVCZWdpbkZyYW1lQ29tcGxldGVzKQorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsK
ICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwpAQCAtODIzLDEyICs4MjMsMzMgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlQmVmb3Jl
QmVnaW5GcmFtZUNvbXBsZXRlcykKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQo
KSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAotICAgIC8vIEJlY29tZSBpbnZpc2libGUgYW5kIGFib3J0
IHRoZSBiZWdpbkZyYW1lLgorICAgIC8vIEJlY29tZSBpbnZpc2libGUKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKGZhbHNlKTsKLSAgICBzdGF0ZS5iZWdpbkZyYW1lQWJvcnRlZCgpOwogCi0gICAgLy8g
V2Ugc2hvdWxkIG5vdyBiZSBiYWNrIGluIHRoZSBpZGxlIHN0YXRlIGFzIGlmIHdlIGRpZG4ndCBz
dGFydCBhIGZyYW1lIGF0IGFsbC4KLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9JRExFLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICAvLyBUZWxs
IHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCisgICAgc3RhdGUuYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gQ29tbWl0IGluIGludmlzaWJsZSBzdGF0ZSBzaG91bGQgbGVhdmUgdXM6CisgICAgLy8g
LSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVworICAgIC8vIC0gV2FpdGluZyBm
b3IgcmVkcmF3LgorICAgIC8vIC0gTm8gY29tbWl0IG5lZWRlZAorICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJT
VF9EUkFXLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5uZWVk
c1JlZHJhdygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisKKyAg
ICAvLyBFeHBlY3QgdG8gZG8gbm90aGluZywgYm90aCBpbiBhbmQgb3V0IG9mIHZzeW5jLgorICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmRpZEVu
dGVyVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDYxNGUxZWVi
MjVhM2ZlYjI0YTliZDBmMmU2NGU3NDliMGQxODg2ZjMuLjY4ZmVmNjQyMDk2ZmM0ODFmMWJhMGFi
NmQ5NWEwODA3ZjhhMjRjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0xNTAsOSArMTUwLDggQEAgcHJvdGVj
dGVkOgogCiBjbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0
dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1
cmUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklERSB7IHJldHVybiAx
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUFsbFRleHR1cmVzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVh
dGVUZXh0dXJlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgR0MzRGVudW0pIHsgfQogfTsKIAogY2xhc3MgRmFrZVRleHR1cmVDb3BpZXIg
OiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZUNvcGllciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBiODY0
YzM1ZmQyNTgzMGRhZTljNmVjODIxYjAzMWY4YjQyZDA3ZjdiLi4xOTFkMDVmNWYwYTkzYTRiOWU0
MWFlMmZkMWYyNWJjMzgwMTI4ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM1LDExICszNSw2IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogLy8gQWxsIG9wZXJhdGlvbnMgYXJlIG5vLW9wcyAocmV0dXJu
aW5nIDAgaWYgbmVjZXNzYXJ5KS4KIGNsYXNzIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCA6IHB1
YmxpYyBXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6Ci0gICAgRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEKCkKLSAgICAgICAgOiBtX25leHRUZXh0dXJlSWQoMSkKLSAgICB7Ci0gICAgfQot
CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgeyByZXR1cm4gMDsgfQpAQCAtMjUxLDcgKzI0Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUHJvZ3JhbSgpIHsgcmV0dXJu
IDE7IH0KICAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUmVuZGVyYnVmZmVyKCkgeyByZXR1cm4g
MTsgfQogICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVTaGFkZXIoV0dDM0RlbnVtKSB7IHJldHVy
biAxOyB9Ci0gICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZVRleHR1cmUoKSB7IHJldHVybiBtX25l
eHRUZXh0dXJlSWQrKzsgfQorICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVUZXh0dXJlKCkgeyBy
ZXR1cm4gMTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJ1ZmZlcihXZWJHTElkKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xJZCkgeyB9CkBAIC0yNzIs
NyArMjY3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVY
VChXZWJHTElkLCBHQzNEZW51bSwgR0MzRHVpbnQqKSB7IH0KIAogcHJvdGVjdGVkOgotICAgIHVu
c2lnbmVkIG1fbmV4dFRleHR1cmVJZDsKICAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCBlNDY1MDk2MWI5ODQ2YmExOWQyMzAwOWE5M2IzNDFkNWZm
Yzk3ZGNmLi42NGQ5ZDcxYTM3Yzk5MjU1ZTFlYzBhZDcxZmQ4N2E1MmYxMmEwMTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdC5jcHAKQEAgLTg0LDEzICs4NCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gQ0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgotICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYg
ZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgSW50U2l6ZSBmYWtl
U2l6ZSgxLCAxKTsgcmV0dXJuIGZha2VTaXplOyB9CisgICAgdmlydHVhbCBjb25zdCBJbnRTaXpl
JiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBJbnRTaXplIGZh
a2VTaXplOyByZXR1cm4gZmFrZVNpemU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgQ0NMYXllclRyZWVT
ZXR0aW5ncyBmYWtlU2V0dGluZ3M7IHJldHVybiBmYWtlU2V0dGluZ3M7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25T
d2FwQnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1
bGxSb290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERSB7IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50Kys7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMoKSBPVkVS
UklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90IGJ5dGVzKSBPVkVSUklERSB7IG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMgPSBi
eXRlczsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1p
dEJ5dGVzKHNpemVfdCBieXRlcykgT1ZFUlJJREUgeyBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzID0gYnl0ZXM7IH0KIAogICAgIC8vIE1ldGhvZHMgYWRkZWQgZm9yIHRlc3QuCiAgICAgaW50
IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0RnVsbFJv
b3RMYXllckRhbWFnZUNvdW50OyB9CkBAIC0xNjksMzQgKzE2OCwyMCBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJZZXNXaGVuSXRBbHJlYWR5RXhp
c3RzU2hvdWxkRAogfQogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJh
bWVidWZmZXIgZnVuY3Rpb25hbGl0eToKLS8vIFN1Z2dlc3QgZGlzY2FyZGluZyBmcmFtZWJ1ZmZl
ciB3aGVuIG9uZSBleGlzdHMgYW5kIHRoZSByZW5kZXJlciBpcyBub3QgdmlzaWJsZS4KKy8vIFN1
Z2dlc3QgZGlzY2FyZGluZyBmcmFtZWJ1ZmZlciB3aGVuIG9uZSBleGlzdHMuCiAvLyBFeHBlY3Rl
ZDogaXQgaXMgZGlzY2FyZGVkIGFuZCBkYW1hZ2UgdHJhY2tlciBpcyByZXNldC4KLVRFU1RfRihM
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2Fy
ZEJhY2tidWZmZXJBbmREYW1hZ2VSb290TGF5ZXJXaGlsZU5vdFZpc2libGUpCitURVNUX0YoTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1Nob3VsZERpc2NhcmRC
YWNrYnVmZmVyQW5kRGFtYWdlUm9vdExheWVyKQogewotICAgIG1fbGF5ZXJSZW5kZXJlckNocm9t
aXVtLnNldFZpc2libGUoZmFsc2UpOwogICAgIG1fbW9ja0NvbnRleHQuc2V0TWVtb3J5QWxsb2Nh
dGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2Nr
Q2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSht
X2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogfQogCiAv
LyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJhbWVidWZmZXIgZnVuY3Rpb25h
bGl0eToKLS8vIFN1Z2dlc3QgZGlzY2FyZGluZyBmcmFtZWJ1ZmZlciB3aGVuIG9uZSBleGlzdHMg
YW5kIHRoZSByZW5kZXJlciBpcyB2aXNpYmxlLgotLy8gRXhwZWN0ZWQ6IHRoZSBhbGxvY2F0aW9u
IGlzIGlnbm9yZWQuCi1URVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJh
Y2tidWZmZXJOb0RvTm90aGluZ1doZW5WaXNpYmxlKQotewotICAgIG1fbGF5ZXJSZW5kZXJlckNo
cm9taXVtLnNldFZpc2libGUodHJ1ZSk7Ci0gICAgbV9tb2NrQ29udGV4dC5zZXRNZW1vcnlBbGxv
Y2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwotICAgIEVYUEVDVF9FUSgwLCBtX21v
Y2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwotICAgIEVYUEVDVF9GQUxT
RShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwotfQot
Ci0KLS8vIFRlc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5j
dGlvbmFsaXR5OgogLy8gU3VnZ2VzdCBkaXNjYXJkaW5nIGZyYW1lYnVmZmVyIHdoZW4gb25lIGRv
ZXMgbm90IGV4aXN0LgogLy8gRXhwZWN0ZWQ6IGl0IGRvZXMgbm90aGluZy4KIFRFU1RfRihMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vV2hlbkl0RG9lc250RXhp
c3RTaG91bGREb05vdGhpbmcpCiB7Ci0gICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc2V0Vmlz
aWJsZShmYWxzZSk7CiAgICAgbV9tb2NrQ29udGV4dC5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3Vn
Z2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0
RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5k
ZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CkBAIC0yMDcsMzcgKzE5Miwz
NyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJO
b1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9ObwogfQogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bSBkaXNjYXJkRnJhbWVidWZmZXIgZnVuY3Rpb25hbGl0eToKLS8vIEJlZ2luIGRyYXdp
bmcgYSBmcmFtZSB3aGlsZSBhIGZyYW1lYnVmZmVyIGlzIGRpc2NhcmRlZC4KLS8vIEV4cGVjdGVk
OiB3aWxsIHJlY3JlYXRlIGZyYW1lYnVmZmVyLgotVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3BlRHVyYXRpb24pCisv
LyBTdWdnZXN0IGRpc2NhcmRpbmcgZnJhbWVidWZmZXIsIHRoZW4gdHJ5IHRvIHN3YXBCdWZmZXJz
LgorLy8gRXhwZWN0ZWQ6IGZyYW1lYnVmZmVyIGlzIGRpc2NhcmRlZCwgc3dhcHMgYXJlIGlnbm9y
ZWQsIGFuZCBkYW1hZ2UgaXMgcmVzZXQgYWZ0ZXIgZGlzY2FyZCBhbmQgYWZ0ZXIgZWFjaCBzd2Fw
LgorVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN3YXBCdWZmZXJzV2hpbGVCYWNr
YnVmZmVyRGlzY2FyZGVkU2hvdWxkSWdub3JlU3dhcEFuZERhbWFnZVJvb3RMYXllcikKIHsKLSAg
ICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICBtX21vY2tD
b250ZXh0LnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAg
ICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2Nh
cmRlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJE
YW1hZ2VDb3VudCgpKTsKIAotICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUo
dHJ1ZSk7Ci0gICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uYmVnaW5EcmF3aW5nRnJhbWUobV9t
b2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCkpOwotICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOworICAgIHN3YXBCdWZmZXJz
KCk7CisgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NvbnRleHQuZnJhbWVDb3VudCgpKTsKKyAgICBF
WFBFQ1RfRVEoMiwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsK
IAogICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NvbnRleHQuZnJh
bWVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50KCkp
OworICAgIEVYUEVDVF9FUSgzLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50KCkpOwogfQogCi1URVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRnJhbWVidWZm
ZXJEaXNjYXJkZWRBZnRlclJlYWRiYWNrV2hlbk5vdFZpc2libGUpCisvLyBUZXN0IExheWVyUmVu
ZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJhbWVidWZmZXIgZnVuY3Rpb25hbGl0eToKKy8vIEJlZ2lu
IGRyYXdpbmcgYSBmcmFtZSB3aGlsZSBhIGZyYW1lYnVmZmVyIGlzIGRpc2NhcmRlZC4KKy8vIEV4
cGVjdGVkOiB3aWxsIHJlY3JlYXRlIGZyYW1lYnVmZmVyLgorVEVTVF9GKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRyZWRGb3JTY29wZUR1cmF0
aW9uKQogewotICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwog
ICAgIG1fbW9ja0NvbnRleHQuc2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1
ZmZlck5vKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVs
bFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCi0gICAgY2hhciBwaXhlbHNbNF07CiAgICAgbV9s
YXllclJlbmRlcmVyQ2hyb21pdW0uYmVnaW5EcmF3aW5nRnJhbWUobV9tb2NrQ2xpZW50LnJvb3RS
ZW5kZXJQYXNzKCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5p
c0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCi0gICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0u
Z2V0RnJhbWVidWZmZXJQaXhlbHMocGl4ZWxzLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBF
WFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
KCkpOwotICAgIEVYUEVDVF9FUSgyLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFn
ZUNvdW50KCkpOworICAgIHN3YXBCdWZmZXJzKCk7CisgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0Nv
bnRleHQuZnJhbWVDb3VudCgpKTsKIH0KIAogY2xhc3MgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29u
dGV4dCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggOTQ5NWU3MDZhNmJiMzdiNTRkYjRmZjM3ZTUyNTZmMzFmZmViM2NkYi4uMDczZmExOTMxMTcz
MDM1Y2NhNjQ2NzE3NWQyNDI2NWMxMWQyZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04MjQsNyAr
ODI0LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQp
CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKLSAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBtZW1vcnlMaW1pdCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogCiAgICAgLy8gV2UnbGwg
c2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJh
dygpKTsKQEAgLTgzNiw3ICs4MzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNr
aXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBSZW1vdmUgdGhlIGNoaWxkIGxheWVyLgogICAgIHJv
b3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkFMU0Uocm9vdExheWVyLT5za2lwc0Ry
YXcoKSk7CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKQEAgLTkwMyw3
ICs5MDQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsK
IAogICAgIC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgotICAgIGNjTGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHsK
ICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgwKSkpOwpAQCAtOTIxLDcgKzkyMiw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRp
bGVzIGFuZCBwYXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Cisg
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgewogICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDApKSk7CkBAIC05NDIsNyArOTQzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxh
eWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKLSAgICAgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KHVwZGF0ZXIpOwogICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVy
LCAmdXBsb2FkZXIsIDQpOwogICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOwpAQCAtOTY5LDcgKzk3MCw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7
Ci0gICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRv
ciwgJmNvcGllciwgJnVwbG9hZGVyLCA0KTsKICAgICAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNU
X1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKQEAgLTk4Nyw3ICs5ODgsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIHsKICAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbCgwKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIHVwZGF0ZXIudXBkYXRlKDAs
ICZhbGxvY2F0b3IsICZjb3BpZXIsICZ1cGxvYWRlciwgNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAg
ICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwNTVj
YTlmODAyOGJiOTVjZTI3ODNhYzM2YmQ0YTkwNGZlZmJjMDAuLjQ3NjBhNzJkYWI0NWNhMDAzMTMy
ZjdjMmM4NzQ3NzkwMDU0YjcyNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yMSAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDk4Mi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTIwOTgyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04OTc0MAorCisgICAgICAgIFtjaHJvbWl1bV0gQVNTRVJUSU9OIEZBSUxF
RDoKKyAgICAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5zKHRleHR1cmVJZCkgKFJl
cXVlc3RlZCBieSB1a2FpCisgICAgICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0wNi0yMSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBMYWJlbHNOb3N0TGlzdCBpc24ndCB1cGRh
dGVkIHByb3Blcmx5IGFmdGVyIGl0cyBvd25lciBub2RlIGlzIGFkb3B0ZWQgaW50byBhIG5ldyBk
b2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNDI5NjNiY2IxMjA3YzAxMzdiODExMzQxMDg0N2NhNWMxY2NhY2Q0Mi4uOWQ3MWVk
NmUzZDlmOGM5NzBiYzE5NjZmMjMzNmVmNTM4NWE3OTU1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTI4LDkgKzM1MjgsNiBAQCBC
VUdXSzg1MTIwIDogZmFzdC9qcy90b1N0cmluZy1udW1iZXIuaHRtbCA9IFRFWFQKIAogQlVHV0s2
ODc0NCA6IGZhc3QvYmxvY2svZmxvYXQvZmxvYXQtbm90LXJlbW92ZWQtZnJvbS1uZXh0LXNpYmxp
bmc0Lmh0bWwgPSBJTUFHRQogCi0vLyBOZWVkcyBhIG5ldyBzZXQgb2YgYmFzZWxpbmVzIGR1ZSB0
byBnZW5lcmF0aW5nIGxlc3MgdXNlbGVzcyBpbnZhbGlkYXRpb25zLgotQlVHV0s4OTA0NSA6IGNv
bXBvc2l0aW5nL3ZpZGVvLXBhZ2UtdmlzaWJpbGl0eS5odG1sID0gSU1BR0UKLQogQlVHV0s4MzA3
NiBTTk9XTEVPUEFSRCBSRUxFQVNFIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvb3V0bGluZS1jaGFu
Z2UuaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHV0s4MzA3NiBTTk9XTEVPUEFSRCBSRUxFQVNFIDog
Y3NzMy9zZWxlY3RvcnMzL3htbC9jc3MzLW1vZHNlbC0xNjEueG1sID0gVElNRU9VVCBQQVNTCiBC
VUdXSzgzMDc2IFNOT1dMRU9QQVJEIFJFTEVBU0UgOiBjc3MzL3NlbGVjdG9yczMveG1sL2NzczMt
bW9kc2VsLTE2Ni54bWwgPSBUSU1FT1VUIFBBU1MK
</data>

          </attachment>
      

    </bug>

</bugzilla>