<?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>96463</bug_id>
          
          <creation_ts>2012-09-11 20:10:38 -0700</creation_ts>
          <short_desc>[chromium] Evict textures through the texture manager instead of the resource provider</short_desc>
          <delta_ts>2012-09-14 15:24:09 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Christopher Cameron">ccameron</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717845</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-11 20:10:38 -0700</bug_when>
    <thetext>[chromium] Remove last use of CCPrioritizedTextureManager::m_backings array on the main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717861</commentid>
    <comment_count>1</comment_count>
      <attachid>163507</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-11 20:22:47 -0700</bug_when>
    <thetext>Created attachment 163507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717865</commentid>
    <comment_count>2</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-11 20:27:22 -0700</bug_when>
    <thetext>This is the second-to-last slice of bug 95057.  The one remaining slice is partial clears of the texture upload queue (which is big enough self-contained enough to warrant a separate change).

Synopsis from ChangeLog:

When deleting contents textures&apos; resources on the impl thread, do the deletion through the CCPrioritizedTextureManager instead of the CCResourceProvider.

This requires traversing the backings list on the impl thread while the main thread is running, so remove the one remaining traversal of  backings list by the main thread. This traversal happens when unlinking textures that were evicted by the impl thread, so explicitly send the list of evicted backings from the impl thread to the main thread.

Unify all resource deletion paths in the CCPrioritizedTextureManager. Always perform the sequence of eviction (deleting the GL resource) and then destruction of evicted backings (deleting the objects).  Also, use the same function (evictBackingsToReduceMemory) to reduce memory consumption both during commit and when done by the impl thread in response to a request by the GPU memory manager.

Note that destroying only some of the resources at a time during texture eviction (as opposed all resources) is still not supported because the texture upload queues cannot be only-partially invalidated yet. Updated tests to take this behavior into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718067</commentid>
    <comment_count>3</comment_count>
      <attachid>163507</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-12 01:52:07 -0700</bug_when>
    <thetext>Comment on attachment 163507
Patch

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

R=me, just some really minor things

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.cpp:56
&gt; +    // Each remaining backing is a leaked opengl texture. There sould be none.

sould-&gt;should

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.cpp:277
&gt; +    evictBackingsToReduceMemory(0, false, resourceProvider);

i think these callsites would all be more readable if you used a 2-state enum for the second parameter instead of a bool. since the callsites are just literals, i have to go look for the definition of evictBackingsToReduceMemory to understand what &quot;false&quot; means</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718534</commentid>
    <comment_count>4</comment_count>
      <attachid>163661</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-12 11:24:03 -0700</bug_when>
    <thetext>Created attachment 163661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718536</commentid>
    <comment_count>5</comment_count>
      <attachid>163661</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-12 11:24:47 -0700</bug_when>
    <thetext>Comment on attachment 163661
Patch

Thanks!  Updated with the changes you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718552</commentid>
    <comment_count>6</comment_count>
      <attachid>163661</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 11:49:02 -0700</bug_when>
    <thetext>Comment on attachment 163661
Patch

Clearing flags on attachment: 163661

Committed r128344: &lt;http://trac.webkit.org/changeset/128344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718553</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 11:49:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721185</commentid>
    <comment_count>8</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-14 15:24:09 -0700</bug_when>
    <thetext>*** Bug 95057 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163507</attachid>
            <date>2012-09-11 20:22:47 -0700</date>
            <delta_ts>2012-09-12 11:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96463-20120911202222.patch</filename>
            <type>text/plain</type>
            <size>34829</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg3Mzk1ZGE2NzUyODlk
MDg0MjZhYzNjMjAxYzY3MjhmZGU3MjJkNi4uMzAwN2JlYWY4YWIwNDBlNDdmMTgzMjYxYjczMTlm
NWQ1MWNiOGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA5LTExICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRXZpY3QgdGV4dHVyZXMgdGhyb3VnaCB0aGUgdGV4dHVyZSBtYW5hZ2VyIGluc3RlYWQg
b2YgdGhlIHJlc291cmNlIHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NjQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoZW4gZGVsZXRpbmcgY29udGVudHMgdGV4dHVyZXMnIHJlc291cmNl
cyBvbiB0aGUgaW1wbCB0aHJlYWQsIGRvIHRoZQorICAgICAgICBkZWxldGlvbiB0aHJvdWdoIHRo
ZSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgdHJhdmVyc2luZyB0aGUg
YmFja2luZ3MgbGlzdCBvbiB0aGUgaW1wbCB0aHJlYWQgd2hpbGUKKyAgICAgICAgdGhlIG1haW4g
dGhyZWFkIGlzIHJ1bm5pbmcsIHNvIHJlbW92ZSB0aGUgb25lIHJlbWFpbmluZyB0cmF2ZXJzYWwg
b2YKKyAgICAgICAgdGhlIGJhY2tpbmdzIGxpc3QgYnkgdGhlIG1haW4gdGhyZWFkLiBUaGlzIHRy
YXZlcnNhbCBoYXBwZW5zIHdoZW4KKyAgICAgICAgdW5saW5raW5nIHRleHR1cmVzIHRoYXQgd2Vy
ZSBldmljdGVkIGJ5IHRoZSBpbXBsIHRocmVhZCwgc28gZXhwbGljaXRseQorICAgICAgICBzZW5k
IHRoZSBsaXN0IG9mIGV2aWN0ZWQgYmFja2luZ3MgZnJvbSB0aGUgaW1wbCB0aHJlYWQgdG8gdGhl
IG1haW4gdGhyZWFkLgorCisgICAgICAgIFVuaWZ5IGFsbCByZXNvdXJjZSBkZWxldGlvbiBwYXRo
cyBpbiB0aGUgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLgorICAgICAgICBBbHdheXMgcGVy
Zm9ybSB0aGUgc2VxdWVuY2Ugb2YgZXZpY3Rpb24gKGRlbGV0aW5nIHRoZSBHTCByZXNvdXJjZSkg
YW5kCisgICAgICAgIHRoZW4gZGVzdHJ1Y3Rpb24gb2YgZXZpY3RlZCBiYWNraW5ncyAoZGVsZXRp
bmcgdGhlIG9iamVjdHMpLiAgQWxzbywKKyAgICAgICAgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIChl
dmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnkpIHRvIHJlZHVjZSBtZW1vcnkKKyAgICAgICAgY29u
c3VtcHRpb24gYm90aCBkdXJpbmcgY29tbWl0IGFuZCB3aGVuIGRvbmUgYnkgdGhlIGltcGwgdGhy
ZWFkIGluIHJlc3BvbnNlCisgICAgICAgIHRvIGEgcmVxdWVzdCBieSB0aGUgR1BVIG1lbW9yeSBt
YW5hZ2VyLgorCisgICAgICAgIE5vdGUgdGhhdCBkZXN0cm95aW5nIG9ubHkgc29tZSBvZiB0aGUg
cmVzb3VyY2VzIGF0IGEgdGltZSBkdXJpbmcgdGV4dHVyZQorICAgICAgICBldmljdGlvbiAoYXMg
b3Bwb3NlZCBhbGwgcmVzb3VyY2VzKSBpcyBzdGlsbCBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhl
CisgICAgICAgIHRleHR1cmUgdXBsb2FkIHF1ZXVlcyBjYW5ub3QgYmUgb25seS1wYXJ0aWFsbHkg
aW52YWxpZGF0ZWQgeWV0LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdG8gdGFrZSB0aGlzIGJl
aGF2aW9yIGludG8gYWNjb3VudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnJlZHVjZUNvbnRlbnRzVGV4dHVyZXNNZW1vcnlPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmdldEV2aWN0
ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUV2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNr
aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNUZXh0dXJl
c1B1cmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmV2aWN0QmFja2lu
Z3NUb1JlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnJlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5T25JbXBsVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Z2V0RXZpY3RlZEJhY2tp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5s
aW5rRXZpY3RlZEJhY2tpbmdzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkQmFja2luZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpldmljdEJhY2tp
bmdSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21w
b3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlbGVh
c2VDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToK
KyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA5LTExICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVkIGZvciBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjgyNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggODNjYmFjOTI1YTU5NjQzNTQyOGZhZWRkNjEyYzA1ZWRjNzNlMmExZC4uNzZmYWNmMTZkMTdl
ZjRiMWY3ODMwMmM2N2I3OTIxYjU4N2M5YzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNyBAQAogMjAxMi0wOS0xMSAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1l
cm9uQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIEV2aWN0IHRleHR1cmVzIHRo
cm91Z2ggdGhlIHRleHR1cmUgbWFuYWdlciBpbnN0ZWFkIG9mIHRoZSByZXNvdXJjZSBwcm92aWRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
bGF5ZXIgdHJlZSBob3N0IGltcGwgdGVzdCB0byBpbmNsdWRlIHRoZSBleHRyYSBpbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGFkZGVkIHRvIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQuCisK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisKKzIwMTItMDkt
MTEgIENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgW2Nocm9taXVtXSBNYWtlIHByaW9yaXRpemVkIHRleHR1cmUgbWFuYWdlciBub3QgdG91Y2gg
YmFja2luZ3MgYXJyYXkgb24gdGhlIG1haW4gdGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjExNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAppbmRleCAxNDQ3MmM3MDc4MGUzNWI5NjU5YmUyMjM4ODU3NTA0NWZiMWQyMWU3Li45
ZmVkNDc5ZjdkNTk2MTU3MTcyZTQyNWZlMzMzNmE4MWU4OWU2NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQxNCwxOCArNDE0LDMzIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBtX3Byb3h5LT5zZXRWaXNpYmxlKHZp
c2libGUpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dW5saW5rQWxsQ29udGVudFRleHR1
cmVzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZWR1Y2VDb250ZW50c1RleHR1cmVzTWVtb3J5
T25JbXBsVGhyZWFkKHNpemVfdCBsaW1pdEJ5dGVzLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeU9uSW1wbFRocmVhZChsaW1pdEJ5dGVzLCByZXNv
dXJjZVByb3ZpZGVyKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmdldEV2aWN0ZWRDb250
ZW50VGV4dHVyZXNCYWNraW5ncyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkJhY2tpbmdW
ZWN0b3ImIGV2aWN0ZWRCYWNraW5ncykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOworICAgIGV2aWN0ZWRCYWNraW5ncy5jbGVhcigpOworICAgIGlmIChtX3JlbmRlcmVy
SW5pdGlhbGl6ZWQpCisgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Z2V0RXZpY3Rl
ZEJhY2tpbmdzKGV2aWN0ZWRCYWNraW5ncyk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
bmxpbmtFdmljdGVkQ29udGVudFRleHR1cmVzQmFja2luZ3MoY29uc3QgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpCYWNraW5nVmVjdG9yJiBldmljdGVkQmFja2luZ3MpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLmdldCgpKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVubGlua0Fs
bEJhY2tpbmdzKCk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bmxpbmtFdmljdGVk
QmFja2luZ3MoZXZpY3RlZEJhY2tpbmdzKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRl
bGV0ZVVubGlua2VkVGV4dHVyZXMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUV2aWN0
ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncygpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRocmVhZEJsb2NrZWQoKSk7CiAgICAgQVNTRVJU
KG1fY29udGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5kZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKCk7CisgICAgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZEJhY2tpbmdzKCk7CiB9CiAKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25T
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDFmMjkxYTlhYTc2ODNlNTQ4ZmYx
MDRjN2VkNzVmMjBjMmRkZDQxYzcuLjliYTFmYzIwNjIxZjIyYzFjOTY2Nzc0NGU0YTAwY2VmYzI0
MzJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yMTEsOCArMjExLDE5IEBA
IHB1YmxpYzoKIAogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAgdm9pZCB1bmxpbmtBbGxDb250ZW50VGV4dHVyZXMo
KTsKLSAgICB2b2lkIGRlbGV0ZVVubGlua2VkVGV4dHVyZXMoKTsKKyAgICAvLyBEZWxldGUgY29u
dGVudHMgdGV4dHVyZXMnIGJhY2tpbmcgcmVzb3VyY2VzIHVudGlsIHRoZXkgdXNlIG9ubHkgYnl0
ZXNMaW1pdCBieXRlcy4gVGhpcyBtYXkKKyAgICAvLyBiZSBjYWxsZWQgb24gdGhlIGltcGwgdGhy
ZWFkIHdoaWxlIHRoZSBtYWluIHRocmVhZCBpcyBydW5uaW5nLgorICAgIHZvaWQgcmVkdWNlQ29u
dGVudHNUZXh0dXJlc01lbW9yeU9uSW1wbFRocmVhZChzaXplX3QgYnl0ZXNMaW1pdCwgQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CisgICAgLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2YgYWxsIGNvbnRlbnRz
IHRleHR1cmVzJyBiYWNraW5ncyB0aGF0IGhhdmUgYmVlbiBldmljdGVkLCB0byBwYXNzIHRvIHRo
ZQorICAgIC8vIG1haW4gdGhyZWFkIHRvIHVubGluayB0aGVtIGZyb20gdGhlaXIgb3duaW5nIHRl
eHR1cmVzLgorICAgIHZvaWQgZ2V0RXZpY3RlZENvbnRlbnRUZXh0dXJlc0JhY2tpbmdzKENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6QmFja2luZ1ZlY3RvciYpOworICAgIC8vIFVubGluayB0
aGUgbGlzdCBvZiBjb250ZW50cyB0ZXh0dXJlcycgYmFja2luZ3MgZnJvbSB0aGVpciBvd25pbmcg
dGV4dHVyZXMgb24gdGhlIG1haW4gdGhyZWFkCisgICAgLy8gYmVmb3JlIHVwZGF0aW5nIGxheWVy
cy4KKyAgICB2b2lkIHVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyhjb25zdCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkJhY2tpbmdWZWN0b3ImKTsKKyAgICAvLyBEZWxl
dGVzIGFsbCBldmljdGVkIGJhY2tpbmdzLCB1bmxpbmtpbmcgdGhlbSBmcm9tIHRoZWlyIG93bmlu
ZyB0ZXh0dXJlcyBpZiBuZWVkZWQuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgZnVuY3Rp
b24gaGFkIHRvIHVubGluayBhbnkgYmFja2luZ3MgZnJvbSB0aGVpciBvd25pbmcgdGV4dHVyZSB3
aGVuCisgICAgLy8gZGVzdHJveWluZyB0aGVtLiBJZiB0aGlzIHdhcyB0aGUgY2FzZSwgdGhlIGlt
cGwgbGF5ZXIgdHJlZSBtYXkgY29udGFpbiBpbnZhbGlkIHJlc291cmNlcy4KKyAgICBib29sIGRl
bGV0ZUV2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncygpOwogCiAgICAgYm9vbCB2aXNpYmxl
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAzZGIwZTBmZjdk
NDcyMmE2MmE2MTliYTRmNjBjODVhZDI5NjE0MDdhLi5jYzkyODA0YzIyNTE2OTlhNjU3MGE2NGUy
NjBlMzE5NzBiZjhmNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtNTIxLDggKzUyMSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNv
bnRlbnRzVGV4dHVyZXMoKQogewogICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3Vy
Y2VzKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJn
ZWQgPSB0cnVlOworICAgIG1fY2xpZW50LT5yZWxlYXNlQ29udGVudHNUZXh0dXJlc09uSW1wbFRo
cmVhZCgpOworICAgIHNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsKICAgICBtX2NsaWVudC0+
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICBtX2NsaWVudC0+b25DYW5EcmF3U3Rh
dGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9CkBAIC03MzMsNiArNzMzLDEyIEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZVJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRlCiAgICAgcmV0dXJuIG1fcmVuZGVyZXI7CiB9CiAKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpCit7CisgICAgbV9jb250ZW50
c1RleHR1cmVzUHVyZ2VkID0gdHJ1ZTsKKyAgICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFu
Z2VkKGNhbkRyYXcoKSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVzZXRDb250
ZW50c1RleHR1cmVzUHVyZ2VkKCkKIHsKICAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4MGUwMDMxOTg5
ZDE2MWIxYzNmNGU1MzQ5MjcwZThjNjA1NmRkYWZkLi5mNTU3ZGRkOGNiNDc5NzY5MTZiNzdmMzQw
NjFlZjVkN2UwNzkwMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBA
IC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBk
b3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQ29udGVu
dHNUZXh0dXJlc09uSW1wbFRocmVhZCgpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVy
aW5nIHN0YXRlCkBAIC0xNTcsNiArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNl
RnJhbWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVOdW1iZXIgPSBmcmFt
ZU51bWJlcjsgfQogCiAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzUHVyZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkOyB9CisgICAgdm9pZCBzZXRDb250ZW50c1Rl
eHR1cmVzUHVyZ2VkKCk7CiAgICAgdm9pZCByZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsK
ICAgICBzaXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IGNkMjY3ZDljYTE2MzA0MWU2Y2Ew
Zjk2ZWZkYTU3YmY4YmUwOWIzOTkuLjgxMTFmYjdmMzI4ZGQyYmM5YjM0MzVmZGQzZGUxZmVjY2Ix
YWVmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAgICAgd2hpbGUgKG1fdGV4dHVyZXMuc2l6
ZSgpID4gMCkKICAgICAgICAgdW5yZWdpc3RlclRleHR1cmUoKm1fdGV4dHVyZXMuYmVnaW4oKSk7
CiAKLSAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0
dXJlLiBXZSBkb24ndCBoYXZlIHRoZSByZXNvdXJjZVByb3ZpZGVyCi0gICAgLy8gdG8gZGVsZXRl
IHRoZSB0ZXh0dXJlcyBhdCB0aGlzIHRpbWUgc28gY2xlYXJNZW1vcnkoKSBuZWVkcyB0byBiZSBj
YWxsZWQgYmVmb3JlIHRoaXMuCi0gICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkKLSAg
ICAgICAgZGVzdHJveUJhY2tpbmcoKm1fYmFja2luZ3MuYmVnaW4oKSwgMCk7CisgICAgZGVsZXRl
RXZpY3RlZEJhY2tpbmdzKCk7CisKKyAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEg
bGVha2VkIG9wZW5nbCB0ZXh0dXJlLiBUaGVyZSBzb3VsZCBiZSBub25lLgorICAgIEFTU0VSVCht
X2JhY2tpbmdzLmlzRW1wdHkoKSk7CiB9CiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpwcmlvcml0aXplVGV4dHVyZXMoKQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1By
aW9yaXRpemVkVGV4CiAKICAgICAvLyBPdGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVzdCBh
bGxvY2F0ZSBhIG5ldyBiYWNraW5nIHRleHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0gICAg
ICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMo
KSwgcmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgIGV2aWN0QmFja2luZ3NUb1JlZHVjZU1lbW9y
eShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgdHJ1ZSwgcmVzb3Vy
Y2VQcm92aWRlcik7CiAgICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNp
emUoKSwgdGV4dHVyZS0+Zm9ybWF0KCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIApAQCAt
MjI2LDE4ICsyMjYsMTkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVp
cmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgKICAgICBiYWNraW5nLT51
cGRhdGVQcmlvcml0eSgpOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVzLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZXZpY3RCYWNr
aW5nc1RvUmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVzLCBib29sIHJlc3BlY3RNYW5hZ2Vy
UHJpb3JpdHlDdXRvZmYsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsK
LSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhy
ZWFkQmxvY2tlZCgpKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAg
IGlmIChtZW1vcnlVc2VCeXRlcygpIDw9IGxpbWl0Qnl0ZXMpCiAgICAgICAgIHJldHVybjsKKwog
ICAgIC8vIERlc3Ryb3kgYmFja2luZ3MgdW50aWwgd2UgYXJlIGJlbG93IHRoZSBsaW1pdCwKICAg
ICAvLyBvciB1bnRpbCBhbGwgYmFja2luZ3MgcmVtYWluaW5nIGFyZSBhYm92ZSB0aGUgY3V0b2Zm
LgogICAgIHdoaWxlIChtZW1vcnlVc2VCeXRlcygpID4gbGltaXRCeXRlcyAmJiBtX2JhY2tpbmdz
LnNpemUoKSA+IDApIHsKLSAgICAgICAgQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tp
bmdzLmJlZ2luKCk7Ci0gICAgICAgIGlmICgoKml0KS0+aGFkT3duZXJBdExhc3RQcmlvcml0eVVw
ZGF0ZSgpICYmICgqaXQpLT53YXNBYm92ZVByaW9yaXR5Q3V0b2ZmQXRMYXN0UHJpb3JpdHlVcGRh
dGUoKSkKKyAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcgPSAq
bV9iYWNraW5ncy5iZWdpbigpOworICAgICAgICBpZiAocmVzcGVjdE1hbmFnZXJQcmlvcml0eUN1
dG9mZiAmJiBiYWNraW5nLT5oYWRPd25lckF0TGFzdFByaW9yaXR5VXBkYXRlKCkgJiYgYmFja2lu
Zy0+d2FzQWJvdmVQcmlvcml0eUN1dG9mZkF0TGFzdFByaW9yaXR5VXBkYXRlKCkpCiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlk
ZXIpOworICAgICAgICBldmljdEJhY2tpbmdSZXNvdXJjZShiYWNraW5nLCByZXNvdXJjZVByb3Zp
ZGVyKTsKICAgICB9CiB9CiAKQEAgLTI0OCw3ICsyNDksNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBiYWNraW5ncyBsaXN0IGlzIHVwIHRvIGRh
dGUgYW5kIHNvcnRlZCBiZWZvcmUgdHJhdmVyc2luZyBpdC4KICAgICB1cGRhdGVCYWNraW5nc1By
aW9yaXRpZXMoKTsKIAotICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCBy
ZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBldmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnkobV9tZW1v
cnlBdmFpbGFibGVCeXRlcywgdHJ1ZSwgcmVzb3VyY2VQcm92aWRlcik7CiAgICAgQVNTRVJUKG1l
bW9yeVVzZUJ5dGVzKCkgPD0gbWF4TWVtb3J5TGltaXRCeXRlcygpKTsKIAogICAgIC8vIFdlIGN1
cnJlbnRseSBjb2xsZWN0IGJhY2tpbmdzIGZyb20gZGVsZXRlZCB0ZXh0dXJlcyBmb3IgbGF0ZXIg
cmVjeWNsaW5nLgpAQCAtMjYzLDQyICsyNjQsNjQgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmkK
ICAgICAgICAgd2FzdGVkTWVtb3J5ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBzaXpl
X3QgdGVuUGVyY2VudE9mTWVtb3J5ID0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAvIDEwOwotICAg
IGlmICh3YXN0ZWRNZW1vcnkgPD0gdGVuUGVyY2VudE9mTWVtb3J5KQotICAgICAgICByZXR1cm47
Ci0gICAgcmVkdWNlTWVtb3J5KG1lbW9yeVVzZUJ5dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVu
UGVyY2VudE9mTWVtb3J5KSwgcmVzb3VyY2VQcm92aWRlcik7CisgICAgaWYgKHdhc3RlZE1lbW9y
eSA+IHRlblBlcmNlbnRPZk1lbW9yeSkKKyAgICAgICAgZXZpY3RCYWNraW5nc1RvUmVkdWNlTWVt
b3J5KG1lbW9yeVVzZUJ5dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVuUGVyY2VudE9mTWVtb3J5
KSwgdHJ1ZSwgcmVzb3VyY2VQcm92aWRlcik7CisKKyAgICBkZWxldGVFdmljdGVkQmFja2luZ3Mo
KTsKIH0KIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsK
ICAgICBBU1NFUlQocmVzb3VyY2VQcm92aWRlcik7Ci0gICAgLy8gVW5saW5rIGFuZCBkZXN0cm95
IGFsbCBiYWNraW5nIHRleHR1cmVzLgotICAgIHdoaWxlIChtX2JhY2tpbmdzLnNpemUoKSA+IDAp
IHsKLSAgICAgICAgQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7
Ci0gICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKLSAgICAgICAgICAgICgqaXQpLT5vd25lcigp
LT51bmxpbmsoKTsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlk
ZXIpOwotICAgIH0KKyAgICBldmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnkoMCwgZmFsc2UsIHJl
c291cmNlUHJvdmlkZXIpOworICAgIGRlbGV0ZUV2aWN0ZWRCYWNraW5ncygpOwogfQogCi12b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5saW5rQWxsQmFja2luZ3MoKQordm9pZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeU9uSW1wbFRocmVhZChzaXpl
X3QgbGltaXRCeXRlcywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewot
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgZm9yIChCYWNraW5nU2V0
OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQo
KTsgKytpdCkKLSAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKQotICAgICAgICAgICAgKCppdCkt
Pm93bmVyKCktPnVubGluaygpOworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CisgICAgQVNTRVJUKHJlc291cmNlUHJvdmlkZXIpOworCisgICAgZXZpY3RCYWNraW5nc1RvUmVk
dWNlTWVtb3J5KGxpbWl0Qnl0ZXMsIGZhbHNlLCByZXNvdXJjZVByb3ZpZGVyKTsKKworICAgIC8v
IERlbGV0aW5nIGp1c3Qgc29tZSAobm90IGFsbCkgcmVzb3VyY2VzIGlzIG5vdCBzdXBwb3J0ZWQg
eWV0IGJlY2F1c2Ugd2UgZG8gbm90IGNsZWFyCisgICAgLy8gb25seSB0aGUgZGVsZXRlZCByZXNv
dXJjZXMgZnJvbSB0aGUgdGV4dHVyZSB1cGxvYWQgcXVldWVzIChyYXRoZXIsIHdlIGNsZWFyIGFs
bCB1cGxvYWRzKS4KKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiB3ZSBldmljdCBhbGwgcmVzb3Vy
Y2VzLgorICAgIEFTU0VSVChtX2JhY2tpbmdzLmlzRW1wdHkoKSk7CiB9CiAKLXZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKCkKK3ZvaWQg
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpnZXRFdmljdGVkQmFja2luZ3MoQmFja2luZ1Zl
Y3RvciYgZXZpY3RlZEJhY2tpbmdzKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOwotICAgIEJhY2tpbmdWZWN0
b3IgYmFja2luZ3NUb0RlbGV0ZTsKLSAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0g
bV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KQotICAgICAg
ICBpZiAoISgqaXQpLT5vd25lcigpKQotICAgICAgICAgICAgYmFja2luZ3NUb0RlbGV0ZS5hcHBl
bmQoKCppdCkpOworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgZXZp
Y3RlZEJhY2tpbmdzLmNsZWFyKCk7CisgICAgZXZpY3RlZEJhY2tpbmdzLmFwcGVuZChtX2V2aWN0
ZWRCYWNraW5ncyk7Cit9CiAKLSAgICBmb3IgKEJhY2tpbmdWZWN0b3I6Oml0ZXJhdG9yIGl0ID0g
YmFja2luZ3NUb0RlbGV0ZS5iZWdpbigpOyBpdCAhPSBiYWNraW5nc1RvRGVsZXRlLmVuZCgpOyAr
K2l0KQotICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgMCk7Cit2b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6dW5saW5rRXZpY3RlZEJhY2tpbmdzKGNvbnN0IEJhY2tpbmdWZWN0
b3ImIGV2aWN0ZWRCYWNraW5ncykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkpOworICAgIGZvciAoQmFja2luZ1ZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBldmljdGVk
QmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gZXZpY3RlZEJhY2tpbmdzLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gKCppdCk7Cisg
ICAgICAgIGlmIChiYWNraW5nLT5vd25lcigpKQorICAgICAgICAgICAgYmFja2luZy0+b3duZXIo
KS0+dW5saW5rKCk7CisgICAgfQorfQorCitib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6ZGVsZXRlRXZpY3RlZEJhY2tpbmdzKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkgfHwgKENDUHJveHk6OmlzSW1wbFRocmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRo
cmVhZEJsb2NrZWQoKSkpOworICAgIGJvb2wgbGlua2VkRXZpY3RlZEJhY2tpbmdzRXhpc3RlZCA9
IGZhbHNlOworICAgIGZvciAoQmFja2luZ1ZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2V2
aWN0ZWRCYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2V2aWN0ZWRCYWNraW5ncy5lbmQoKTsgKytp
dCkgeworICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9ICgq
aXQpOworICAgICAgICBpZiAoYmFja2luZy0+b3duZXIoKSkgeworICAgICAgICAgICAgbGlua2Vk
RXZpY3RlZEJhY2tpbmdzRXhpc3RlZCA9IHRydWU7CisgICAgICAgICAgICBiYWNraW5nLT5vd25l
cigpLT51bmxpbmsoKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgYmFja2luZzsKKyAgICB9
CisgICAgbV9ldmljdGVkQmFja2luZ3MuY2xlYXIoKTsKKyAgICByZXR1cm4gbGlua2VkRXZpY3Rl
ZEJhY2tpbmdzRXhpc3RlZDsKIH0KIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKQEAgLTM0Nywy
MiArMzcwLDE4IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6CiAgICAgcmV0dXJuIGJhY2tpbmc7
CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyhD
Q1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmV2
aWN0QmFja2luZ1Jlc291cmNlKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5n
LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRocmVhZEJsb2NrZWQoKSk7
CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQoYmFja2lu
Zyk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5vd25lcigpIHx8ICFiYWNraW5nLT5vd25lcigpLT5p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5vd25lcigpIHx8
ICFiYWNraW5nLT5vd25lcigpLT5pc1NlbGZNYW5hZ2VkKCkpOworICAgIEFTU0VSVChyZXNvdXJj
ZVByb3ZpZGVyKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKGJhY2tpbmcpICE9IG1fYmFj
a2luZ3MuZW5kKCkpOwogCi0gICAgaWYgKHJlc291cmNlUHJvdmlkZXIpCi0gICAgICAgIHJlc291
cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKGJhY2tpbmctPmlkKCkpOwotICAgIGlmIChiYWNr
aW5nLT5vd25lcigpKQotICAgICAgICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKKyAgICBy
ZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShiYWNraW5nLT5pZCgpKTsKKyAgICBiYWNr
aW5nLT5zZXRJZCgwKTsKICAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJhY2tpbmctPmJ5dGVzKCk7
CiAgICAgbV9iYWNraW5ncy5yZW1vdmUoYmFja2luZyk7Ci0KLSAgICBkZWxldGUgYmFja2luZzsK
KyAgICBtX2V2aWN0ZWRCYWNraW5ncy5hcHBlbmQoYmFja2luZyk7CiB9CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5oCmluZGV4IDZjMjM3ZTdhYTk3MTdmNTBlMTdmMjU2NjVkYmM1ZTliM2Q0NjQyMjAuLjliNTdi
ZGIzOTlmZTUyZDY3NzNmNDkxYjNhOWNkNWQxZjUxNjA3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCkBAIC01Myw2ICs1Myw4IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgfkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpOwogCisgICAgdHlw
ZWRlZiBWZWN0b3I8Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqPiBCYWNraW5nVmVjdG9y
OworCiAgICAgLy8gRklYTUUgKGh0dHA6Ly9jcmJ1Zy5jb20vMTM3MDk0KTogVGhpcyA2NE1CIGRl
ZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUKICAgICAvLyBvbGQgdGV4dHVyZSBtYW5hZ2Vy
IGFuZCBpcyBqdXN0IHRvIGdpdmUgdXMgYSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0aW9uIGJlZm9y
ZQogICAgIC8vIHdlIGdldCBhIGNhbGxiYWNrIGZyb20gdGhlIEdQVSBtZW1vcnkgbWFuYWdlci4g
V2Ugc2hvdWxkIHByb2JhYnkgZWl0aGVyOgpAQCAtNzQsMTIgKzc2LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIHZvaWQgY2xlYXJQcmlvcml0aWVzKCk7
CiAKKyAgICB2b2lkIHJlZHVjZU1lbW9yeU9uSW1wbFRocmVhZChzaXplX3QgbGltaXRCeXRlcywg
Q0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBnZXRFdmljdGVkQmFja2luZ3MoQmFja2lu
Z1ZlY3RvciYgZXZpY3RlZEJhY2tpbmdzKTsKKyAgICB2b2lkIHVubGlua0V2aWN0ZWRCYWNraW5n
cyhjb25zdCBCYWNraW5nVmVjdG9yJiBldmljdGVkQmFja2luZ3MpOworICAgIC8vIERlbGV0ZXMg
YWxsIGV2aWN0ZWQgYmFja2luZ3MsIHVubGlua2luZyB0aGVtIGZyb20gdGhlaXIgb3duaW5nIHRl
eHR1cmVzIGlmIG5lZWRlZC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBmdW5jdGlvbiB0
byB1bmxpbmtlZCBhbnkgYmFja2luZ3MgZnJvbSB0aGVpciBvd25pbmcgdGV4dHVyZSB3aGlsZQor
ICAgIC8vIGRlc3Ryb3lpbmcgdGhlbS4KKyAgICBib29sIGRlbGV0ZUV2aWN0ZWRCYWNraW5ncygp
OworCiAgICAgYm9vbCByZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwogCiAgICAg
dm9pZCByZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdm9pZCBjbGVhckFs
bE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2b2lkIHVubGlua0FsbEJhY2tpbmdz
KCk7Ci0gICAgdm9pZCBkZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKCk7CiAKICAgICB2b2lkIGFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CiAKQEAgLTExNiw5ICsxMjQsOSBAQCBwcml2YXRlOgogICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50IG1h
eFRleHR1cmVTaXplLCBpbnQgcG9vbCk7CiAKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdzUHJpb3Jp
dGllcygpOwotICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CisgICAgdm9pZCBldmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnkoc2l6ZV90IGxp
bWl0Qnl0ZXMsIGJvb2wgcmVzcGVjdE1hbmFnZXJQcmlvcml0eUN1dG9mZiwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGNyZWF0ZUJhY2tp
bmcoSW50U2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2
b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiwgQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBldmljdEJhY2tpbmdSZXNvdXJjZShDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyosIENDUmVzb3VyY2VQcm92aWRlciopOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIHZvaWQgYXNzZXJ0SW52YXJpYW50cygpOwpAQCAtMTM0LDEwICsxNDIs
MTAgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1cmUq
PiBUZXh0dXJlU2V0OwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1
cmU6OkJhY2tpbmcqPiBCYWNraW5nU2V0OwogICAgIHR5cGVkZWYgVmVjdG9yPENDUHJpb3JpdGl6
ZWRUZXh0dXJlKj4gVGV4dHVyZVZlY3RvcjsKLSAgICB0eXBlZGVmIFZlY3RvcjxDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyo+IEJhY2tpbmdWZWN0b3I7CiAKICAgICBUZXh0dXJlU2V0IG1f
dGV4dHVyZXM7CiAgICAgQmFja2luZ1NldCBtX2JhY2tpbmdzOworICAgIEJhY2tpbmdWZWN0b3Ig
bV9ldmljdGVkQmFja2luZ3M7CiAKICAgICBUZXh0dXJlVmVjdG9yIG1fdGVtcFRleHR1cmVWZWN0
b3I7CiAgICAgQmFja2luZ1ZlY3RvciBtX3RlbXBCYWNraW5nVmVjdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAzYmMzZDg2Y2E3NjBhZDFkYTNlYTgwNmVh
ODY5ODMzZDJmMmM3NWYwLi5lMmU4ZjY5NTZlZjc5ZmM4M2E3MzEyZWFmYjM4YzA2ODhjNDY0MjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjc1LDYgKzI3
NSwxMiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cgogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKK3ZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoKQorewor
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgbV9sYXllclRyZWVIb3N0LT5yZWR1Y2VD
b250ZW50c1RleHR1cmVzTWVtb3J5T25JbXBsVGhyZWFkKDAsIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnJlc291cmNlUHJvdmlkZXIoKSk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVk
dWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcp
CiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsKQEAg
LTMwMCwxNSArMzA2LDIzIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29t
cG9zaXRlKCkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZVJlbmRlcmVySWZO
ZWVkZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkgewotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVubGlua0FsbENvbnRlbnRUZXh0dXJlcygpOworICAgIC8vIFVubGluayBhbnkgdGV4dHVy
ZSBiYWNraW5ncyB0aGF0IHdlcmUgZGVsZXRlZAorICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6QmFja2luZ1ZlY3RvciBldmljdGVkQ29udGVudHNUZXh0dXJlc0JhY2tpbmdzOworICAg
IHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+Z2V0RXZpY3RlZENvbnRlbnRUZXh0dXJlc0JhY2tpbmdzKGV2aWN0
ZWRDb250ZW50c1RleHR1cmVzQmFja2luZ3MpOworICAgIH0KKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyhldmljdGVkQ29udGVudHNUZXh0
dXJlc0JhY2tpbmdzKTsKKyAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZEFu
ZE1haW5UaHJlYWRCbG9ja2VkIGltcGxBbmRNYWluQmxvY2tlZDsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5kZWxldGVVbmxpbmtlZFRleHR1cmVzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+ZGVsZXRlRXZpY3RlZENvbnRlbnRUZXh0dXJlc0JhY2tpbmdzKCk7CiAgICAgfQogCiAgICAg
Q0NUZXh0dXJlVXBkYXRlUXVldWUgcXVldWU7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMocXVldWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc2V0Q29udGVudHNUZXh0dXJlc1B1
cmdlZCgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQ
dXJnZWQoKSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVzZXRDb250ZW50c1RleHR1
cmVzUHVyZ2VkKCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21taXQoKTsKICAgICBk
b0NvbW1pdChxdWV1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXgg
YTQ4YmRhZjBiMjRkZDkwMDU3ODc3ZDhiMzk1OGEyNmExOWM4ZTQ1NC4uY2VjZDY3MWE2ZjJlMWUx
YThjYTQwMmU5NDliOGUyN2NiZWY3YmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNjaGVk
dWxlQ29tcG9zaXRlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2NoZWR1bGVDb21wb3NpdGUoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENs
b2NrVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIGxlZ2Fj
eSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nLgogICAgIHZvaWQg
Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXgg
Yjk4NzM3MmZjMTRmY2YwNTJkMGY0MjE0YTU1ZGQ3MzJhNzY4ODJjZi4uMjgwYmNkYWY4NzMzMTM5
MmJlNzA1ZTJmOTNkZTg3YTk5NjhiZTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
QEAgLTM3NCw2ICszNzQsMTYgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZl
bnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmkKICAgICBtX21haW5U
aHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpzZXRBbmltYXRpb25FdmVudHMsIGV2ZW50cywgd2FsbENsb2NrVGltZSkpOwogfQogCit2
b2lkIENDVGhyZWFkUHJveHk6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKCkK
K3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cmVk
dWNlQ29udGVudHNUZXh0dXJlc01lbW9yeU9uSW1wbFRocmVhZCgwLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGdldCBh
IG5ldyBjb21taXQgYmVmb3JlIGRyYXdpbmcgYWdhaW4uCisgICAgbV9yZXNldENvbnRlbnRzVGV4
dHVyZXNQdXJnZWRBZnRlckNvbW1pdE9uSW1wbFRocmVhZCA9IGZhbHNlOworICAgIC8vIFRoZSB0
ZXh0dXJlIHVwbG9hZCBxdWV1ZSBtYXkgcmVmZXJlbmNlIHRleHR1cmVzIHRoYXQgd2VyZSBqdXN0
IHB1cmdlZCwgc28gY2xlYXIgaXQuCisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVk
c1JlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTQ3Niw4ICs0ODYs
OCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAg
IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3Bl
bmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+
Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlc1B1cmdlZCgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5tZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5nZXRFdmljdGVkQ29udGVu
dFRleHR1cmVzQmFja2luZ3MobV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPmV2aWN0ZWRDb250
ZW50c1RleHR1cmVzQmFja2luZ3MpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwog
CkBAIC01NDgsOCArNTU4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXF1ZXN0LT5jb250ZW50c1RleHR1cmVz
V2VyZURlbGV0ZWQpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dW5saW5rQWxsQ29udGVudFRl
eHR1cmVzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT51bmxpbmtFdmljdGVkQ29udGVudFRleHR1
cmVzQmFja2luZ3MocmVxdWVzdC0+ZXZpY3RlZENvbnRlbnRzVGV4dHVyZXNCYWNraW5ncyk7CiAK
ICAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlID0gYWRvcHRQdHIobmV3IEND
VGV4dHVyZVVwZGF0ZVF1ZXVlKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygq
KHF1ZXVlLmdldCgpKSwgcmVxdWVzdC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOwpAQCAt
NTc5LDcgKzU4OCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgICAg
IERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAKICAg
ICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICAgICAgQ0NQcm94eTo6aW1w
bFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgJmNvbXBsZXRpb24sIHF1ZXVlLnJl
bGVhc2UoKSwgcmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKSk7CisgICAgICAg
IENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQsICZjb21wbGV0
aW9uLCBxdWV1ZS5yZWxlYXNlKCkpKTsKICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CiAgICAg
fQogCkBAIC01ODcsNyArNTk2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkK
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlZ2luRnJhbWUoKTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlLCBib29s
IGNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBQ
YXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiBxdWV1ZSkKIHsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIp
OwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAt
NjAxLDE5ICs2MTAsMjAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChjb250ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQpIHsKLSAgICAg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSk7
Ci0gICAgICAgIC8vIFdlIHVubGlua2VkIGFsbCB0ZXh0dXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQs
IGRlbGV0ZSB0aGVtIG5vdy4KLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVVbmxpbmtl
ZFRleHR1cmVzKCk7Ci0gICAgICAgIC8vIE1hcmsgdGhhdCB3ZSBjYW4gc3RhcnQgZHJhd2luZyBh
Z2FpbiB3aGVuIHRoaXMgY29tbWl0IGlzIGNvbXBsZXRlLgotICAgICAgICBtX3Jlc2V0Q29udGVu
dHNUZXh0dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25JbXBsVGhyZWFkID0gdHJ1ZTsKLSAgICB9IGVs
c2UgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkgewot
ICAgICAgICAvLyBXZSBwdXJnZWQgdGhlIGNvbnRlbnQgdGV4dHVyZXMgb24gdGhlIGltcGwgdGhy
ZWFkIGJldHdlZW4gdGhlIHRpbWUgd2UKLSAgICAgICAgLy8gcG9zdGVkIHRoZSBiZWdpbkZyYW1l
IHRhc2sgYW5kIG5vdywgbWVhbmluZyB3ZSBoYXZlIGEgYnVuY2ggb2YKLSAgICAgICAgLy8gdXBs
b2FkcyB0aGF0IGFyZSBub3cgaW52YWxpZC4gQ2xlYXIgdGhlIHVwbG9hZHMgKHRoZXkgYWxsIGdv
IHRvCi0gICAgICAgIC8vIGNvbnRlbnQgdGV4dHVyZXMpLCBhbmQga2ljayBhbm90aGVyIGNvbW1p
dCB0byBmaWxsIHRoZW0gYWdhaW4uCisgICAgLy8gSWYgd2UgdW5saW5rZWQgZXZpY3RlZCB0ZXh0
dXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQsIGRlbGV0ZSB0aGVtIG5vdy4KKyAgICBpZiAobV9sYXll
clRyZWVIb3N0LT5kZWxldGVFdmljdGVkQ29udGVudFRleHR1cmVzQmFja2luZ3MoKSkgeworCisg
ICAgICAgIC8vIERlbGV0aW5nIHRoZSBldmljdGVkIHRleHR1cmVzJyBiYWNraW5ncyByZXN1bHRl
ZCBpbiBzb21lIHRleHR1cmVzIGluIHRoZQorICAgICAgICAvLyBsYXllciB0cmVlIGJlaW5nIGlu
dmFsaWRhdGVkICh1bmxpa2VkIGZyb20gdGhlaXIgYmFja2luZ3MpLiBUaGUgdXBsb2FkIHF1ZXVl
CisgICAgICAgIC8vIG1heSBjb250YWluIHJlZmVyZW5jZXMgdG8gdGhlc2UgdGV4dHVyZXMsIHNv
IGNsZWFyIHRoZSBxdWV1ZSBhbmQga2ljayBvZmYKKyAgICAgICAgLy8gYW5vdGhlciBjb21taXQg
dG8gZmlsbCB0aGVtIGFnYWluLgogICAgICAgICBxdWV1ZS0+Y2xlYXJVcGxvYWRzKCk7CiAgICAg
ICAgIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gVGhlIGxheWVyIHRyZWUgZG9lcyBub3QgcmVmZXJlbmNlIGV2aWN0ZWQgdGV4dHVyZXMsIHNv
IG1hcmsgdGhhdCB3ZQorICAgICAgICAvLyBjYW4gZHJhdyB0aGlzIHRyZWUgb25jZSB0aGlzIGNv
bW1pdCBpcyBjb21wbGV0ZS4KKyAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZXNQdXJnZWQoKSkKKyAgICAgICAgICAgIG1fcmVzZXRDb250ZW50c1RleHR1cmVz
UHVyZ2VkQWZ0ZXJDb21taXRPbkltcGxUaHJlYWQgPSB0cnVlOwogICAgIH0KIAogICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkID0gQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlcjo6Y3JlYXRlKENDUHJveHk6OmltcGxUaHJlYWQoKSwgcXVldWUsIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVu
ZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZW5kZXJlcigp
LT50ZXh0dXJlVXBsb2FkZXIoKSk7CkBAIC05MDIsOCArOTEyLDcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW8KIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmxheWVy
VHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwotICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgp
KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRy
ZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICBtX2lucHV0SGFuZGxlck9uSW1w
bFRocmVhZC5jbGVhcigpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVhcigpOwpAQCAtOTI1LDggKzkzNCw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW9uLCBDCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwotICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1
cmdlZCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAqcmVjcmVhdGVTdWNj
ZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplUmVuZGVyZXIoYWRvcHRQdHIo
Y29udGV4dFB0ciksIHRleHR1cmVVcGxvYWRlcik7CiAgICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRl
ZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBhYTJiOTUzN2E2
OGJiMWVmNWE0NmJmZTZhZTc1ZjM0ODJhY2E2ZWVjLi5iOGU5YWY5MGE5NzZkNzY2MjRiN2JlYmVk
YTc1YmUyYjk3YzZhNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC04MSw2ICs4MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRo
cmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQ29u
dGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ0NTY2hlZHVs
ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNl
VXBkYXRlcygpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTA2LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lOwogICAgICAgICBPd25QdHI8
Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKLSAgICAgICAgYm9vbCBjb250ZW50c1Rl
eHR1cmVzV2VyZURlbGV0ZWQ7CisgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
QmFja2luZ1ZlY3RvciBldmljdGVkQ29udGVudHNUZXh0dXJlc0JhY2tpbmdzOwogICAgICAgICBz
aXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7CiAgICAgfTsKICAgICBPd25QdHI8QmVn
aW5GcmFtZUFuZENvbW1pdFN0YXRlPiBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdDsKQEAgLTEy
Nyw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IHJlY3Q7CiAgICAgfTsKICAg
ICB2b2lkIGZvcmNlQmVnaW5GcmFtZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwot
ICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiwgUGFzc093blB0cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4sIGJvb2wgY29udGVudHNUZXh0dXJl
c1dlcmVEZWxldGVkKTsKKyAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+KTsKICAg
ICB2b2lkIGJlZ2luRnJhbWVBYm9ydGVkT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCByZXF1ZXN0
UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0
U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlv
biwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAppbmRleCBkN2U5NTU3ODMzNGM4Y2UwYzFlNGQyNGRlZWEyZWUzZTdiYTI4MTAy
Li4zYzQ3ODY0ZWVjMzBmNjcxMTMyZWNkY2I2ZDA5ZWRhYzNhNDg4N2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
UmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJ
REUgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RB
bmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoKSBPVkVS
UklERSB7IH0KIAogICAgIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5
ZXJUcmVlSG9zdChib29sIHBhcnRpYWxTd2FwLCBQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBncmFwaGljc0NvbnRleHQsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJvb3RQdHIpCiAgICAg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163661</attachid>
            <date>2012-09-12 11:24:03 -0700</date>
            <delta_ts>2012-09-12 11:49:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96463-20120912112337.patch</filename>
            <type>text/plain</type>
            <size>35366</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg3Mzk1ZGE2NzUyODlk
MDg0MjZhYzNjMjAxYzY3MjhmZGU3MjJkNi4uMzAwN2JlYWY4YWIwNDBlNDdmMTgzMjYxYjczMTlm
NWQ1MWNiOGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA5LTExICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRXZpY3QgdGV4dHVyZXMgdGhyb3VnaCB0aGUgdGV4dHVyZSBtYW5hZ2VyIGluc3RlYWQg
b2YgdGhlIHJlc291cmNlIHByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NjQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoZW4gZGVsZXRpbmcgY29udGVudHMgdGV4dHVyZXMnIHJlc291cmNl
cyBvbiB0aGUgaW1wbCB0aHJlYWQsIGRvIHRoZQorICAgICAgICBkZWxldGlvbiB0aHJvdWdoIHRo
ZSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgdHJhdmVyc2luZyB0aGUg
YmFja2luZ3MgbGlzdCBvbiB0aGUgaW1wbCB0aHJlYWQgd2hpbGUKKyAgICAgICAgdGhlIG1haW4g
dGhyZWFkIGlzIHJ1bm5pbmcsIHNvIHJlbW92ZSB0aGUgb25lIHJlbWFpbmluZyB0cmF2ZXJzYWwg
b2YKKyAgICAgICAgdGhlIGJhY2tpbmdzIGxpc3QgYnkgdGhlIG1haW4gdGhyZWFkLiBUaGlzIHRy
YXZlcnNhbCBoYXBwZW5zIHdoZW4KKyAgICAgICAgdW5saW5raW5nIHRleHR1cmVzIHRoYXQgd2Vy
ZSBldmljdGVkIGJ5IHRoZSBpbXBsIHRocmVhZCwgc28gZXhwbGljaXRseQorICAgICAgICBzZW5k
IHRoZSBsaXN0IG9mIGV2aWN0ZWQgYmFja2luZ3MgZnJvbSB0aGUgaW1wbCB0aHJlYWQgdG8gdGhl
IG1haW4gdGhyZWFkLgorCisgICAgICAgIFVuaWZ5IGFsbCByZXNvdXJjZSBkZWxldGlvbiBwYXRo
cyBpbiB0aGUgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLgorICAgICAgICBBbHdheXMgcGVy
Zm9ybSB0aGUgc2VxdWVuY2Ugb2YgZXZpY3Rpb24gKGRlbGV0aW5nIHRoZSBHTCByZXNvdXJjZSkg
YW5kCisgICAgICAgIHRoZW4gZGVzdHJ1Y3Rpb24gb2YgZXZpY3RlZCBiYWNraW5ncyAoZGVsZXRp
bmcgdGhlIG9iamVjdHMpLiAgQWxzbywKKyAgICAgICAgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIChl
dmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnkpIHRvIHJlZHVjZSBtZW1vcnkKKyAgICAgICAgY29u
c3VtcHRpb24gYm90aCBkdXJpbmcgY29tbWl0IGFuZCB3aGVuIGRvbmUgYnkgdGhlIGltcGwgdGhy
ZWFkIGluIHJlc3BvbnNlCisgICAgICAgIHRvIGEgcmVxdWVzdCBieSB0aGUgR1BVIG1lbW9yeSBt
YW5hZ2VyLgorCisgICAgICAgIE5vdGUgdGhhdCBkZXN0cm95aW5nIG9ubHkgc29tZSBvZiB0aGUg
cmVzb3VyY2VzIGF0IGEgdGltZSBkdXJpbmcgdGV4dHVyZQorICAgICAgICBldmljdGlvbiAoYXMg
b3Bwb3NlZCBhbGwgcmVzb3VyY2VzKSBpcyBzdGlsbCBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhl
CisgICAgICAgIHRleHR1cmUgdXBsb2FkIHF1ZXVlcyBjYW5ub3QgYmUgb25seS1wYXJ0aWFsbHkg
aW52YWxpZGF0ZWQgeWV0LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdG8gdGFrZSB0aGlzIGJl
aGF2aW9yIGludG8gYWNjb3VudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnJlZHVjZUNvbnRlbnRzVGV4dHVyZXNNZW1vcnlPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmdldEV2aWN0
ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUV2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNr
aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNUZXh0dXJl
c1B1cmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmV2aWN0QmFja2lu
Z3NUb1JlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnJlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5T25JbXBsVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Z2V0RXZpY3RlZEJhY2tp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5s
aW5rRXZpY3RlZEJhY2tpbmdzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkQmFja2luZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpldmljdEJhY2tp
bmdSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21w
b3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlbGVh
c2VDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToK
KyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA5LTExICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVkIGZvciBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjgyNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggODNjYmFjOTI1YTU5NjQzNTQyOGZhZWRkNjEyYzA1ZWRjNzNlMmExZC4uNzZmYWNmMTZkMTdl
ZjRiMWY3ODMwMmM2N2I3OTIxYjU4N2M5YzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNyBAQAogMjAxMi0wOS0xMSAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1l
cm9uQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIEV2aWN0IHRleHR1cmVzIHRo
cm91Z2ggdGhlIHRleHR1cmUgbWFuYWdlciBpbnN0ZWFkIG9mIHRoZSByZXNvdXJjZSBwcm92aWRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
bGF5ZXIgdHJlZSBob3N0IGltcGwgdGVzdCB0byBpbmNsdWRlIHRoZSBleHRyYSBpbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGFkZGVkIHRvIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQuCisK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisKKzIwMTItMDkt
MTEgIENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgW2Nocm9taXVtXSBNYWtlIHByaW9yaXRpemVkIHRleHR1cmUgbWFuYWdlciBub3QgdG91Y2gg
YmFja2luZ3MgYXJyYXkgb24gdGhlIG1haW4gdGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjExNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAppbmRleCAxNDQ3MmM3MDc4MGUzNWI5NjU5YmUyMjM4ODU3NTA0NWZiMWQyMWU3Li45
ZmVkNDc5ZjdkNTk2MTU3MTcyZTQyNWZlMzMzNmE4MWU4OWU2NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQxNCwxOCArNDE0LDMzIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBtX3Byb3h5LT5zZXRWaXNpYmxlKHZp
c2libGUpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dW5saW5rQWxsQ29udGVudFRleHR1
cmVzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZWR1Y2VDb250ZW50c1RleHR1cmVzTWVtb3J5
T25JbXBsVGhyZWFkKHNpemVfdCBsaW1pdEJ5dGVzLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeU9uSW1wbFRocmVhZChsaW1pdEJ5dGVzLCByZXNv
dXJjZVByb3ZpZGVyKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmdldEV2aWN0ZWRDb250
ZW50VGV4dHVyZXNCYWNraW5ncyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkJhY2tpbmdW
ZWN0b3ImIGV2aWN0ZWRCYWNraW5ncykKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOworICAgIGV2aWN0ZWRCYWNraW5ncy5jbGVhcigpOworICAgIGlmIChtX3JlbmRlcmVy
SW5pdGlhbGl6ZWQpCisgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Z2V0RXZpY3Rl
ZEJhY2tpbmdzKGV2aWN0ZWRCYWNraW5ncyk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
bmxpbmtFdmljdGVkQ29udGVudFRleHR1cmVzQmFja2luZ3MoY29uc3QgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpCYWNraW5nVmVjdG9yJiBldmljdGVkQmFja2luZ3MpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLmdldCgpKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVubGlua0Fs
bEJhY2tpbmdzKCk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bmxpbmtFdmljdGVk
QmFja2luZ3MoZXZpY3RlZEJhY2tpbmdzKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRl
bGV0ZVVubGlua2VkVGV4dHVyZXMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUV2aWN0
ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncygpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRocmVhZEJsb2NrZWQoKSk7CiAgICAgQVNTRVJU
KG1fY29udGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5kZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKCk7CisgICAgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZEJhY2tpbmdzKCk7CiB9CiAKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25T
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDFmMjkxYTlhYTc2ODNlNTQ4ZmYx
MDRjN2VkNzVmMjBjMmRkZDQxYzcuLjliYTFmYzIwNjIxZjIyYzFjOTY2Nzc0NGU0YTAwY2VmYzI0
MzJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yMTEsOCArMjExLDE5IEBA
IHB1YmxpYzoKIAogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAgdm9pZCB1bmxpbmtBbGxDb250ZW50VGV4dHVyZXMo
KTsKLSAgICB2b2lkIGRlbGV0ZVVubGlua2VkVGV4dHVyZXMoKTsKKyAgICAvLyBEZWxldGUgY29u
dGVudHMgdGV4dHVyZXMnIGJhY2tpbmcgcmVzb3VyY2VzIHVudGlsIHRoZXkgdXNlIG9ubHkgYnl0
ZXNMaW1pdCBieXRlcy4gVGhpcyBtYXkKKyAgICAvLyBiZSBjYWxsZWQgb24gdGhlIGltcGwgdGhy
ZWFkIHdoaWxlIHRoZSBtYWluIHRocmVhZCBpcyBydW5uaW5nLgorICAgIHZvaWQgcmVkdWNlQ29u
dGVudHNUZXh0dXJlc01lbW9yeU9uSW1wbFRocmVhZChzaXplX3QgYnl0ZXNMaW1pdCwgQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CisgICAgLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2YgYWxsIGNvbnRlbnRz
IHRleHR1cmVzJyBiYWNraW5ncyB0aGF0IGhhdmUgYmVlbiBldmljdGVkLCB0byBwYXNzIHRvIHRo
ZQorICAgIC8vIG1haW4gdGhyZWFkIHRvIHVubGluayB0aGVtIGZyb20gdGhlaXIgb3duaW5nIHRl
eHR1cmVzLgorICAgIHZvaWQgZ2V0RXZpY3RlZENvbnRlbnRUZXh0dXJlc0JhY2tpbmdzKENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6QmFja2luZ1ZlY3RvciYpOworICAgIC8vIFVubGluayB0
aGUgbGlzdCBvZiBjb250ZW50cyB0ZXh0dXJlcycgYmFja2luZ3MgZnJvbSB0aGVpciBvd25pbmcg
dGV4dHVyZXMgb24gdGhlIG1haW4gdGhyZWFkCisgICAgLy8gYmVmb3JlIHVwZGF0aW5nIGxheWVy
cy4KKyAgICB2b2lkIHVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncyhjb25zdCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkJhY2tpbmdWZWN0b3ImKTsKKyAgICAvLyBEZWxl
dGVzIGFsbCBldmljdGVkIGJhY2tpbmdzLCB1bmxpbmtpbmcgdGhlbSBmcm9tIHRoZWlyIG93bmlu
ZyB0ZXh0dXJlcyBpZiBuZWVkZWQuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgZnVuY3Rp
b24gaGFkIHRvIHVubGluayBhbnkgYmFja2luZ3MgZnJvbSB0aGVpciBvd25pbmcgdGV4dHVyZSB3
aGVuCisgICAgLy8gZGVzdHJveWluZyB0aGVtLiBJZiB0aGlzIHdhcyB0aGUgY2FzZSwgdGhlIGlt
cGwgbGF5ZXIgdHJlZSBtYXkgY29udGFpbiBpbnZhbGlkIHJlc291cmNlcy4KKyAgICBib29sIGRl
bGV0ZUV2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNraW5ncygpOwogCiAgICAgYm9vbCB2aXNpYmxl
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAzZGIwZTBmZjdk
NDcyMmE2MmE2MTliYTRmNjBjODVhZDI5NjE0MDdhLi5jYzkyODA0YzIyNTE2OTlhNjU3MGE2NGUy
NjBlMzE5NzBiZjhmNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtNTIxLDggKzUyMSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNv
bnRlbnRzVGV4dHVyZXMoKQogewogICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3Vy
Y2VzKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJn
ZWQgPSB0cnVlOworICAgIG1fY2xpZW50LT5yZWxlYXNlQ29udGVudHNUZXh0dXJlc09uSW1wbFRo
cmVhZCgpOworICAgIHNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsKICAgICBtX2NsaWVudC0+
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICBtX2NsaWVudC0+b25DYW5EcmF3U3Rh
dGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9CkBAIC03MzMsNiArNzMzLDEyIEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZVJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRlCiAgICAgcmV0dXJuIG1fcmVuZGVyZXI7CiB9CiAKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpCit7CisgICAgbV9jb250ZW50
c1RleHR1cmVzUHVyZ2VkID0gdHJ1ZTsKKyAgICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFu
Z2VkKGNhbkRyYXcoKSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVzZXRDb250
ZW50c1RleHR1cmVzUHVyZ2VkKCkKIHsKICAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4MGUwMDMxOTg5
ZDE2MWIxYzNmNGU1MzQ5MjcwZThjNjA1NmRkYWZkLi5mNTU3ZGRkOGNiNDc5NzY5MTZiNzdmMzQw
NjFlZjVkN2UwNzkwMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBA
IC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBk
b3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQ29udGVu
dHNUZXh0dXJlc09uSW1wbFRocmVhZCgpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVy
aW5nIHN0YXRlCkBAIC0xNTcsNiArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNl
RnJhbWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVOdW1iZXIgPSBmcmFt
ZU51bWJlcjsgfQogCiAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzUHVyZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkOyB9CisgICAgdm9pZCBzZXRDb250ZW50c1Rl
eHR1cmVzUHVyZ2VkKCk7CiAgICAgdm9pZCByZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsK
ICAgICBzaXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IGNkMjY3ZDljYTE2MzA0MWU2Y2Ew
Zjk2ZWZkYTU3YmY4YmUwOWIzOTkuLmNhNjViYTllMTk3NDQ0OTUwYjk5OWU3ZmMyODdlNTgyZTFh
NjVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAgICAgd2hpbGUgKG1fdGV4dHVyZXMuc2l6
ZSgpID4gMCkKICAgICAgICAgdW5yZWdpc3RlclRleHR1cmUoKm1fdGV4dHVyZXMuYmVnaW4oKSk7
CiAKLSAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0
dXJlLiBXZSBkb24ndCBoYXZlIHRoZSByZXNvdXJjZVByb3ZpZGVyCi0gICAgLy8gdG8gZGVsZXRl
IHRoZSB0ZXh0dXJlcyBhdCB0aGlzIHRpbWUgc28gY2xlYXJNZW1vcnkoKSBuZWVkcyB0byBiZSBj
YWxsZWQgYmVmb3JlIHRoaXMuCi0gICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkKLSAg
ICAgICAgZGVzdHJveUJhY2tpbmcoKm1fYmFja2luZ3MuYmVnaW4oKSwgMCk7CisgICAgZGVsZXRl
RXZpY3RlZEJhY2tpbmdzKCk7CisKKyAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEg
bGVha2VkIG9wZW5nbCB0ZXh0dXJlLiBUaGVyZSBzaG91bGQgYmUgbm9uZS4KKyAgICBBU1NFUlQo
bV9iYWNraW5ncy5pc0VtcHR5KCkpOwogfQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKCkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQ
cmlvcml0aXplZFRleAogCiAgICAgLy8gT3RoZXJ3aXNlIHJlZHVjZSBtZW1vcnkgYW5kIGp1c3Qg
YWxsb2NhdGUgYSBuZXcgYmFja2luZyB0ZXh1cmVzLgogICAgIGlmICghYmFja2luZykgewotICAg
ICAgICByZWR1Y2VNZW1vcnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1cmUtPmJ5dGVz
KCksIHJlc291cmNlUHJvdmlkZXIpOworICAgICAgICBldmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1v
cnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1cmUtPmJ5dGVzKCksIFJlc3BlY3RNYW5h
Z2VyUHJpb3JpdHlDdXRvZmYsIHJlc291cmNlUHJvdmlkZXIpOwogICAgICAgICBiYWNraW5nID0g
Y3JlYXRlQmFja2luZyh0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCByZXNvdXJj
ZVByb3ZpZGVyKTsKICAgICB9CiAKQEAgLTIyNiwxOCArMjI2LDIwIEBAIHZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9y
aXRpemVkVGV4CiAgICAgYmFja2luZy0+dXBkYXRlUHJpb3JpdHkoKTsKIH0KIAotdm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShzaXplX3QgbGltaXRCeXRlcywg
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQordm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmV2aWN0QmFja2luZ3NUb1JlZHVjZU1lbW9yeShzaXplX3QgbGltaXRC
eXRlcywgRXZpY3Rpb25Qcmlvcml0eVBvbGljeSBldmljdGlvblBvbGljeSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOworICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1lbW9yeVVzZUJ5dGVzKCkgPD0gbGlt
aXRCeXRlcykKICAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRGVzdHJveSBiYWNraW5ncyB1bnRp
bCB3ZSBhcmUgYmVsb3cgdGhlIGxpbWl0LAogICAgIC8vIG9yIHVudGlsIGFsbCBiYWNraW5ncyBy
ZW1haW5pbmcgYXJlIGFib3ZlIHRoZSBjdXRvZmYuCiAgICAgd2hpbGUgKG1lbW9yeVVzZUJ5dGVz
KCkgPiBsaW1pdEJ5dGVzICYmIG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewotICAgICAgICBCYWNr
aW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgq
aXQpLT5oYWRPd25lckF0TGFzdFByaW9yaXR5VXBkYXRlKCkgJiYgKCppdCktPndhc0Fib3ZlUHJp
b3JpdHlDdXRvZmZBdExhc3RQcmlvcml0eVVwZGF0ZSgpKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCByZXNvdXJjZVByb3ZpZGVyKTsKKyAgICAgICAg
Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcgPSAqbV9iYWNraW5ncy5iZWdp
bigpOworICAgICAgICBpZiAoZXZpY3Rpb25Qb2xpY3kgPT0gUmVzcGVjdE1hbmFnZXJQcmlvcml0
eUN1dG9mZikKKyAgICAgICAgICAgIGlmIChiYWNraW5nLT5oYWRPd25lckF0TGFzdFByaW9yaXR5
VXBkYXRlKCkgJiYgYmFja2luZy0+d2FzQWJvdmVQcmlvcml0eUN1dG9mZkF0TGFzdFByaW9yaXR5
VXBkYXRlKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGV2aWN0QmFja2luZ1Jl
c291cmNlKGJhY2tpbmcsIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIH0KIApAQCAtMjQ4LDcg
KzI1MCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnko
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGJhY2tpbmdzIGxpc3QgaXMgdXAgdG8gZGF0ZSBhbmQgc29ydGVkIGJlZm9yZSB0cmF2ZXJz
aW5nIGl0LgogICAgIHVwZGF0ZUJhY2tpbmdzUHJpb3JpdGllcygpOwogCi0gICAgcmVkdWNlTWVt
b3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMsIHJlc291cmNlUHJvdmlkZXIpOworICAgIGV2aWN0
QmFja2luZ3NUb1JlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCBSZXNwZWN0TWFu
YWdlclByaW9yaXR5Q3V0b2ZmLCByZXNvdXJjZVByb3ZpZGVyKTsKICAgICBBU1NFUlQobWVtb3J5
VXNlQnl0ZXMoKSA8PSBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwogCiAgICAgLy8gV2UgY3VycmVu
dGx5IGNvbGxlY3QgYmFja2luZ3MgZnJvbSBkZWxldGVkIHRleHR1cmVzIGZvciBsYXRlciByZWN5
Y2xpbmcuCkBAIC0yNjMsNDIgKzI2NSw2NCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6cmVkdWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aQogICAg
ICAgICB3YXN0ZWRNZW1vcnkgKz0gKCppdCktPmJ5dGVzKCk7CiAgICAgfQogICAgIHNpemVfdCB0
ZW5QZXJjZW50T2ZNZW1vcnkgPSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC8gMTA7Ci0gICAgaWYg
KHdhc3RlZE1lbW9yeSA8PSB0ZW5QZXJjZW50T2ZNZW1vcnkpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZWR1Y2VNZW1vcnkobWVtb3J5VXNlQnl0ZXMoKSAtICh3YXN0ZWRNZW1vcnkgLSB0ZW5QZXJj
ZW50T2ZNZW1vcnkpLCByZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBpZiAod2FzdGVkTWVtb3J5ID4g
dGVuUGVyY2VudE9mTWVtb3J5KQorICAgICAgICBldmljdEJhY2tpbmdzVG9SZWR1Y2VNZW1vcnko
bWVtb3J5VXNlQnl0ZXMoKSAtICh3YXN0ZWRNZW1vcnkgLSB0ZW5QZXJjZW50T2ZNZW1vcnkpLCBS
ZXNwZWN0TWFuYWdlclByaW9yaXR5Q3V0b2ZmLCByZXNvdXJjZVByb3ZpZGVyKTsKKworICAgIGRl
bGV0ZUV2aWN0ZWRCYWNraW5ncygpOwogfQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01h
aW5UaHJlYWRCbG9ja2VkKCkpOwogICAgIEFTU0VSVChyZXNvdXJjZVByb3ZpZGVyKTsKLSAgICAv
LyBVbmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tpbmcgdGV4dHVyZXMuCi0gICAgd2hpbGUgKG1f
YmFja2luZ3Muc2l6ZSgpID4gMCkgewotICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9
IG1fYmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKQotICAgICAg
ICAgICAgKCppdCktPm93bmVyKCktPnVubGluaygpOwotICAgICAgICBkZXN0cm95QmFja2luZygo
Kml0KSwgcmVzb3VyY2VQcm92aWRlcik7Ci0gICAgfQorICAgIGV2aWN0QmFja2luZ3NUb1JlZHVj
ZU1lbW9yeSgwLCBEb05vdFJlc3BlY3RNYW5hZ2VyUHJpb3JpdHlDdXRvZmYsIHJlc291cmNlUHJv
dmlkZXIpOworICAgIGRlbGV0ZUV2aWN0ZWRCYWNraW5ncygpOwogfQogCi12b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5saW5rQWxsQmFja2luZ3MoKQordm9pZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeU9uSW1wbFRocmVhZChzaXplX3QgbGltaXRC
eXRlcywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIEFTU0VS
VChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRv
ciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkK
LSAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKQotICAgICAgICAgICAgKCppdCktPm93bmVyKCkt
PnVubGluaygpOworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgQVNT
RVJUKHJlc291cmNlUHJvdmlkZXIpOworCisgICAgZXZpY3RCYWNraW5nc1RvUmVkdWNlTWVtb3J5
KGxpbWl0Qnl0ZXMsIERvTm90UmVzcGVjdE1hbmFnZXJQcmlvcml0eUN1dG9mZiwgcmVzb3VyY2VQ
cm92aWRlcik7CisKKyAgICAvLyBEZWxldGluZyBqdXN0IHNvbWUgKG5vdCBhbGwpIHJlc291cmNl
cyBpcyBub3Qgc3VwcG9ydGVkIHlldCBiZWNhdXNlIHdlIGRvIG5vdCBjbGVhcgorICAgIC8vIG9u
bHkgdGhlIGRlbGV0ZWQgcmVzb3VyY2VzIGZyb20gdGhlIHRleHR1cmUgdXBsb2FkIHF1ZXVlcyAo
cmF0aGVyLCB3ZSBjbGVhciBhbGwgdXBsb2FkcykuCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYg
d2UgZXZpY3QgYWxsIHJlc291cmNlcy4KKyAgICBBU1NFUlQobV9iYWNraW5ncy5pc0VtcHR5KCkp
OwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlQWxsVW5saW5r
ZWRCYWNraW5ncygpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Z2V0RXZpY3Rl
ZEJhY2tpbmdzKEJhY2tpbmdWZWN0b3ImIGV2aWN0ZWRCYWNraW5ncykKIHsKLSAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgp
KTsKLSAgICBCYWNraW5nVmVjdG9yIGJhY2tpbmdzVG9EZWxldGU7Ci0gICAgZm9yIChCYWNraW5n
U2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5l
bmQoKTsgKytpdCkKLSAgICAgICAgaWYgKCEoKml0KS0+b3duZXIoKSkKLSAgICAgICAgICAgIGJh
Y2tpbmdzVG9EZWxldGUuYXBwZW5kKCgqaXQpKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOworICAgIGV2aWN0ZWRCYWNraW5ncy5jbGVhcigpOworICAgIGV2aWN0ZWRCYWNr
aW5ncy5hcHBlbmQobV9ldmljdGVkQmFja2luZ3MpOworfQogCi0gICAgZm9yIChCYWNraW5nVmVj
dG9yOjppdGVyYXRvciBpdCA9IGJhY2tpbmdzVG9EZWxldGUuYmVnaW4oKTsgaXQgIT0gYmFja2lu
Z3NUb0RlbGV0ZS5lbmQoKTsgKytpdCkKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIDAp
Owordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGlua0V2aWN0ZWRCYWNraW5n
cyhjb25zdCBCYWNraW5nVmVjdG9yJiBldmljdGVkQmFja2luZ3MpCit7CisgICAgQVNTRVJUKEND
UHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBmb3IgKEJhY2tpbmdWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gZXZpY3RlZEJhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IGV2aWN0ZWRCYWNraW5n
cy5lbmQoKTsgKytpdCkgeworICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyog
YmFja2luZyA9ICgqaXQpOworICAgICAgICBpZiAoYmFja2luZy0+b3duZXIoKSkKKyAgICAgICAg
ICAgIGJhY2tpbmctPm93bmVyKCktPnVubGluaygpOworICAgIH0KK30KKworYm9vbCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRCYWNraW5ncygpCit7CisgICAgQVNT
RVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpIHx8IChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAm
JiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpKTsKKyAgICBib29sIGxpbmtlZEV2aWN0
ZWRCYWNraW5nc0V4aXN0ZWQgPSBmYWxzZTsKKyAgICBmb3IgKEJhY2tpbmdWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9ldmljdGVkQmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9ldmljdGVk
QmFja2luZ3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqIGJhY2tpbmcgPSAoKml0KTsKKyAgICAgICAgaWYgKGJhY2tpbmctPm93bmVyKCkpIHsK
KyAgICAgICAgICAgIGxpbmtlZEV2aWN0ZWRCYWNraW5nc0V4aXN0ZWQgPSB0cnVlOworICAgICAg
ICAgICAgYmFja2luZy0+b3duZXIoKS0+dW5saW5rKCk7CisgICAgICAgIH0KKyAgICAgICAgZGVs
ZXRlIGJhY2tpbmc7CisgICAgfQorICAgIG1fZXZpY3RlZEJhY2tpbmdzLmNsZWFyKCk7CisgICAg
cmV0dXJuIGxpbmtlZEV2aWN0ZWRCYWNraW5nc0V4aXN0ZWQ7CiB9CiAKIHZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUq
IHRleHR1cmUpCkBAIC0zNDcsMjIgKzM3MSwxOCBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFj
a2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpegog
ICAgIHJldHVybiBiYWNraW5nOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcs
IENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3ZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpldmljdEJhY2tpbmdSZXNvdXJjZShDQ1ByaW9yaXRpemVkVGV4dHVy
ZTo6QmFja2luZyogYmFja2luZywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01h
aW5UaHJlYWRCbG9ja2VkKCkpOworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CiAgICAgQVNTRVJUKGJhY2tpbmcpOwotICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAh
YmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwotICAgIEFTU0VSVCgh
YmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNTZWxmTWFuYWdlZCgpKTsK
KyAgICBBU1NFUlQocmVzb3VyY2VQcm92aWRlcik7CiAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmlu
ZChiYWNraW5nKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKIAotICAgIGlmIChyZXNvdXJjZVByb3Zp
ZGVyKQotICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShiYWNraW5nLT5p
ZCgpKTsKLSAgICBpZiAoYmFja2luZy0+b3duZXIoKSkKLSAgICAgICAgYmFja2luZy0+b3duZXIo
KS0+dW5saW5rKCk7CisgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoYmFja2lu
Zy0+aWQoKSk7CisgICAgYmFja2luZy0+c2V0SWQoMCk7CiAgICAgbV9tZW1vcnlVc2VCeXRlcyAt
PSBiYWNraW5nLT5ieXRlcygpOwogICAgIG1fYmFja2luZ3MucmVtb3ZlKGJhY2tpbmcpOwotCi0g
ICAgZGVsZXRlIGJhY2tpbmc7CisgICAgbV9ldmljdGVkQmFja2luZ3MuYXBwZW5kKGJhY2tpbmcp
OwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCA2YzIzN2U3YWE5NzE3ZjUwZTE3ZjI1NjY1ZGJj
NWU5YjNkNDY0MjIwLi5iYmMwYzdkMTA1YWQ4MDRiNTkwY2VmMzM0MDc1NTZkNGY1N2EyYzc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAt
NTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5DQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIoKTsKIAorICAgIHR5cGVkZWYgVmVjdG9yPENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNr
aW5nKj4gQmFja2luZ1ZlY3RvcjsKKwogICAgIC8vIEZJWE1FIChodHRwOi8vY3JidWcuY29tLzEz
NzA5NCk6IFRoaXMgNjRNQiBkZWZhdWx0IGlzIGEgc3RyYWdnbGVyIGZyb20gdGhlCiAgICAgLy8g
b2xkIHRleHR1cmUgbWFuYWdlciBhbmQgaXMganVzdCB0byBnaXZlIHVzIGEgZGVmYXVsdCBtZW1v
cnkgYWxsb2NhdGlvbiBiZWZvcmUKICAgICAvLyB3ZSBnZXQgYSBjYWxsYmFjayBmcm9tIHRoZSBH
UFUgbWVtb3J5IG1hbmFnZXIuIFdlIHNob3VsZCBwcm9iYWJ5IGVpdGhlcjoKQEAgLTc0LDEyICs3
NiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICB2b2lk
IGNsZWFyUHJpb3JpdGllcygpOwogCisgICAgdm9pZCByZWR1Y2VNZW1vcnlPbkltcGxUaHJlYWQo
c2l6ZV90IGxpbWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQgZ2V0RXZp
Y3RlZEJhY2tpbmdzKEJhY2tpbmdWZWN0b3ImIGV2aWN0ZWRCYWNraW5ncyk7CisgICAgdm9pZCB1
bmxpbmtFdmljdGVkQmFja2luZ3MoY29uc3QgQmFja2luZ1ZlY3RvciYgZXZpY3RlZEJhY2tpbmdz
KTsKKyAgICAvLyBEZWxldGVzIGFsbCBldmljdGVkIGJhY2tpbmdzLCB1bmxpbmtpbmcgdGhlbSBm
cm9tIHRoZWlyIG93bmluZyB0ZXh0dXJlcyBpZiBuZWVkZWQuCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoaXMgZnVuY3Rpb24gdG8gdW5saW5rZWQgYW55IGJhY2tpbmdzIGZyb20gdGhlaXIgb3du
aW5nIHRleHR1cmUgd2hpbGUKKyAgICAvLyBkZXN0cm95aW5nIHRoZW0uCisgICAgYm9vbCBkZWxl
dGVFdmljdGVkQmFja2luZ3MoKTsKKwogICAgIGJvb2wgcmVxdWVzdExhdGUoQ0NQcmlvcml0aXpl
ZFRleHR1cmUqKTsKIAogICAgIHZvaWQgcmVkdWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciop
OwogICAgIHZvaWQgY2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdm9p
ZCB1bmxpbmtBbGxCYWNraW5ncygpOwotICAgIHZvaWQgZGVsZXRlQWxsVW5saW5rZWRCYWNraW5n
cygpOwogCiAgICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRp
emVkVGV4dHVyZSosIENDUmVzb3VyY2VQcm92aWRlciopOwogCkBAIC05MCw2ICs5OCwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3Q7CiAKKyAgICBlbnVtIEV2aWN0aW9uUHJpb3JpdHlQb2xpY3kgeworICAgICAgICBSZXNwZWN0
TWFuYWdlclByaW9yaXR5Q3V0b2ZmLAorICAgICAgICBEb05vdFJlc3BlY3RNYW5hZ2VyUHJpb3Jp
dHlDdXRvZmYsCisgICAgfTsKKwogICAgIC8vIENvbXBhcmUgdGV4dHVyZXMuIEhpZ2hlc3QgcHJp
b3JpdHkgZmlyc3QuCiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVUZXh0dXJlcyhDQ1By
aW9yaXRpemVkVGV4dHVyZSogYSwgQ0NQcmlvcml0aXplZFRleHR1cmUqIGIpCiAgICAgewpAQCAt
MTE2LDkgKzEyOSw5IEBAIHByaXZhdGU6CiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
KHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCBwb29s
KTsKIAogICAgIHZvaWQgdXBkYXRlQmFja2luZ3NQcmlvcml0aWVzKCk7Ci0gICAgdm9pZCByZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGV2
aWN0QmFja2luZ3NUb1JlZHVjZU1lbW9yeShzaXplX3QgbGltaXRCeXRlcywgRXZpY3Rpb25Qcmlv
cml0eVBvbGljeSwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgQ0NQcmlvcml0aXplZFRleHR1
cmU6OkJhY2tpbmcqIGNyZWF0ZUJhY2tpbmcoSW50U2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1Jl
c291cmNlUHJvdmlkZXIqKTsKLSAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpCYWNraW5nKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBldmljdEJh
Y2tpbmdSZXNvdXJjZShDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyosIENDUmVzb3VyY2VQ
cm92aWRlciopOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZvaWQgYXNzZXJ0SW52YXJp
YW50cygpOwpAQCAtMTM0LDEwICsxNDcsMTAgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hT
ZXQ8Q0NQcmlvcml0aXplZFRleHR1cmUqPiBUZXh0dXJlU2V0OwogICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqPiBCYWNraW5nU2V0OwogICAgIHR5
cGVkZWYgVmVjdG9yPENDUHJpb3JpdGl6ZWRUZXh0dXJlKj4gVGV4dHVyZVZlY3RvcjsKLSAgICB0
eXBlZGVmIFZlY3RvcjxDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyo+IEJhY2tpbmdWZWN0
b3I7CiAKICAgICBUZXh0dXJlU2V0IG1fdGV4dHVyZXM7CiAgICAgQmFja2luZ1NldCBtX2JhY2tp
bmdzOworICAgIEJhY2tpbmdWZWN0b3IgbV9ldmljdGVkQmFja2luZ3M7CiAKICAgICBUZXh0dXJl
VmVjdG9yIG1fdGVtcFRleHR1cmVWZWN0b3I7CiAgICAgQmFja2luZ1ZlY3RvciBtX3RlbXBCYWNr
aW5nVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAz
YmMzZDg2Y2E3NjBhZDFkYTNlYTgwNmVhODY5ODMzZDJmMmM3NWYwLi5lMmU4ZjY5NTZlZjc5ZmM4
M2E3MzEyZWFmYjM4YzA2ODhjNDY0MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcApAQCAtMjc1LDYgKzI3NSwxMiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cgog
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2Nr
VGltZSk7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVsZWFzZUNvbnRlbnRzVGV4
dHVyZXNPbkltcGxUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAg
bV9sYXllclRyZWVIb3N0LT5yZWR1Y2VDb250ZW50c1RleHR1cmVzTWVtb3J5T25JbXBsVGhyZWFk
KDAsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7Cit9CisKIC8vIENh
bGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lk
Z2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBv
c2l0ZUltbWVkaWF0ZWx5KCkKIHsKQEAgLTMwMCwxNSArMzA2LDIzIEBAIGJvb2wgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKCkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dC0+aW5pdGlhbGl6ZVJlbmRlcmVySWZOZWVkZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkg
ewotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVubGlua0FsbENvbnRlbnRUZXh0dXJlcygpOwor
ICAgIC8vIFVubGluayBhbnkgdGV4dHVyZSBiYWNraW5ncyB0aGF0IHdlcmUgZGVsZXRlZAorICAg
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6QmFja2luZ1ZlY3RvciBldmljdGVkQ29udGVu
dHNUZXh0dXJlc0JhY2tpbmdzOworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Z2V0RXZpY3RlZENvbnRl
bnRUZXh0dXJlc0JhY2tpbmdzKGV2aWN0ZWRDb250ZW50c1RleHR1cmVzQmFja2luZ3MpOworICAg
IH0KKyAgICBtX2xheWVyVHJlZUhvc3QtPnVubGlua0V2aWN0ZWRDb250ZW50VGV4dHVyZXNCYWNr
aW5ncyhldmljdGVkQ29udGVudHNUZXh0dXJlc0JhY2tpbmdzKTsKKyAgICB7CiAgICAgICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkIGltcGxBbmRNYWluQmxv
Y2tlZDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVVbmxpbmtlZFRleHR1cmVzKCk7
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlRXZpY3RlZENvbnRlbnRUZXh0dXJlc0Jh
Y2tpbmdzKCk7CiAgICAgfQogCiAgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUgcXVldWU7CiAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMocXVldWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwt
Pm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+cmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCk7CiAKICAgICBtX2xheWVyVHJlZUhv
c3QtPndpbGxDb21taXQoKTsKICAgICBkb0NvbW1pdChxdWV1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgKaW5kZXggYTQ4YmRhZjBiMjRkZDkwMDU3ODc3ZDhiMzk1OGEyNmEx
OWM4ZTQ1NC4uY2VjZDY3MWE2ZjJlMWUxYThjYTQwMmU5NDliOGUyN2NiZWY3YmI3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUg
eyBtX2xheWVyVHJlZUhvc3QtPnNjaGVkdWxlQ29tcG9zaXRlKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9z
dC0+c2NoZWR1bGVDb21wb3NpdGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAKICAg
ICAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRo
ZSBzY2hlZHVsaW5nLgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYjk4NzM3MmZjMTRmY2YwNTJkMGY0MjE0YTU1ZGQ3MzJh
NzY4ODJjZi4uMjgwYmNkYWY4NzMzMTM5MmJlNzA1ZTJmOTNkZTg3YTk5NjhiZTVkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM3NCw2ICszNzQsMTYgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHI8Q0NBbmkKICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMsIGV2ZW50cywg
d2FsbENsb2NrVGltZSkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlbGVhc2VDb250ZW50
c1RleHR1cmVzT25JbXBsVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cmVkdWNlQ29udGVudHNUZXh0dXJlc01lbW9yeU9uSW1wbFRo
cmVhZCgwLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdlIGdldCBhIG5ldyBjb21taXQgYmVmb3JlIGRyYXdpbmcgYWdhaW4u
CisgICAgbV9yZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWRBZnRlckNvbW1pdE9uSW1wbFRocmVh
ZCA9IGZhbHNlOworICAgIC8vIFRoZSB0ZXh0dXJlIHVwbG9hZCBxdWV1ZSBtYXkgcmVmZXJlbmNl
IHRleHR1cmVzIHRoYXQgd2VyZSBqdXN0IHB1cmdlZCwgc28gY2xlYXIgaXQuCisgICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKK30KKwogdm9p
ZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKQEAgLTQ3Niw4ICs0ODYsOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRv
cHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdp
bkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5m
byA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBtX3Bl
bmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpOwogICAgIG1fcGVuZGlu
Z0JlZ2luRnJhbWVSZXF1ZXN0LT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyA9IG1fbGF5ZXJU
cmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCk7CisgICAgbV9sYXllclRy
ZWVIb3N0LT5nZXRFdmljdGVkQ29udGVudFRleHR1cmVzQmFja2luZ3MobV9wZW5kaW5nQmVnaW5G
cmFtZVJlcXVlc3QtPmV2aWN0ZWRDb250ZW50c1RleHR1cmVzQmFja2luZ3MpOwogCiAgICAgbV9t
YWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZSkpOwogCkBAIC01NDgsOCArNTU4LDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChy
ZXF1ZXN0LT5jb250ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQpCi0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dW5saW5rQWxsQ29udGVudFRleHR1cmVzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT51
bmxpbmtFdmljdGVkQ29udGVudFRleHR1cmVzQmFja2luZ3MocmVxdWVzdC0+ZXZpY3RlZENvbnRl
bnRzVGV4dHVyZXNCYWNraW5ncyk7CiAKICAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+
IHF1ZXVlID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZVF1ZXVlKTsKICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygqKHF1ZXVlLmdldCgpKSwgcmVxdWVzdC0+bWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMpOwpAQCAtNTc5LDcgKzU4OCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZSgpCiAgICAgICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQg
bWFpblRocmVhZEJsb2NrZWQ7CiAKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKLSAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZCwgJmNvbXBsZXRpb24sIHF1ZXVlLnJlbGVhc2UoKSwgcmVxdWVzdC0+Y29udGVudHNUZXh0dXJl
c1dlcmVEZWxldGVkKSk7CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2so
Y3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQsICZjb21wbGV0aW9uLCBxdWV1ZS5yZWxlYXNlKCkpKTsKICAgICAgICAg
Y29tcGxldGlvbi53YWl0KCk7CiAgICAgfQogCkBAIC01ODcsNyArNTk2LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlZ2luRnJh
bWUoKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NUZXh0dXJl
VXBkYXRlUXVldWU+IHF1ZXVlLCBib29sIGNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uLCBQYXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiBx
dWV1ZSkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNjAxLDE5ICs2MTAsMjAgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZW50c1RleHR1
cmVzV2VyZURlbGV0ZWQpIHsKLSAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZXNQdXJnZWQoKSk7Ci0gICAgICAgIC8vIFdlIHVubGlua2VkIGFsbCB0ZXh0
dXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQsIGRlbGV0ZSB0aGVtIG5vdy4KLSAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVVbmxpbmtlZFRleHR1cmVzKCk7Ci0gICAgICAgIC8vIE1hcmsgdGhh
dCB3ZSBjYW4gc3RhcnQgZHJhd2luZyBhZ2FpbiB3aGVuIHRoaXMgY29tbWl0IGlzIGNvbXBsZXRl
LgotICAgICAgICBtX3Jlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25JbXBs
VGhyZWFkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZXNQdXJnZWQoKSkgewotICAgICAgICAvLyBXZSBwdXJnZWQgdGhlIGNvbnRlbnQg
dGV4dHVyZXMgb24gdGhlIGltcGwgdGhyZWFkIGJldHdlZW4gdGhlIHRpbWUgd2UKLSAgICAgICAg
Ly8gcG9zdGVkIHRoZSBiZWdpbkZyYW1lIHRhc2sgYW5kIG5vdywgbWVhbmluZyB3ZSBoYXZlIGEg
YnVuY2ggb2YKLSAgICAgICAgLy8gdXBsb2FkcyB0aGF0IGFyZSBub3cgaW52YWxpZC4gQ2xlYXIg
dGhlIHVwbG9hZHMgKHRoZXkgYWxsIGdvIHRvCi0gICAgICAgIC8vIGNvbnRlbnQgdGV4dHVyZXMp
LCBhbmQga2ljayBhbm90aGVyIGNvbW1pdCB0byBmaWxsIHRoZW0gYWdhaW4uCisgICAgLy8gSWYg
d2UgdW5saW5rZWQgZXZpY3RlZCB0ZXh0dXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQsIGRlbGV0ZSB0
aGVtIG5vdy4KKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5kZWxldGVFdmljdGVkQ29udGVudFRl
eHR1cmVzQmFja2luZ3MoKSkgeworCisgICAgICAgIC8vIERlbGV0aW5nIHRoZSBldmljdGVkIHRl
eHR1cmVzJyBiYWNraW5ncyByZXN1bHRlZCBpbiBzb21lIHRleHR1cmVzIGluIHRoZQorICAgICAg
ICAvLyBsYXllciB0cmVlIGJlaW5nIGludmFsaWRhdGVkICh1bmxpa2VkIGZyb20gdGhlaXIgYmFj
a2luZ3MpLiBUaGUgdXBsb2FkIHF1ZXVlCisgICAgICAgIC8vIG1heSBjb250YWluIHJlZmVyZW5j
ZXMgdG8gdGhlc2UgdGV4dHVyZXMsIHNvIGNsZWFyIHRoZSBxdWV1ZSBhbmQga2ljayBvZmYKKyAg
ICAgICAgLy8gYW5vdGhlciBjb21taXQgdG8gZmlsbCB0aGVtIGFnYWluLgogICAgICAgICBxdWV1
ZS0+Y2xlYXJVcGxvYWRzKCk7CiAgICAgICAgIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIGxheWVyIHRyZWUgZG9lcyBub3QgcmVmZXJl
bmNlIGV2aWN0ZWQgdGV4dHVyZXMsIHNvIG1hcmsgdGhhdCB3ZQorICAgICAgICAvLyBjYW4gZHJh
dyB0aGlzIHRyZWUgb25jZSB0aGlzIGNvbW1pdCBpcyBjb21wbGV0ZS4KKyAgICAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKKyAgICAgICAgICAg
IG1fcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkQWZ0ZXJDb21taXRPbkltcGxUaHJlYWQgPSB0
cnVlOwogICAgIH0KIAogICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBs
VGhyZWFkID0gQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6Y3JlYXRlKENDUHJveHk6OmltcGxU
aHJlYWQoKSwgcXVldWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwg
bV9sYXllclRyZWVIb3N0SW1wbC0+cmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVy
VHJlZUhvc3RJbXBsLT5yZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSk7CkBAIC05MDIsOCAr
OTEyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KIHsKICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiKTsKICAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0
ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3Vy
Y2VQcm92aWRlcigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsK
ICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVhcigpOwpA
QCAtOTI1LDggKzkzNCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDCiB7CiAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQi
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+
cmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRl
cigpKTsKICAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0
aWFsaXplUmVuZGVyZXIoYWRvcHRQdHIoY29udGV4dFB0ciksIHRleHR1cmVVcGxvYWRlcik7CiAg
ICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+cmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCBhYTJiOTUzN2E2OGJiMWVmNWE0NmJmZTZhZTc1ZjM0ODJhY2E2ZWVjLi5i
OGU5YWY5MGE5NzZkNzY2MjRiN2JlYmVkYTc1YmUyYjk3YzZhNjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCgpIE9WRVJS
SURFOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTA2
LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVn
aW5UaW1lOwogICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsK
LSAgICAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQ7CisgICAgICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6QmFja2luZ1ZlY3RvciBldmljdGVkQ29udGVudHNUZXh0
dXJlc0JhY2tpbmdzOwogICAgICAgICBzaXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7
CiAgICAgfTsKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlPiBtX3BlbmRpbmdC
ZWdpbkZyYW1lUmVxdWVzdDsKQEAgLTEyNyw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgICAgICBJ
bnRSZWN0IHJlY3Q7CiAgICAgfTsKICAgICB2b2lkIGZvcmNlQmVnaW5GcmFtZU9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOwotICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgUGFzc093blB0cjxDQ1RleHR1cmVVcGRhdGVRdWV1
ZT4sIGJvb2wgY29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKTsKKyAgICB2b2lkIGJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8Q0NU
ZXh0dXJlVXBkYXRlUXVldWU+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVBYm9ydGVkT25JbXBsVGhy
ZWFkKCk7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1
ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJl
YWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBk
b3VibGUgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBkN2U5NTU3ODMzNGM4Y2Uw
YzFlNGQyNGRlZWEyZWUzZTdiYTI4MTAyLi4zYzQ3ODY0ZWVjMzBmNjcxMTMyZWNkY2I2ZDA5ZWRh
YzNhNDg4N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBt
X2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxU
aHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4
dHVyZXNPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KIAogICAgIFBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdChib29sIHBhcnRpYWxTd2FwLCBQYXNz
T3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQsIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IHJvb3RQdHIpCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>