<?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>93684</bug_id>
          
          <creation_ts>2012-08-09 20:46:53 -0700</creation_ts>
          <short_desc>[chromium] race between CCLayerTreeHostImpl::releaseContentsTextures and CCThreadProxy::beginFrameCompleteOnImplThread</short_desc>
          <delta_ts>2012-08-14 10:26:15 -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>Platform</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>1</everconfirmed>
          <reporter name="Antoine Labour">piman</reporter>
          <assigned_to name="Antoine Labour">piman</assigned_to>
          <cc>ccameron</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>692159</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-09 20:46:53 -0700</bug_when>
    <thetext>If releaseContentsTextures gets called between CCThreadProxy::scheduledActionBeginFrame and CCThreadProxy::beginFrameCompleteOnImplThread, we evict all the resources, and set the needsCommit flag, but the main thread won&apos;t know about it and paint the tiles as if the resources were not deleted, and queues a bunch of updates. When beginFrameCompleteOnImplThread gets called, we execute those updates on deleted resources, causing ASSERTs in debug and very bad things in release. Also the needsCommit flag is essentially lost in the dust, meaning we won&apos;t repaint those missing textures.

Quick solution: just delay the eviction until after the commit. However we may not want to delay the eviction in which case the proposed fix is:
- if the m_contentsTexturesWerePurgedSinceLastCommit flag is set in beginFrameCompleteOnImplThread, drop the updates that touch any managed texture
- keep track of whether we set m_contentsTexturesWerePurgedSinceLastCommit since scheduledActionBeginFrame, in which case we don&apos;t want to reset m_contentsTexturesWerePurgedSinceLastCommit in commitComplete, and post another setNeedsCommit then.

The way I reproed this is by running chrome/aura with --force-compositing-mode --enable-threaded-compositing --enable-ui-release-front-surface, open 3 tabs and switch rapidly between them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693014</commentid>
    <comment_count>1</comment_count>
      <attachid>157850</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-10 18:40:53 -0700</bug_when>
    <thetext>Created attachment 157850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693015</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-10 18:43:16 -0700</bug_when>
    <thetext>I&apos;ll write tests before landing, but please check the approach and/or if I&apos;m missing something.
My assumption if the frame is &quot;aborted&quot; (because we got invisible in the mean time) is that I can keep the state as is, and a commit will be kicked when the tab becomes visible again, causing a new beginFrame post that will validate the textures then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693308</commentid>
    <comment_count>3</comment_count>
      <attachid>157850</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-12 12:54:21 -0700</bug_when>
    <thetext>Comment on attachment 157850
Patch

Can this get unit tested? This might fit with some of the CCLayerTreeHostTest tests that test other proxy interactions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693347</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-12 17:34:17 -0700</bug_when>
    <thetext>Yes, that&apos;s the plan (as I wrote in #2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694081</commentid>
    <comment_count>5</comment_count>
      <attachid>157850</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-13 14:21:29 -0700</bug_when>
    <thetext>Comment on attachment 157850
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:272
&gt; +    bool m_beginFramePosted;
&gt; +    bool m_contentsTexturesWerePurgedSinceLastBeginFrame;
&gt; +    bool m_contentsTexturesPurged;

could you keep the more stateful bits up on CCThreadProxy?  It&apos;s the class responsible for handling state transitions (which it mostly delegates to the scheduler) and the details of the commit flow, so I think it should keep track of what it has posted to the main thread and what it needs to preserve.  Also, the single thread proxy doesn&apos;t have to worry about any of this stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694442</commentid>
    <comment_count>6</comment_count>
      <attachid>158195</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-13 20:17:47 -0700</bug_when>
    <thetext>Created attachment 158195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694443</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-13 20:18:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 157850 [details])
&gt; Can this get unit tested?

Done

(In reply to comment #5)
&gt; (From update of attachment 157850 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157850&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:272
&gt; &gt; +    bool m_beginFramePosted;
&gt; &gt; +    bool m_contentsTexturesWerePurgedSinceLastBeginFrame;
&gt; &gt; +    bool m_contentsTexturesPurged;
&gt; 
&gt; could you keep the more stateful bits up on CCThreadProxy?  It&apos;s the class responsible for handling state transitions (which it mostly delegates to the scheduler) and the details of the commit flow, so I think it should keep track of what it has posted to the main thread and what it needs to preserve.  Also, the single thread proxy doesn&apos;t have to worry about any of this stuff.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694454</commentid>
    <comment_count>8</comment_count>
      <attachid>158195</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-13 20:32:48 -0700</bug_when>
    <thetext>Comment on attachment 158195
Patch

R=me - nice test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695118</commentid>
    <comment_count>9</comment_count>
      <attachid>158195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 10:26:11 -0700</bug_when>
    <thetext>Comment on attachment 158195
Patch

Clearing flags on attachment: 158195

Committed r125577: &lt;http://trac.webkit.org/changeset/125577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695119</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 10:26:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157850</attachid>
            <date>2012-08-10 18:40:53 -0700</date>
            <delta_ts>2012-08-13 20:17:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93684-20120810184025.patch</filename>
            <type>text/plain</type>
            <size>13255</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY3NjJkMDM4MDNlYWE1
YTdlYzgxODRhM2Q0Nzc0NTk1NzljZDdjMy4uOGQ3YzZkZTFiZDAzMmI5ZTFiMDI2ZGJmNjljZGMz
ZGFkZGZhZWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTEwICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHJh
Y2UgYmV0d2VlbiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlcyBh
bmQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzY4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMga2VlcHMgdHJhY2sg
b2Ygd2hldGhlciB3ZSdyZSBiZXR3ZWVuIHRoZSBiZWdpbkZyYW1lIHBvc3QgYW5kIHRoZQorICAg
ICAgICBjb21taXQgd2hlbiByZWxlYXNlQ29udGVudHNUZXh0dXJlcyBjb21lcywgYW5kIGlmIHRo
YXQgaXMgdGhlIGNhc2UsIHdlCisgICAgICAgIHBydW5lIHRoZSB0ZXh0dXJlIHVwbG9hZHMsIGtl
ZXAgdGhlICJ0ZXh0dXJlcyBwdXJnZWQiIGZsYWcgb24gYW5kIGtpY2sgYQorICAgICAgICBuZXcg
Y29tbWl0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJlZ2luRnJhbWVQb3N0ZWQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjb21taXRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYW5EcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnJl
bGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4
dHVyZXNQdXJnZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29u
dGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RCZWdpbkZyYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
Lmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6Y2xlYXJVcGxvYWRzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZVF1ZXVlLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVRdWV1ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRy
ZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKToKKwogMjAxMi0wOC0wOCAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjUwNDYpOiBC
cmVha3MgZGVidWcgYnVpbGQgKGFzc2VydGlvbiBpbiBwcm90b2NvbCB0eXBlIGNoZWNrcykgKFJl
cXVlc3RlZCBieSBwZmVsZG1hbiBvbiAjd2Via2l0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggNWFjMTkzMTg2MjdjMjllM2JkNzZmYmE2OWY1YjUxZjI2MzAz
N2Y4NC4uYzdmOTI4M2MwZTUzYjc5NTk5ZjRmZGZhZGRhYTczNTVmZjY3ZDk3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTEyMiw3ICsxMjIsOSBAQCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzLCBDQwogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1f
ZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQotICAgICwgbV9jb250
ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdChmYWxzZSkKKyAgICAsIG1fYmVn
aW5GcmFtZVBvc3RlZChmYWxzZSkKKyAgICAsIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRT
aW5jZUxhc3RCZWdpbkZyYW1lKGZhbHNlKQorICAgICwgbV9jb250ZW50c1RleHR1cmVzUHVyZ2Vk
KGZhbHNlKQogICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSkKICAgICAsIG1f
cGFnZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCkBAIC0xMzUsNiArMTM3LDcg
QEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0MKICAgICAsIG1fcGluY2hHZXN0dXJlQWN0aXZlKGZh
bHNlKQogICAgICwgbV9mcHNDb3VudGVyKENDRnJhbWVSYXRlQ291bnRlcjo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2RlYnVnUmVjdEhpc3RvcnkoQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpjcmVhdGUoKSkKKyAg
ICAsIG1fZGVsYXlSZWxlYXNlVGV4dHVyZXNUaWxsQ29tbWl0KGZhbHNlKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgZGlkVmlzaWJpbGl0eUNoYW5nZSh0aGlz
LCBtX3Zpc2libGUpOwpAQCAtMTQ5LDYgKzE1MiwxMiBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjp+
Q0NMYXllclRyZWVIb3N0SW1wbCgpCiAgICAgICAgIGNsZWFyUmVuZGVyU3VyZmFjZXMoKTsKIH0K
IAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpiZWdpbkZyYW1lUG9zdGVkKCkKK3sKKyAgICBt
X2JlZ2luRnJhbWVQb3N0ZWQgPSB0cnVlOworICAgIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJn
ZWRTaW5jZUxhc3RCZWdpbkZyYW1lID0gZmFsc2U7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6YmVnaW5Db21taXQoKQogewogfQpAQCAtMTU5LDcgKzE2OCwxMSBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKICAgICAvLyBSZWNvbXB1dGUgbWF4IHNj
cm9sbCBwb3NpdGlvbjsgbXVzdCBiZSBhZnRlciBsYXllciBjb250ZW50IGJvdW5kcyBhcmUKICAg
ICAvLyB1cGRhdGVkLgogICAgIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgbV9jb250
ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCA9IGZhbHNlOworICAgIG1fYmVn
aW5GcmFtZVBvc3RlZCA9IGZhbHNlOworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVy
Z2VkU2luY2VMYXN0QmVnaW5GcmFtZSkKKyAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0
T25JbXBsVGhyZWFkKCk7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJn
ZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKQEAg
LTE3Niw3ICsxODksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcoKQogICAg
ICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fu
RHJhdyBubyBsYXllclJlbmRlcmVyIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgaWYgKG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQpIHsKKyAg
ICBpZiAobV9jb250ZW50c1RleHR1cmVzUHVyZ2VkKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3IGNvbnRlbnRzIHRleHR1
cmVzIHB1cmdlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNTE5LDkgKzUz
MiwxNCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRh
JiBmcmFtZSkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0
dXJlcygpCiB7CisgICAgaWYgKG1fY29udGVudHNUZXh0dXJlc1B1cmdlZCkKKyAgICAgICAgcmV0
dXJuOwogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMoQ0NSZW5k
ZXJlcjo6Q29udGVudFBvb2wpOwotICAgIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5j
ZUxhc3RDb21taXQgPSB0cnVlOwotICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRo
cmVhZCgpOworICAgIG1fY29udGVudHNUZXh0dXJlc1B1cmdlZCA9IHRydWU7CisgICAgaWYgKG1f
YmVnaW5GcmFtZVBvc3RlZCkKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNp
bmNlTGFzdEJlZ2luRnJhbWUgPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPnNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGMxNGRkMjBlMzY2YTFiZDQ2MDI5MmJhMWM0
ZTA4ZDlkNGRhYWQ3NjMuLmU3NTllMjRhMjQxNzI0ZjJjNjdhN2Y0ODgyZTZhYTNhM2U2ODk5MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTkwLDYgKzkwLDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nLgorICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkZyYW1lUG9zdGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CiAgICAgdmlydHVhbCB2b2lk
IGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKQEAg
LTE0NSw3ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgaW50IHNvdXJjZUZyYW1lTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VGcmFtZU51bWJlcjsgfQogICAgIHZvaWQgc2V0U291cmNlRnJh
bWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVOdW1iZXIgPSBmcmFtZU51
bWJlcjsgfQogCi0gICAgYm9vbCBjb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENv
bW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxh
c3RDb21taXQ7IH0KKyAgICBib29sIGNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQ7IH0KKyAgICBib29sIGNvbnRlbnRzVGV4dHVy
ZXNXZXJlUHVyZ2VkU2luY2VMYXN0QmVnaW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RCZWdpbkZyYW1lOyB9CiAgICAgc2l6ZV90IG1l
bW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlBbGxvY2F0
aW9uTGltaXRCeXRlczsgfQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6
ZSYgbGF5b3V0Vmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUp
OwpAQCAtMjY1LDcgKzI2Nyw5IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdw
b3J0U2l6ZTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV92aXNp
YmxlOwotICAgIGJvb2wgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1p
dDsKKyAgICBib29sIG1fYmVnaW5GcmFtZVBvc3RlZDsKKyAgICBib29sIG1fY29udGVudHNUZXh0
dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RCZWdpbkZyYW1lOworICAgIGJvb2wgbV9jb250ZW50c1Rl
eHR1cmVzUHVyZ2VkOwogICAgIHNpemVfdCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzOwog
CiAgICAgZmxvYXQgbV9wYWdlU2NhbGU7CkBAIC0yOTcsNiArMzAxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvdW50ZXI+IG1fZnBzQ291bnRlcjsKICAgICBPd25QdHI8
Q0NEZWJ1Z1JlY3RIaXN0b3J5PiBtX2RlYnVnUmVjdEhpc3Rvcnk7CisgICAgYm9vbCBtX2RlbGF5
UmVsZWFzZVRleHR1cmVzVGlsbENvbW1pdDsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDlmZTUwNWYzMmRjMGExNWQ5N2NmMjQ0ZTM3MWE2MmYw
OTA4MjlkMGMuLjYzMzM4MTc2NmZjNWExYWI2NTcyODA2YzM4ZGE5Y2QzMjk0MjFjZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAg
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICAgICAgRGVidWdTY29wZWRTZXRN
YWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGw7CiAKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpKQorICAgICAgICBpZiAo
IW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKICAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgICAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgfQpAQCAtMzAwLDcgKzMwMCw4IEBAIGJvb2wgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKCkKICAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
c1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoKSkKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5i
ZWdpbkZyYW1lUG9zdGVkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZXNQdXJnZWQoKSkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENvbnRl
bnRUZXh0dXJlcygpOwogCiAgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUgcXVldWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgKaW5kZXggYmQyYzdiYzgyNzFk
YWU4OTg5YmZmMzcwZTMwOTE0MjQyZDZhNmNmMS4uZDZjZGE1OTA2YWMwODZiMzZmMzBhNDljYmQ5
N2QwNDJiNzUxNzlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXIuaApAQCAtNTcsNiArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlcihQYXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciopOwogCiAgICAgT3duUHRy
PENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiBtX3F1ZXVlOworICAgIGJvb2wgbV9jb250ZW50c1RleHR1
cmVzUHVyZ2VkOwogICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwog
ICAgIFRleHR1cmVDb3BpZXIqIG1fY29waWVyOwogICAgIFRleHR1cmVVcGxvYWRlciogbV91cGxv
YWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmNwcAppbmRleCBhZTlh
Yjk3ODg0YzQ2YjA0M2M5NWJhZWZjOGEzZTQ0YmEwZTIyMjZjLi42YzY1MGY5Y2FmZTRmNGVlZjEx
M2ZkMzRkYWMwMTAzNmU1NzMyNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
UXVldWUuY3BwCkBAIC01NCw2ICs1NCwxMiBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZVF1ZXVlOjph
cHBlbmRDb3B5KFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSkKICAgICBtX2NvcHlFbnRy
aWVzLmFwcGVuZChjb3B5KTsKIH0KIAordm9pZCBDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6Y2xlYXJV
cGxvYWRzKCkKK3sKKyAgICBtX2Z1bGxFbnRyaWVzLmNsZWFyKCk7CisgICAgbV9wYXJ0aWFsRW50
cmllcy5jbGVhcigpOworfQorCiBUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMgQ0NUZXh0dXJl
VXBkYXRlUXVldWU6OnRha2VGaXJzdEZ1bGxVcGxvYWQoKQogewogICAgIHJldHVybiBtX2Z1bGxF
bnRyaWVzLnRha2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgK
aW5kZXggN2JiNWNiYzFkOWEwNjZmZjAyZjk0YWU0Y2ExNmFiYzE1ZDJlOGNiMS4uZGU2MzczODIx
ZjA4YTg0NTRhZTY0ODViNmFmMzc0ODNjNzgwNWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVRdWV1ZS5oCkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZFBhcnRpYWxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzKTsKICAgICB2b2lkIGFw
cGVuZENvcHkoVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyk7CiAKKyAgICB2b2lkIGNsZWFyVXBs
b2FkcygpOworCiAgICAgVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHRha2VGaXJzdEZ1bGxV
cGxvYWQoKTsKICAgICBUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0UGFydGlh
bFVwbG9hZCgpOwogICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0Q29weSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA4MTg2Mzk1YThlNjY5MzRhMjNkZDRl
ZDA5YzliMGFkZDZjZjk1ZmNmLi4zNGU4ZGQyMzk3MTRmNmFkYTk3ZTc2MjU0MWE0NGYyNzgyY2Ew
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDQ1LDEwICs0NDUsMTEgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKICAgICBtX3Bl
bmRpbmdCZWdpbkZyYW1lUmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBCZWdpbkZyYW1lQW5kQ29tbWl0
U3RhdGUoKSk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPm1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgbV9wZW5kaW5n
QmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9sbEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9j
ZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPmNvbnRl
bnRzVGV4dHVyZXNXZXJlRGVsZXRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCk7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFt
ZVJlcXVlc3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVx
dWVzdC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5t
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZSkpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luRnJhbWVQb3N0ZWQoKTsKIAogICAg
IGlmIChtX2JlZ2luRnJhbWVDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpIHsKICAgICAgICAg
bV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKQEAgLTU1
OSw2ICs1NjAsOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJl
UHVyZ2VkU2luY2VMYXN0QmVnaW5GcmFtZSgpKQorICAgICAgICBxdWV1ZS0+Y2xlYXJVcGxvYWRz
KCk7CisKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCA9
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OmNyZWF0ZShxdWV1ZSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRl
cmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
cigpLT50ZXh0dXJlVXBsb2FkZXIoKSk7CiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCkBAIC04NDYsNyArODUwLDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW8KIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6Omxh
eWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwotICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQ
dXJnZWRTaW5jZUxhc3RDb21taXQoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNl
UHJvdmlkZXIoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158195</attachid>
            <date>2012-08-13 20:17:47 -0700</date>
            <delta_ts>2012-08-14 10:26:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93684-20120813201715.patch</filename>
            <type>text/plain</type>
            <size>24602</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIxMjkyODM3ZjlkZTA3
NzlkYmY3MGUwMzRiODdlYjBhZGYxNzVkNS4uYjU0NjgyNjFiNDIzM2Y5ZmE5ZDJjZDk5MDIzNTVi
OTA2MDI3MzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTEwICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHJh
Y2UgYmV0d2VlbiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlcyBh
bmQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzY4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMga2VlcHMgdHJhY2sg
b2Ygd2hldGhlciB3ZSdyZSBiZXR3ZWVuIHRoZSBiZWdpbkZyYW1lIHBvc3QgYW5kIHRoZQorICAg
ICAgICBjb21taXQgd2hlbiByZWxlYXNlQ29udGVudHNUZXh0dXJlcyBjb21lcywgYW5kIGlmIHRo
YXQgaXMgdGhlIGNhc2UsIHdlCisgICAgICAgIHBydW5lIHRoZSB0ZXh0dXJlIHVwbG9hZHMsIGtl
ZXAgdGhlICJ0ZXh0dXJlcyBwdXJnZWQiIGZsYWcgb24gYW5kIGtpY2sgYQorICAgICAgICBuZXcg
Y29tbWl0LgorCisgICAgICAgIEFkZGVkIENDTGF5ZXJUcmVlSG9zdFRlc3RFdmljdFRleHR1cmVz
IHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6YmVnaW5GcmFtZVBvc3RlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAg
ICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0dXJlc1B1cmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdEJl
Z2luRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRB
bmRDb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVl
OjpjbGVhclVwbG9hZHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaDoKKyAgICAgICAgKEND
VGV4dHVyZVVwZGF0ZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQpOgorCiAyMDEy
LTA4LTEzICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IgZG9lc24ndCBoYW5kbGUgR0VUIGNhbmNl
bGxhdGlvbnMgd2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5k
ZXggYjRmODA4ZTE1MGU3NDMwOGM2YzIyNTU5ODAwODJlOGU2NmI5NmVhOS4uMTY2NzcyYWRhMTcw
NjRkNDZhN2Q0ODU2ZmVlZDY5OTkyZTg2MzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpD
Q0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBD
QwogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3Io
MSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQotICAgICwgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1
cmdlZFNpbmNlTGFzdENvbW1pdChmYWxzZSkKKyAgICAsIG1fY29udGVudHNUZXh0dXJlc1B1cmdl
ZChmYWxzZSkKICAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0KCkpCiAgICAgLCBt
X3BhZ2VTY2FsZSgxKQogICAgICwgbV9wYWdlU2NhbGVEZWx0YSgxKQpAQCAtMTU5LDcgKzE1OSw2
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29tbWl0Q29tcGxldGUoKQogICAgIC8vIFJl
Y29tcHV0ZSBtYXggc2Nyb2xsIHBvc2l0aW9uOyBtdXN0IGJlIGFmdGVyIGxheWVyIGNvbnRlbnQg
Ym91bmRzIGFyZQogICAgIC8vIHVwZGF0ZWQuCiAgICAgdXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24o
KTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0ID0gZmFs
c2U7CiB9CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FuRHJhdygpCkBAIC0xNzYsNyAr
MTc1LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICAgICAgVFJB
Q0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcgbm8g
bGF5ZXJSZW5kZXJlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICht
X2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KSB7CisgICAgaWYgKG1f
Y29udGVudHNUZXh0dXJlc1B1cmdlZCkgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgi
Y2MiLCAiQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FuRHJhdyBjb250ZW50cyB0ZXh0dXJlcyBwdXJn
ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUxMiw4ICs1MTEsMTAgQEAg
Ym9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUp
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMoKQog
eworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQpCisgICAgICAgIHJldHVybjsKICAg
ICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29t
bWl0ID0gdHJ1ZTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSB0cnVlOwogICAgIG1f
Y2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNmNhMGNkNjkyZDVjNmQ1OWEzZmExNWE2ZmViMDJi
NDgzOWQzNWM1NS4uYzYwMGI1ZGIxOTI4ZDA1ZGJiMTdmOWNmOTk5YjAxNTMzMDA0Y2Q4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTUyLDcgKzE1Miw4IEBAIHB1
YmxpYzoKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUZyYW1lTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVO
dW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVyOyB9CiAKLSAgICBib29s
IGNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdDsgfQorICAgIGJv
b2wgY29udGVudHNUZXh0dXJlc1B1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0
dXJlc1B1cmdlZDsgfQorICAgIHZvaWQgcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCkgeyBt
X2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSBmYWxzZTsgfQogICAgIHNpemVfdCBtZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0
Qnl0ZXM7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIGxheW91
dFZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKTsKQEAgLTI3
Miw3ICsyNzMsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7
CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKICAgICBib29sIG1fdmlzaWJsZTsKLSAg
ICBib29sIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQ7CisgICAg
Ym9vbCBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQ7CiAgICAgc2l6ZV90IG1fbWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXM7CiAKICAgICBmbG9hdCBtX3BhZ2VTY2FsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggOWZlNTA1ZjMyZGMwYTE1ZDk3Y2YyNDRlMzcx
YTYyZjA5MDgyOWQwYy4uMzYxYjUxNTRjMDkyYzM4MGFiMjNlNGI3ZDA0OGFhNTk2OTRlNjEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2MCw3ICsyNjAs
NyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgICAgICBEZWJ1Z1Njb3Bl
ZFNldE1haW5UaHJlYWRCbG9ja2VkIG1haW5UaHJlYWRCbG9ja2VkOwogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkpCisgICAgICAg
IGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKQogICAg
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICB9CkBAIC0zMDAsMTEgKzMwMCwxMiBAQCBi
b29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdEFuZENvbXBvc2l0ZSgpCiAgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVMYXllclJlbmRlcmVySWZOZWVkZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkpCisgICAgaWYgKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5ldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOwogCiAgICAgQ0NUZXh0dXJlVXBkYXRlUXVl
dWUgcXVldWU7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMocXVldWUsIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkpOworICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpOwogCiAgICAgbV9s
YXllclRyZWVIb3N0LT53aWxsQ29tbWl0KCk7CiAgICAgZG9Db21taXQocXVldWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oCmluZGV4IGJkMmM3YmM4Mjcx
ZGFlODk4OWJmZjM3MGUzMDkxNDI0MmQ2YTZjZjEuLmQ2Y2RhNTkwNmFjMDg2YjM2ZjMwYTQ5Y2Jk
OTdkMDQyYjc1MTc5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHJvdGVjdGVkOgogICAgIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXIoUGFzc093blB0cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4sIENDUmVzb3VyY2VQ
cm92aWRlciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqKTsKIAogICAgIE93blB0
cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4gbV9xdWV1ZTsKKyAgICBib29sIG1fY29udGVudHNUZXh0
dXJlc1B1cmdlZDsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92aWRlcjsK
ICAgICBUZXh0dXJlQ29waWVyKiBtX2NvcGllcjsKICAgICBUZXh0dXJlVXBsb2FkZXIqIG1fdXBs
b2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHAKaW5kZXggYWU5
YWI5Nzg4NGM0NmIwNDNjOTViYWVmYzhhM2U0NGJhMGUyMjI2Yy4uNmM2NTBmOWNhZmU0ZjRlZWYx
MTNmZDM0ZGFjMDEwMzZlNTczMjQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZVF1ZXVlLmNwcApAQCAtNTQsNiArNTQsMTIgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6
YXBwZW5kQ29weShUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIGNvcHkpCiAgICAgbV9jb3B5RW50
cmllcy5hcHBlbmQoY29weSk7CiB9CiAKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlUXVldWU6OmNsZWFy
VXBsb2FkcygpCit7CisgICAgbV9mdWxsRW50cmllcy5jbGVhcigpOworICAgIG1fcGFydGlhbEVu
dHJpZXMuY2xlYXIoKTsKK30KKwogVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIENDVGV4dHVy
ZVVwZGF0ZVF1ZXVlOjp0YWtlRmlyc3RGdWxsVXBsb2FkKCkKIHsKICAgICByZXR1cm4gbV9mdWxs
RW50cmllcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5o
CmluZGV4IDdiYjVjYmMxZDlhMDY2ZmYwMmY5NGFlNGNhMTZhYmMxNWQyZThjYjEuLmRlNjM3Mzgy
MWYwOGE4NDU0YWU2NDg1YjZhZjM3NDgzYzc4MDVlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlUXVldWUuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyk7CiAgICAgdm9pZCBh
cHBlbmRDb3B5KFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMpOwogCisgICAgdm9pZCBjbGVhclVw
bG9hZHMoKTsKKwogICAgIFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyB0YWtlRmlyc3RGdWxs
VXBsb2FkKCk7CiAgICAgVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHRha2VGaXJzdFBhcnRp
YWxVcGxvYWQoKTsKICAgICBUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIHRha2VGaXJzdENvcHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZDM3MTY4ZjExMGE3YTk2YjE4OWQw
MTE4MGRjY2Y4OWRkZDdhMGZjMi4uNzcxYzk5YmU2NzIxNjM3MTA2MjUzMjM2NjNiMzMxNWFmMTU3
ZTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTgwLDYgKzgwLDcgQEAgQ0NU
aHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3Qp
CiAgICAgLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQoMCkKICAgICAsIG1fdGV4dHVyZUFjcXVpc2l0aW9u
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCisgICAgLCBtX3Jlc2V0Q29udGVudHNUZXh0
dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25JbXBsVGhyZWFkKGZhbHNlKQogICAgICwgbV9uZXh0RnJh
bWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQoZmFsc2UpCiAgICAgLCBtX3JlbmRl
clZTeW5jRW5hYmxlZChsYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLnJlbmRlclZTeW5jRW5hYmxl
ZCkKIHsKQEAgLTQ1Miw3ICs0NTMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQ
dHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZy
YW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBtX3BlbmRp
bmdCZWdpbkZyYW1lUmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQo
KTsKKyAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVE
ZWxldGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpOwog
ICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
cyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCk7CiAK
ICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKSk7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAgICAgRGVidWdTY29wZWRTZXRNYWluVGhy
ZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKIAogICAgICAgICBDQ0NvbXBsZXRpb25FdmVu
dCBjb21wbGV0aW9uOwotICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkLCAmY29tcGxldGlvbiwgcXVldWUucmVsZWFzZSgpKSk7CisgICAgICAgIEND
UHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQsICZjb21wbGV0aW9u
LCBxdWV1ZS5yZWxlYXNlKCksIHJlcXVlc3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkp
OwogICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9CiAKQEAgLTU1Myw3ICs1NTQsNyBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+
ZGlkQmVnaW5GcmFtZSgpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgUGFzc093blB0
cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4gcXVldWUpCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwg
UGFzc093blB0cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4gcXVldWUsIGJvb2wgY29udGVudHNUZXh0
dXJlc1dlcmVEZWxldGVkKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKCFtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CkBAIC01NjYsNiArNTY3LDE2IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIWNv
bnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCAmJiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVzUHVyZ2VkKCkpIHsKKyAgICAgICAgLy8gV2UgcHVyZ2VkIHRoZSBjb250ZW50IHRl
eHR1cmVzIG9uIHRoZSBpbXBsIHRocmVhZCBiZXR3ZWVuIHRoZSB0aW1lIHdlCisgICAgICAgIC8v
IHBvc3RlZCB0aGUgYmVnaW5GcmFtZSB0YXNrIGFuZCBub3csIG1lYW5pbmcgd2UgaGF2ZSBhIGJ1
bmNoIG9mCisgICAgICAgIC8vIHVwbG9hZHMgdGhhdCBhcmUgbm93IGludmFsaWQuIENsZWFyIHRo
ZSB1cGxvYWRzICh0aGV5IGFsbCBnbyB0bworICAgICAgICAvLyBjb250ZW50IHRleHR1cmVzKSwg
YW5kIGtpY2sgYW5vdGhlciBjb21taXQgdG8gZmlsbCB0aGVtIGFnYWluLgorICAgICAgICBxdWV1
ZS0+Y2xlYXJVcGxvYWRzKCk7CisgICAgICAgIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkQWZ0ZXJD
b21taXRPbkltcGxUaHJlYWQgPSB0cnVlOworCiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJPbkltcGxUaHJlYWQgPSBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjpjcmVhdGUo
cXVldWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRy
ZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCkpOwogICAgIG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIApAQCAtNjE5LDYg
KzYzMCwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiAg
ICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhv
c3RJbXBsLmdldCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRo
cmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIAorICAgIGlmIChtX3Jlc2V0Q29udGVu
dHNUZXh0dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25JbXBsVGhyZWFkKSB7CisgICAgICAgIG1fcmVz
ZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkQWZ0ZXJDb21taXRPbkltcGxUaHJlYWQgPSBmYWxzZTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2Vk
KCk7CisgICAgfQorCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29tbWl0Q29tcGxldGUoKTsK
IAogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkID0gdHJ1
ZTsKQEAgLTg1Myw3ICs4NjksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RD
bG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogewogICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1w
bFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKCFtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgp
KQorICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgp
KQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICBtX2lu
cHV0SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwu
Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAzNDM2MGQ1MWE1Y2Y0NGJlMGFh
ZGMwZWM5NDczZmM5NTAyNDQ1ZjczLi5kZGI0ZDkwY2RiZDFkNzE1Mjc0NGI3NTFhMzczMTQ5Yjk3
NzM4NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgSW50UmVjdCByZWN0OwogICAgIH07CiAgICAgdm9pZCBmb3JjZUJlZ2lu
RnJhbWVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKLSAgICB2b2lkIGJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8Q0NU
ZXh0dXJlVXBkYXRlUXVldWU+KTsKKyAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+
LCBib29sIGNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCk7CiAgICAgdm9pZCBiZWdpbkZyYW1l
QWJvcnRlZE9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhy
ZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9y
LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKQEAgLTE4NSw2ICsxODUsMTAgQEAg
cHJpdmF0ZToKIAogICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyPiBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZDsKIAorICAgIC8vIFNldCB3aGVu
IHdlIG5lZWQgdG8gcmVzZXQgdGhlIGNvbnRlbnRzVGV4dHVyZXNQdXJnZWQgZmxhZyBhZnRlciB0
aGUKKyAgICAvLyBjb21taXQuCisgICAgYm9vbCBtX3Jlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdl
ZEFmdGVyQ29tbWl0T25JbXBsVGhyZWFkOworCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJh
dyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgog
ICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IDEzN2U2MjQ5YTNlOWRlNWVlZjdlZmMyNzI5MTQ4OTRkYjM0YTg1YTEuLjRh
YTFhZmQzODBmYWVjMzdkOGUzZDlhZjRjZWRmMTA0MzA5OWQ4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjM0
Nyw0ICsyMzQ3LDI1MSBAQCBwcml2YXRlOgogCiBTSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9URVNU
X0YoQ0NMYXllclRyZWVIb3N0VGVzdFN1cmZhY2VOb3RBbGxvY2F0ZWRGb3JMYXllcnNPdXRzaWRl
TWVtb3J5TGltaXQpCiAKKworY2xhc3MgRXZpY3Rpb25UcmFja2luZ1RleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8RXZpY3Rpb25UcmFja2luZ1RleHR1cmU+IGNyZWF0ZShQYXNzT3duUHRyPENDUHJpb3Jp
dGl6ZWRUZXh0dXJlPiB0ZXh0dXJlKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRXZpY3Rpb25UcmFj
a2luZ1RleHR1cmUodGV4dHVyZSkpOyB9CisgICAgdmlydHVhbCB+RXZpY3Rpb25UcmFja2luZ1Rl
eHR1cmUoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXRleHR1cmUoKS0+aGF2ZUJhY2tp
bmdUZXh0dXJlKCkgfHwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkgPiAwKTsKKyAg
ICAgICAgdGV4dHVyZSgpLT5hY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRlcik7
CisgICAgICAgIG1fdXBkYXRlZCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgcmVzZXRVcGRhdGVk
KCkgeyBtX3VwZGF0ZWQgPSBmYWxzZTsgfQorICAgIGJvb2wgdXBkYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXBkYXRlZDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEV2aWN0aW9uVHJhY2tp
bmdUZXh0dXJlKFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmUpCisgICAg
ICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAsIG1f
dXBkYXRlZChmYWxzZSkKKyAgICB7IH0KKyAgICBib29sIG1fdXBkYXRlZDsKK307CisKK2NsYXNz
IEV2aWN0aW9uVGVzdExheWVyIDogcHVibGljIExheWVyQ2hyb21pdW0geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEV2aWN0aW9uVGVzdExheWVyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRXZpY3Rpb25UZXN0TGF5ZXIoKSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBD
Q1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5Q2FsY3VsYXRv
ciYpIE9WRVJSSURFOworCisgICAgdm9pZCByZXNldFVwZGF0ZWQoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fdGV4dHVyZS5nZXQoKSkKKyAgICAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXRVcGRhdGVk
KCk7CisgICAgfQorICAgIGJvb2wgdXBkYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZS5n
ZXQoKSA/IG1fdGV4dHVyZS0+dXBkYXRlZCgpIDogZmFsc2U7IH0KKworcHJpdmF0ZToKKyAgICBF
dmljdGlvblRlc3RMYXllcigpIDogTGF5ZXJDaHJvbWl1bSgpIHsgfQorCisgICAgdm9pZCBjcmVh
dGVUZXh0dXJlSWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fdGV4dHVyZS5nZXQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV90ZXh0dXJlID0gRXZpY3Rpb25UcmFja2lu
Z1RleHR1cmU6OmNyZWF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Y3JlYXRlKGxheWVyVHJlZUhv
c3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7CisgICAgICAgIG1fdGV4dHVyZS0+dGV4
dHVyZSgpLT5zZXREaW1lbnNpb25zKFdlYkNvcmU6OkludFNpemUoMTAsIDEwKSwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIH0KKworICAgIE93blB0cjxFdmljdGlvblRy
YWNraW5nVGV4dHVyZT4gbV90ZXh0dXJlOworfTsKKworY2xhc3MgRXZpY3Rpb25UZXN0TGF5ZXJJ
bXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxFdmljdGlvblRlc3RMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV2aWN0aW9uVGVzdExheWVySW1wbChpZCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5FdmljdGlvblRlc3RMYXllckltcGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1RSVUUobV9oYXNUZXh0dXJl
KTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBsYXllclRyZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVBy
b3ZpZGVyKCktPm51bVJlc291cmNlcygpKTsKKyAgICB9CisgICAgdm9pZCBzZXRIYXNUZXh0dXJl
KGJvb2wgaGFzVGV4dHVyZSkgeyBtX2hhc1RleHR1cmUgPSBoYXNUZXh0dXJlOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgRXZpY3Rpb25UZXN0TGF5ZXJJbXBsKGludCBpZCkKKyAgICAgICAg
OiBDQ0xheWVySW1wbChpZCkKKyAgICAgICAgLCBtX2hhc1RleHR1cmUoZmFsc2UpIHsgfQorCisg
ICAgYm9vbCBtX2hhc1RleHR1cmU7Cit9OworCit2b2lkIEV2aWN0aW9uVGVzdExheWVyOjpzZXRU
ZXh0dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYpCit7CisgICAgY3Jl
YXRlVGV4dHVyZUlmTmVlZGVkKCk7CisgICAgaWYgKCFtX3RleHR1cmUuZ2V0KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3RleHR1cmUtPnRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KEND
UHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KHRydWUpKTsKK30KKwordm9pZCBFdmljdGlv
blRlc3RMYXllcjo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpCit7CisgICAgY3JlYXRlVGV4dHVy
ZUlmTmVlZGVkKCk7CisgICAgaWYgKCFtX3RleHR1cmUuZ2V0KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBJbnRSZWN0IGZ1bGxSZWN0KDAsIDAsIDEwLCAxMCk7CisgICAgVGV4dHVyZVVwbG9hZGVy
OjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSB7IG1fdGV4dHVyZS5nZXQoKSwgZnVsbFJlY3QsIGZ1
bGxSZWN0IH07CisgICAgcXVldWUuYXBwZW5kRnVsbFVwbG9hZChwYXJhbWV0ZXJzKTsKK30KKwor
UGFzc093blB0cjxDQ0xheWVySW1wbD4gRXZpY3Rpb25UZXN0TGF5ZXI6OmNyZWF0ZUNDTGF5ZXJJ
bXBsKCkKK3sKKyAgICByZXR1cm4gRXZpY3Rpb25UZXN0TGF5ZXJJbXBsOjpjcmVhdGUobV9sYXll
cklkKTsKK30KKwordm9pZCBFdmljdGlvblRlc3RMYXllcjo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXJJbXBsKQoreworICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsKTsKKworICAgIEV2aWN0aW9uVGVzdExheWVySW1wbCogdGVzdExheWVySW1w
bCA9IHN0YXRpY19jYXN0PEV2aWN0aW9uVGVzdExheWVySW1wbCo+KGxheWVySW1wbCk7CisgICAg
dGVzdExheWVySW1wbC0+c2V0SGFzVGV4dHVyZShtX3RleHR1cmUtPnRleHR1cmUoKS0+aGF2ZUJh
Y2tpbmdUZXh0dXJlKCkpOworfQorCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0RXZpY3RUZXh0
dXJlcyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVy
VHJlZUhvc3RUZXN0RXZpY3RUZXh0dXJlcygpCisgICAgICAgIDogbV9sYXllcihFdmljdGlvblRl
c3RMYXllcjo6Y3JlYXRlKCkpCisgICAgICAgICwgbV9pbXBsRm9yRXZpY3RUZXh0dXJlcygwKQor
ICAgICAgICAsIG1fbnVtQ29tbWl0cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDEwLCAyMCksIEludFNpemUoMTAsIDIwKSk7CisKKyAgICAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobV9sYXllci5nZXQoKSwgMCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAsIDIwKSwgdHJ1ZSk7CisgICAgfQorCisg
ICAgY2xhc3MgRXZpY3RUZXh0dXJlc1Rhc2sgOiBwdWJsaWMgV2ViS2l0OjpXZWJUaHJlYWQ6OlRh
c2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgRXZpY3RUZXh0dXJlc1Rhc2soQ0NMYXllclRyZWVI
b3N0VGVzdEV2aWN0VGV4dHVyZXMqIHRlc3QpIDogbV90ZXN0KHRlc3QpIHsgfQorICAgICAgICB2
aXJ0dWFsIH5FdmljdFRleHR1cmVzVGFzaygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcnVu
KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdGVzdC0+bV9pbXBsRm9yRXZpY3RU
ZXh0dXJlcyk7CisgICAgICAgICAgICBtX3Rlc3QtPm1faW1wbEZvckV2aWN0VGV4dHVyZXMtPnJl
bGVhc2VDb250ZW50c1RleHR1cmVzKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RFdmljdFRleHR1cmVzKiBtX3Rlc3Q7CisgICAgfTsKKwor
ICAgIHZvaWQgcG9zdEV2aWN0VGV4dHVyZXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHdlYlRo
cmVhZCgpKTsKKyAgICAgICAgd2ViVGhyZWFkKCktPnBvc3RUYXNrKG5ldyBFdmljdFRleHR1cmVz
VGFzayh0aGlzKSk7CisgICAgfQorCisgICAgLy8gQ29tbWl0IDE6IEp1c3QgY29tbWl0IGFuZCBk
cmF3IG5vcm1hbGx5LCB0aGVuIHBvc3QgYW4gZXZpY3Rpb24gYXQgdGhlIGVuZAorICAgIC8vIHRo
YXQgd2lsbCB0cmlnZ2VyIGEgY29tbWl0LgorICAgIC8vIENvbW1pdCAyOiBUcmlnZ2VyZWQgYnkg
dGhlIGV2aWN0aW9uLCBsZXQgaXQgZ28gdGhyb3VnaCBhbmQgdGhlbiBzZXQKKyAgICAvLyBuZWVk
c0NvbW1pdC4KKyAgICAvLyBDb21taXQgMzogVHJpZ2dlcmVkIGJ5IHRoZSBzZXROZWVkc0NvbW1p
dC4gSW4gbGF5b3V0KCksIHBvc3QgYW4gZXZpY3Rpb24KKyAgICAvLyB0YXNrLCB3aGljaCB3aWxs
IGJlIGhhbmRsZWQgYmVmb3JlIHRoZSBjb21taXQuIERvbid0IHNldCBuZWVkc0NvbW1pdCwgaXQK
KyAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIHBvc3RlZC4gQSBmcmFtZSBzaG91bGQgbm90IGJlIGRy
YXduIChub3RlLAorICAgIC8vIGRpZENvbW1pdEFuZERyYXdGcmFtZSBtYXkgYmUgY2FsbGVkIGFu
eXdheSkuCisgICAgLy8gQ29tbWl0IDQ6IFRyaWdnZXJlZCBieSB0aGUgZXZpY3Rpb24sIGxldCBp
dCBnbyB0aHJvdWdoIGFuZCB0aGVuIHNldAorICAgIC8vIG5lZWRzQ29tbWl0LgorICAgIC8vIENv
bW1pdCA1OiBUcmlnZ2VyZWQgYnkgdGhlIHNldE5lZWRzQ29tbWl0LCBwb3N0IGFuIGV2aWN0aW9u
IHRhc2sgaW4KKyAgICAvLyBsYXlvdXQoKSwgYSBmcmFtZSBzaG91bGQgbm90IGJlIGRyYXduIGJ1
dCBhIGNvbW1pdCB3aWxsIGJlIHBvc3RlZC4KKyAgICAvLyBDb21taXQgNjogVHJpZ2dlcmVkIGJ5
IHRoZSBldmljdGlvbiwgcG9zdCBhbiBldmljdGlvbiB0YXNrIGluCisgICAgLy8gbGF5b3V0KCks
IHdoaWNoIHdpbGwgYmUgYSBub29wLCBsZXR0aW5nIHRoZSBjb21taXQgKHdoaWNoIHJlY3JlYXRl
cyB0aGUKKyAgICAvLyB0ZXh0dXJlcykgZ28gdGhyb3VnaCBhbmQgZHJhdyBhIGZyYW1lLCB0aGVu
IGVuZCB0aGUgdGVzdC4KKyAgICAvLworICAgIC8vIENvbW1pdHMgMSsyIHRlc3QgdGhlIGV2aWN0
aW9uIHJlY292ZXJ5IHBhdGggd2hlcmUgZXZpY3Rpb24gaGFwcGVucyBvdXRzaWRlCisgICAgLy8g
b2YgdGhlIGJlZ2luRnJhbWUvY29tbWl0IHBhaXIuCisgICAgLy8gQ29tbWl0cyAzKzQgdGVzdCB0
aGUgZXZpY3Rpb24gcmVjb3ZlcnkgcGF0aCB3aGVyZSBldmljdGlvbiBoYXBwZW5zIGluc2lkZQor
ICAgIC8vIHRoZSBiZWdpbkZyYW1lL2NvbW1pdCBwYWlyLgorICAgIC8vIENvbW1pdHMgNSs2IHRl
c3QgdGhlIHBhdGggd2hlcmUgYW4gZXZpY3Rpb24gaGFwcGVucyBkdXJpbmcgdGhlIGV2aWN0aW9u
CisgICAgLy8gcmVjb3ZlcnkgcGF0aC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9udW1Db21taXRzKSB7CisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXItPnVwZGF0ZWQoKSk7Cisg
ICAgICAgICAgICBwb3N0RXZpY3RUZXh0dXJlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXItPnVwZGF0ZWQoKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgNDoKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXItPnVwZGF0ZWQoKSk7Cisg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgNjoKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXItPnVwZGF0ZWQoKSk7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBtX2ltcGxGb3JF
dmljdFRleHR1cmVzID0gaW1wbDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkK
KyAgICB7CisgICAgICAgICsrbV9udW1Db21taXRzOworICAgICAgICBzd2l0Y2ggKG1fbnVtQ29t
bWl0cykgeworICAgICAgICBjYXNlIDE6CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBwb3N0RXZpY3RUZXh0dXJlcygpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIC8vIFdlIGNv
dWxkbid0IGNoZWNrIGluIGRpZENvbW1pdEFuZERyYXdGcmFtZSBvbiBjb21taXQgMywgc28gY2hl
Y2sgaGVyZS4KKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShtX2xheWVyLT51cGRhdGVkKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIHBvc3RFdmlj
dFRleHR1cmVzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2OgorICAgICAg
ICAgICAgLy8gV2UgY291bGRuJ3QgY2hlY2sgaW4gZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIG9uIGNv
bW1pdCA1LCBzbyBjaGVjayBoZXJlLgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXIt
PnVwZGF0ZWQoKSk7CisgICAgICAgICAgICBwb3N0RXZpY3RUZXh0dXJlcygpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG1fbGF5ZXItPnJl
c2V0VXBkYXRlZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIG1fZGVs
ZWdhdGU7CisgICAgUmVmUHRyPEV2aWN0aW9uVGVzdExheWVyPiBtX2xheWVyOworICAgIENDTGF5
ZXJUcmVlSG9zdEltcGwqIG1faW1wbEZvckV2aWN0VGV4dHVyZXM7CisgICAgaW50IG1fbnVtQ29t
bWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0RXZpY3RUZXh0dXJlcywgcnVu
TXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuaAppbmRleCA5
NDZiNjVmZDE5NjhmNGFlY2E2YzMyNzNiNGEyNjBiYzc3NmEzOTU3Li4wYWQ2ZjNkM2VmM2E5ZGYw
ODUzZTUwZDkzNzNkNGVmMWZlYmE1YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RocmVhZGVkVGVzdC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHJvdGVjdGVkOgogICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlkQWRkQW5pbWF0aW9uKHZvaWQqIHNlbGYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHJ1blRlc3QoYm9vbCB0aHJlYWRlZCk7CisgICAgV2ViS2l0OjpXZWJUaHJl
YWQqIHdlYlRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVGhyZWFkLmdldCgpOyB9CiAKICAg
ICBXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgT3duUHRyPE1v
Y2tDQ0xheWVyVHJlZUhvc3RDbGllbnQ+IG1fY2xpZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>