<?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>36194</bug_id>
          
          <creation_ts>2010-03-16 14:36:53 -0700</creation_ts>
          <short_desc>WebGL layout test failures on bots after 33416</short_desc>
          <delta_ts>2010-03-24 10:39:24 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200446</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-16 14:36:53 -0700</bug_when>
    <thetext>After the introduction of https://bugs.webkit.org/show_bug.cgi?id=33416 , several WebGL layout tests are failing on some of the bots. Typical failures look like:

fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html
fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data.html
fast/canvas/webgl/tex-sub-image-2d.html
fast/canvas/webgl/triangle.html
fast/canvas/webgl/viewport-unchanged-upon-resize.html

For details, see for example http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r56075%20(11503)/results.html . (On the console at http://build.webkit.org/console , go to r56074, click the red bubble, and under &quot;uploaded results&quot; click &quot;view results&quot;.)

Generally it looks like any test reading back the frame buffer is failing because incorrect values are coming back. The best guess at this point is that the OpenGL implementation on these bots is buggy and breaks when multisampled framebuffer objects are used.

We need to be able to detect when to enable or disable multisampling, and modify the layout tests so they pass regardless of whether the implementation was able to satisfy the user&apos;s antialiasing request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200502</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-16 16:33:44 -0700</bug_when>
    <thetext>Temporarily disabling these tests on the build bots under https://bugs.webkit.org/show_bug.cgi?id=36200 to get the commit queue going again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200521</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-16 17:07:31 -0700</bug_when>
    <thetext>Be sure to file a bug at bugreporter.apple.com on the underlying OpenGL issue.

Why wasn&apos;t this seen before committing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200524</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-16 17:10:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Be sure to file a bug at bugreporter.apple.com on the underlying OpenGL issue.

We will once we figure out what the root cause appears to be. Right now it points to EXT_framebuffer_multisample / EXT_framebuffer_blit. We also don&apos;t know the graphics hardware in the build bots.

&gt; Why wasn&apos;t this seen before committing?

The tests pass on our local (NVIDIA) hardware and drivers. I sidestepped the commit queue due to other failing tests which were blocking it, which it looks like was a mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200534</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-16 17:33:09 -0700</bug_when>
    <thetext>Because the Snow Leopard bots were already failing tests, I neglected to notice that basically all of the WebGL layout tests are failing on that bot after this change. In particular, all of the following fail or crash, in addition to the other tests mentioned:

fast/canvas/webgl/bug-32364.html
fast/canvas/webgl/bug-32692.html
fast/canvas/webgl/bug-32888.html
fast/canvas/webgl/drawArraysOutOfBounds.html
fast/canvas/webgl/drawElementssOutOfBounds.html
fast/canvas/webgl/error-reporting.html
fast/canvas/webgl/getActiveTest.html
fast/canvas/webgl/gl-object-get-calls.html
fast/canvas/webgl/incorrect-context-object-behaviour.html
fast/canvas/webgl/index-validation-copies-indices.html
fast/canvas/webgl/index-validation.html
fast/canvas/webgl/invalidPassedParams.html
fast/canvas/webgl/null-object-behaviour.html
fast/canvas/webgl/tex-image-and-sub-image-2d-with-image.html
fast/canvas/webgl/texImage2DImageDataTest.html
fast/canvas/webgl/uniform-location.html

Eric Seidel pointed out that the Snow Leopard bot doesn&apos;t block the commit queue, so I&apos;ll not disable these for the moment, but we need to make sure that the fix (which will likely be to disable multisampling in some situations) addresses these failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200578</commentid>
    <comment_count>5</comment_count>
      <attachid>50870</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-16 21:37:41 -0700</bug_when>
    <thetext>Created attachment 50870
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200579</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 21:40:03 -0700</bug_when>
    <thetext>Attachment 50870 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp:209:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp:210:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebKit/chromium/src/GraphicsContext3D.cpp:636:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebKit/chromium/src/GraphicsContext3D.cpp:637:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200580</commentid>
    <comment_count>7</comment_count>
      <attachid>50871</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-16 21:44:04 -0700</bug_when>
    <thetext>Created attachment 50871
fixed style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200786</commentid>
    <comment_count>8</comment_count>
      <attachid>50871</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-17 08:04:43 -0700</bug_when>
    <thetext>Comment on attachment 50871
fixed style issue

&gt; Index: WebCore/platform/graphics/GraphicsContext3D.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/GraphicsContext3D.h	(revision 56097)
&gt; +++ WebCore/platform/graphics/GraphicsContext3D.h	(working copy)
&gt; @@ -713,6 +713,10 @@ namespace WebCore {
&gt;                            AlphaOp* neededAlphaOp,
&gt;                            unsigned int* format);
&gt;  
&gt; +#if PLATFORM(MAC)
&gt; +        void validateAttributes();
&gt; +#endif

Would this be better as a virtual method with an empty implementation here, so that
you can use it to fix up idiosyncrasies on other platforms too?


&gt; +void GraphicsContext3D::validateAttributes()
&gt; +{
&gt; +    // Take into account the user&apos;s requested context creation attributes, in
&gt; +    // particular stencil and antialias, and determine which could and could
&gt; +    // not be honored based on the capabilities of the OpenGL implementation.
&gt; +
&gt; +    const char* vendor = reinterpret_cast&lt;const char*&gt;(::glGetString(GL_VENDOR));
&gt; +    const char* extensions = reinterpret_cast&lt;const char*&gt;(::glGetString(GL_EXTENSIONS));

You only use the vendor string if m_attrs.antialias is true, so get it inside that clause.

I&apos;ll let someone more familiar with WebGL do the final review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200859</commentid>
    <comment_count>9</comment_count>
      <attachid>50924</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-17 10:53:00 -0700</bug_when>
    <thetext>Created attachment 50924
revised patch : responding to Simon Fraser&apos;s review

About the GraphicsContext3D::validateAttributes(), my feeling is that we should leave PLATFORM(MAC) there.  The reason is that for PLATFORM(CHROMIUM/QT), this functionality is implemented in GraphicsContex3DInternal::validateAttributes().  Either use GraphicsContext3D or GraphicsContext3DInternal implementation, but not both.  The same situation is with all the FBO variables: they are both in GraphicsContext3D PLATFORM(MAC) and GraphicsContext3DInternal PLATFORM(CHROMIUM/QT).  Adding the PLATFORM(MAC) is a reminder that those functions and variables are duplicated and could be combined into one single implementation.

The vendor quest is moved into the if block as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200869</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-17 11:08:10 -0700</bug_when>
    <thetext>After more thought and discussion with Mo, we are going to roll back the original patch for https://bugs.webkit.org/show_bug.cgi?id=33416 and reapply it later via the commit queue. A large refactoring of the affected code is imminent, and it will be much easier to iterate on any heuristics needed to work around driver bugs if all of the changes are made after the refactoring has taken place.

Cancelling the review request. We will probably close this bug after the rollback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200925</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-03-17 13:02:07 -0700</bug_when>
    <thetext>Mo discovered that fast/canvas/webgl/index-validation.html is flaky after 33416 as well. Intermittent failures of this test on some of the bots (Leopard Intel Release (Tests) for example) confirm this. This must also be triggered by a driver bug since the failure is in the initial FBO setup and this code path is taken by all of the other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203480</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-03-24 10:39:24 -0700</bug_when>
    <thetext>This bug is caused by a patch for https://bugs.webkit.org/show_bug.cgi?id=33416.  We canceled the original patch and dealt with the issue in revised patch in #33416.  Close this one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50870</attachid>
            <date>2010-03-16 21:37:41 -0700</date>
            <delta_ts>2010-03-16 21:44:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>intel.patch</filename>
            <type>text/plain</type>
            <size>15859</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjA5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTYgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTCBs
YXlvdXQgdGVzdCBmYWlsdXJlcyBvbiBib3RzIGFmdGVyIDMzNDE2LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxOTQKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCB2YWxpZGF0ZUF0dHJpYnV0ZXMg
ZnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6IENhbGwgdmFsaWRhdGVBdHRyaWJ1dGVzKCkuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRyaWJ1dGVzKTogQ2hl
Y2sgT3BlbkdMIHZlbmRvciBhbmQgZXh0ZW5zaW9ucyB0byBkZWNpZGUgd2hldGhlciB0byBob25v
ciB1c2VyJ3MgcmVxdWVzdHMgb2YgY29udGV4dCBhdHRyaWJ1dGVzLgorCiAyMDEwLTAzLTE2ICBK
b2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTYwOTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3MTMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBo
YU9wKiBuZWVkZWRBbHBoYU9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQqIGZvcm1hdCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIHZvaWQgdmFsaWRhdGVB
dHRyaWJ1dGVzKCk7CisjZW5kaWYKKwogICAgICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodDsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkocmV2aXNpb24gNTYwOTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5Miw2IEBAIEdy
YXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICAsIG1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigw
KQogewotICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRl
eHQgY3JlYXRpb24gYXR0cmlidXRlcywgaW4KLSAgICAvLyBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5k
IGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQKLSAgICAvLyBu
b3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1w
bGVtZW50YXRpb24uCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCAmJiAhbV9hdHRycy5kZXB0aCkK
LSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7Ci0gICAgLy8gRklYTUU6IGluc3RlYWQgb2Yg
ZW5mb3JjaW5nIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWUsIGltcGxlbWVudCB0aGUKLSAgICAv
LyBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gcHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2UgaXMgcmVx
dWVzdGVkLgotICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKLQogICAgIFZl
Y3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1h
dE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsK
QEAgLTE0Nyw3ICsxMzgsOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qo
R3JhCiAKICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgY29udGV4dCB0byB0aGUgb25lIGdpdmVuIHRv
IHVzLgogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCisKKyAg
ICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKKwogICAgIC8vIGNyZWF0ZSBhIHRleHR1cmUgdG8gcmVu
ZGVyIGludG8KICAgICA6OmdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CkBAIC0xOTcsNiArMTkwLDMxIEBA
IEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogICAgIH0KIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKK3sKKyAgICAvLyBUYWtl
IGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJp
YnV0ZXMsIGluCisgICAgLy8gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBk
ZXRlcm1pbmUgd2hpY2ggY291bGQgYW5kIGNvdWxkCisgICAgLy8gbm90IGJlIGhvbm9yZWQgYmFz
ZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgorCisg
ICAgY29uc3QgY2hhciogdmVuZG9yID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpn
bEdldFN0cmluZyhHTF9WRU5ET1IpKTsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7
CisKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGlmIChzdGQ6OnN0cnN0cihl
eHRlbnNpb25zLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpIHsKKyAgICAgICAgICAg
IGlmICghbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmCisgICAgICAgIChzdGQ6OnN0cnN0
cih2ZW5kb3IsICJJbnRlbCIpIHx8IHN0ZDo6c3Ryc3RyKHZlbmRvciwgImludGVsIikgfHwKKyAg
ICAgICAgICFzdGQ6OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIikpKQorICAgICAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBlbmZvcmNpbmcgcHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZSwgaW1w
bGVtZW50IHRoZQorICAgIC8vIGNvcnJlY3QgYmVoYXZpb3Igd2hlbiBwcmVtdWx0aXBsaWVkQWxw
aGEgPSBmYWxzZSBpcyByZXF1ZXN0ZWQuCisgICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEg
PSB0cnVlOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQo
KQogewogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU2MDk4KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAzLTE2ICBaaGVueWFvIE1vICA8em1v
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViR0wgbGF5b3V0IHRlc3QgZmFpbHVyZXMgb24gYm90cyBhZnRlciAzMzQxNi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk0CisKKyAg
ICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6IENhbGwg
dmFsaWRhdGVBdHRyaWJ1dGVzKCkuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOiBDaGVjayBPcGVuR0wgdmVuZG9yIGFuZCBl
eHRlbnNpb25zIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGhvbm9yIHVzZXIncyByZXF1ZXN0cyBvZiBj
b250ZXh0IGF0dHJpYnV0ZXMuCisKIDIwMTAtMDMtMTYgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2lu
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTYw
OTcpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVH
TEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiBwcml2YXRlOgorICAgIHZvaWQgdmFsaWRh
dGVBdHRyaWJ1dGVzKCk7CisKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0
dHJzOwogICAgIAogICAgIHVuc2lnbmVkIGludCBtX3RleHR1cmU7CkBAIC0zODQsMjQgKzM4Niw3
IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICNlbHNlCiAjZXJy
b3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgotewotICAgIC8vIFRha2UgaW50
byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRl
cywgaW4KLSAgICAvLyBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVy
bWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQKLSAgICAvLyBub3QgYmUgaG9ub3JlZCBiYXNlZCBv
biB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRpb24uCi0gICAgaWYg
KG1fYXR0cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoR0xFV19FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwpIHsKLSAgICAgICAgICAgIGlmICghbV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAg
ICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
YXR0cnMuc3RlbmNpbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChtX2F0dHJz
LmFudGlhbGlhcyAmJiAhR0xFV19FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUpCi0gICAgICAg
IG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgLy8gRklYTUU6IGluc3RlYWQgb2YgZW5m
b3JjaW5nIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWUsIGltcGxlbWVudCB0aGUKLSAgICAvLyBj
b3JyZWN0IGJlaGF2aW9yIHdoZW4gcHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2UgaXMgcmVxdWVz
dGVkLgotICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKLQoreyAKICNpZiBP
UyhXSU5ET1dTKQogICAgIFdORENMQVNTIHdjOwogICAgIGlmICghR2V0Q2xhc3NJbmZvKEdldE1v
ZHVsZUhhbmRsZSgwKSwgTCJDQU5WQVNHTCIsICZ3YykpIHsKQEAgLTU4Myw2ICs1NjgsOCBAQCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAgICAgICAgIH0KICAgICAg
ICAgc19pbml0aWFsaXplZEdMRVcgPSB0cnVlOwogICAgIH0KKworICAgIHZhbGlkYXRlQXR0cmli
dXRlcygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCgpCkBAIC02MzAsNiArNjE3LDMxIEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6On5HcmFwaGljc0NvbnQKICAgICBtX2NvbnRleHRPYmogPSAwOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlQXR0cmlidXRlcygpCit7CisgICAgLy8gVGFr
ZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRy
aWJ1dGVzLCBpbgorICAgIC8vIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQg
ZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZAorICAgIC8vIG5vdCBiZSBob25vcmVkIGJh
c2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgIGNvbnN0IGNoYXIqIHZlbmRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGds
R2V0U3RyaW5nKEdMX1ZFTkRPUikpOworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7CisK
KyAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGlmIChzdGQ6OnN0cnN0cihleHRl
bnNpb25zLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpIHsKKyAgICAgICAgICAgIGlm
ICghbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmCisgICAgICAgIChzdGQ6OnN0cnN0cih2
ZW5kb3IsICJJbnRlbCIpIHx8IHN0ZDo6c3Ryc3RyKHZlbmRvciwgImludGVsIikgfHwKKyAgICAg
ICAgICFzdGQ6OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIikpKQorICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgIC8vIEZJWE1F
OiBpbnN0ZWFkIG9mIGVuZm9yY2luZyBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlLCBpbXBsZW1l
bnQgdGhlCisgICAgLy8gY29ycmVjdCBiZWhhdmlvciB3aGVuIHByZW11bHRpcGxpZWRBbHBoYSA9
IGZhbHNlIGlzIHJlcXVlc3RlZC4KKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRy
dWU7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJy
ZW50KCkKIHsKICNpZiBPUyhXSU5ET1dTKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTYwOTgpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MC0wMy0xNiAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMIGxheW91dCB0ZXN0IGZhaWx1cmVz
IG9uIGJvdHMgYWZ0ZXIgMzM0MTYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjE5NAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4
dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dDog
Q292ZXJpbmcgdGhlIGNhc2Ugd2hlcmUgYW50aWFsaWFzIGlzIHJlcXVlc3RlZCBidXQgbm90IHN1
cHBvcnRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMt
YWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbDogRGl0dG8uCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDogRGl0dG8uCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0bWw6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOiBBZGRpbmcgYmFjayB0aGUgc2tpcHBl
ZCB0ZXN0cy4KKwogMjAxMC0wMy0xNiAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50
aWFsaWFzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTYwOTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRp
YWxpYXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIFBBU1Mg
Y29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXQKIFBBU1MgY29udGV4dEF0dHJpYnMu
ZGVwdGggaXMgZmFsc2UKIFBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBpcyBmYWxzZQogUEFT
UyBjb250ZXh0QXR0cmlicy5hbHBoYSBpcyBmYWxzZQotUEFTUyBjb250ZXh0QXR0cmlicy5hbnRp
YWxpYXMgaXMgdHJ1ZQorUEFTUyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBj
b250ZXh0QXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyBjb250ZXh0QXR0
cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQogUEFTUyBwaXhlbFswXSA9PSAyNTUgfHwg
cGl4ZWxbMF0gPT0gMCBpcyBmYWxzZQogVGVzdGluZyBhbnRpYWxpYXMgPSBmYWxzZQpAQCAtNzMs
NyArNzMsNyBAQCBQQVNTIGNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0CiBQQVNT
IGNvbnRleHRBdHRyaWJzLmRlcHRoIGlzIGZhbHNlCiBQQVNTIGNvbnRleHRBdHRyaWJzLnN0ZW5j
aWwgaXMgZmFsc2UKIFBBU1MgY29udGV4dEF0dHJpYnMuYWxwaGEgaXMgZmFsc2UKLVBBU1MgY29u
dGV4dEF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCitQQVNTIGNvbnRleHRBdHRyaWJzLmFudGlh
bGlhcyA9PSB0cnVlIHx8IGNvbnRleHRBdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSBpcyB0cnVl
CiBQQVNTIGNvbnRleHRBdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyB0cnVlCiBQQVNTIHBp
eGVsWzBdID09IDI1NSB8fCBwaXhlbFswXSA9PSAwIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRl
eHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1h
bHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCShyZXZpc2lvbiA1NjA5NykKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0
aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcg
QEAgZnVuY3Rpb24gdGVzdEFudGlhbGlhcyhhbnRpYWxpYXMpCiAgICAgc2hvdWxkQmUoImNvbnRl
eHRBdHRyaWJzLmRlcHRoIiwgImZhbHNlIik7CiAgICAgc2hvdWxkQmUoImNvbnRleHRBdHRyaWJz
LnN0ZW5jaWwiLCAiZmFsc2UiKTsKICAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMuYWxwaGEi
LCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMuYW50aWFsaWFzIiwgKGFu
dGlhbGlhcyA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICBzaG91bGRCZSgiY29udGV4dEF0dHJp
YnMuYW50aWFsaWFzID09IHRydWUgfHwgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzID09IGZhbHNl
IiwgInRydWUiKTsKICAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMucHJlbXVsdGlwbGllZEFs
cGhhIiwgInRydWUiKTsKIAogICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBXZWJHTEZsb2F0QXJyYXko
WwpAQCAtMjYzLDYgKzI2Myw5IEBAIGZ1bmN0aW9uIHRlc3RBbnRpYWxpYXMoYW50aWFsaWFzKQog
ICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOwogICAgIHZhciBidWYgPSBkcmF3QW5kUmVhZFBpeGVs
KHdlYkdMLCB2ZXJ0aWNlcywgY29sb3JzLCAwLCAwKTsKICAgICBwaXhlbFswXSA9IGJ1ZlswXTsK
KyAgICAvLyBJZiBhbnRpYWxpYXMgaXMgcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkLCB3ZSBm
YWtlIHRoZSBlZmZlY3QuCisgICAgaWYgKGFudGlhbGlhcyAmJiAhY29udGV4dEF0dHJpYnMuYW50
aWFsaWFzKQorICAgICAgICBwaXhlbFswXSA9IDEyNzsKICAgICBzaG91bGRCZSgicGl4ZWxbMF0g
PT0gMjU1IHx8IHBpeGVsWzBdID09IDAiLCAoYW50aWFsaWFzID8gImZhbHNlIiA6ICJ0cnVlIikp
OwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU2MDk3KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgUEFTUyBhdHRyaWJzID0gY29u
dGV4dC5nZXRDb250ZXh0QXR0cmlidQogUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1Mg
YXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuc3RlbmNpbCBpcyB0cnVlCi1QQVNT
IGF0dHJpYnMuYW50aWFsaWFzIGlzIHRydWUKK1BBU1MgYXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1
ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMucHJl
bXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKIFBBU1MgY29u
dGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNl
IH0pIGlzIG5vbi1udWxsLgpAQCAtMTksMjAgKzE5LDIwIEBAIFBBU1MgYXR0cmlicy5zdGVuY2ls
IGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMu
cHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKLVBBU1Mg
Y29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZSB9
KSBpcyBub24tbnVsbC4KK1BBU1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRlcHRoOiBm
YWxzZSwgc3RlbmNpbDogdHJ1ZSwgYW50aWFsaWFzOiBmYWxzZSB9KSBpcyBub24tbnVsbC4KIFBB
U1MgYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4K
IFBBU1MgYXR0cmlicy5kZXB0aCBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuYWxwaGEgaXMgdHJ1ZQog
UEFTUyBhdHRyaWJzLnN0ZW5jaWwgaXMgdHJ1ZQotUEFTUyBhdHRyaWJzLmFudGlhbGlhcyBpcyB0
cnVlCitQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMucHJlbXVs
dGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKLVBBU1MgY29udGV4
dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UgfSkgaXMgbm9u
LW51bGwuCitQQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBwcmVtdWx0aXBsaWVkQWxw
aGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIGlzIG5vbi1udWxsLgogUEFTUyBhdHRyaWJz
ID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgogUEFTUyBhdHRy
aWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNTIGF0dHJp
YnMuc3RlbmNpbCBpcyB0cnVlCi1QQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIHRydWUKK1BBU1Mg
YXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKIFBBU1MgYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxw
aGEgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMu
aHRtbAkocmV2aXNpb24gNTYwOTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9j
b250ZXh0LWF0dHJpYnV0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksOCBAQCBz
aG91bGRCZU5vbk51bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvCiBzaG91bGRCZSgiYXR0cmli
cy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0cnVlIik7CiBz
aG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKLXNob3VsZEJlKCJhdHRyaWJzLmFu
dGlhbGlhcyIsICJ0cnVlIik7CisvLyBBbnRpYWxpYXMgaXMgcmVxdWVzdGVkIGJ5IGRlZmF1bHQs
IGJ1dCBtaWdodCBvciBtaWdodCBub3QgYmUgc3VwcG9ydGVkLgorc2hvdWxkQmUoImF0dHJpYnMu
YW50aWFsaWFzID09IHRydWUgfHwgYXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UiLCAidHJ1ZSIp
Owogc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsKIAogZGVi
dWcgKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CkBAIC0zMywyMiArMzQsMjIgQEAgc2hvdWxk
QmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgIgogCiBkZWJ1ZygiVGVzdCBjdXN0b21p
emVkIHZhbHVlcyIpOwogLy8gKHN0ZW5jaWwgPT0gdHJ1ZSAmJiBkZXB0aCA9PSBmYWxzZSkgaXMg
bm90IHN1cHBvcnRlZCwgZGVmYXVsdCBkZXB0aCB0byB0cnVlCi1zaG91bGRCZU5vbk51bGwoImNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRydWUgfSki
KTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRlcHRoOiBm
YWxzZSwgc3RlbmNpbDogdHJ1ZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwogc2hvdWxkQmVOb25O
dWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CiBzaG91bGRC
ZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0
cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKLXNob3VsZEJlKCJh
dHRyaWJzLmFudGlhbGlhcyIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMi
LCAiZmFsc2UiKTsKIHNob3VsZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSIsICJ0cnVl
Iik7CiAKIGRlYnVnKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CiAvLyAocHJlbXVsdGlwbGll
ZEFscGhhID09IGZhbHNlKSBpcyBub3Qgc3VwcG9ydGVkLCBkZWZhdWx0IHRvIHRydWUKLXNob3Vs
ZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBo
YTogZmFsc2UgfSkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4
dCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSkiKTsKIHNo
b3VsZEJlTm9uTnVsbCgiYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIp
Owogc2hvdWxkQmUoImF0dHJpYnMuZGVwdGgiLCAidHJ1ZSIpOwogc2hvdWxkQmUoImF0dHJpYnMu
YWxwaGEiLCAidHJ1ZSIpOwogc2hvdWxkQmUoImF0dHJpYnMuc3RlbmNpbCIsICJ0cnVlIik7Ci1z
aG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMiLCAidHJ1ZSIpOworc2hvdWxkQmUoImF0dHJpYnMu
YW50aWFsaWFzIiwgImZhbHNlIik7CiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxw
aGEiLCAidHJ1ZSIpOwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDU2MDk3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMyArMTM3LDUgQEAgZmFzdC9k
b20vSFRNTFByb2dyZXNzRWxlbWVudC9zZXQtcHJvZ3JlcwogIyBldmVudC5kYXRhVHJhbnNmZXIu
c2V0RGF0YSgndGV4dC91cmktbGlzdCcpIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgb24gTWFj
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCiAK
LSMgVGVtcG9yYXJpbHkgY29tbWVudGluZyBvdXQgYSBmZXcgV2ViR0wgbGF5b3V0IHRlc3RzIGZh
aWxpbmcgb24gc29tZSBvZiB0aGUgYm90cy4KLSMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjE5NCAuCi1mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAotZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWwKLWZhc3Qv
Y2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbAotZmFzdC9jYW52YXMvd2ViZ2wvdHJp
YW5nbGUuaHRtbAotZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVz
aXplLmh0bWwKLQogIyBldmVudFNlbmRlciBuZWVkcyB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IHRv
IHRoZSBjYWxsaW5nIHdpbmRvdywgbm90IHRoZSBtYWluIGZyYW1lIGFsd2F5cy4KIGh0dHAvdGVz
dHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtaGFzLWZvY3VzLmh0bWwKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50871</attachid>
            <date>2010-03-16 21:44:04 -0700</date>
            <delta_ts>2010-03-17 10:53:00 -0700</delta_ts>
            <desc>fixed style issue</desc>
            <filename>intel.patch</filename>
            <type>text/plain</type>
            <size>15865</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjA5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTYgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTCBs
YXlvdXQgdGVzdCBmYWlsdXJlcyBvbiBib3RzIGFmdGVyIDMzNDE2LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxOTQKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCB2YWxpZGF0ZUF0dHJpYnV0ZXMg
ZnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6IENhbGwgdmFsaWRhdGVBdHRyaWJ1dGVzKCkuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRyaWJ1dGVzKTogQ2hl
Y2sgT3BlbkdMIHZlbmRvciBhbmQgZXh0ZW5zaW9ucyB0byBkZWNpZGUgd2hldGhlciB0byBob25v
ciB1c2VyJ3MgcmVxdWVzdHMgb2YgY29udGV4dCBhdHRyaWJ1dGVzLgorCiAyMDEwLTAzLTE2ICBK
b2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTYwOTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3MTMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBo
YU9wKiBuZWVkZWRBbHBoYU9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQqIGZvcm1hdCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIHZvaWQgdmFsaWRhdGVB
dHRyaWJ1dGVzKCk7CisjZW5kaWYKKwogICAgICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodDsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkocmV2aXNpb24gNTYwOTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5Miw2IEBAIEdy
YXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICAsIG1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigw
KQogewotICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRl
eHQgY3JlYXRpb24gYXR0cmlidXRlcywgaW4KLSAgICAvLyBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5k
IGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQKLSAgICAvLyBu
b3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1w
bGVtZW50YXRpb24uCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCAmJiAhbV9hdHRycy5kZXB0aCkK
LSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7Ci0gICAgLy8gRklYTUU6IGluc3RlYWQgb2Yg
ZW5mb3JjaW5nIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWUsIGltcGxlbWVudCB0aGUKLSAgICAv
LyBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gcHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2UgaXMgcmVx
dWVzdGVkLgotICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKLQogICAgIFZl
Y3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1h
dE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsK
QEAgLTE0Nyw3ICsxMzgsOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qo
R3JhCiAKICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgY29udGV4dCB0byB0aGUgb25lIGdpdmVuIHRv
IHVzLgogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCisKKyAg
ICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKKwogICAgIC8vIGNyZWF0ZSBhIHRleHR1cmUgdG8gcmVu
ZGVyIGludG8KICAgICA6OmdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CiAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CkBAIC0xOTcsNiArMTkwLDMxIEBA
IEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogICAgIH0KIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKK3sKKyAgICAvLyBUYWtl
IGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJp
YnV0ZXMsIGluCisgICAgLy8gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBk
ZXRlcm1pbmUgd2hpY2ggY291bGQgYW5kIGNvdWxkCisgICAgLy8gbm90IGJlIGhvbm9yZWQgYmFz
ZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgorCisg
ICAgY29uc3QgY2hhciogdmVuZG9yID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpn
bEdldFN0cmluZyhHTF9WRU5ET1IpKTsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7
CisKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGlmIChzdGQ6OnN0cnN0cihl
eHRlbnNpb25zLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpIHsKKyAgICAgICAgICAg
IGlmICghbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzCisgICAgICAgICYmIChzdGQ6OnN0cnN0
cih2ZW5kb3IsICJJbnRlbCIpIHx8IHN0ZDo6c3Ryc3RyKHZlbmRvciwgImludGVsIikKKyAgICAg
ICAgICAgIHx8ICFzdGQ6OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikpKQorICAgICAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICAv
LyBGSVhNRTogaW5zdGVhZCBvZiBlbmZvcmNpbmcgcHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZSwg
aW1wbGVtZW50IHRoZQorICAgIC8vIGNvcnJlY3QgYmVoYXZpb3Igd2hlbiBwcmVtdWx0aXBsaWVk
QWxwaGEgPSBmYWxzZSBpcyByZXF1ZXN0ZWQuCisgICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxw
aGEgPSB0cnVlOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJl
bnQoKQogewogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDk4KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAzLTE2ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViR0wgbGF5b3V0IHRlc3QgZmFpbHVyZXMgb24gYm90cyBhZnRlciAzMzQxNi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk0CisK
KyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6IENh
bGwgdmFsaWRhdGVBdHRyaWJ1dGVzKCkuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOiBDaGVjayBPcGVuR0wgdmVuZG9yIGFu
ZCBleHRlbnNpb25zIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGhvbm9yIHVzZXIncyByZXF1ZXN0cyBv
ZiBjb250ZXh0IGF0dHJpYnV0ZXMuCisKIDIwMTAtMDMtMTYgIEphbWVzIEhhd2tpbnMgIDxqaGF3
a2luc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24g
NTYwOTcpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNp
emVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiBwcml2YXRlOgorICAgIHZvaWQgdmFs
aWRhdGVBdHRyaWJ1dGVzKCk7CisKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBt
X2F0dHJzOwogICAgIAogICAgIHVuc2lnbmVkIGludCBtX3RleHR1cmU7CkBAIC0zODQsMjQgKzM4
Niw3IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICNlbHNlCiAj
ZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgotewotICAgIC8vIFRha2Ug
aW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmli
dXRlcywgaW4KLSAgICAvLyBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRl
dGVybWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQKLSAgICAvLyBub3QgYmUgaG9ub3JlZCBiYXNl
ZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRpb24uCi0gICAg
aWYgKG1fYXR0cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoR0xFV19FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwpIHsKLSAgICAgICAgICAgIGlmICghbV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAg
ICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChtX2F0
dHJzLmFudGlhbGlhcyAmJiAhR0xFV19FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUpCi0gICAg
ICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgLy8gRklYTUU6IGluc3RlYWQgb2Yg
ZW5mb3JjaW5nIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWUsIGltcGxlbWVudCB0aGUKLSAgICAv
LyBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gcHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2UgaXMgcmVx
dWVzdGVkLgotICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKLQoreyAKICNp
ZiBPUyhXSU5ET1dTKQogICAgIFdORENMQVNTIHdjOwogICAgIGlmICghR2V0Q2xhc3NJbmZvKEdl
dE1vZHVsZUhhbmRsZSgwKSwgTCJDQU5WQVNHTCIsICZ3YykpIHsKQEAgLTU4Myw2ICs1NjgsOCBA
QCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAgICAgICAgIH0KICAg
ICAgICAgc19pbml0aWFsaXplZEdMRVcgPSB0cnVlOwogICAgIH0KKworICAgIHZhbGlkYXRlQXR0
cmlidXRlcygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbCgpCkBAIC02MzAsNiArNjE3LDMxIEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6On5HcmFwaGljc0NvbnQKICAgICBtX2NvbnRleHRPYmogPSAwOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlQXR0cmlidXRlcygpCit7CisgICAgLy8g
VGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBh
dHRyaWJ1dGVzLCBpbgorICAgIC8vIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZAorICAgIC8vIG5vdCBiZSBob25vcmVk
IGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4K
KworICAgIGNvbnN0IGNoYXIqIHZlbmRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsR2V0U3RyaW5nKEdMX1ZFTkRPUikpOworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7
CisKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGlmIChzdGQ6OnN0cnN0cihl
eHRlbnNpb25zLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpIHsKKyAgICAgICAgICAg
IGlmICghbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzCisgICAgICAgICYmIChzdGQ6OnN0cnN0
cih2ZW5kb3IsICJJbnRlbCIpIHx8IHN0ZDo6c3Ryc3RyKHZlbmRvciwgImludGVsIikKKyAgICAg
ICAgICAgIHx8ICFzdGQ6OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikpKQorICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgIC8v
IEZJWE1FOiBpbnN0ZWFkIG9mIGVuZm9yY2luZyBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlLCBp
bXBsZW1lbnQgdGhlCisgICAgLy8gY29ycmVjdCBiZWhhdmlvciB3aGVuIHByZW11bHRpcGxpZWRB
bHBoYSA9IGZhbHNlIGlzIHJlcXVlc3RlZC4KKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBo
YSA9IHRydWU7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICNpZiBPUyhXSU5ET1dTKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTYwOTgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0wMy0xNiAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMIGxheW91dCB0ZXN0IGZh
aWx1cmVzIG9uIGJvdHMgYWZ0ZXIgMzM0MTYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE5NAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
Y29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVk
LnR4dDogQ292ZXJpbmcgdGhlIGNhc2Ugd2hlcmUgYW50aWFsaWFzIGlzIHJlcXVlc3RlZCBidXQg
bm90IHN1cHBvcnRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbDogRGl0dG8uCisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDogRGl0
dG8uCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0bWw6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOiBBZGRpbmcgYmFjayB0aGUg
c2tpcHBlZCB0ZXN0cy4KKwogMjAxMC0wMy0xNiAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0
aC1zdGVuY2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5j
aWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTYwOTcpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNp
bC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IFBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXQKIFBBU1MgY29udGV4dEF0
dHJpYnMuZGVwdGggaXMgZmFsc2UKIFBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBpcyBmYWxz
ZQogUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSBpcyBmYWxzZQotUEFTUyBjb250ZXh0QXR0cmli
cy5hbnRpYWxpYXMgaXMgdHJ1ZQorUEFTUyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1
ZSB8fCBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyBjb250
ZXh0QXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQogUEFTUyBwaXhlbFswXSA9PSAy
NTUgfHwgcGl4ZWxbMF0gPT0gMCBpcyBmYWxzZQogVGVzdGluZyBhbnRpYWxpYXMgPSBmYWxzZQpA
QCAtNzMsNyArNzMsNyBAQCBQQVNTIGNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0
CiBQQVNTIGNvbnRleHRBdHRyaWJzLmRlcHRoIGlzIGZhbHNlCiBQQVNTIGNvbnRleHRBdHRyaWJz
LnN0ZW5jaWwgaXMgZmFsc2UKIFBBU1MgY29udGV4dEF0dHJpYnMuYWxwaGEgaXMgZmFsc2UKLVBB
U1MgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCitQQVNTIGNvbnRleHRBdHRyaWJz
LmFudGlhbGlhcyA9PSB0cnVlIHx8IGNvbnRleHRBdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSBp
cyB0cnVlCiBQQVNTIGNvbnRleHRBdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyB0cnVlCiBQ
QVNTIHBpeGVsWzBdID09IDI1NSB8fCBwaXhlbFswXSA9PSAwIGlzIHRydWUKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmli
dXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCShyZXZpc2lvbiA1NjA5NykK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBo
YS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyAr
MjUwLDcgQEAgZnVuY3Rpb24gdGVzdEFudGlhbGlhcyhhbnRpYWxpYXMpCiAgICAgc2hvdWxkQmUo
ImNvbnRleHRBdHRyaWJzLmRlcHRoIiwgImZhbHNlIik7CiAgICAgc2hvdWxkQmUoImNvbnRleHRB
dHRyaWJzLnN0ZW5jaWwiLCAiZmFsc2UiKTsKICAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMu
YWxwaGEiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMuYW50aWFsaWFz
IiwgKGFudGlhbGlhcyA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICBzaG91bGRCZSgiY29udGV4
dEF0dHJpYnMuYW50aWFsaWFzID09IHRydWUgfHwgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzID09
IGZhbHNlIiwgInRydWUiKTsKICAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMucHJlbXVsdGlw
bGllZEFscGhhIiwgInRydWUiKTsKIAogICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBXZWJHTEZsb2F0
QXJyYXkoWwpAQCAtMjYzLDYgKzI2Myw5IEBAIGZ1bmN0aW9uIHRlc3RBbnRpYWxpYXMoYW50aWFs
aWFzKQogICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOwogICAgIHZhciBidWYgPSBkcmF3QW5kUmVh
ZFBpeGVsKHdlYkdMLCB2ZXJ0aWNlcywgY29sb3JzLCAwLCAwKTsKICAgICBwaXhlbFswXSA9IGJ1
ZlswXTsKKyAgICAvLyBJZiBhbnRpYWxpYXMgaXMgcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVk
LCB3ZSBmYWtlIHRoZSBlZmZlY3QuCisgICAgaWYgKGFudGlhbGlhcyAmJiAhY29udGV4dEF0dHJp
YnMuYW50aWFsaWFzKQorICAgICAgICBwaXhlbFswXSA9IDEyNzsKICAgICBzaG91bGRCZSgicGl4
ZWxbMF0gPT0gMjU1IHx8IHBpeGVsWzBdID09IDAiLCAoYW50aWFsaWFzID8gImZhbHNlIiA6ICJ0
cnVlIikpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU2
MDk3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgUEFTUyBhdHRyaWJz
ID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidQogUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUK
IFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuc3RlbmNpbCBpcyB0cnVl
Ci1QQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIHRydWUKK1BBU1MgYXR0cmlicy5hbnRpYWxpYXMg
PT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGF0dHJp
YnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKIFBB
U1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6
IGZhbHNlIH0pIGlzIG5vbi1udWxsLgpAQCAtMTksMjAgKzE5LDIwIEBAIFBBU1MgYXR0cmlicy5z
dGVuY2lsIGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCiBQQVNTIGF0
dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMK
LVBBU1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDog
dHJ1ZSB9KSBpcyBub24tbnVsbC4KK1BBU1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZSwgYW50aWFsaWFzOiBmYWxzZSB9KSBpcyBub24tbnVs
bC4KIFBBU1MgYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24t
bnVsbC4KIFBBU1MgYXR0cmlicy5kZXB0aCBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuYWxwaGEgaXMg
dHJ1ZQogUEFTUyBhdHRyaWJzLnN0ZW5jaWwgaXMgdHJ1ZQotUEFTUyBhdHRyaWJzLmFudGlhbGlh
cyBpcyB0cnVlCitQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMu
cHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKLVBBU1Mg
Y29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UgfSkg
aXMgbm9uLW51bGwuCitQQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBwcmVtdWx0aXBs
aWVkQWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIGlzIG5vbi1udWxsLgogUEFTUyBh
dHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgogUEFT
UyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNT
IGF0dHJpYnMuc3RlbmNpbCBpcyB0cnVlCi1QQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIHRydWUK
K1BBU1MgYXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKIFBBU1MgYXR0cmlicy5wcmVtdWx0aXBs
aWVkQWxwaGEgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMuaHRtbAkocmV2aXNpb24gNTYwOTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTks
OCBAQCBzaG91bGRCZU5vbk51bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvCiBzaG91bGRCZSgi
YXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0cnVl
Iik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKLXNob3VsZEJlKCJhdHRy
aWJzLmFudGlhbGlhcyIsICJ0cnVlIik7CisvLyBBbnRpYWxpYXMgaXMgcmVxdWVzdGVkIGJ5IGRl
ZmF1bHQsIGJ1dCBtaWdodCBvciBtaWdodCBub3QgYmUgc3VwcG9ydGVkLgorc2hvdWxkQmUoImF0
dHJpYnMuYW50aWFsaWFzID09IHRydWUgfHwgYXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UiLCAi
dHJ1ZSIpOwogc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsK
IAogZGVidWcgKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CkBAIC0zMywyMiArMzQsMjIgQEAg
c2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgIgogCiBkZWJ1ZygiVGVzdCBj
dXN0b21pemVkIHZhbHVlcyIpOwogLy8gKHN0ZW5jaWwgPT0gdHJ1ZSAmJiBkZXB0aCA9PSBmYWxz
ZSkgaXMgbm90IHN1cHBvcnRlZCwgZGVmYXVsdCBkZXB0aCB0byB0cnVlCi1zaG91bGRCZU5vbk51
bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRy
dWUgfSkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwogc2hvdWxk
QmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CiBz
aG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5hbHBo
YSIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKLXNob3Vs
ZEJlKCJhdHRyaWJzLmFudGlhbGlhcyIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbnRp
YWxpYXMiLCAiZmFsc2UiKTsKIHNob3VsZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSIs
ICJ0cnVlIik7CiAKIGRlYnVnKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CiAvLyAocHJlbXVs
dGlwbGllZEFscGhhID09IGZhbHNlKSBpcyBub3Qgc3VwcG9ydGVkLCBkZWZhdWx0IHRvIHRydWUK
LXNob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHByZW11bHRpcGxp
ZWRBbHBoYTogZmFsc2UgfSkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNE
Q29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSki
KTsKIHNob3VsZEJlTm9uTnVsbCgiYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0
ZXMoKSIpOwogc2hvdWxkQmUoImF0dHJpYnMuZGVwdGgiLCAidHJ1ZSIpOwogc2hvdWxkQmUoImF0
dHJpYnMuYWxwaGEiLCAidHJ1ZSIpOwogc2hvdWxkQmUoImF0dHJpYnMuc3RlbmNpbCIsICJ0cnVl
Iik7Ci1zaG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMiLCAidHJ1ZSIpOworc2hvdWxkQmUoImF0
dHJpYnMuYW50aWFsaWFzIiwgImZhbHNlIik7CiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBs
aWVkQWxwaGEiLCAidHJ1ZSIpOwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDU2MDk3KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMyArMTM3LDUgQEAg
ZmFzdC9kb20vSFRNTFByb2dyZXNzRWxlbWVudC9zZXQtcHJvZ3JlcwogIyBldmVudC5kYXRhVHJh
bnNmZXIuc2V0RGF0YSgndGV4dC91cmktbGlzdCcpIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50ZWQg
b24gTWFjCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCiAKLSMgVGVtcG9yYXJpbHkgY29tbWVudGluZyBvdXQgYSBmZXcgV2ViR0wgbGF5b3V0IHRl
c3RzIGZhaWxpbmcgb24gc29tZSBvZiB0aGUgYm90cy4KLSMgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE5NCAuCi1mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAotZmFzdC9jYW52
YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWwK
LWZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbAotZmFzdC9jYW52YXMvd2Vi
Z2wvdHJpYW5nbGUuaHRtbAotZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVw
b24tcmVzaXplLmh0bWwKLQogIyBldmVudFNlbmRlciBuZWVkcyB0byBwcm9wYWdhdGUgdGhlIGV2
ZW50IHRvIHRoZSBjYWxsaW5nIHdpbmRvdywgbm90IHRoZSBtYWluIGZyYW1lIGFsd2F5cy4KIGh0
dHAvdGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtaGFzLWZvY3VzLmh0bWwKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50924</attachid>
            <date>2010-03-17 10:53:00 -0700</date>
            <delta_ts>2010-03-17 11:08:32 -0700</delta_ts>
            <desc>revised patch : responding to Simon Fraser&apos;s review</desc>
            <filename>intel.patch</filename>
            <type>text/plain</type>
            <size>15915</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjA5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTYgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTCBs
YXlvdXQgdGVzdCBmYWlsdXJlcyBvbiBib3RzIGFmdGVyIDMzNDE2LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxOTQKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCB2YWxpZGF0ZUF0dHJpYnV0ZXMg
ZnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6IENhbGwgdmFsaWRhdGVBdHRyaWJ1dGVzKCkuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRyaWJ1dGVzKTogQ2hl
Y2sgT3BlbkdMIHZlbmRvciBhbmQgZXh0ZW5zaW9ucyB0byBkZWNpZGUgd2hldGhlciB0byBob25v
ciB1c2VyJ3MgcmVxdWVzdHMgb2YgY29udGV4dCBhdHRyaWJ1dGVzLgorCiAyMDEwLTAzLTE2ICBK
b2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTYwOTcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3MTMs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBo
YU9wKiBuZWVkZWRBbHBoYU9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQqIGZvcm1hdCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIFRha2UgaW50byBh
Y2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywK
KyAgICAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRl
cm1pbmUgd2hpY2ggY291bGQgb3IKKyAgICAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFz
ZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCisgICAgICAgIC8vIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOworI2VuZGlmCisKICAg
ICAgICAgaW50IG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAgICAgICAgIAogI2lm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzQ29udGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDU2MDk3KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MiwxNSArOTIsNiBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAg
ICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKIHsKLSAgICAvLyBUYWtlIGludG8gYWNj
b3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsIGlu
Ci0gICAgLy8gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUg
d2hpY2ggY291bGQgYW5kIGNvdWxkCi0gICAgLy8gbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhl
IGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgotICAgIGlmIChtX2F0
dHJzLnN0ZW5jaWwgJiYgIW1fYXR0cnMuZGVwdGgpCi0gICAgICAgIG1fYXR0cnMuZGVwdGggPSB0
cnVlOwotICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGVuZm9yY2luZyBwcmVtdWx0aXBsaWVkQWxw
aGEgPSB0cnVlLCBpbXBsZW1lbnQgdGhlCi0gICAgLy8gY29ycmVjdCBiZWhhdmlvciB3aGVuIHBy
ZW11bHRpcGxpZWRBbHBoYSA9IGZhbHNlIGlzIHJlcXVlc3RlZC4KLSAgICBtX2F0dHJzLnByZW11
bHRpcGxpZWRBbHBoYSA9IHRydWU7Ci0KICAgICBWZWN0b3I8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1
dGU+IGF0dHJpYnM7CiAgICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmogPSAwOwog
ICAgIEdMaW50IG51bVBpeGVsRm9ybWF0cyA9IDA7CkBAIC0xNDcsNyArMTM4LDkgQEAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogCiAgICAgLy8gU2V0IHRoZSBjdXJy
ZW50IGNvbnRleHQgdG8gdGhlIG9uZSBnaXZlbiB0byB1cy4KICAgICBDR0xTZXRDdXJyZW50Q29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIAorCisgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CisK
ICAgICAvLyBjcmVhdGUgYSB0ZXh0dXJlIHRvIHJlbmRlciBpbnRvCiAgICAgOjpnbEdlblRleHR1
cmVzKDEsICZtX3RleHR1cmUpOwogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
X3RleHR1cmUpOwpAQCAtMTk3LDYgKzE5MCwyNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKCkKICAgICB9CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlk
YXRlQXR0cmlidXRlcygpCit7CisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KDo6Z2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpOworICAg
IGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsKKyAgICAgICAgaWYgKHN0ZDo6c3Ryc3RyKGV4dGVuc2lv
bnMsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkgeworICAgICAgICAgICAgaWYgKCFt
X2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworICAgIH0K
KyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKKyAgICAgICAgY29uc3QgY2hhciogdmVuZG9y
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9WRU5ET1Ip
KTsKKyAgICAgICAgaWYgKHN0ZDo6c3Ryc3RyKHZlbmRvciwgIkludGVsIikgfHwgc3RkOjpzdHJz
dHIodmVuZG9yLCAiaW50ZWwiKQorICAgICAgICAgICAgfHwgIXN0ZDo6c3Ryc3RyKGV4dGVuc2lv
bnMsICJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKKyAgICAgICAgICAgIG1fYXR0
cnMuYW50aWFsaWFzID0gZmFsc2U7CisgICAgfQorICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGVu
Zm9yY2luZyBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlLCBpbXBsZW1lbnQgdGhlCisgICAgLy8g
Y29ycmVjdCBiZWhhdmlvciB3aGVuIHByZW11bHRpcGxpZWRBbHBoYSA9IGZhbHNlIGlzIHJlcXVl
c3RlZC4KKyAgICBtX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7Cit9CisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAgQ0dMU2V0Q3Vy
cmVudENvbnRleHQobV9jb250ZXh0T2JqKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTYw
OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTAtMDMtMTYgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTCBsYXlvdXQg
dGVzdCBmYWlsdXJlcyBvbiBib3RzIGFmdGVyIDMzNDE2LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxOTQKKworICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKTogQ2FsbCB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRl
QXR0cmlidXRlcyk6IENoZWNrIE9wZW5HTCB2ZW5kb3IgYW5kIGV4dGVuc2lvbnMgdG8gZGVjaWRl
IHdoZXRoZXIgdG8gaG9ub3IgdXNlcidzIHJlcXVlc3RzIG9mIGNvbnRleHQgYXR0cmlidXRlcy4K
KwogMjAxMC0wMy0xNiAgSmFtZXMgSGF3a2lucyAgPGpoYXdraW5zQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA1NjA5NykKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiAr
MTI5LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxv
bmcgZXJyb3IpOwogCiBwcml2YXRlOgorICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2Vy
J3MgcmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywgaW4KKyAgICAvLyBwYXJ0
aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBv
ciBjb3VsZAorICAgIC8vIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMg
b2YgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRl
cygpOworCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyczsKICAgICAK
ICAgICB1bnNpZ25lZCBpbnQgbV90ZXh0dXJlOwpAQCAtMzg0LDI0ICszODksNyBAQCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAjZWxzZQogI2Vycm9yIE11c3QgcG9y
dCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKLXsKLSAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0
aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsIGluCi0gICAg
Ly8gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2gg
Y291bGQgYW5kIGNvdWxkCi0gICAgLy8gbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFi
aWxpdGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgotICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwpIHsKLSAgICAgICAgaWYgKEdMRVdfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsKSB7Ci0g
ICAgICAgICAgICBpZiAoIW1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgbV9hdHRycy5k
ZXB0aCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2F0dHJzLnN0ZW5j
aWwgPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMg
JiYgIUdMRVdfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlKQotICAgICAgICBtX2F0dHJzLmFu
dGlhbGlhcyA9IGZhbHNlOwotICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGVuZm9yY2luZyBwcmVt
dWx0aXBsaWVkQWxwaGEgPSB0cnVlLCBpbXBsZW1lbnQgdGhlCi0gICAgLy8gY29ycmVjdCBiZWhh
dmlvciB3aGVuIHByZW11bHRpcGxpZWRBbHBoYSA9IGZhbHNlIGlzIHJlcXVlc3RlZC4KLSAgICBt
X2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7Ci0KK3sgCiAjaWYgT1MoV0lORE9XUykK
ICAgICBXTkRDTEFTUyB3YzsKICAgICBpZiAoIUdldENsYXNzSW5mbyhHZXRNb2R1bGVIYW5kbGUo
MCksIEwiQ0FOVkFTR0wiLCAmd2MpKSB7CkBAIC01ODMsNiArNTcxLDggQEAgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgICAgICB9CiAgICAgICAgIHNfaW5pdGlh
bGl6ZWRHTEVXID0gdHJ1ZTsKICAgICB9CisKKyAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIH0K
IAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwo
KQpAQCAtNjMwLDYgKzYyMCwyOCBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhp
Y3NDb250CiAgICAgbV9jb250ZXh0T2JqID0gMDsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQoreworICAgIGNvbnN0IGNoYXIqIGV4dGVu
c2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRF
TlNJT05TKSk7CisKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGlmIChzdGQ6
OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpIHsKKyAg
ICAgICAgICAgIGlmICghbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBtX2F0dHJzLmRl
cHRoID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwg
PSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAgIGNv
bnN0IGNoYXIqIHZlbmRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3Ry
aW5nKEdMX1ZFTkRPUikpOworICAgICAgICBpZiAoc3RkOjpzdHJzdHIodmVuZG9yLCAiSW50ZWwi
KSB8fCBzdGQ6OnN0cnN0cih2ZW5kb3IsICJpbnRlbCIpCisgICAgICAgICAgICB8fCAhc3RkOjpz
dHJzdHIoZXh0ZW5zaW9ucywgIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQorICAg
ICAgICAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICB9CisgICAgLy8gRklYTUU6
IGluc3RlYWQgb2YgZW5mb3JjaW5nIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWUsIGltcGxlbWVu
dCB0aGUKKyAgICAvLyBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gcHJlbXVsdGlwbGllZEFscGhhID0g
ZmFsc2UgaXMgcmVxdWVzdGVkLgorICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1
ZTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjptYWtlQ29udGV4dEN1cnJl
bnQoKQogewogI2lmIE9TKFdJTkRPV1MpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjA5OCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTAzLTE2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViR0wgbGF5b3V0IHRlc3QgZmFpbHVyZXMg
b24gYm90cyBhZnRlciAzMzQxNi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2MTk0CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0OiBD
b3ZlcmluZyB0aGUgY2FzZSB3aGVyZSBhbnRpYWxpYXMgaXMgcmVxdWVzdGVkIGJ1dCBub3Qgc3Vw
cG9ydGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1h
bHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbDogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6IEFkZGluZyBiYWNrIHRoZSBza2lwcGVk
IHRlc3RzLgorCiAyMDEwLTAzLTE2ICBKb2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5j
aWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRp
YWxpYXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1NjA5NykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlh
bGlhcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgUEFTUyBj
b250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdAogUEFTUyBjb250ZXh0QXR0cmlicy5k
ZXB0aCBpcyBmYWxzZQogUEFTUyBjb250ZXh0QXR0cmlicy5zdGVuY2lsIGlzIGZhbHNlCiBQQVNT
IGNvbnRleHRBdHRyaWJzLmFscGhhIGlzIGZhbHNlCi1QQVNTIGNvbnRleHRBdHRyaWJzLmFudGlh
bGlhcyBpcyB0cnVlCitQQVNTIGNvbnRleHRBdHRyaWJzLmFudGlhbGlhcyA9PSB0cnVlIHx8IGNv
bnRleHRBdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGNvbnRleHRBdHRy
aWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyB0cnVlCiBQQVNTIHBpeGVsWzBdID09IDI1NSB8fCBw
aXhlbFswXSA9PSAwIGlzIGZhbHNlCiBUZXN0aW5nIGFudGlhbGlhcyA9IGZhbHNlCkBAIC03Myw3
ICs3Myw3IEBAIFBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXQKIFBBU1Mg
Y29udGV4dEF0dHJpYnMuZGVwdGggaXMgZmFsc2UKIFBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNp
bCBpcyBmYWxzZQogUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSBpcyBmYWxzZQotUEFTUyBjb250
ZXh0QXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKK1BBU1MgY29udGV4dEF0dHJpYnMuYW50aWFs
aWFzID09IHRydWUgfHwgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzID09IGZhbHNlIGlzIHRydWUK
IFBBU1MgY29udGV4dEF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKIFBBU1MgcGl4
ZWxbMF0gPT0gMjU1IHx8IHBpeGVsWzBdID09IDAgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4
dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFs
cGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHJldmlzaW9uIDU2MDk3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRo
LXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBA
QCBmdW5jdGlvbiB0ZXN0QW50aWFsaWFzKGFudGlhbGlhcykKICAgICBzaG91bGRCZSgiY29udGV4
dEF0dHJpYnMuZGVwdGgiLCAiZmFsc2UiKTsKICAgICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMu
c3RlbmNpbCIsICJmYWxzZSIpOwogICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmlicy5hbHBoYSIs
ICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMiLCAoYW50
aWFsaWFzID8gInRydWUiIDogImZhbHNlIikpOworICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmli
cy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2Ui
LCAidHJ1ZSIpOwogICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmlicy5wcmVtdWx0aXBsaWVkQWxw
aGEiLCAidHJ1ZSIpOwogCiAgICAgdmFyIHZlcnRpY2VzID0gbmV3IFdlYkdMRmxvYXRBcnJheShb
CkBAIC0yNjMsNiArMjYzLDkgQEAgZnVuY3Rpb24gdGVzdEFudGlhbGlhcyhhbnRpYWxpYXMpCiAg
ICAgICAgIDI1NSwgMCwgMCwgMjU1XSk7CiAgICAgdmFyIGJ1ZiA9IGRyYXdBbmRSZWFkUGl4ZWwo
d2ViR0wsIHZlcnRpY2VzLCBjb2xvcnMsIDAsIDApOwogICAgIHBpeGVsWzBdID0gYnVmWzBdOwor
ICAgIC8vIElmIGFudGlhbGlhcyBpcyByZXF1ZXN0ZWQgYnV0IG5vdCBzdXBwb3J0ZWQsIHdlIGZh
a2UgdGhlIGVmZmVjdC4KKyAgICBpZiAoYW50aWFsaWFzICYmICFjb250ZXh0QXR0cmlicy5hbnRp
YWxpYXMpCisgICAgICAgIHBpeGVsWzBdID0gMTI3OwogICAgIHNob3VsZEJlKCJwaXhlbFswXSA9
PSAyNTUgfHwgcGl4ZWxbMF0gPT0gMCIsIChhbnRpYWxpYXMgPyAiZmFsc2UiIDogInRydWUiKSk7
CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTYwOTcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBQQVNTIGF0dHJpYnMgPSBjb250
ZXh0LmdldENvbnRleHRBdHRyaWJ1CiBQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1ZQogUEFTUyBh
dHRyaWJzLmFscGhhIGlzIHRydWUKIFBBU1MgYXR0cmlicy5zdGVuY2lsIGlzIHRydWUKLVBBU1Mg
YXR0cmlicy5hbnRpYWxpYXMgaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLmFudGlhbGlhcyA9PSB0cnVl
IHx8IGF0dHJpYnMuYW50aWFsaWFzID09IGZhbHNlIGlzIHRydWUKIFBBU1MgYXR0cmlicy5wcmVt
dWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQogVGVzdCBjdXN0b21pemVkIHZhbHVlcwogUEFTUyBjb250
ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2Ug
fSkgaXMgbm9uLW51bGwuCkBAIC0xOSwyMCArMTksMjAgQEAgUEFTUyBhdHRyaWJzLnN0ZW5jaWwg
aXMgZmFsc2UKIFBBU1MgYXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKIFBBU1MgYXR0cmlicy5w
cmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQogVGVzdCBjdXN0b21pemVkIHZhbHVlcwotUEFTUyBj
b250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiB0cnVlIH0p
IGlzIG5vbi1udWxsLgorUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgZGVwdGg6IGZh
bHNlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIGlzIG5vbi1udWxsLgogUEFT
UyBhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgog
UEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQ
QVNTIGF0dHJpYnMuc3RlbmNpbCBpcyB0cnVlCi1QQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIHRy
dWUKK1BBU1MgYXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKIFBBU1MgYXR0cmlicy5wcmVtdWx0
aXBsaWVkQWxwaGEgaXMgdHJ1ZQogVGVzdCBjdXN0b21pemVkIHZhbHVlcwotUEFTUyBjb250ZXh0
ID0gY3JlYXRlM0RDb250ZXh0KHsgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSB9KSBpcyBub24t
bnVsbC4KK1BBU1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBo
YTogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMg
PSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJp
YnMuZGVwdGggaXMgdHJ1ZQogUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUKIFBBU1MgYXR0cmli
cy5zdGVuY2lsIGlzIHRydWUKLVBBU1MgYXR0cmlicy5hbnRpYWxpYXMgaXMgdHJ1ZQorUEFTUyBh
dHRyaWJzLmFudGlhbGlhcyBpcyBmYWxzZQogUEFTUyBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBo
YSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5o
dG1sCShyZXZpc2lvbiA1NjA5NykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Nv
bnRleHQtYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw4IEBAIHNo
b3VsZEJlTm9uTnVsbCgiYXR0cmlicyA9IGNvbnRleHQuZ2V0Q28KIHNob3VsZEJlKCJhdHRyaWJz
LmRlcHRoIiwgInRydWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRydWUiKTsKIHNo
b3VsZEJlKCJhdHRyaWJzLnN0ZW5jaWwiLCAidHJ1ZSIpOwotc2hvdWxkQmUoImF0dHJpYnMuYW50
aWFsaWFzIiwgInRydWUiKTsKKy8vIEFudGlhbGlhcyBpcyByZXF1ZXN0ZWQgYnkgZGVmYXVsdCwg
YnV0IG1pZ2h0IG9yIG1pZ2h0IG5vdCBiZSBzdXBwb3J0ZWQuCitzaG91bGRCZSgiYXR0cmlicy5h
bnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSIsICJ0cnVlIik7
CiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOwogCiBkZWJ1
ZyAoIlRlc3QgY3VzdG9taXplZCB2YWx1ZXMiKTsKQEAgLTMzLDIyICszNCwyMiBAQCBzaG91bGRC
ZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAiCiAKIGRlYnVnKCJUZXN0IGN1c3RvbWl6
ZWQgdmFsdWVzIik7CiAvLyAoc3RlbmNpbCA9PSB0cnVlICYmIGRlcHRoID09IGZhbHNlKSBpcyBu
b3Qgc3VwcG9ydGVkLCBkZWZhdWx0IGRlcHRoIHRvIHRydWUKLXNob3VsZEJlTm9uTnVsbCgiY29u
dGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogdHJ1ZSB9KSIp
Oworc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgZGVwdGg6IGZh
bHNlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7CiBzaG91bGRCZU5vbk51
bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKIHNob3VsZEJl
KCJhdHRyaWJzLmRlcHRoIiwgInRydWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRy
dWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLnN0ZW5jaWwiLCAidHJ1ZSIpOwotc2hvdWxkQmUoImF0
dHJpYnMuYW50aWFsaWFzIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFudGlhbGlhcyIs
ICJmYWxzZSIpOwogc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUi
KTsKIAogZGVidWcoIlRlc3QgY3VzdG9taXplZCB2YWx1ZXMiKTsKIC8vIChwcmVtdWx0aXBsaWVk
QWxwaGEgPT0gZmFsc2UpIGlzIG5vdCBzdXBwb3J0ZWQsIGRlZmF1bHQgdG8gdHJ1ZQotc2hvdWxk
QmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgcHJlbXVsdGlwbGllZEFscGhh
OiBmYWxzZSB9KSIpOworc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0
KHsgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwogc2hv
dWxkQmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7
CiBzaG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5h
bHBoYSIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKLXNo
b3VsZEJlKCJhdHRyaWJzLmFudGlhbGlhcyIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5h
bnRpYWxpYXMiLCAiZmFsc2UiKTsKIHNob3VsZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBo
YSIsICJ0cnVlIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNTYwOTcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDEzICsxMzcsNSBAQCBmYXN0L2Rv
bS9IVE1MUHJvZ3Jlc3NFbGVtZW50L3NldC1wcm9ncmVzCiAjIGV2ZW50LmRhdGFUcmFuc2Zlci5z
ZXREYXRhKCd0ZXh0L3VyaS1saXN0Jykgbm90IGNvcnJlY3RseSBpbXBsZW1lbnRlZCBvbiBNYWMK
IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwKIAot
IyBUZW1wb3JhcmlseSBjb21tZW50aW5nIG91dCBhIGZldyBXZWJHTCBsYXlvdXQgdGVzdHMgZmFp
bGluZyBvbiBzb21lIG9mIHRoZSBib3RzLgotIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2MTk0IC4KLWZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmli
dXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCi1mYXN0L2NhbnZhcy93ZWJn
bC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbAotZmFzdC9j
YW52YXMvd2ViZ2wvdGV4LXN1Yi1pbWFnZS0yZC5odG1sCi1mYXN0L2NhbnZhcy93ZWJnbC90cmlh
bmdsZS5odG1sCi1mYXN0L2NhbnZhcy93ZWJnbC92aWV3cG9ydC11bmNoYW5nZWQtdXBvbi1yZXNp
emUuaHRtbAotCiAjIGV2ZW50U2VuZGVyIG5lZWRzIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgdG8g
dGhlIGNhbGxpbmcgd2luZG93LCBub3QgdGhlIG1haW4gZnJhbWUgYWx3YXlzLgogaHR0cC90ZXN0
cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1oYXMtZm9jdXMuaHRtbApcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>