<?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>37047</bug_id>
          
          <creation_ts>2010-04-02 15:11:32 -0700</creation_ts>
          <short_desc>Passing null WebGLObjects should synthesize INVALID_VALUE error</short_desc>
          <delta_ts>2010-04-09 03:37:32 -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>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="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208087</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-02 15:11:32 -0700</bug_when>
    <thetext>There are several WebGL entry points which currently synthesize an INVALID_OPERATION error when receiving a null WebGLObject. These include bindAttribLocation, compileShader, detachShader, getActiveAttrib, getActiveUniform, getProgramParameter, getProgramInfoLog, getShaderParameter, getShaderInfoLog, getShaderSource, getUniform, getUniformLocation, linkProgram, and shaderSource. These should be changed to synthesize INVALID_VALUE in this case instead, because that is the semantically correct OpenGL error and matches the specification for the uniform[Matrix]* APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210391</commentid>
    <comment_count>1</comment_count>
      <attachid>52896</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-08 14:40:12 -0700</bug_when>
    <thetext>Created attachment 52896
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210440</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-08 15:39:48 -0700</bug_when>
    <thetext>In all of these cases, we need to split out the test against 0 from the other tests like whether the object came from this context. Those should continue to synthesize INVALID_OPERATION.

I suggest adding a private helper function like bool validateWebGLObject(CanvasObject*) which does the test against 0 and synthesizes INVALID_VALUE if so, and which checks that the context is ourselves and synthesizes INVALID_OPERATION if not. Then all of the call sites can be refactored to just &quot;if (!validateWebGLObject(...)) return [false];&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210496</commentid>
    <comment_count>3</comment_count>
      <attachid>52920</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-08 17:22:31 -0700</bug_when>
    <thetext>Created attachment 52920
revised patch : responding to Ken Russell&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210507</commentid>
    <comment_count>4</comment_count>
      <attachid>52920</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-08 17:42:47 -0700</bug_when>
    <thetext>Comment on attachment 52920
revised patch : responding to Ken Russell&apos;s review

This looks great. Thanks for doing this cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210666</commentid>
    <comment_count>5</comment_count>
      <attachid>52920</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-09 03:37:27 -0700</bug_when>
    <thetext>Comment on attachment 52920
revised patch : responding to Ken Russell&apos;s review

Clearing flags on attachment: 52920

Committed r57324: &lt;http://trac.webkit.org/changeset/57324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210667</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-09 03:37:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52896</attachid>
            <date>2010-04-08 14:40:12 -0700</date>
            <delta_ts>2010-04-08 17:22:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>error.patch</filename>
            <type>text/plain</type>
            <size>19898</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzI5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzaW5n
IG51bGwgV2ViR0xPYmplY3RzIHNob3VsZCBzeW50aGVzaXplIElOVkFMSURfVkFMVUUgZXJyb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDQ3CisK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBVc2luZyBJ
TlZBTElEX1ZBTFVFIGluc3RlYWQgb2YgSU5WQUxJRF9PUEVSQVRJT04uCisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVBdHRyaWIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dy
YW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnNoYWRlclNvdXJjZSk6CisKIDIwMTAtMDQtMDcgIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2
aXNpb24gNTcyODQpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YmluZEF0dHJpYkxvCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBp
ZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Nv
bnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZSk7CkBAIC00MTAs
NyArNDEwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBpbGVTaGFkZQogewog
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0
KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOwpA
QCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hTaGFk
ZXIKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFt
LT5jb250ZXh0KCkgIT0gdGhpcyB8fCAhc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRo
aXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwpA
QCAtODY0LDcgKzg2NCw3IEBAIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRl
cmkKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsKICAgICBpZiAo
IXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgh
bV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIGluZm8pKSB7CkBAIC04
NzgsNyArODc4LDcgQEAgUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaQog
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgQWN0aXZlSW5mbyBpbmZvOwogICAgIGlmICghcHJv
Z3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX2Nv
bnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIGluZm8pKSB7CkBAIC0xMTUz
LDcgKzExNTMsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29u
dGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIApAQCAtMTE4Myw3ICsxMTgzLDcg
QEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbQogewogICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVy
biAiIjsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEy
MjcsNyArMTIyNyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFMK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29u
dGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9y
ZXIodGhpcywgZmFsc2UpOwpAQCAtMTI1NCw3ICsxMjU0LDcgQEAgU3RyaW5nIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U2hhZGVySQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogICAgIFdlYkdM
U3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCBTdHJpbmcg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVj
KTsKICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKQEAgLTEzMDUsNyArMTMwNSw3
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKIHsKICAgICBVTlVT
RURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCB1bmlmb3JtTG9jYXRpb24tPnByb2dy
YW0oKSAhPSBwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9CiAgICAgbG9uZyBsb2NhdGlvbiA9IHVuaWZvcm1Mb2NhdGlvbi0+bG9jYXRpb24o
KTsKQEAgLTE0MzQsNyArMTQzNCw3IEBAIFBhc3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+
IFdlYkdMUmUKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghcHJvZ3JhbSB8fCBw
cm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVy
KHRoaXMsIGZhbHNlKTsKQEAgLTE1NjMsNyArMTU2Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpsaW5rUHJvZ3JhbSgKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICgh
cHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKQEAg
LTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaGFkZXJTb3Vy
Y2UKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+
Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShzaGFk
ZXIsIHN0cmluZyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzI5MikKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA0LTA4ICBaaGVu
eWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFzc2luZyBudWxsIFdlYkdMT2JqZWN0cyBzaG91bGQgc3ludGhl
c2l6ZSBJTlZBTElEX1ZBTFVFIGVycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzA0NworCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZXJy
b3ItcmVwb3J0aW5nLWV4cGVjdGVkLnR4dDogVXBkYXRlIHRocm93biBlcnJvciB0byBJTlZBTElE
X1ZBTFVFLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0
ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29u
dGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDogRGl0dG8u
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2Vycm9yLXJlcG9ydGlu
Zy5qczogRGl0dG8uCisKIDIwMTAtMDQtMDcgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA1NzI4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTQgKzUs
MTQgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBjb250
ZXh0LmdldEVycm9yKCkgaXMgMAogVGVzdGluZyBnZXRBY3RpdmVBdHRyaWIKIFBBU1MgY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwgMikgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9y
KCkgaXMgY29udGV4dC5JTlZBTElEX09QRVJBVElPTgorUEFTUyBjb250ZXh0LmdldEVycm9yKCkg
aXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250
ZXh0Lk5PX0VSUk9SCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDIpIGlz
IG51bGwKIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQog
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgogVGVzdGluZyBnZXRB
Y3RpdmVVbmlmb3JtCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSBpcyBu
dWxsCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9O
CitQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKIFBBU1Mg
Y29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJST1IKIFBBU1MgY29udGV4dC5nZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0sIDUwKSBpcyBudWxsCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3Io
KSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA1NzI4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldEFjdGl2ZVRlc3Qt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIFBBU1MgY29udGV4
dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDEKIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlz
IDAKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIC0xKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVVbmlmb3JtLgogUEFTUyBjb250ZXh0Lmdl
dEVycm9yKCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0QWN0aXZlVW5pZm9ybS4KK1BBU1MgY29u
dGV4dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGdldEFjdGl2ZVVuaWZvcm0uCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCiBQ
QVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApLm5hbWUgaXMgJ2Ffbm9ybWFs
JwogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKS50eXBlIGlzIGNvbnRl
eHQuRkxPQVRfVkVDMwpAQCAtMjIsMTIgKzIyLDEyIEBAIFBBU1MgY29udGV4dC5nZXRBY3RpdmVB
dHRyaWIocHJvZ3JhbSwgMikKIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFBBU1MgY29u
dGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgLTEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJv
ciAxMjgxIGluIGdldEFjdGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAK
LVBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gZ2V0QWN0aXZlQXR0cmliLgorUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0
dHJpYihudWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVB
dHRyaWIuCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGNvbnRleHQyLmdldEVy
cm9yKCkgaXMgMAotUEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0QWN0aXZlQXR0cmliLgorUEFTUyBjb250
ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgogUEFTUyBjb250ZXh0Mi5nZXRFcnJvcigpIGlzIDAK
LVBBU1MgY29udGV4dDIuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MiBpbiBnZXRBY3RpdmVVbmlmb3JtLgorUEFTUyBjb250ZXh0Mi5nZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGlu
IGdldEFjdGl2ZVVuaWZvcm0uCiBQQVNTIGNvbnRleHQyLmdldEVycm9yKCkgaXMgMAogUEFTUyBj
b250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODEgaW4gZ2V0QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlz
IDAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0
LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA1NzI4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDI4ICsyLDI4IEBAIFRlc3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRo
IG9iamVjdHMgZnIKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIGNvbnRleHRB
LmNvbXBpbGVTaGFkZXIoc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4g
Y29tcGlsZVNoYWRlci4KLVBBU1MgY29udGV4dEEubGlua1Byb2dyYW0ocHJvZ3JhbUIpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGxpbmtQcm9ncmFtLgorUEFTUyBjb250ZXh0QS5j
b21waWxlU2hhZGVyKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGNv
bXBpbGVTaGFkZXIuCitQQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1CKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBsaW5rUHJvZ3JhbS4KIFBBU1MgY29udGV4dEEuYXR0
YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MSBpbiBhdHRhY2hTaGFkZXIuCiBQQVNTIGNvbnRleHRBLmF0dGFjaFNoYWRlcihwcm9ncmFtQiwg
c2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgog
UEFTUyBjb250ZXh0QS5hdHRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckIpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KLVBBU1MgY29udGV4dEEuZGV0YWNo
U2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBkZXRhY2hTaGFkZXIuCi1QQVNTIGNvbnRleHRBLmRldGFjaFNoYWRlcihwcm9ncmFtQiwgc2hh
ZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZGV0YWNoU2hhZGVyLgotUEFT
UyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIsIHNoYWRlckIpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KLVBBU1MgY29udGV4dEEuc2hhZGVyU291
cmNlKHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBzaGFk
ZXJTb3VyY2UuCi1QQVNTIGNvbnRleHRBLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtQiwgMCwg
J2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRBdHRyaWJMb2NhdGlv
bi4KK1BBU1MgY29udGV4dEEuZGV0YWNoU2hhZGVyKHByb2dyYW1BLCBzaGFkZXJCKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHRBLmRl
dGFjaFNoYWRlcihwcm9ncmFtQiwgc2hhZGVyQSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODEgaW4gZGV0YWNoU2hhZGVyLgorUEFTUyBjb250ZXh0QS5kZXRhY2hTaGFkZXIocHJvZ3JhbUIs
IHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRldGFjaFNoYWRlci4K
K1BBU1MgY29udGV4dEEuc2hhZGVyU291cmNlKHNoYWRlckIsICdmb28nKSB0aHJldyBleGNlcHRp
b24gR0wgZXJyb3IgMTI4MSBpbiBzaGFkZXJTb3VyY2UuCitQQVNTIGNvbnRleHRBLmJpbmRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtQiwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGJpbmRBdHRyaWJMb2NhdGlvbi4KIFBBU1MgY29udGV4dEEuYmluZEZyYW1lYnVmZmVy
KGNvbnRleHRBLkZSQU1FQlVGRkVSLCBmcmFtZUJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGJpbmRGcmFtZWJ1ZmZlci4KIFBBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1
ZmZlcihjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgyIGluIGJpbmRSZW5kZXJidWZmZXIuCiBQQVNTIGNvbnRleHRBLmJpbmRU
ZXh0dXJlKGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MiBpbiBiaW5kVGV4dHVyZS4KIFBBU1MgY29udGV4dEEuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQs
IGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVuZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIuCiBQQVNTIGNvbnRleHRBLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9B
VFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgyIGluIGZyYW1lYnVmZmVyVGV4dHVyZTJELgotUEFTUyBjb250ZXh0
QS5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MiBpbiBnZXRQcm9ncmFtUGFyYW1ldGVyLgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0
UHJvZ3JhbUluZm9Mb2cuCi1QQVNTIGNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJC
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJQYXJhbWV0ZXIu
Ci1QQVNTIGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0
aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hhZGVySW5mb0xvZy4KLVBBU1MgY29udGV4dEEuZ2V0
U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdl
dFNoYWRlclNvdXJjZS4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9jYXRp
b25BKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtLgotUEFTUyBj
b250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pNYXRy
aXgnKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRVbmlmb3JtTG9jYXRpb24u
CitQQVNTIGNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIsIDApIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFByb2dyYW1QYXJhbWV0ZXIuCitQQVNTIGNvbnRl
eHRBLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MSBpbiBnZXRQcm9ncmFtSW5mb0xvZy4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVyUGFy
YW1ldGVyKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFNo
YWRlclBhcmFtZXRlci4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXJCLCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFkZXJJbmZvTG9nLgorUEFT
UyBjb250ZXh0QS5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyQikgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODEgaW4gZ2V0U2hhZGVyU291cmNlLgorUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtKHBy
b2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFVu
aWZvcm0uCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtQiwgJ3VfbW9k
ZWxWaWV3UHJvak1hdHJpeCcpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFVu
aWZvcm1Mb2NhdGlvbi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3Qt
YmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1
NzI4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2
aW91ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMjkgKzIsMjkgQEAgVGVzdHMg
Y2FsbGluZyBXZWJHTCBBUElzIHdpdGhvdXQgcHJvdmlkaQogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKLVBBU1MgY29udGV4dC5jb21waWxlU2hhZGVyKCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gY29tcGlsZVNoYWRlci4KLVBBU1MgY29udGV4dC5saW5rUHJvZ3JhbSgp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGxpbmtQcm9ncmFtLgorUEFTUyBjb250
ZXh0LmNvbXBpbGVTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBjb21w
aWxlU2hhZGVyLgorUEFTUyBjb250ZXh0LmxpbmtQcm9ncmFtKCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODEgaW4gbGlua1Byb2dyYW0uCiBQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgogUEFTUyBjb250
ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgxIGluIGF0dGFjaFNoYWRlci4KIFBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIodW5k
ZWZpbmVkLCBzaGFkZXIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGF0dGFjaFNo
YWRlci4KLVBBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSB0aHJl
dyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkZXRhY2hTaGFkZXIuCi1QQVNTIGNvbnRleHQu
ZGV0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MiBpbiBkZXRhY2hTaGFkZXIuCi1QQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gc2hhZGVyU291cmNlLgotUEFTUyBjb250ZXh0LnNo
YWRlclNvdXJjZSh1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MiBpbiBzaGFkZXJTb3VyY2UuCi1QQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVm
aW5lZCwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGJpbmRBdHRy
aWJMb2NhdGlvbi4KK1BBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVk
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNv
bnRleHQuZGV0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MSBpbiBkZXRhY2hTaGFkZXIuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkg
dGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gc2hhZGVyU291cmNlLgorUEFTUyBjb250
ZXh0LnNoYWRlclNvdXJjZSh1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gR0wgZXJy
b3IgMTI4MSBpbiBzaGFkZXJTb3VyY2UuCitQQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9u
KHVuZGVmaW5lZCwgMCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGJp
bmRBdHRyaWJMb2NhdGlvbi4KIFBBU1MgY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlf
QlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNv
bnRleHQuRlJBTUVCVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5iaW5kUmVu
ZGVyYnVmZmVyKGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNv
bnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCiBQ
QVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwg
Y29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIuCiBQQVNT
IGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4
dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MiBpbiBmcmFtZWJ1ZmZlclRleHR1cmUyRC4KLVBBU1MgY29udGV4
dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVy
cm9yIDEyODIgaW4gZ2V0UHJvZ3JhbVBhcmFtZXRlci4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFt
SW5mb0xvZyh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdl
dFByb2dyYW1JbmZvTG9nLgotUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmlu
ZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFNoYWRlclBhcmFtZXRl
ci4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hhZGVySW5mb0xvZy4KLVBBU1MgY29udGV4dC5n
ZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBnZXRTaGFkZXJTb3VyY2UuCi1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDAp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGdldFVuaWZvcm0uCi1QQVNTIGNvbnRl
eHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIGdldFVuaWZvcm1Mb2NhdGlvbi4KK1BBU1MgY29udGV4dC5nZXRQcm9n
cmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gZ2V0UHJvZ3JhbVBhcmFtZXRlci4KK1BBU1MgY29udGV4dC5nZXRQcm9ncmFtSW5mb0xvZyh1
bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFByb2dyYW1J
bmZvTG9nLgorUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRo
cmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFNoYWRlclBhcmFtZXRlci4KK1BBU1Mg
Y29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODEgaW4gZ2V0U2hhZGVySW5mb0xvZy4KK1BBU1MgY29udGV4dC5nZXRTaGFkZXJT
b3VyY2UodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFk
ZXJTb3VyY2UuCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFVuaWZvcm0uCitQQVNTIGNvbnRleHQuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGdldFVuaWZvcm1Mb2NhdGlvbi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2Vycm9yLXJlcG9ydGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpzCShyZXZp
c2lvbiA1NzI4NCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9lcnJvci1yZXBvcnRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1LDcgKzE1LDcgQEAgc2hv
dWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICIwIik7CiBkZWJ1ZygiVGVzdGluZyBnZXRBY3Rp
dmVBdHRyaWIiKTsKIC8vIFN5bnRoZXRpYyBPcGVuR0wgZXJyb3IKIHNob3VsZEJlTnVsbCgiY29u
dGV4dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwgMikiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVy
cm9yKCkiLCAiY29udGV4dC5JTlZBTElEX09QRVJBVElPTiIpOworc2hvdWxkQmUoImNvbnRleHQu
Z2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKIC8vIEVycm9yIHN0YXRlIHNo
b3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50CiBzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigp
IiwgImNvbnRleHQuTk9fRVJST1IiKTsKIC8vIFJlYWwgT3BlbkdMIGVycm9yCkBAIC0yNyw3ICsy
Nyw3IEBAIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC4KIGRlYnVnKCJU
ZXN0aW5nIGdldEFjdGl2ZVVuaWZvcm0iKTsKIC8vIFN5bnRoZXRpYyBPcGVuR0wgZXJyb3IKIHNo
b3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIik7Ci1zaG91bGRC
ZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04iKTsKK3No
b3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7CiAv
LyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAogc2hvdWxkQmUoImNv
bnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CiAvLyBSZWFsIE9wZW5HTCBl
cnJvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52920</attachid>
            <date>2010-04-08 17:22:31 -0700</date>
            <delta_ts>2010-04-09 03:37:27 -0700</delta_ts>
            <desc>revised patch : responding to Ken Russell&apos;s review</desc>
            <filename>error.patch</filename>
            <type>text/plain</type>
            <size>18142</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzMwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDQtMDggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzaW5n
IG51bGwgV2ViR0xPYmplY3RzIHNob3VsZCBzeW50aGVzaXplIElOVkFMSURfVkFMVUUgZXJyb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDQ3CisK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBTeW50aGVz
aXplIElOVkFMSURfVkFMVUUgZXJyb3Igd2hlbiBpbnB1dCBvYmplY3QgaXMgMC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlV2ViR0xPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVB
dHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3Rp
dmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNoYWRlclNvdXJjZSk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6IEFkZCBoZWxwZXIgZnVuY3Rpb24gdG8gdmFs
aWRhdGUgd2ViZ2wgb2JqZWN0IGlucHV0IHBhcmFtZXRlcnMuCisKIDIwMTAtMDMtMjkgIEFudG9u
aW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCShyZXZpc2lvbiA1NzI4NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDEwICsxODMsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
dW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFt
LT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgaWYgKCF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KHByb2dyYW0pKQogICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIG1f
Y29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lKTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtNDA5LDEwICs0MDcsOCBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JNYXNrKGJvCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghc2hhZGVyIHx8IHNo
YWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmICgh
dmFsaWRhdGVXZWJHTE9iamVjdChzaGFkZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogICAg
IG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CkBAIC01NTIsMTAgKzU0OCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkZXB0aFJhbmdlKGQKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRh
Y2hTaGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghcHJvZ3Jh
bSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcyB8fCAhc2hhZGVyIHx8IHNoYWRlci0+Y29u
dGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmICghdmFsaWRhdGVX
ZWJHTE9iamVjdChwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdChzaGFkZXIpKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogICAgIG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTcw
Miw2ICs2OTYsMTkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUmVuZAog
ICAgIHJldHVybiBudW1FbGVtZW50c1JlcXVpcmVkIDw9IHNtYWxsZXN0TnVtRWxlbWVudHM7CiB9
CiAKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVdlYkdMT2JqZWN0KENhbnZh
c09iamVjdCogb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChvYmplY3QtPmNvbnRleHQoKSAh
PSB0aGlzKSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRy
YXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25nIGNvdW50LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAtODYzLDEwICs4NzAs
OCBAQCBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGVjKTsKICAgICBBY3RpdmVJbmZvIGluZm87Ci0gICAgaWYgKCFwcm9ncmFtIHx8
IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBp
ZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QocHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiAwOwotICAg
IH0KICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBp
bmZvKSkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC04NzcsMTAgKzg4Miw4IEBAIFBh
c3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmkKIHsKICAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIEFjdGl2ZUluZm8gaW5mbzsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3Jh
bS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmICghdmFs
aWRhdGVXZWJHTE9iamVjdChwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAg
IGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBpbmZvKSkg
ewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMTUyLDEwICsxMTU1LDggQEAgV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAogV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9Q
QVJBTShlYyk7Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlz
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QocHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAgICB9CiAKICAgICBXZWJH
TFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIGludCB2YWx1ZSA9IDA7CkBAIC0xMTgy
LDEwICsxMTgzLDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAog
U3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMp
OwotICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHByb2dyYW0pKQog
ICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQogICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBm
YWxzZSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7
CiB9CkBAIC0xMjI2LDEwICsxMjI1LDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0UgogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
UGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFzaGFkZXIg
fHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAg
aWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHNoYWRlcikpCiAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKLSAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAg
ICBpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKQEAgLTEyNTMsMTAgKzEyNTAs
OCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTCiBTdHJpbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFz
aGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHNoYWRlcikpCiAgICAgICAgIHJldHVybiAi
IjsKLSAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CiB9CkBAIC0xMjY0LDEwICsx
MjU5LDggQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySQogU3RyaW5n
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFk
ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYg
KCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHNoYWRlcikpCiAgICAgICAgIHJldHVy
biAiIjsKLSAgICB9CiAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBy
ZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsKIH0KQEAgLTEzMDQsNyAr
MTI5Nyw5IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFQKIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogdW5pZm9ybUxvY2F0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghcHJvZ3Jh
bSB8fCB1bmlmb3JtTG9jYXRpb24tPnByb2dyYW0oKSAhPSBwcm9ncmFtIHx8IHByb2dyYW0tPmNv
bnRleHQoKSAhPSB0aGlzKSB7CisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHByb2dyYW0p
KQorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgaWYgKHVuaWZvcm1Mb2NhdGlv
bi0+cHJvZ3JhbSgpICE9IHByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQpAQCAtMTQzMywxMCArMTQyOCw4IEBAIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKIFBhc3NSZWZQdHI8V2ViR0xVbmlm
b3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFt
LT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgaWYgKCF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KHByb2dyYW0pKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAg
V2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBsb25nIHVuaWZvcm1Mb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwogICAgIGlm
ICh1bmlmb3JtTG9jYXRpb24gPT0gLTEpCkBAIC0xNTYyLDExICsxNTU1LDggQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmxpbmVXaWR0aChkbwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+
Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmICghdmFsaWRh
dGVXZWJHTE9iamVjdChwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAg
CiAgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTYzMCwxMCArMTYyMCw4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpzY2lzc29yKGxvbmcKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFz
aGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHNoYWRlcikpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdHJpbmcpOwogICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDU3Mjg0KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzA5LDYgKzMwOSw4IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgYm9vbCB2
YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxv
bmcgdHlwZSwgbG9uZyBvZmZzZXQsIGxvbmcmIG51bUVsZW1lbnRzUmVxdWlyZWQpOwogICAgICAg
ICBib29sIHZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cyk7CiAKKyAgICAg
ICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KENhbnZhc09iamVjdCogb2JqZWN0KTsKKwogICAg
ICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICAgICAgYm9vbCBt
X25lZWRzVXBkYXRlOwogICAgICAgICBib29sIG1fbWFya2VkQ2FudmFzRGlydHk7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzMwNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA0LTA4ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFz
c2luZyBudWxsIFdlYkdMT2JqZWN0cyBzaG91bGQgc3ludGhlc2l6ZSBJTlZBTElEX1ZBTFVFIGVy
cm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0
NworCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLWV4cGVjdGVk
LnR4dDogQ2hhbmdlIGEgZmV3IGVycm9ycyBmcm9tIElOVkFMSURfT1BFUkFUSU9OIHRvIElOVkFM
SURfVkFMVUUuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2V0QWN0aXZlVGVzdC1leHBl
Y3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0
LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dl
YmdsL3NjcmlwdC10ZXN0cy9lcnJvci1yZXBvcnRpbmcuanM6IERpdHRvLgorCiAyMDEwLTA0LTA4
ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJl
cG9ydGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTcyODQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDE0ICs1LDE0IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKIFRlc3Rp
bmcgZ2V0QWN0aXZlQXR0cmliCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGwsIDIp
IGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9PUEVS
QVRJT04KK1BBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQog
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgogUEFTUyBjb250ZXh0
LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAyKSBpcyBudWxsCiBQQVNTIGNvbnRleHQuZ2V0RXJy
b3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlz
IGNvbnRleHQuTk9fRVJST1IKIFRlc3RpbmcgZ2V0QWN0aXZlVW5pZm9ybQogUEFTUyBjb250ZXh0
LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9y
KCkgaXMgY29udGV4dC5JTlZBTElEX09QRVJBVElPTgorUEFTUyBjb250ZXh0LmdldEVycm9yKCkg
aXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250
ZXh0Lk5PX0VSUk9SCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCA1MCkg
aXMgbnVsbAogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVF
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nZXRBY3RpdmVUZXN0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nZXRB
Y3RpdmVUZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTcyODQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nZXRBY3RpdmVUZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTAsNyArMTAsNyBAQCBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFt
LCAxCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZl
VW5pZm9ybShwcm9ncmFtLCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0
QWN0aXZlVW5pZm9ybS4KIFBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgy
IGluIGdldEFjdGl2ZVVuaWZvcm0uCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxs
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRBY3RpdmVVbmlmb3JtLgog
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCAwKS5uYW1lIGlzICdhX25vcm1hbCcKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVB
dHRyaWIocHJvZ3JhbSwgMCkudHlwZSBpcyBjb250ZXh0LkZMT0FUX1ZFQzMKQEAgLTIyLDcgKzIy
LDcgQEAgUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAyKQogUEFTUyBjb250
ZXh0LmdldEVycm9yKCkgaXMgMAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFt
LCAtMSkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0QWN0aXZlQXR0cmliLgog
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJp
YihudWxsLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRBY3RpdmVBdHRy
aWIuCitQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGwsIDApIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgxIGluIGdldEFjdGl2ZUF0dHJpYi4KIFBBU1MgY29udGV4dC5nZXRFcnJv
cigpIGlzIDAKIFBBU1MgY29udGV4dDIuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGNvbnRleHQyLmdl
dEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBp
biBnZXRBY3RpdmVBdHRyaWIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9u
dWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDU3Mjg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1v
YmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwyOSArMiwy
OSBAQCBUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aG91dCBwcm92aWRpCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAotUEFTUyBjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBjb21waWxlU2hhZGVyLgotUEFTUyBjb250ZXh0Lmxp
bmtQcm9ncmFtKCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gbGlua1Byb2dyYW0u
CitQQVNTIGNvbnRleHQuY29tcGlsZVNoYWRlcigpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAx
MjgxIGluIGNvbXBpbGVTaGFkZXIuCitQQVNTIGNvbnRleHQubGlua1Byb2dyYW0oKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBsaW5rUHJvZ3JhbS4KIFBBU1MgY29udGV4dC5hdHRh
Y2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBhdHRhY2hTaGFkZXIu
CiBQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgogUEFTUyBjb250ZXh0LmF0dGFj
aFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gYXR0YWNoU2hhZGVyLgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFtLCB1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KLVBB
U1MgY29udGV4dC5kZXRhY2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIpIHRocmV3IGV4Y2VwdGlv
biBHTCBlcnJvciAxMjgyIGluIGRldGFjaFNoYWRlci4KLVBBU1MgY29udGV4dC5zaGFkZXJTb3Vy
Y2UoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBzaGFkZXJTb3VyY2UuCi1QQVNT
IGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBH
TCBlcnJvciAxMjgyIGluIHNoYWRlclNvdXJjZS4KLVBBU1MgY29udGV4dC5iaW5kQXR0cmliTG9j
YXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIg
aW4gYmluZEF0dHJpYkxvY2F0aW9uLgorUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFt
LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRldGFjaFNoYWRl
ci4KK1BBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIpIHRocmV3IGV4
Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRldGFjaFNoYWRlci4KK1BBU1MgY29udGV4dC5zaGFk
ZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBzaGFkZXJTb3VyY2Uu
CitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4Y2Vw
dGlvbiBHTCBlcnJvciAxMjgxIGluIHNoYWRlclNvdXJjZS4KK1BBU1MgY29udGV4dC5iaW5kQXR0
cmliTG9jYXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gYmluZEF0dHJpYkxvY2F0aW9uLgogUEFTUyBjb250ZXh0LmJpbmRCdWZmZXIoY29u
dGV4dC5BUlJBWV9CVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5iaW5kRnJh
bWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250
ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIGlzIHVuZGVmaW5l
ZC4KIFBBU1MgY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIGlzIHVu
ZGVmaW5lZC4KIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LkZS
QU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVGRkVS
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlci4KIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVG
RkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDAp
IHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGZyYW1lYnVmZmVyVGV4dHVyZTJELgot
UEFTUyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNl
cHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRQcm9ncmFtUGFyYW1ldGVyLgotUEFTUyBjb250ZXh0
LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODIgaW4gZ2V0UHJvZ3JhbUluZm9Mb2cuCi1QQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1l
dGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0U2hh
ZGVyUGFyYW1ldGVyLgotUEFTUyBjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBnZXRTaGFkZXJJbmZvTG9nLgotUEFT
UyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBl
cnJvciAxMjgyIGluIGdldFNoYWRlclNvdXJjZS4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtKHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0VW5pZm9ybS4K
LVBBU1MgY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcg
ZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZ2V0VW5pZm9ybUxvY2F0aW9uLgorUEFTUyBjb250
ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wg
ZXJyb3IgMTI4MSBpbiBnZXRQcm9ncmFtUGFyYW1ldGVyLgorUEFTUyBjb250ZXh0LmdldFByb2dy
YW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4g
Z2V0UHJvZ3JhbUluZm9Mb2cuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVm
aW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0U2hhZGVyUGFyYW1l
dGVyLgorUEFTUyBjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBl
eGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFkZXJJbmZvTG9nLgorUEFTUyBjb250ZXh0
LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgx
IGluIGdldFNoYWRlclNvdXJjZS4KK1BBU1MgY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwg
MCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0VW5pZm9ybS4KK1BBU1MgY29u
dGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODEgaW4gZ2V0VW5pZm9ybUxvY2F0aW9uLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZXJyb3ItcmVwb3J0aW5nLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9lcnJvci1yZXBvcnRp
bmcuanMJKHJldmlzaW9uIDU3Mjg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2Vycm9yLXJlcG9ydGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsNyAr
MTUsNyBAQCBzaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIGRlYnVnKCJUZXN0
aW5nIGdldEFjdGl2ZUF0dHJpYiIpOwogLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgogc2hvdWxk
QmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihudWxsLCAyKSIpOwotc2hvdWxkQmUoImNv
bnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OIik7CitzaG91bGRC
ZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOwogLy8gRXJy
b3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKIHNob3VsZEJlKCJjb250ZXh0
LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOwogLy8gUmVhbCBPcGVuR0wgZXJyb3IK
QEAgLTI3LDcgKzI3LDcgQEAgc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0
LgogZGVidWcoIlRlc3RpbmcgZ2V0QWN0aXZlVW5pZm9ybSIpOwogLy8gU3ludGhldGljIE9wZW5H
TCBlcnJvcgogc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCki
KTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX09QRVJB
VElPTiIpOworc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURf
VkFMVUUiKTsKIC8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50CiBz
aG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKIC8vIFJl
YWwgT3BlbkdMIGVycm9yCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>