<?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>69585</bug_id>
          
          <creation_ts>2011-10-06 17:17:52 -0700</creation_ts>
          <short_desc>[chromium] Implement checkerboarding for missing layer tiles</short_desc>
          <delta_ts>2011-11-04 10:45:40 -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>WebCore Misc.</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="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>479649</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-10-06 17:17:52 -0700</bug_when>
    <thetext>When drawing on the thread, missing layer tiles are currently skipped, exposing the background.  We should instead draw something nicer in their place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479679</commentid>
    <comment_count>1</comment_count>
      <attachid>110070</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-10-06 18:04:14 -0700</bug_when>
    <thetext>Created attachment 110070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479680</commentid>
    <comment_count>2</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-10-06 18:05:17 -0700</bug_when>
    <thetext>Not quite ready for review yet.  Need to verify how it works with the compositor thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481090</commentid>
    <comment_count>3</comment_count>
      <attachid>110070</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-10 13:06:34 -0700</bug_when>
    <thetext>Comment on attachment 110070
Patch

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

Is there some way to test this automatically? Even something like LayoutTestController.checkerboardMainLayer() would let us smoke test this.

I think you&apos;re also missing a cleanup()/clear() call for this new program in LayerRendererChromium::cleanupSharedObjects().

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:85
&gt; +        LOG_ERROR(&quot;Shader compile error: %s\n&quot;, infoLog);

This is great.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:43
&gt; +// Determines the size of the checkerboard pattern. For the pattern
&gt; +// to be seamless across tiles, the frequency needs to be of the form
&gt; +// x / (tileSize - 1) where x is the number of checkers that will be visible
&gt; +// within a tile of size tileSize.
&gt; +static float checkerboardFrequency = 20.0 / 255.0;
&gt; +

I don&apos;t like the hardcoded tile size here.  Maybe the constant setting code can do the division.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:274
&gt; +            if (tile-&gt;textureId())
&gt; +                context-&gt;bindTexture(GraphicsContext3D::TEXTURE_2D, tile-&gt;textureId());
&gt; +

Maybe move this loose code down within the if (!tile-&gt;textureId()) block below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495910</commentid>
    <comment_count>4</comment_count>
      <attachid>113589</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-03 17:23:51 -0700</bug_when>
    <thetext>Created attachment 113589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495915</commentid>
    <comment_count>5</comment_count>
      <attachid>113589</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-03 17:28:24 -0700</bug_when>
    <thetext>Comment on attachment 113589
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:296
&gt; +    if (m_backgroundColor != backgroundColor) {
&gt; +        m_backgroundColor = backgroundColor;
&gt; +        m_layerPropertyChanged = true;

please add a section to the CCLayerImplTest verifyLayerChangesAreTrackedProperly unit test for this property

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2525
&gt; +        // FIXME: This will not properly reflect style changes.
&gt; +        m_nonCompositedContentHost-&gt;setBackgroundColor(page()-&gt;mainFrame()-&gt;view()-&gt;documentBackgroundColor());

what about doing this in WebViewImplContentPainter::paint()? that should catch style changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495917</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-03 17:28:50 -0700</bug_when>
    <thetext>Doesn&apos;t seem to apply to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495925</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-03 17:32:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Doesn&apos;t seem to apply to ToT

Ah, I see it.  I applied it on top of my visibility patch (because that fixes some other correctness issues) and it conflicts with that.  I can rebase it if it makes sense to land this first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495968</commentid>
    <comment_count>8</comment_count>
      <attachid>113601</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-03 18:19:36 -0700</bug_when>
    <thetext>Created attachment 113601
Addressed review comments, rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495970</commentid>
    <comment_count>9</comment_count>
      <attachid>113601</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-03 18:26:02 -0700</bug_when>
    <thetext>Comment on attachment 113601
Addressed review comments, rebased

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

R=me

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2594
&gt; +        // FIXME: This will not properly reflect style changes.

nit: i don&apos;t think you need this FIXME any more, style changes of the document&apos;s background color will definitely cause a repaint which will go through here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496290</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-04 10:45:40 -0700</bug_when>
    <thetext>Committed r99295: &lt;http://trac.webkit.org/changeset/99295&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110070</attachid>
            <date>2011-10-06 18:04:14 -0700</date>
            <delta_ts>2011-11-03 17:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69585-20111006180201.patch</filename>
            <type>text/plain</type>
            <size>13437</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2ODg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMDYgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
RGlzcGxheSBjaGVja2VyYm9hcmRzIGZvciBsYXllciB0aWxlcyB0aGF0IGFyZSBtaXNzaW5nCisg
ICAgICAgIHRleHR1cmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njk1ODUKKworICAgICAgICBUaGUgY2hlY2tlcmJvYXJkIHBhdHRlcm4gaXMgZ2Vu
ZXJhdGVkIGluIGEgc2hhZGVyIHdpdGhvdXQgYSB0ZXh0dXJlLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQ2hlY2tlcmJvYXJkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OmxvYWRTaGFkZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6Z2V0U2hh
ZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6
OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2Vy
Ym9hcmQ6OnRleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyQ2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lMb2NhdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKwogMjAxMS0xMC0wNiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gYnVp
bGRpbmcgd2l0aCBjbGFuZywgZW5hYmxlIC1XZ2xvYmFsLWNvbnN0cnVjdG9ycyBhbmQgLVdleGl0
LXRpbWUtZGVzdHJ1Y3RvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAkocmV2aXNpb24gOTY4NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzAsNiArNzMwLDE3IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEK
ICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlQUEuZ2V0KCk7CiB9CiAKK2NvbnN0IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW1DaGVja2VyYm9hcmQqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZXJQcm9ncmFtQ2hlY2tlcmJvYXJkKCkKK3sKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFt
Q2hlY2tlcmJvYXJkKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbUNoZWNrZXJib2FyZCA9IGFkb3B0
UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQ2hlY2tlcmJvYXJkKG1fY29udGV4dC5n
ZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dyYW1DaGVja2VyYm9hcmQtPmluaXRpYWxpemVk
KCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQ
cm9ncmFtQ2hlY2tlcmJvYXJkOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fdGls
ZXJQcm9ncmFtQ2hlY2tlcmJvYXJkLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAg
fQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUNoZWNrZXJib2FyZC5nZXQoKTsKK30KKwogY29u
c3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2Fu
dmFzTGF5ZXJQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fY2FudmFzTGF5ZXJQcm9ncmFtKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHJldmlzaW9uIDk2ODc5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBKiB0aWxlclByb2dyYW1BQSgpOwogICAg
IGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlKiB0aWxlclByb2dyYW1Td2l6
emxlKCk7CiAgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVBQSogdGls
ZXJQcm9ncmFtU3dpenpsZUFBKCk7CisgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3Jh
bUNoZWNrZXJib2FyZCogdGlsZXJQcm9ncmFtQ2hlY2tlcmJvYXJkKCk7CiAgICAgY29uc3QgQ0ND
YW52YXNMYXllckltcGw6OlByb2dyYW0qIGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0
IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKTsKICAgICBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbSogdmlkZW9MYXllclJHQkFQcm9ncmFt
KCk7CkBAIC0yMDMsNiArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbDo6UHJvZ3JhbVN3aXp6bGU+IG1fdGlsZXJQcm9ncmFtU3dpenpsZTsKICAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBPiBtX3RpbGVyUHJvZ3JhbUFBOwogICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6
bGVBQTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUNoZWNrZXJib2FyZD4g
bV90aWxlclByb2dyYW1DaGVja2VyYm9hcmQ7CiAgICAgT3duUHRyPENDQ2FudmFzTGF5ZXJJbXBs
OjpQcm9ncmFtPiBtX2NhbnZhc0xheWVyUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NQbHVnaW5MYXll
ckltcGw6OlByb2dyYW0+IG1fcGx1Z2luTGF5ZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ1JlbmRl
clN1cmZhY2U6Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Qcm9ncmFtQmluZGluZy5jcHAJKHJldmlzaW9uIDk2ODc5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw2ICs3OSwxMCBAQCB1bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6Omxv
YWRTaGFkZXIoCiAgICAgaW50IGNvbXBpbGVkID0gMDsKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFUVVMs
ICZjb21waWxlZCkpOwogICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgaW50IGluZm9MZW5n
dGggPSAwOworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVy
LCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmaW5mb0xlbmd0aCkpOworICAg
ICAgICBTdHJpbmcgaW5mb0xvZyA9IGNvbnRleHQtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJTaGFkZXIgY29tcGlsZSBlcnJvcjogJXNcbiIsIGluZm9Mb2cp
OwogICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcikpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCShy
ZXZpc2lvbiA5Njg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDYgKzU0Miw0NCBA
QCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJDb2xvcjo6Z2V0U2hhZGVyU3RyCiAgICAgKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OkZyYWdt
ZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCkKKyAgICA6IG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAs
IG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisgICAgLCBtX2ZyZXF1ZW5jeUxvY2F0aW9uKC0x
KQoreworfQorCit2b2lkIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjppbml0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fYWxwaGFMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKKyAg
ICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBtX2ZyZXF1ZW5jeUxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmVxdWVuY3kiKTsKKyAgICBBU1NFUlQo
bV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYg
bV9mcmVxdWVuY3lMb2NhdGlvbiAhPSAtMSk7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlckNo
ZWNrZXJib2FyZDo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICAvLyBTaGFkZXIgYmFz
ZWQgb24gRXhhbXBsZSAxMy0xNyBvZiAiT3BlbkdMIEVTIDIuMCBQcm9ncmFtbWluZyBHdWlkZSIK
KyAgICAvLyBieSBNdW5zaGksIEdpbnNidXJnLCBTaHJlaW5lci4KKyAgICByZXR1cm4gU0hBREVS
KAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgaW50OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5p
Zm9ybSBmbG9hdCBhbHBoYTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBmcmVxdWVuY3k7CisgICAg
ICAgIHVuaWZvcm0gdmVjNCB0ZXhUcmFuc2Zvcm07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZlYzQgY29sb3IxID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjAp
OworICAgICAgICAgICAgdmVjNCBjb2xvcjIgPSB2ZWM0KDAuNSwgMC41LCAwLjUsIDEuMCk7Cisg
ICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICog
dGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjMiBjb29y
ZCA9IG1vZChmbG9vcih0ZXhDb29yZCAqIGZyZXF1ZW5jeSAqIDIuMCksIDIuMCk7CisgICAgICAg
ICAgICBmbG9hdCBwaWNrZXIgPSBhYnMoY29vcmQueCAtIGNvb3JkLnkpOworICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gbWl4KGNvbG9yMSwgY29sb3IyLCBwaWNrZXIpICogYWxwaGE7CisgICAg
ICAgIH0KKyAgICApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAogCiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCShy
ZXZpc2lvbiA5Njg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMjEgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9jb2xvckxvY2F0aW9uOwogfTsKIAorY2xhc3MgRnJhZ21lbnRT
aGFkZXJDaGVja2VyYm9hcmQgeworcHVibGljOgorICAgIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJv
YXJkKCk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisgICAgdm9pZCBp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgaW50IGFscGhh
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KKyAgICBpbnQgdGV4
VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
OyB9CisgICAgaW50IGZyZXF1ZW5jeUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mcmVxdWVu
Y3lMb2NhdGlvbjsgfQorcHJpdmF0ZToKKyAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOworICAgIGlu
dCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGludCBtX2ZyZXF1ZW5jeUxvY2F0aW9uOwor
fTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAJKHJl
dmlzaW9uIDk2ODc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEy
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKKy8vIERldGVybWluZXMgdGhlIHNpemUgb2Yg
dGhlIGNoZWNrZXJib2FyZCBwYXR0ZXJuLiBGb3IgdGhlIHBhdHRlcm4KKy8vIHRvIGJlIHNlYW1s
ZXNzIGFjcm9zcyB0aWxlcywgdGhlIGZyZXF1ZW5jeSBuZWVkcyB0byBiZSBvZiB0aGUgZm9ybQor
Ly8geCAvICh0aWxlU2l6ZSAtIDEpIHdoZXJlIHggaXMgdGhlIG51bWJlciBvZiBjaGVja2VycyB0
aGF0IHdpbGwgYmUgdmlzaWJsZQorLy8gd2l0aGluIGEgdGlsZSBvZiBzaXplIHRpbGVTaXplLgor
c3RhdGljIGZsb2F0IGNoZWNrZXJib2FyZEZyZXF1ZW5jeSA9IDIwLjAgLyAyNTUuMDsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKQEAgLTI0NCwxMSArMjUw
LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZQogCiAgICAgICAg
IGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIERyYXdh
YmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICghdGlsZSB8fCAh
dGlsZS0+dGV4dHVyZUlkKCkpCisgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCB0aWxlLT50ZXh0dXJlSWQoKSk7Ci0KICAgICAgICAgICAg
IC8vIERvbid0IHVzZSB0aWxlQ29udGVudFJlY3QgaGVyZSwgYXMgdGhhdCBjb250YWlucyB0aGUg
ZnVsbAogICAgICAgICAgICAgLy8gcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgd2hpY2ggc2hvdWxk
bid0IGJlIGRyYXduLgogICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRp
bGVCb3VuZHModGlsZS0+aSgpLCB0aWxlLT5qKCkpOwpAQCAtMjY1LDYgKzI2OSw5IEBAIHZvaWQg
Q0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmUKIAogICAgICAgICAgICAgdGlsZVJl
Y3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KHRpbGVSZWN0KTsKIAorICAgICAg
ICAgICAgaWYgKHRpbGUtPnRleHR1cmVJZCgpKQorICAgICAgICAgICAgICAgIGNvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0aWxlLT50ZXh0dXJlSWQo
KSk7CisKICAgICAgICAgICAgIEZsb2F0UmVjdCBjbGFtcFJlY3QodGlsZVJlY3QpOwogICAgICAg
ICAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0byBhdm9pZCBzYW1wbGluZyBvdXRz
aWRlIHRoZSBsYXllcgogICAgICAgICAgICAgLy8gYnkgZGVmbGF0aW5nIHRoZSB0aWxlIHJlZ2lv
biBoYWxmIGEgdGV4ZWwgb3IgaGFsZiBhIHRleGVsCkBAIC0zMjIsNiArMzI5LDggQEAgdm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZQogICAgICAgICAgICAgLy8gTWFwIHF1
YWQgdG8gbGF5ZXIgc3BhY2UuCiAgICAgICAgICAgICBGbG9hdFF1YWQgcXVhZCA9IHF1YWRUcmFu
c2Zvcm0ubWFwUXVhZChkZXZpY2VRdWFkLmZsb2F0UXVhZCgpKTsKIAorICAgICAgICAgICAgRmxv
YXRRdWFkIHRpbGVRdWFkID0gcXVhZDsKKwogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIHRp
bGVSZWN0LgogICAgICAgICAgICAgcXVhZC5zY2FsZSgxLjBmIC8gdGlsZVJlY3Qud2lkdGgoKSwg
MS4wZiAvIHRpbGVSZWN0LmhlaWdodCgpKTsKIApAQCAtMzQwLDEzICszNDksMzMgQEAgdm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZQogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00ZihmcmFnbWVudFRl
eFRyYW5zZm9ybUxvY2F0aW9uLCBmcmFnbWVudFRleFRyYW5zbGF0ZVgsIGZyYWdtZW50VGV4VHJh
bnNsYXRlWSwgZnJhZ21lbnRUZXhTY2FsZVgsIGZyYWdtZW50VGV4U2NhbGVZKSk7CiAKLSAgICAg
ICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkudmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgdmVydGV4VGV4VHJhbnNsYXRlWCwg
dmVydGV4VGV4VHJhbnNsYXRlWSwgdmVydGV4VGV4U2NhbGVYLCB2ZXJ0ZXhUZXhTY2FsZVkpKTsK
LQotICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9iYWxUcmFu
c2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVS
ZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkucG9pbnRMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZUlk
KCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtQ2hlY2tlcmJvYXJkKiBjaGVja2Vy
UHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbUNoZWNrZXJib2FyZCgpOworICAg
ICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKGNoZWNrZXJQcm9n
cmFtLT5wcm9ncmFtKCkpKTsKKworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRpbGVUcmFuc2Zvcm0gPSBnbG9iYWxUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgdGlsZVRy
YW5zZm9ybS50cmFuc2xhdGUzZCh0aWxlUmVjdC5jZW50ZXIoKS54KCksIHRpbGVSZWN0LmNlbnRl
cigpLnkoKSwgMC4wKTsKKworICAgICAgICAgICAgICAgIGZsb2F0IHRleE9mZnNldFggPSBkaXNw
bGF5T2Zmc2V0LndpZHRoKCk7CisgICAgICAgICAgICAgICAgZmxvYXQgdGV4T2Zmc2V0WSA9IGRp
c3BsYXlPZmZzZXQuaGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYID0g
dGlsZVJlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVkgPSB0aWxl
UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTRmKGNoZWNrZXJQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0
aW9uKCksIHRleE9mZnNldFgsIHRleE9mZnNldFksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7Cisg
ICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihjaGVja2VyUHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmVxdWVuY3lMb2NhdGlvbigpLCBjaGVja2VyYm9hcmRG
cmVxdWVuY3kpKTsKKyAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRR
dWFkKHRpbGVUcmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwg
RmxvYXRRdWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja2VyUHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXJQcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKyAgICAgICAgICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVu
aWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS52ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlv
bigpLCB2ZXJ0ZXhUZXhUcmFuc2xhdGVYLCB2ZXJ0ZXhUZXhUcmFuc2xhdGVZLCB2ZXJ0ZXhUZXhT
Y2FsZVgsIHZlcnRleFRleFNjYWxlWSkpOworICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXIt
PmRyYXdUZXh0dXJlZFF1YWQoZ2xvYmFsVHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVp
Z2h0KCksIG9wYWNpdHksIHF1YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExv
Y2F0aW9uKCkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwcmV2RWRnZVggPSBlZGdl
WDsKICAgICAgICAgICAgIC8vIFJldmVyc2UgZGlyZWN0aW9uLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuaAkocmV2aXNpb24gOTY4NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8
VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBBbHBoYUFBPiBQcm9n
cmFtQUE7CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFn
bWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZUFBOwog
CisgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhhdCBwcm9kdWNlcyBhIGNoZWNrZWRib2FyZCBwYXR0
ZXJuLgorICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFn
bWVudFNoYWRlckNoZWNrZXJib2FyZD4gUHJvZ3JhbUNoZWNrZXJib2FyZDsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113589</attachid>
            <date>2011-11-03 17:23:51 -0700</date>
            <delta_ts>2011-11-03 18:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69585-20111103172350.patch</filename>
            <type>text/plain</type>
            <size>11726</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNmZlNTMyYmY1NjhmYzM5
Mzg1Mjk0Njc2YjcxMzc5YjVmZmM1N2IwLi4yYzdkNjA0NDU5NDkwZGRlYWFmMTA2MWNiNGI4Y2Vk
NjRiNmIxZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEtMTEtMDMgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAorICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBjaGVja2VyYm9hcmRpbmcgZm9yIG1pc3NpbmcgbGF5ZXIgdGlsZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIHRpbGVzIHRoYXQgaGF2ZSBu
byB0ZXh0dXJlIG9yIGhhdmVuJ3QgZXZlbiBiZWVuIGNyZWF0ZWQgeWV0LAorICAgICAgICBkcmF3
IHVzaW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBsYXllci4KKworICAgICAgICBUaGUg
b25seSBiYWNrZ3JvdW5kIGNvbG9yIHNldCBpcyBjdXJyZW50bHkgdGhlIG5vbi1jb21wb3NpdGVk
IGNvbnRlbnQsCisgICAgICAgIGFuZCBhbGwgb3RoZXIgbGF5ZXJzIHVzZSB0cmFuc3BhcmVudCBi
bGFjayBieSBkZWZhdWx0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNo
UHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25D
b21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyk6CisKKzIwMTEtMTEtMDMgIEFkcmllbm5lIFdh
bGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKwogICAgICAgICBbY2hyb21pdW1dIEZpeCBpbmNvcnJl
Y3QgdmlzaWJpbGl0eS9zY2lzc29yIHJlY3QgZm9yIHRocmVhZGVkIGNvbXBvc2l0aW5nCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk2MgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk2NTIzZDQ0MmFmNzdjM2RkZTBmOTg3Y2Y2YTI1ODVl
MzljMjNkNDEuLjRiZjdiNTFkNDk1MTJhMzY5YWYxZWI3ZTIwY2VlMDExMjNkYjFlYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTEtMTEtMDMgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAorICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBjaGVja2VyYm9hcmRpbmcgZm9yIG1pc3NpbmcgbGF5ZXIgdGlsZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgYSBzaG9ydC10ZXJtIHNvbHV0
aW9uIHRvIGZlZWQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGRvY3VtZW50CisgICAgICAg
IHRvIHRoZSBncmFwaGljcyBsYXllciB0aGF0IGJhY2tzIGl0LCBzZXQgdGhlIGJhY2tncm91bmQg
Y29sb3Igb2YgdGhlCisgICAgICAgIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgd2hlbiB0aGUgcm9v
dCBsYXllciBpcyBzZXQuIFRoZSBwcm9wZXIgcGxhY2UgdG8KKyAgICAgICAgc2V0IHRoaXMgd291
bGQgcHJvYmFibHkgYmUgZHVyaW5nIGEgc3R5bGUgY2hhbmdlLgorCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RHcmFw
aGljc0xheWVyKToKKworMjAxMS0xMS0wMyAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUu
Y29tPgorCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IGluY29ycmVjdCB2aXNpYmlsaXR5L3NjaXNz
b3IgcmVjdCBmb3IgdGhyZWFkZWQgY29tcG9zaXRpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggNmE2YTBlNzdjNDc0OTA5Y2EwMmI0NDgyZGZmNjAxNjBhYTExY2Y0OC4uMDY5NmI5M2M3Yjhh
MWMyNWY0NzA2ZDExNGIyNDA0ZTAyZjM0NGY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTI3OCw2ICsyNzgsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqIGxheWVyKQogewogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBv
aW50KTsKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnRaKTsKKyAgICBs
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKICAgICBsYXllci0+
c2V0Qm91bmRzKG1fYm91bmRzKTsKICAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhjb250ZW50
Qm91bmRzKCkpOwogICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKG1fZGVidWdCb3JkZXJD
b2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBi
YTI2NjczMTYxZjIzMjA0Zjg2NmYzOTI3OTIwNzNmMjdmZmQ3N2UxLi4yNTgzOWM4OGE5NzMzOWRl
NjcxMGZjMDZjYmVkMDllYTRiZTI0ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5jcHAKQEAgLTQ5LDYgKzQ5LDE0IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCiB7CiB9CiAKK3ZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorewor
ICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZv
cm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAgIGVsc2UKKyAgICAgICAg
bV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldEJhY2tncm91bmRDb2xvcihDb2xv
cjo6d2hpdGUpOworfQorCiB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0U2Nyb2xs
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgKaW5k
ZXggYjZiNWUyZDdlZDVlYjIwOTRjZmM3N2I2MThhODNlYmUzMmRmZTk3Mi4uMjg2NDc1Y2JkY2Rj
N2Y1YjE5MTI0MGFkOGUxYTExNzkwMTRiYjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb2xvcjsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBJbnRQb2ludDsKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVj
dChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKICAgICB2b2lkIHNldFNjcm9sbExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lk
IHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYg
Y29udGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOwogICAgIHZvaWQg
cHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRl
eCBiM2FmMGZiYmY3ZTAyZTdmNzc2Nzk3ZjgxYTNiZDYyZjE0ZjliZDZhLi41N2RiOGM3ZGQ4Mzll
NWRiYjQ0NmZiNDQ0ODI5MzY2ODA3ZWE0YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBA
IC0yODksNiArMjg5LDE0IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEFuY2hvclBvaW50WihmbG9h
dCBhbmNob3JQb2ludFopCiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBpZiAobV9iYWNr
Z3JvdW5kQ29sb3IgIT0gYmFja2dyb3VuZENvbG9yKSB7CisgICAgICAgIG1fYmFja2dyb3VuZENv
bG9yID0gYmFja2dyb3VuZENvbG9yOworICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0g
dHJ1ZTsKKyAgICB9Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMoYm9v
bCBtYXNrc1RvQm91bmRzKQogewogICAgIGlmIChtX21hc2tzVG9Cb3VuZHMgIT0gbWFza3NUb0Jv
dW5kcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYzMyZTExN2I3YjVmZDlhMWY5ZTA1MTll
OWM4YTllYWY3Y2ZiNTMwZC4uYzY4YjEyYWI1ZGRmNTNmMjY2MzZmN2VlOWNjMmQ3NWUyNDc3NDJm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04OSw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCk7CiAgICAgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29u
c3QgeyByZXR1cm4gbV9hbmNob3JQb2ludFo7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJik7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKwogICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhi
b29sKTsKICAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX21hc2tzVG9C
b3VuZHM7IH0KIApAQCAtMjE0LDYgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2Nv
bnRlbnRCb3VuZHM7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBJbnRTaXpl
IG1fbWF4U2Nyb2xsUG9zaXRpb247CisgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAg
ICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBzaG91bGQgZHJhdy4KICAgICBi
b29sIG1fZG91YmxlU2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4
IDhiYjMwMmQ2NWFlMmIyZTBmMTMwMDc5MWE0YzhjNDNkNWYwOTc4NDkuLmYzMDEzMWZhNGJmOTY3
Y2RlNjEzM2ZlOGNiOWNhNzdmYTNmNTg2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuY3BwCkBAIC0yNDEsMTQgKzI0MSwxMCBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXdU
aWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludAogCiAg
ICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAg
IERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICghdGls
ZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0aWxlLT50ZXh0dXJlSWQoKSk7CiAKICAgICAgICAgICAgIC8vIERvbid0IHVzZSB0aWxl
Q29udGVudFJlY3QgaGVyZSwgYXMgdGhhdCBjb250YWlucyB0aGUgZnVsbAogICAgICAgICAgICAg
Ly8gcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgd2hpY2ggc2hvdWxkbid0IGJlIGRyYXduLgotICAg
ICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHModGlsZS0+aSgp
LCB0aWxlLT5qKCkpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRp
bGVCb3VuZHMoaSwgaik7CiAgICAgICAgICAgICBJbnRSZWN0IGRpc3BsYXlSZWN0ID0gdGlsZVJl
Y3Q7CiAgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKIApAQCAtMjc2
LDcgKzI3Miw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgICAgICAgICBjbGFtcFJl
Y3QuaW5mbGF0ZVkoLWNsYW1wWSk7CiAgICAgICAgICAgICBGbG9hdFNpemUgY2xhbXBPZmZzZXQg
PSBjbGFtcFJlY3QubWluWE1pbllDb3JuZXIoKSAtIEZsb2F0UmVjdCh0aWxlUmVjdCkubWluWE1p
bllDb3JuZXIoKTsKIAotICAgICAgICAgICAgRmxvYXRQb2ludCB0ZXhPZmZzZXQgPSBtX3RpbGVy
LT50ZXh0dXJlT2Zmc2V0KHRpbGUtPmkoKSwgdGlsZS0+aigpKSArIGNsYW1wT2Zmc2V0ICsgRmxv
YXRTaXplKGRpc3BsYXlPZmZzZXQpOworICAgICAgICAgICAgRmxvYXRQb2ludCB0ZXhPZmZzZXQg
PSBtX3RpbGVyLT50ZXh0dXJlT2Zmc2V0KGksIGopICsgY2xhbXBPZmZzZXQgKyBGbG9hdFNpemUo
ZGlzcGxheU9mZnNldCk7CiAgICAgICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV90aWxlci0+dGlsZVNpemUoKS53aWR0aCgpKTsKICAgICAgICAgICAgIGZsb2F0
IHRpbGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV90aWxlci0+dGlsZVNpemUoKS5oZWln
aHQoKSk7CiAKQEAgLTMzOSwxMSArMzM1LDI5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJh
d1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAK
ICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkudmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgdmVydGV4VGV4VHJhbnNs
YXRlWCwgdmVydGV4VGV4VHJhbnNsYXRlWSwgdmVydGV4VGV4U2NhbGVYLCB2ZXJ0ZXhUZXhTY2Fs
ZVkpKTsKIAotICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9i
YWxUcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGlmICh0aWxlICYmIHRp
bGUtPnRleHR1cmVJZCgpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAg
ICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGdsb2JhbFRyYW5zZm9y
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVS
ZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IGds
b2JhbFRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICB0aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0
aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53aWR0aCgpIC8gMi4wLCB0aWxlUmVjdC55KCkgKyB0aWxl
UmVjdC5oZWlnaHQoKSAvIDIuMCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBMYXllckNocm9t
aXVtOjpCb3JkZXJQcm9ncmFtKiBzb2xpZENvbG9yUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPmJv
cmRlclByb2dyYW0oKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNl
UHJvZ3JhbShzb2xpZENvbG9yUHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisKKyAgICAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHNvbGlkQ29sb3JQcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmNvbG9yTG9jYXRpb24oKSwgYmFja2dyb3VuZENvbG9yKCkucmVkKCksIGJh
Y2tncm91bmRDb2xvcigpLmdyZWVuKCksIGJhY2tncm91bmRDb2xvcigpLmJsdWUoKSwgYmFja2dy
b3VuZENvbG9yKCkuYWxwaGEoKSkpOworCisgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+
ZHJhd1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0
KCksIG9wYWNpdHksIHF1YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xKTsKKwor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0t
PnByb2dyYW0oKSkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwcmV2RWRnZVggPSBl
ZGdlWDsKICAgICAgICAgICAgIC8vIFJldmVyc2UgZGlyZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGRlZTE1YzliMjlhNzk2MTIxYTIxOGNk
MDM0NWM4MTk2NzNhNzFiNmUuLmUyYTllZTdkZDRiZDJkZWQ1ZGFkMzAwNTQ0YjA1M2E0NTM0ZDNl
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI1
MjAsNiArMjUyMCw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogICAgICAgICAgICAgc2Nyb2xsTGF5ZXIgPSBjb21wb3NpdG9y
LT5zY3JvbGxMYXllcigpOwogICAgICAgICB9CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LT5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7CisKKyAgICAgICAgLy8gRklYTUU6
IFRoaXMgd2lsbCBub3QgcHJvcGVybHkgcmVmbGVjdCBzdHlsZSBjaGFuZ2VzLgorICAgICAgICBt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0QmFja2dyb3VuZENvbG9yKHBhZ2UoKS0+bWFp
bkZyYW1lKCktPnZpZXcoKS0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQogICAg
IGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKGxheWVyID8gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113601</attachid>
            <date>2011-11-03 18:19:36 -0700</date>
            <delta_ts>2011-11-03 18:26:02 -0700</delta_ts>
            <desc>Addressed review comments, rebased</desc>
            <filename>bug-69585-20111103181935.patch</filename>
            <type>text/plain</type>
            <size>13750</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyNTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YTc5MDU4ZmM3Mjk2OGY0
OTkzZGEzNmMxN2FlM2M4ZDU4N2Q4ZTVlLi4yYzQ5ZDk3YmQ0NDJmZGIxZWM3Y2Y2MmQ1ZWFjODE2
ZDNjODExMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTEtMDMgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBjaGVja2VyYm9hcmRpbmcgZm9yIG1pc3NpbmcgbGF5ZXIgdGlsZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIHRpbGVzIHRoYXQgaGF2ZSBu
byB0ZXh0dXJlIG9yIGhhdmVuJ3QgZXZlbiBiZWVuIGNyZWF0ZWQgeWV0LAorICAgICAgICBkcmF3
IHVzaW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBsYXllci4KKworICAgICAgICBUaGUg
b25seSBiYWNrZ3JvdW5kIGNvbG9yIHNldCBpcyBjdXJyZW50bHkgdGhlIG5vbi1jb21wb3NpdGVk
IGNvbnRlbnQsCisgICAgICAgIGFuZCBhbGwgb3RoZXIgbGF5ZXJzIHVzZSB0cmFuc3BhcmVudCBi
bGFjayBieSBkZWZhdWx0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNo
UHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25D
b21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyk6CisKIDIwMTEtMTEtMDMgIExldmkgV2VpbnRy
YXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvcnJlY3QgdXNhZ2Ugb2YgTGF5
b3V0VW5pdHMgYW5kIGludGVnZXJzIGluIFRhYmxlIHJlbmRlcmluZyBjbGFzc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDA5MWYxZWEzYWVlYTA5ZjNkZWRiNjc4YzJlMTcyZTA1MWZh
NmQyNTMuLjE3MDhlYWMwMmUzNmViNzg1YTJkOGUzMzYyMmFhMTQ2NjFkMGI4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTEtMDMgIEFkcmllbm5l
IFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVu
dCBjaGVja2VyYm9hcmRpbmcgZm9yIG1pc3NpbmcgbGF5ZXIgdGlsZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTg1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gcGlwZSB0aGUgYmFja2dyb3VuZCBj
b2xvciBvZiB0aGUgZG9jdW1lbnQgdG8gdGhlIG5vbi1jb21wb3NpdGVkCisgICAgICAgIGhvc3Qs
IHNldCBpdCBkdXJpbmcgcGFpbnQuIFRoaXMgbWF5IGJlIG1vcmUgZnJlcXVlbnQgdGhhbiBuZWNl
c3NhcnksCisgICAgICAgIGJ1dCBpdCdsbCBjYXRjaCBhbGwgc3R5bGUgY2hhbmdlcy4KKworICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojpub25Db21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bENvbnRlbnRQYWludGVyOjpwYWludCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRF
U1QpOgorCiAyMDExLTExLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDaGFuZ2UgcmVtYWluaW5nIGNhbGxlcnMgb2YgcmVsZWFzZVJlZiB0byBjYWxsIGxlYWtS
ZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNmE2YTBlNzdjNDc0OTA5Y2EwMmI0NDgyZGZm
NjAxNjBhYTExY2Y0OC4uMDY5NmI5M2M3YjhhMWMyNWY0NzA2ZDExNGIyNDA0ZTAyZjM0NGY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI3OCw2ICsyNzgsNyBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIGxheWVy
LT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBvaW50KTsKICAgICBsYXllci0+c2V0QW5jaG9yUG9p
bnRaKG1fYW5jaG9yUG9pbnRaKTsKKyAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFj
a2dyb3VuZENvbG9yKTsKICAgICBsYXllci0+c2V0Qm91bmRzKG1fYm91bmRzKTsKICAgICBsYXll
ci0+c2V0Q29udGVudEJvdW5kcyhjb250ZW50Qm91bmRzKCkpOwogICAgIGxheWVyLT5zZXREZWJ1
Z0JvcmRlckNvbG9yKG1fZGVidWdCb3JkZXJDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBmY2NiNWY2ZmRjYzM0M2ZlNTNjYmVjN2NkYmVmOWQ3
MzM0NDdjN2FlLi5iOTkwNmIxM2EwODliNjE0YTMwNjY3ZGJiNDhhNzAzOWU5ZmY1MTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTQ5LDYgKzQ5LDE0
IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgp
CiB7CiB9CiAKK3ZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAg
ICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Y29sb3IpOworICAgIGVsc2UKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVy
KCktPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpOworfQorCiB2b2lkIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6c2V0Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewog
ICAgIG1fZ3JhcGhpY3NMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmgKaW5kZXggODlhOGZjZWNhMTVkMGIxOThhZDk3M2E1OTA1
NGY3N2Q2ZjYzODMyOS4uYWM3N2UxZWMzM2VjMGZkYzgyMTc2YjZmZmZiYzI1MjBhNzFlNTZhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgKQEAgLTM1LDYgKzM1LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb2xvcjsKIGNsYXNzIEdyYXBoaWNz
TGF5ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKQEAgLTUxLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgp
OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldFJvb3RMYXllcihH
cmFwaGljc0xheWVyKik7CiAgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKTsKICAgICB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CkBA
IC03NCw0ICs3NiwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBOb25Db21wb3NpdGVkQ29udGVudEhvc3RfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
aW5kZXggYjNhZjBmYmJmN2UwMmU3Zjc3Njc5N2Y4MWEzYmQ2MmYxNGY5YmQ2YS4uNTdkYjhjN2Rk
ODM5ZTVkYmI0NDZmYjQ0NDgyOTM2NjgwN2VhNGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cApAQCAtMjg5LDYgKzI4OSwxNCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludFoo
ZmxvYXQgYW5jaG9yUG9pbnRaKQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKG1f
YmFja2dyb3VuZENvbG9yICE9IGJhY2tncm91bmRDb2xvcikgeworICAgICAgICBtX2JhY2tncm91
bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdl
ZCA9IHRydWU7CisgICAgfQorfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRz
KGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAobV9tYXNrc1RvQm91bmRzICE9IG1hc2tz
VG9Cb3VuZHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGMzMmUxMTdiN2I1ZmQ5YTFmOWUw
NTE5ZTljOGE5ZWFmN2NmYjUzMGQuLmM2OGIxMmFiNWRkZjUzZjI2NjM2ZjdlZTljYzJkNzVlMjQ3
NzQyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtODksNiArODksOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQpOwogICAgIGZsb2F0IGFuY2hvclBvaW50Wigp
IGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnRaOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYpOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisKICAgICB2b2lkIHNldE1hc2tzVG9Cb3Vu
ZHMoYm9vbCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNr
c1RvQm91bmRzOyB9CiAKQEAgLTIxNCw2ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUg
bV9jb250ZW50Qm91bmRzOwogICAgIEludFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAgICAgSW50
U2l6ZSBtX21heFNjcm9sbFBvc2l0aW9uOworICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwog
CiAgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAg
ICAgYm9vbCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApp
bmRleCAxMTU1YTRjYWQ1MzdjNmE2NmU2MzZmMDQwMjBiZmE5NmNmOTJiZDdkLi5hNGE4NThjN2Ey
NTVhNDVmZGViOTkyOTEyNGMyNTdkNTU3MzE5M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmNwcApAQCAtMjQ0LDE0ICsyNDQsMTAgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpk
cmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQK
IAogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAg
ICAgICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7Ci0gICAgICAgICAgICBpZiAo
IXRpbGUgfHwgIXRpbGUtPnRleHR1cmVJZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOwogCiAgICAgICAgICAgICAvLyBEb24ndCB1c2Ug
dGlsZUNvbnRlbnRSZWN0IGhlcmUsIGFzIHRoYXQgY29udGFpbnMgdGhlIGZ1bGwKICAgICAgICAg
ICAgIC8vIHJlY3Qgd2l0aCBib3JkZXIgdGV4ZWxzIHdoaWNoIHNob3VsZG4ndCBiZSBkcmF3bi4K
LSAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKHRpbGUt
PmkoKSwgdGlsZS0+aigpKTsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVy
LT50aWxlQm91bmRzKGksIGopOwogICAgICAgICAgICAgSW50UmVjdCBkaXNwbGF5UmVjdCA9IHRp
bGVSZWN0OwogICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CiAKQEAg
LTI3OSw3ICsyNzUsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludAogICAgICAgICAgICAgY2xh
bXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOwogICAgICAgICAgICAgRmxvYXRTaXplIGNsYW1wT2Zm
c2V0ID0gY2xhbXBSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBGbG9hdFJlY3QodGlsZVJlY3QpLm1p
blhNaW5ZQ29ybmVyKCk7CiAKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgdGV4T2Zmc2V0ID0gbV90
aWxlci0+dGV4dHVyZU9mZnNldCh0aWxlLT5pKCksIHRpbGUtPmooKSkgKyBjbGFtcE9mZnNldCAr
IEZsb2F0U2l6ZShkaXNwbGF5T2Zmc2V0KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgdGV4T2Zm
c2V0ID0gbV90aWxlci0+dGV4dHVyZU9mZnNldChpLCBqKSArIGNsYW1wT2Zmc2V0ICsgRmxvYXRT
aXplKGRpc3BsYXlPZmZzZXQpOwogICAgICAgICAgICAgZmxvYXQgdGlsZVdpZHRoID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fdGlsZXItPnRpbGVTaXplKCkud2lkdGgoKSk7CiAgICAgICAgICAgICBm
bG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZXItPnRpbGVTaXplKCku
aGVpZ2h0KCkpOwogCkBAIC0zNDIsMTEgKzMzOCwyOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6
OmRyYXdUaWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IElu
dAogCiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLnZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHZlcnRleFRleFRy
YW5zbGF0ZVgsIHZlcnRleFRleFRyYW5zbGF0ZVksIHZlcnRleFRleFNjYWxlWCwgdmVydGV4VGV4
U2NhbGVZKSk7CiAKLSAgICAgICAgICAgIGxheWVyUmVuZGVyZXItPmRyYXdUZXh0dXJlZFF1YWQo
Z2xvYmFsVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgcXVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSk7CisgICAgICAgICAgICBpZiAodGlsZSAm
JiB0aWxlLT50ZXh0dXJlSWQoKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0aWxlLT50ZXh0dXJlSWQoKSk7Cisg
ICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9iYWxUcmFu
c2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgcXVhZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRl
eFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRp
b24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zvcm0g
PSBnbG9iYWxUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgdGlsZVRyYW5zZm9ybS50cmFuc2xh
dGUodGlsZVJlY3QueCgpICsgdGlsZVJlY3Qud2lkdGgoKSAvIDIuMCwgdGlsZVJlY3QueSgpICsg
dGlsZVJlY3QuaGVpZ2h0KCkgLyAyLjApOworCisgICAgICAgICAgICAgICAgY29uc3QgTGF5ZXJD
aHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogc29saWRDb2xvclByb2dyYW0gPSBsYXllclJlbmRlcmVy
LT5ib3JkZXJQcm9ncmFtKCk7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnVzZVByb2dyYW0oc29saWRDb2xvclByb2dyYW0tPnByb2dyYW0oKSkpOworCisgICAgICAgICAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihzb2xpZENvbG9yUHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5jb2xvckxvY2F0aW9uKCksIGJhY2tncm91bmRDb2xvcigpLnJlZCgp
LCBiYWNrZ3JvdW5kQ29sb3IoKS5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IoKS5ibHVlKCksIGJh
Y2tncm91bmRDb2xvcigpLmFscGhhKCkpKTsKKworICAgICAgICAgICAgICAgIGxheWVyUmVuZGVy
ZXItPmRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBvcGFjaXR5LCBxdWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSk7
CisKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9n
cmFtLT5wcm9ncmFtKCkpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHJldkVkZ2VY
ID0gZWRnZVg7CiAgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0OGZiM2UwYTk4ZjNhYjJhYzE1
NDE1YjA1NzVlZmFhMzA0MDBhMDgzLi4zOWZlZmM0NmY0Y2RjYWVhNzI0MzM5ZTdjNzA5YjFhNTA1
MDJmZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC0yNTUwLDYgKzI1NTAsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW52YWxpZGF0ZVJvb3RMYXll
clJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC0+aW52YWxpZGF0ZVJlY3QoZGlydHlSZWN0KTsKICAgICBzZXRSb290TGF5ZXJOZWVkc0Rpc3Bs
YXkoKTsKIH0KKworV2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KiBXZWJWaWV3SW1w
bDo6bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkKK3sKKyAgICByZXR1cm4gbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QuZ2V0KCk7Cit9CisKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7CkBAIC0yNTg0
LDYgKzI1OTAsMTAgQEAgcHVibGljOgogICAgICAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKGNv
bnRlbnRSZWN0LndpZHRoKCkgKiBjb250ZW50UmVjdC5oZWlnaHQoKSkgLyAocGFpbnRFbmQgLSBw
YWludFN0YXJ0KTsKICAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3Vu
dHMoIlJlbmRlcmVyNC5BY2NlbFJvb3RQYWludER1cmF0aW9uTVMiLCAocGFpbnRFbmQgLSBwYWlu
dFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOwogICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhp
c3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsUm9vdFBhaW50TWVnYXBpeFBlclNl
Y29uZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKKworICAgICAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIG5vdCBwcm9wZXJseSByZWZsZWN0IHN0eWxlIGNoYW5nZXMuCisg
ICAgICAgIG1fd2ViVmlld0ltcGwtPm5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpLT5zZXRCYWNr
Z3JvdW5kQ29sb3Iodmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CisKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA5
OTExYTVmOGFjMGVkYjk4OTMxOGVhYzExMmEyNWU1NzBkNjllMWJmLi5kN2U1ZDk2NmJjZWQzMThi
NWQ5NzI5MzkxYTFhZTRiM2Y3ODZlN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTM4MCw2ICszODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSb290
TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKICAgICB2b2lkIHNjcm9sbFJvb3RMYXllclJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0KTsKICAgICB2b2lkIGludmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKyAgICBXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QqIG5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdCgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCAyZjI2ODZhNDFm
ODI4MjM3ZDAwMWQ1YjBkNDE4YmZkZTEzYzA5ODdjLi45ODRjODVkYTZkMzRjZjBhYTg0MTdlYzAw
OWE2MmQ1YzUyNjkxMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVySW1wbFRlc3QuY3BwCkBAIC0xMTYsNiArMTE2LDcgQEAgVEVTVChDQ0xheWVySW1wbFRl
c3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FO
RF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJi
aXRyYXJ5Q29sb3IpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VE
KHJvb3QtPnNldERlYnVnQm9yZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1
ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0
QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KSk7CiAKICAgICAvLyBTcGVjaWFsIGNhc2U6IGNo
ZWNrIHRoYXQgc3VibGF5ZXIgdHJhbnNmb3JtIGNoYW5nZXMgYWxsIGxheWVyJ3MgZGVzY2VuZGFu
dHMsIGJ1dCBub3QgdGhlIGxheWVyIGl0c2VsZi4KICAgICByb290LT5yZXNldExheWVyUHJvcGVy
dHlDaGFuZ2VkKCk7Cg==
</data>
<flag name="review"
          id="112020"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>