<?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>85317</bug_id>
          
          <creation_ts>2012-05-01 15:26:04 -0700</creation_ts>
          <short_desc>Don&apos;t allocate stencil buffer if stencil flag is false in context creation attributes</short_desc>
          <delta_ts>2012-05-02 12:57:16 -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>
          
          <blocked>85338</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>fishd</cc>
    
    <cc>gman</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>613719</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-01 15:26:04 -0700</bug_when>
    <thetext>Per discussion on the public_webgl list, it&apos;s been agreed that if the stencil flag is set to false in the context creation attributes, the WebGL implementation must not allocate a stencil buffer. This behavior is needed for cross-browser compatibility; otherwise, applications might expect a stencil buffer to be allocated even if they didn&apos;t explicitly request one.

Chromium used to implement this behavior, but it was lost during the transition to DrawingBuffer. For best portability, the logic should be re-introduced in WebGLRenderingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613720</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-01 15:27:03 -0700</bug_when>
    <thetext>Firefox bugs that were filed because of Chromium&apos;s behavior:
  https://bugzilla.mozilla.org/show_bug.cgi?id=648883
  https://bugzilla.mozilla.org/show_bug.cgi?id=745880</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613757</commentid>
    <comment_count>2</comment_count>
      <attachid>139703</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-01 16:22:48 -0700</bug_when>
    <thetext>Created attachment 139703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613910</commentid>
    <comment_count>3</comment_count>
      <attachid>139703</attachid>
    <who name="Jeff Timanus">twiz</who>
    <bug_when>2012-05-01 20:08:24 -0700</bug_when>
    <thetext>Comment on attachment 139703
Patch

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

LGTM.

I wonder if this CL is a sign of a trend where we will have to push similar validation up to the webgl rendering context . . .

&gt; LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html:18
&gt; +precision mediump float;

If I understand correctly, webgl shaders always should support the precision specifier.  Is there a reason why this was previously highp?  Making the change to mediump just for the sake of cleaning up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613920</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-05-01 20:30:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 139703 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139703&amp;action=review
&gt; 
&gt; LGTM.
&gt; 
&gt; I wonder if this CL is a sign of a trend where we will have to push similar validation up to the webgl rendering context . . .
&gt; 
&gt; &gt; LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html:18
&gt; &gt; +precision mediump float;
&gt; 
&gt; If I understand correctly, webgl shaders always should support the precision specifier.  Is there a reason why this was previously highp?  Making the change to mediump just for the sake of cleaning up?

LGTM.

Originally we used highp in most of conformance tests, and later we cleaned it up because highp support in fragment shader is optional.

I think this test was checked into webkit before the cleanup, and now it&apos;s only a sync to the khronos which has the cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614539</commentid>
    <comment_count>5</comment_count>
      <attachid>139703</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-02 12:40:01 -0700</bug_when>
    <thetext>Comment on attachment 139703
Patch

rs=me. If zmo says LGTM, I tend to agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614540</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-02 12:41:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I wonder if this CL is a sign of a trend where we will have to push similar validation up to the webgl rendering context . . .

Yes, I think it is; see dependent bug 85338.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614561</commentid>
    <comment_count>7</comment_count>
      <attachid>139703</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 12:57:02 -0700</bug_when>
    <thetext>Comment on attachment 139703
Patch

Clearing flags on attachment: 139703

Committed r115870: &lt;http://trac.webkit.org/changeset/115870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614563</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 12:57:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139703</attachid>
            <date>2012-05-01 16:22:48 -0700</date>
            <delta_ts>2012-05-02 12:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85317-20120501162242.patch</filename>
            <type>text/plain</type>
            <size>26743</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNmZWYyMjU0MWQ5MDQ4
YTRiYTIyZjZiYjdiMDU3YjUxMzI0YjMwNC4uZWNiMjNkNGUzZWUwZjA4YjYwYjdhODY4ZWM0ZWFm
MTg0M2IzMmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA1LTAxICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBEb24ndCBhbGxvY2F0ZSBz
dGVuY2lsIGJ1ZmZlciBpZiBzdGVuY2lsIGZsYWcgaXMgZmFsc2UgaW4gY29udGV4dCBjcmVhdGlv
biBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTMxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgaXQgYXBwZWFyIHRvIFdlYkdMIGFwcGxpY2F0aW9uIHRoYXQgdGhlcmUgaXMgbm8g
c3RlbmNpbAorICAgICAgICBidWZmZXIgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBHcmFwaGljc0Nv
bnRleHQzRCBhbGxvY2F0ZWQgb25lLgorICAgICAgICBWZXJpZmllZCBpbnRlbmRlZCBiZWhhdmlv
ciB3aXRoIHRlc3QgY2FzZSBmcm9tIE1vemlsbGEncyBidWcgcmVwb3J0LgorCisgICAgICAgIFVw
ZGF0ZWQgY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0
bWwgdGVzdAorICAgICAgICBmcm9tIEtocm9ub3MgcmVwb3NpdG9yeS4gUmFuIFdlYkdMIGxheW91
dCB0ZXN0cyBvbiBMaW51eCBpbgorICAgICAgICBDaHJvbWUncyBEUlQgYW5kIG9uIE1hYyBPUyBp
biBTYWZhcmkncy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1ZmZlcik6
IEFkZGVkIHF1ZXJ5IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmUpOiBDaGFuZ2VkIGRlc2lyZWQg
c2VtYW50aWNzIG9mIGlzVmFsaWRSZW5kZXJidWZmZXIuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5oOgorICAgICAgICAoV2ViR0xGcmFtZWJ1ZmZlcik6IEFkZGVkIGhh
c1N0ZW5jaWxCdWZmZXIuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgICAgICBDbGVhciBu
ZXcgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZy
YW1lYnVmZmVyKToKKyAgICAgICAgICAgIFJlc2V0IHN0ZW5jaWwgdGVzdCB1cG9uIGZyYW1lYnVm
ZmVyIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlz
YWJsZSk6CisgICAgICAgICAgICBDYWNoZSBmbGFnOyByZXNldCBzdGVuY2lsIHRlc3QuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZSk6CisgICAgICAgICAg
ICBDYWNoZSBmbGFnOyByZXNldCBzdGVuY2lsIHRlc3QuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgICAg
IFJlc2V0IHN0ZW5jaWwgdGVzdCB1cG9uIHJlbmRlcmJ1ZmZlciBjaGFuZ2UuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAg
ICAgICAgICAgIEZvcmNlIGRlcHRoIGFuZCBzdGVuY2lsIHRvIGZhbHNlIGlmIGZhbHNlIHdhcyBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzRW5h
YmxlZCk6CisgICAgICAgICAgICBSZXR1cm4gY2FjaGVkIGZsYWcuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAg
ICAgUmVzZXQgc3RlbmNpbCB0ZXN0IHVwb24gcmVuZGVyYnVmZmVyIHJlYWxsb2NhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXBwbHlTdGVuY2lsVGVzdCk6
CisgICAgICAgICAgICBFbmFibGUgb3IgZGlzYWJsZSBzdGVuY2lsIHRlc3QgYmFzZWQgb24gcmVx
dWVzdCBhbmQgYXZhaWxhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjplbmFibGVPckRpc2FibGUpOgorICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICAgIEFkZGVkIGNhY2hlIG9mIFNURU5D
SUxfVEVTVCBmbGFnLiBEZWxldGVkIHVudXNlZCBtX3N0ZW5jaWxCaXRzLgorCiAyMDEyLTA1LTAx
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBvbmUgYml0IGZyb20gbV9jb2x1bW4gdG8gcGFjayBSZW5kZXJUYWJsZUNlbGwgYml0cyBt
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
CmluZGV4IDM2ODNmMTM5YmZmNmQ4OGU1NTgyZDY5MDk4NWI2MzcwM2RiZDg3MmIuLmRkNGQwZGJm
MmMxZGMzNjg2ZWQzNDdhZDU4MzNjMzg3ODM5MjY2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC05NSwxMSArOTUsOSBAQCBuYW1l
c3BhY2UgewogCiAgICAgYm9vbCBpc1ZhbGlkUmVuZGVyYnVmZmVyKFdlYkdMU2hhcmVkT2JqZWN0
KiBhdHRhY2hlZE9iamVjdCkKICAgICB7Ci0gICAgICAgIGlmIChhdHRhY2hlZE9iamVjdCAmJiBh
dHRhY2hlZE9iamVjdC0+b2JqZWN0KCkgJiYgYXR0YWNoZWRPYmplY3QtPmlzUmVuZGVyYnVmZmVy
KCkpIHsKLSAgICAgICAgICAgIGlmICghKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZm
ZXIqPihhdHRhY2hlZE9iamVjdCkpLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWF0
dGFjaGVkT2JqZWN0IHx8ICFhdHRhY2hlZE9iamVjdC0+b2JqZWN0KCkgfHwgIWF0dGFjaGVkT2Jq
ZWN0LT5pc1JlbmRlcmJ1ZmZlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIqPihhdHRhY2hlZE9iamVjdCkt
PmlzVmFsaWQoKTsKICAgICB9CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtMzg4LDYg
KzM4NiwxMSBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6Om9uQWNjZXNzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QsIGJvb2wgbmVlZFRvSW5pdGlhbAogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIFdlYkdMRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBjb25zdAoreworICAg
IHJldHVybiBpc1ZhbGlkUmVuZGVyYnVmZmVyKG1fZGVwdGhTdGVuY2lsQXR0YWNobWVudC5nZXQo
KSkgfHwgaXNWYWxpZFJlbmRlcmJ1ZmZlcihtX3N0ZW5jaWxBdHRhY2htZW50LmdldCgpKTsKK30K
Kwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QsIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGlmIChtX2Nv
bG9yQXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaAppbmRleCA2NmExZmZhNDllMGU5MzE0YjUyZDJhOTlkNmM0ZGMwMTdmYTQxZjM2Li42
NzZhMGE4OTMxODkxNzVhZTliZDNlYWQwZGViN2Q0NTFhZjFiNTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC03Myw2ICs3Myw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgpIHsgbV9oYXNFdmVyQmVlbkJv
dW5kID0gdHJ1ZTsgfQogCisgICAgYm9vbCBoYXNTdGVuY2lsQnVmZmVyKCkgY29uc3Q7CisKIHBy
b3RlY3RlZDoKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCBhOTdlZjUyOTgyZDk3MDBlMWUxNDE4OTExMmNkMzU3OWI2YTMzZDEyLi43
MGE0YjExOGQ2ZTgwMzhmMDgxNzlhZDkwNDViODgxMTgxYzdiZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQ3
MCw2ICs0NzAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0Nv
bnRleHQoKQogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRlcmJ1ZmZl
ckJpbmRpbmcgPSAwOwogICAgIG1fZGVwdGhNYXNrID0gdHJ1ZTsKKyAgICBtX3N0ZW5jaWxFbmFi
bGVkID0gZmFsc2U7CiAgICAgbV9zdGVuY2lsTWFzayA9IDB4RkZGRkZGRkY7CiAgICAgbV9zdGVu
Y2lsTWFza0JhY2sgPSAweEZGRkZGRkZGOwogICAgIG1fc3RlbmNpbEZ1bmNSZWYgPSAwOwpAQCAt
OTI3LDYgKzkyOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBiCiAgICAgICAgIG1fY29udGV4
dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOwogICAgIGlm
IChidWZmZXIpCiAgICAgICAgIGJ1ZmZlci0+c2V0SGFzRXZlckJlZW5Cb3VuZCgpOworICAgIGFw
cGx5U3RlbmNpbFRlc3QoKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCkBAIC0xNjI1LDYgKzE2MjcsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRp
c2FibGUoR0MzRGVudW0gY2FwKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlk
YXRlQ2FwYWJpbGl0eSgiZGlzYWJsZSIsIGNhcCkpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAo
Y2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1RFU1QpIHsKKyAgICAgICAgbV9zdGVu
Y2lsRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBhcHBseVN0ZW5jaWxUZXN0KCk7CisgICAgICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSB7CiAgICAg
ICAgIG1fc2Npc3NvckVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZl
cikKQEAgLTE5NzAsNiArMTk3OCwxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5h
YmxlKEdDM0RlbnVtIGNhcCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0
ZUNhcGFiaWxpdHkoImVuYWJsZSIsIGNhcCkpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoY2Fw
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1RFU1QpIHsKKyAgICAgICAgbV9zdGVuY2ls
RW5hYmxlZCA9IHRydWU7CisgICAgICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKKyAgICAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpIHsKICAgICAgICAg
bV9zY2lzc29yRW5hYmxlZCA9IHRydWU7CiAgICAgICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCkBA
IC0yMDgwLDYgKzIwOTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdAogICAgICAgICBpZiAo
b2JqZWN0KQogICAgICAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0
YXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgb2JqZWN0KTsKICAgICB9CisgICAgYXBwbHlTdGVuY2lsVGVzdCgpOwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTIyMzUsNyArMjI1MCwxNiBA
QCBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gMDsKICAgICAvLyBXZSBh
bHdheXMgbmVlZCB0byByZXR1cm4gYSBuZXcgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBvYmplY3Qg
dG8KICAgICAvLyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gbXV0YXRpbmcgYW55IGNhY2hlZCB2ZXJz
aW9uLgotICAgIHJldHVybiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUobV9jb250ZXh0
LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKTsKKworICAgIC8vIEFsc28sIHdlIG5lZWQgdG8gZW5m
b3JjZSByZXF1ZXN0ZWQgdmFsdWVzIG9mICJmYWxzZSIgZm9yIGRlcHRoCisgICAgLy8gYW5kIHN0
ZW5jaWwsIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHVuZGVybHlpbmcKKyAg
ICAvLyBHcmFwaGljc0NvbnRleHQzRC4KKyAgICBSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRl
cz4gYXR0cmlidXRlcyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZShtX2NvbnRleHQt
PmdldENvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmICghbV9hdHRyaWJ1dGVzLmRlcHRoKQor
ICAgICAgICBhdHRyaWJ1dGVzLT5zZXREZXB0aChmYWxzZSk7CisgICAgaWYgKCFtX2F0dHJpYnV0
ZXMuc3RlbmNpbCkKKyAgICAgICAgYXR0cmlidXRlcy0+c2V0U3RlbmNpbChmYWxzZSk7CisgICAg
cmV0dXJuIGF0dHJpYnV0ZXMucmVsZWFzZSgpOwogfQogCiBHQzNEZW51bSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEVycm9yKCkKQEAgLTMwNjUsNiArMzA4OSw4IEBAIEdDM0Rib29sZWFuIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZUNhcGFiaWxpdHkoImlzRW5hYmxlZCIsIGNhcCkp
CiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChjYXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfVEVTVCkKKyAgICAgICAgcmV0dXJuIG1fc3RlbmNpbEVuYWJsZWQ7CiAgICAgcmV0dXJu
IG1fY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CiB9CiAKQEAgLTMzMTUsNyArMzM0MSw5IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gaW50ZXJuCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJy
ZW5kZXJidWZmZXJTdG9yYWdlIiwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBhcHBseVN0ZW5jaWxUZXN0KCk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpzYW1wbGVDb3ZlcmFnZShHQzNEZmxvYXQgdmFsdWUsIEdDM0Rib29s
ZWFuIGludmVydCkKQEAgLTU1MDQsNiArNTUzMiwyOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IsIGNvbnN0IGNoYXIqIGZ1bmN0
aQogfQogCiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphcHBseVN0ZW5jaWxUZXN0KCkK
K3sKKyAgICBib29sIGhhdmVTdGVuY2lsQnVmZmVyID0gZmFsc2U7CisKKyAgICBpZiAobV9mcmFt
ZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgIGhhdmVTdGVuY2lsQnVmZmVyID0gbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmhhc1N0ZW5jaWxCdWZmZXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRy
PFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMgPSBnZXRDb250ZXh0QXR0cmlidXRl
cygpOworICAgICAgICBoYXZlU3RlbmNpbEJ1ZmZlciA9IGF0dHJpYnV0ZXMtPnN0ZW5jaWwoKTsK
KyAgICB9CisgICAgZW5hYmxlT3JEaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1RF
U1QsCisgICAgICAgICAgICAgICAgICAgIG1fc3RlbmNpbEVuYWJsZWQgJiYgaGF2ZVN0ZW5jaWxC
dWZmZXIpOworfQorCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlT3JEaXNhYmxl
KEdDM0RlbnVtIGNhcGFiaWxpdHksIGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFibGUpCisg
ICAgICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcGFiaWxpdHkpOworICAgIGVsc2UKKyAgICAgICAg
bV9jb250ZXh0LT5kaXNhYmxlKGNhcGFiaWxpdHkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDliYWQyNDg2NzI5ZmMyNzMx
MjVkODExMDc1NDc2NGQ0ZGQ0ODhjYjcuLmI3ZDBhYjRiZjc0NTBmMTY0M2NlYWIxNzAyN2JhNmI5
ZWQzY2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCkBAIC00ODMsNyArNDgzLDcgQEAgcHVibGljOgogICAgIEdDM0Rib29s
ZWFuIG1fY29sb3JNYXNrWzRdOwogICAgIEdDM0Rib29sZWFuIG1fZGVwdGhNYXNrOwogCi0gICAg
bG9uZyBtX3N0ZW5jaWxCaXRzOworICAgIGJvb2wgbV9zdGVuY2lsRW5hYmxlZDsKICAgICBHQzNE
dWludCBtX3N0ZW5jaWxNYXNrLCBtX3N0ZW5jaWxNYXNrQmFjazsKICAgICBHQzNEaW50IG1fc3Rl
bmNpbEZ1bmNSZWYsIG1fc3RlbmNpbEZ1bmNSZWZCYWNrOyAvLyBOb3RlIHRoYXQgdGhlc2UgYXJl
IHRoZSB1c2VyIHNwZWNpZmllZCB2YWx1ZXMsIG5vdCB0aGUgaW50ZXJuYWwgY2xhbXBlZCB2YWx1
ZS4KICAgICBHQzNEdWludCBtX3N0ZW5jaWxGdW5jTWFzaywgbV9zdGVuY2lsRnVuY01hc2tCYWNr
OwpAQCAtNjk5LDYgKzY5OSwxMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZW5zdXJlTm90TnVs
bChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAorICAgIC8vIEVuYWJsZSBvciBkaXNhYmxlIHN0ZW5j
aWwgdGVzdCBiYXNlZCBvbiB1c2VyIHNldHRpbmcgYW5kCisgICAgLy8gd2hldGhlciB0aGUgY3Vy
cmVudCBGQk8gaGFzIGEgc3RlbmNpbCBidWZmZXIuCisgICAgdm9pZCBhcHBseVN0ZW5jaWxUZXN0
KCk7CisKKyAgICAvLyBIZWxwZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIGNhcGFiaWxp
dHkuCisgICAgdm9pZCBlbmFibGVPckRpc2FibGUoR0MzRGVudW0gY2FwYWJpbGl0eSwgYm9vbCBl
bmFibGUpOworCiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMU3RhdGVSZXN0b3JlcjsKIH07CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxZDQ3NGRlZTFmMjk1MjNjMjNmYThiMGMxNDJmNmJjYjAxOWNhZDJjLi5iNzMxNTJkY2Zh
OGEyYjRmOGI1MTk0NGU1YzYzOGUyZTFmYmI3NDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTItMDUtMDEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIERv
bid0IGFsbG9jYXRlIHN0ZW5jaWwgYnVmZmVyIGlmIHN0ZW5jaWwgZmxhZyBpcyBmYWxzZSBpbiBj
b250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1MzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMt
YWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFu
dGlhbGlhcy5odG1sOgorCiAyMDEyLTA1LTAxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gZmFzdC9sb2FkZXIvZmlsZS1wcm90
b2NvbC1mcmFnbWVudC5odG1sIG5lZWRzIHJlYmFzZWxpbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0
ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy1leHBl
Y3RlZC50eHQKaW5kZXggMWUyNDM0ODFmMzQ5Y2U0YWYyNjZjYzk0Y2M0MmM2Nzg2NDE0NjNiNy4u
MTM2Njg5ZjE4OTI4YzNkMGI1ZjQ5M2E2MjhlNThmZThjNmZhNTkyOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRo
LXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxp
YXMtZXhwZWN0ZWQudHh0CkBAIC0xLDc5ICsxLDQ4IEBACi0gICAgICAgCiBWZXJpZnkgV2ViR0xD
b250ZXh0QXR0cmlidXRlcyBhcmUgd29ya2luZyBhcyBzcGVjaWZpZWQsIGluY2x1ZGluZyBhbHBo
YSwgZGVwdGgsIHN0ZW5jaWwsIGFudGlhbGlhcywgYnV0IG5vdCBwcmVtdWx0aXBsaWVkQWxwaGEK
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBUZXN0aW5nIGFscGhhID0gdHJ1ZQotUEFT
UyB3ZWJHTCA9IGdldFdlYkdMKCdhbHBoYU9uJywgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNl
LCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwg
MCkgaXMgbm9uLW51bGwuCitQQVNTIHdlYkdMID0gZ2V0V2ViR0woMSwgMSwgeyBhbHBoYTogdHJ1
ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAs
IDAsIDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGNvbnRleHRBdHRyaWJzID0gd2Vi
R0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KLVBBU1MgY29udGV4dEF0dHJp
YnMuYWxwaGEgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuZGVwdGggaXMgZGVmaW5l
ZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0
QXR0cmlicy5hbnRpYWxpYXMgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMucHJlbXVs
dGlwbGllZEFscGhhIGlzIGRlZmluZWQuCitQQVNTIGNvbnRleHRBdHRyaWJzLmFscGhhID09IHRy
dWUgaXMgdHJ1ZQogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFRlc3RpbmcgYWxwaGEgPSBm
YWxzZQotUEFTUyB3ZWJHTCA9IGdldFdlYkdMKCdhbHBoYU9mZicsIHsgYWxwaGE6IGZhbHNlLCBk
ZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwg
MCwgMCBdLCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1Mgd2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7
IGFscGhhOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBm
YWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGNvbnRleHRB
dHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KLVBBU1Mg
Y29udGV4dEF0dHJpYnMuYWxwaGEgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuZGVw
dGggaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBpcyBkZWZpbmVkLgot
UEFTUyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0
dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIGRlZmluZWQuCitQQVNTIGNvbnRleHRBdHRyaWJz
LmFscGhhID09IGZhbHNlIGlzIHRydWUKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBUZXN0
aW5nIGRlcHRoID0gdHJ1ZQotUEFTUyB3ZWJHTCA9IGdldFdlYkdMKCdkZXB0aE9uJywgeyBzdGVu
Y2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMg
bm9uLW51bGwuCitQQVNTIHdlYkdMID0gZ2V0V2ViR0woMSwgMSwgeyBzdGVuY2lsOiBmYWxzZSwg
YW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQ
QVNTIGNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24t
bnVsbC4KLVBBU1MgY29udGV4dEF0dHJpYnMuZGVwdGggaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4
dEF0dHJpYnMuYWxwaGEgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBp
cyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgaXMgZGVmaW5lZC4KLVBB
U1MgY29udGV4dEF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIGRlZmluZWQuCiBQQVNTIHBp
eGVsIGlzIGNvcnJlY3RDb2xvcgogVGVzdGluZyBkZXB0aCA9IGZhbHNlCi1QQVNTIHdlYkdMID0g
Z2V0V2ViR0woJ2RlcHRoT2ZmJywgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRp
YWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1Mg
d2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFu
dGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgogUEFT
UyBjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51
bGwuCi1QQVNTIGNvbnRleHRBdHRyaWJzLmRlcHRoIGlzIGRlZmluZWQuCi1QQVNTIGNvbnRleHRB
dHRyaWJzLmFscGhhIGlzIGRlZmluZWQuCi1QQVNTIGNvbnRleHRBdHRyaWJzLnN0ZW5jaWwgaXMg
ZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzIGlzIGRlZmluZWQuCi1QQVNT
IGNvbnRleHRBdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyBkZWZpbmVkLgogUEFTUyBwaXhl
bCBpcyBjb3JyZWN0Q29sb3IKLVRlc3Rpbmcgc3RlbmNpbCA9IHRydWUKLVBBU1Mgd2ViR0wgPSBn
ZXRXZWJHTCgnc3RlbmNpbE9uJywgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRydWUsIGFudGlh
bGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgorVGVzdGlu
ZyBzdGVuY2lsID0gdHJ1ZSwgZGVwdGggPSBmYWxzZQorUEFTUyB3ZWJHTCA9IGdldFdlYkdMKDEs
IDEsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsg
MCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgY29udGV4dEF0dHJpYnMgPSB3
ZWJHTC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0QXR0
cmlicy5kZXB0aCBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSBpcyBkZWZp
bmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5zdGVuY2lsIGlzIGRlZmluZWQuCi1QQVNTIGNvbnRl
eHRBdHRyaWJzLmFudGlhbGlhcyBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5wcmVt
dWx0aXBsaWVkQWxwaGEgaXMgZGVmaW5lZC4KIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCi1U
ZXN0aW5nIHN0ZW5jaWwgPSBmYWxzZQotUEFTUyB3ZWJHTCA9IGdldFdlYkdMKCdzdGVuY2lsT2Zm
JywgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsg
MCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KK1Rlc3Rpbmcgc3RlbmNpbCA9IGZhbHNl
LCBkZXB0aCA9IGZhbHNlCitQQVNTIHdlYkdMID0gZ2V0V2ViR0woMSwgMSwgeyBkZXB0aDogZmFs
c2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAx
LCAwKSBpcyBub24tbnVsbC4KK1BBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0
QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKK1Rl
c3Rpbmcgc3RlbmNpbCA9IHRydWUsIGRlcHRoID0gdHJ1ZQorUEFTUyB3ZWJHTCA9IGdldFdlYkdM
KDEsIDEsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IHRydWUsIGFudGlhbGlhczogZmFsc2UgfSwg
WyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgorUEFTUyBjb250ZXh0QXR0cmlicyA9
IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIHBpeGVsIGlz
IGNvcnJlY3RDb2xvcgorVGVzdGluZyBzdGVuY2lsID0gZmFsc2UsIGRlcHRoID0gdHJ1ZQorUEFT
UyB3ZWJHTCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNlLCBh
bnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KIFBB
U1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1u
dWxsLgotUEFTUyBjb250ZXh0QXR0cmlicy5kZXB0aCBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0
QXR0cmlicy5hbHBoYSBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5zdGVuY2lsIGlz
IGRlZmluZWQuCi1QQVNTIGNvbnRleHRBdHRyaWJzLmFudGlhbGlhcyBpcyBkZWZpbmVkLgotUEFT
UyBjb250ZXh0QXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgZGVmaW5lZC4KIFBBU1MgcGl4
ZWwgaXMgY29ycmVjdENvbG9yCiBUZXN0aW5nIGFudGlhbGlhcyA9IHRydWUKLVBBU1Mgd2ViR0wg
PSBnZXRXZWJHTCgnYW50aWFsaWFzT24nLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2Us
IGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0cnVlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBp
cyBub24tbnVsbC4KK1BBU1Mgd2ViR0wgPSBnZXRXZWJHTCgyLCAyLCB7IGRlcHRoOiBmYWxzZSwg
c3RlbmNpbDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0cnVlIH0sIFsgMCwgMCwg
MCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5n
ZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0QXR0cmlicy5k
ZXB0aCBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSBpcyBkZWZpbmVkLgot
UEFTUyBjb250ZXh0QXR0cmlicy5zdGVuY2lsIGlzIGRlZmluZWQuCi1QQVNTIGNvbnRleHRBdHRy
aWJzLmFudGlhbGlhcyBpcyBkZWZpbmVkLgotUEFTUyBjb250ZXh0QXR0cmlicy5wcmVtdWx0aXBs
aWVkQWxwaGEgaXMgZGVmaW5lZC4KIFBBU1MgcGl4ZWxbMF0gIT0gMjU1ICYmIHBpeGVsWzBdICE9
IDAgaXMgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzCiBUZXN0aW5nIGFudGlhbGlhcyA9IGZhbHNl
Ci1QQVNTIHdlYkdMID0gZ2V0V2ViR0woJ2FudGlhbGlhc09mZicsIHsgZGVwdGg6IGZhbHNlLCBz
dGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwg
MCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1Mgd2ViR0wgPSBnZXRXZWJHTCgyLCAyLCB7
IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBm
YWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGNvbnRleHRB
dHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KLVBBU1Mg
Y29udGV4dEF0dHJpYnMuZGVwdGggaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuYWxw
aGEgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0dHJpYnMuc3RlbmNpbCBpcyBkZWZpbmVkLgot
UEFTUyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMgaXMgZGVmaW5lZC4KLVBBU1MgY29udGV4dEF0
dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIGRlZmluZWQuCiBQQVNTIHBpeGVsWzBdICE9IDI1
NSAmJiBwaXhlbFswXSAhPSAwIGlzIGNvbnRleHRBdHRyaWJzLmFudGlhbGlhcwogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxp
YXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCmluZGV4IDM1MGIwZDE5ODg5ZmZi
MTE0NmI1ODFmZGY0MTQwZTY1OTIyNGY0Y2EuLmE2MDYwM2MzZTM3NTZkYzc2NjNlODQ1ZjMzMDNm
MjI1N2M0ODkyYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Nv
bnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1k
ZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCkBAIC0xNSw5ICsxNSw4IEBAIHZvaWQgbWFpbigp
CiA8L3NjcmlwdD4KIAogPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+Ci0jaWZkZWYgR0xfRVMKLXByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSNlbmRpZgorcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKIHZhcnlpbmcgdmVjNCBjb2xvcjsKIAogdm9pZCBtYWlu
KCkKQEAgLTQ1LDY3ICs0NCwzNCBAQCBmdW5jdGlvbiBpbml0KCkKICAgICBydW5UZXN0KCk7CiB9
CiAKLWZ1bmN0aW9uIGdldFdlYkdMKGNhbnZhc05hbWUsIGNvbnRleHRBdHRyaWJzLCBjbGVhckNv
bG9yLCBjbGVhckRlcHRoLCBjbGVhclN0ZW5jaWwpCitmdW5jdGlvbiBnZXRXZWJHTChjYW52YXNX
aWR0aCwgY2FudmFzSGVpZ2h0LCBjb250ZXh0QXR0cmlicywgY2xlYXJDb2xvciwgY2xlYXJEZXB0
aCwgY2xlYXJTdGVuY2lsKQogewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChjYW52YXNOYW1lKTsKLSAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJp
bWVudGFsLXdlYmdsIiwgY29udGV4dEF0dHJpYnMpOwotICAgIGlmICghZ2wpIHsKLSAgICAgICAg
YWxlcnQoIk5vIFdlYkdMIGNvbnRleHQgZm91bmQiKTsKKyAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgaWYgKCFjYW52YXMpCiAgICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0KLQotICAgIC8vIEFkZCBhIGNvbnNvbGUKLSAgICBnbC5jb25zb2xl
ID0gKCJjb25zb2xlIiBpbiB3aW5kb3cpID8gd2luZG93LmNvbnNvbGUgOiB7IGxvZzogZnVuY3Rp
b24oKSB7IH0gfTsKKyAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aDsKKyAgICBjYW52YXMu
aGVpZ2h0ID0gY2FudmFzSGVpZ2h0OwogCi0gICAgLy8gY3JlYXRlIG91ciBzaGFkZXJzCi0gICAg
dmFyIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoZ2wsICJ2c2hhZGVyIik7Ci0gICAgdmFyIGZy
YWdtZW50U2hhZGVyID0gbG9hZFNoYWRlcihnbCwgImZzaGFkZXIiKTsKLQotICAgIGlmICghdmVy
dGV4U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlcikKKyAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNE
Q29udGV4dChjYW52YXMsIGNvbnRleHRBdHRyaWJzKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxsOwogCi0gICAgLy8gQ3JlYXRlIHRoZSBwcm9ncmFtIG9iamVjdAotICAg
IGdsLnByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7Ci0KLSAgICBpZiAoIWdsLnByb2dyYW0p
CisgICAgY29udGV4dC5wcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShjb250ZXh0LCAidnNoYWRlciIs
ICJmc2hhZGVyIiwgWyJwb3MiLCAiY29sb3JJbiJdKTsKKyAgICBpZiAoIWNvbnRleHQucHJvZ3Jh
bSkKICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAvLyBBdHRhY2ggb3VyIHR3byBzaGFkZXJz
IHRvIHRoZSBwcm9ncmFtCi0gICAgZ2wuYXR0YWNoU2hhZGVyKGdsLnByb2dyYW0sIHZlcnRleFNo
YWRlcik7Ci0gICAgZ2wuYXR0YWNoU2hhZGVyKGdsLnByb2dyYW0sIGZyYWdtZW50U2hhZGVyKTsK
KyAgICBjb250ZXh0LnVzZVByb2dyYW0oY29udGV4dC5wcm9ncmFtKTsKIAotICAgIC8vIEJpbmQg
YXR0cmlidXRlcwotICAgIHZhciBhdHRyaWJzID0gWyAicG9zIiwgImNvbG9ySW4iIF07Ci0gICAg
Zm9yICh2YXIgaSBpbiBhdHRyaWJzKQotICAgICAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24oZ2wu
cHJvZ3JhbSwgcGFyc2VJbnQoaSksIGF0dHJpYnNbaV0pOworICAgIGNvbnRleHQuZW5hYmxlKGNv
bnRleHQuREVQVEhfVEVTVCk7CisgICAgY29udGV4dC5lbmFibGUoY29udGV4dC5TVEVOQ0lMX1RF
U1QpOworICAgIGNvbnRleHQuZGlzYWJsZShjb250ZXh0LkJMRU5EKTsKIAotICAgIC8vIExpbmsg
dGhlIHByb2dyYW0KLSAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKKyAgICBjb250ZXh0
LmNsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJDb2xvclsyXSwg
Y2xlYXJDb2xvclszXSk7CisgICAgY29udGV4dC5jbGVhckRlcHRoKGNsZWFyRGVwdGgpOworICAg
IGNvbnRleHQuY2xlYXJTdGVuY2lsKGNsZWFyU3RlbmNpbCk7CisgICAgY29udGV4dC5jbGVhcihj
b250ZXh0LkNPTE9SX0JVRkZFUl9CSVQgfCBjb250ZXh0LkRFUFRIX0JVRkZFUl9CSVQgfCBjb250
ZXh0LlNURU5DSUxfQlVGRkVSX0JJVCk7CiAKLSAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXMK
LSAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnbC5wcm9ncmFtLCBnbC5M
SU5LX1NUQVRVUyk7Ci0gICAgaWYgKCFsaW5rZWQpIHsKLSAgICAgICAgLy8gc29tZXRoaW5nIHdl
bnQgd3Jvbmcgd2l0aCB0aGUgbGluawotICAgICAgICB2YXIgZXJyb3IgPSBnbC5nZXRQcm9ncmFt
SW5mb0xvZyAoZ2wucHJvZ3JhbSk7Ci0gICAgICAgIGdsLmNvbnNvbGUubG9nKCJFcnJvciBpbiBw
cm9ncmFtIGxpbmtpbmc6IitlcnJvcik7Ci0KLSAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShnbC5w
cm9ncmFtKTsKLSAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShmcmFnbWVudFNoYWRlcik7Ci0gICAg
ICAgIGdsLmRlbGV0ZVByb2dyYW0odmVydGV4U2hhZGVyKTsKLQotICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICB9Ci0KLSAgICBnbC51c2VQcm9ncmFtKGdsLnByb2dyYW0pOwotCi0gICAgZ2wuY2xl
YXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVh
ckNvbG9yWzNdKTsKLSAgICBnbC5jbGVhckRlcHRoKGNsZWFyRGVwdGgpOwotICAgIGdsLmNsZWFy
U3RlbmNpbChjbGVhclN0ZW5jaWwpOwotICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKLSAg
ICBnbC5lbmFibGUoZ2wuU1RFTkNJTF9URVNUKTsKLSAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCB8IGdsLlNURU5DSUxfQlVGRkVSX0JJVCk7Ci0K
LSAgICByZXR1cm4gZ2w7CisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIGZ1bmN0aW9uIGRyYXdB
bmRSZWFkUGl4ZWwoZ2wsIHZlcnRpY2VzLCBjb2xvcnMsIHgsIHkpCkBAIC0xMzQsMTUgKzEwMCwx
MSBAQCBmdW5jdGlvbiB0ZXN0QWxwaGEoYWxwaGEpCiB7CiAgICAgZGVidWcoIlRlc3RpbmcgYWxw
aGEgPSAiICsgYWxwaGEpOwogICAgIGlmIChhbHBoYSkKLSAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJ3ZWJHTCA9IGdldFdlYkdMKCdhbHBoYU9uJywgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNl
LCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwg
MCkiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ3ZWJHTCA9IGdldFdlYkdMKDEsIDEsIHsg
YWxwaGE6IHRydWUsIGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFs
c2UgfSwgWyAwLCAwLCAwLCAwIF0sIDEsIDApIik7CiAgICAgZWxzZQotICAgICAgICBzaG91bGRC
ZU5vbk51bGwoIndlYkdMID0gZ2V0V2ViR0woJ2FscGhhT2ZmJywgeyBhbHBoYTogZmFsc2UsIGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAw
LCAwIF0sIDEsIDApIik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgid2ViR0wgPSBnZXRXZWJH
TCgxLCAxLCB7IGFscGhhOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50
aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkiKTsKICAgICBzaG91bGRCZU5v
bk51bGwoImNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOwot
ICAgIHNob3VsZEJlRGVmaW5lZCgiY29udGV4dEF0dHJpYnMuYWxwaGEiKTsKLSAgICBzaG91bGRC
ZURlZmluZWQoImNvbnRleHRBdHRyaWJzLmRlcHRoIik7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJj
b250ZXh0QXR0cmlicy5zdGVuY2lsIik7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJjb250ZXh0QXR0
cmlicy5hbnRpYWxpYXMiKTsKLSAgICBzaG91bGRCZURlZmluZWQoImNvbnRleHRBdHRyaWJzLnBy
ZW11bHRpcGxpZWRBbHBoYSIpOworICAgIHNob3VsZEJlVHJ1ZSgiY29udGV4dEF0dHJpYnMuYWxw
aGEgPT0gIiArIGFscGhhKTsKIAogICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgxICogMSAq
IDQpOwogICAgIHdlYkdMLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgd2ViR0wuUkdCQSwgd2ViR0wu
VU5TSUdORURfQllURSwgYnVmKTsKQEAgLTE1OCwxNSArMTIwLDEwIEBAIGZ1bmN0aW9uIHRlc3RE
ZXB0aChkZXB0aCkKIHsKICAgICBkZWJ1ZygiVGVzdGluZyBkZXB0aCA9ICIgKyBkZXB0aCk7CiAg
ICAgaWYgKGRlcHRoKQotICAgICAgICBzaG91bGRCZU5vbk51bGwoIndlYkdMID0gZ2V0V2ViR0wo
J2RlcHRoT24nLCB7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwg
MCwgMSBdLCAxLCAwKSIpOworICAgICAgICBzaG91bGRCZU5vbk51bGwoIndlYkdMID0gZ2V0V2Vi
R0woMSwgMSwgeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAs
IDEgXSwgMSwgMCkiKTsKICAgICBlbHNlCi0gICAgICAgIHNob3VsZEJlTm9uTnVsbCgid2ViR0wg
PSBnZXRXZWJHTCgnZGVwdGhPZmYnLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFu
dGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CisgICAgICAgIHNob3Vs
ZEJlTm9uTnVsbCgid2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNp
bDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CiAg
ICAgc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRy
aWJ1dGVzKCkiKTsKLSAgICBzaG91bGRCZURlZmluZWQoImNvbnRleHRBdHRyaWJzLmRlcHRoIik7
Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJjb250ZXh0QXR0cmlicy5hbHBoYSIpOwotICAgIHNob3Vs
ZEJlRGVmaW5lZCgiY29udGV4dEF0dHJpYnMuc3RlbmNpbCIpOwotICAgIHNob3VsZEJlRGVmaW5l
ZCgiY29udGV4dEF0dHJpYnMuYW50aWFsaWFzIik7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJjb250
ZXh0QXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiKTsKIAogICAgIHdlYkdMLmRlcHRoRnVuYyh3
ZWJHTC5ORVZFUik7CiAKQEAgLTE5NCwxOSArMTUxLDE4IEBAIGZ1bmN0aW9uIHRlc3REZXB0aChk
ZXB0aCkKICAgICBzaG91bGRCZSgicGl4ZWwiLCAiY29ycmVjdENvbG9yIik7CiB9CiAKLWZ1bmN0
aW9uIHRlc3RTdGVuY2lsKHN0ZW5jaWwpCitmdW5jdGlvbiB0ZXN0U3RlbmNpbEFuZERlcHRoKHN0
ZW5jaWwsIGRlcHRoKQogewotICAgIGRlYnVnKCJUZXN0aW5nIHN0ZW5jaWwgPSAiICsgc3RlbmNp
bCk7Ci0gICAgaWYgKHN0ZW5jaWwpCi0gICAgICAgIHNob3VsZEJlTm9uTnVsbCgid2ViR0wgPSBn
ZXRXZWJHTCgnc3RlbmNpbE9uJywgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRydWUsIGFudGlh
bGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7Ci0gICAgZWxzZQotICAgICAg
ICBzaG91bGRCZU5vbk51bGwoIndlYkdMID0gZ2V0V2ViR0woJ3N0ZW5jaWxPZmYnLCB7IGRlcHRo
OiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAx
IF0sIDEsIDApIik7CisgICAgZGVidWcoIlRlc3Rpbmcgc3RlbmNpbCA9ICIgKyBzdGVuY2lsICsg
IiwgZGVwdGggPSAiICsgZGVwdGgpOworICAgIHZhciBjcmVhdGlvblN0cmluZyA9CisgICAgICAg
ICJ3ZWJHTCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6ICIgKyBkZXB0aCArICIsIHN0ZW5jaWw6
ICIgKyBzdGVuY2lsICsgIiwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwg
MCkiOworICAgIHNob3VsZEJlTm9uTnVsbChjcmVhdGlvblN0cmluZyk7CiAgICAgc2hvdWxkQmVO
b25OdWxsKCJjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsK
LSAgICBzaG91bGRCZURlZmluZWQoImNvbnRleHRBdHRyaWJzLmRlcHRoIik7Ci0gICAgc2hvdWxk
QmVEZWZpbmVkKCJjb250ZXh0QXR0cmlicy5hbHBoYSIpOwotICAgIHNob3VsZEJlRGVmaW5lZCgi
Y29udGV4dEF0dHJpYnMuc3RlbmNpbCIpOwotICAgIHNob3VsZEJlRGVmaW5lZCgiY29udGV4dEF0
dHJpYnMuYW50aWFsaWFzIik7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJjb250ZXh0QXR0cmlicy5w
cmVtdWx0aXBsaWVkQWxwaGEiKTsKKyAgICBpZiAoIXN0ZW5jaWwgJiYgY29udGV4dEF0dHJpYnMu
c3RlbmNpbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBpbXBsZW1lbnRhdGlvbiBwcm92
aWRlZCBhIHN0ZW5jaWwgYnVmZmVyIHdoZW4gaXQgc2hvdWxkIG5vdCBoYXZlIik7CisgICAgfQor
ICAgIGlmICghY29udGV4dEF0dHJpYnMuc3RlbmNpbCkKKyAgICAgICAgc3RlbmNpbCA9IGZhbHNl
OwogCiAgICAgd2ViR0wuZGVwdGhGdW5jKHdlYkdMLkFMV0FZUyk7CiAKQEAgLTIzMyw3ICsxODks
NyBAQCBmdW5jdGlvbiB0ZXN0U3RlbmNpbChzdGVuY2lsKQogICAgIHBpeGVsWzFdID0gYnVmWzFd
OwogICAgIHBpeGVsWzJdID0gYnVmWzJdOwogICAgIHBpeGVsWzNdID0gYnVmWzNdOwotICAgIGNv
cnJlY3RDb2xvciA9IChjb250ZXh0QXR0cmlicy5zdGVuY2lsID8gWzAsIDAsIDAsIDI1NV0gOiBb
MjU1LCAwLCAwLCAyNTVdKTsKKyAgICBjb3JyZWN0Q29sb3IgPSAoc3RlbmNpbCA/IFswLCAwLCAw
LCAyNTVdIDogWzI1NSwgMCwgMCwgMjU1XSk7CiAgICAgc2hvdWxkQmUoInBpeGVsIiwgImNvcnJl
Y3RDb2xvciIpOwogfQogCkBAIC0yNDEsMTUgKzE5NywxMCBAQCBmdW5jdGlvbiB0ZXN0QW50aWFs
aWFzKGFudGlhbGlhcykKIHsKICAgICBkZWJ1ZygiVGVzdGluZyBhbnRpYWxpYXMgPSAiICsgYW50
aWFsaWFzKTsKICAgICBpZiAoYW50aWFsaWFzKQotICAgICAgICBzaG91bGRCZU5vbk51bGwoIndl
YkdMID0gZ2V0V2ViR0woJ2FudGlhbGlhc09uJywgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZh
bHNlLCBhbHBoYTogZmFsc2UsIGFudGlhbGlhczogdHJ1ZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwg
MCkiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ3ZWJHTCA9IGdldFdlYkdMKDIsIDIsIHsg
ZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IHRy
dWUgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CiAgICAgZWxzZQotICAgICAgICBzaG91bGRC
ZU5vbk51bGwoIndlYkdMID0gZ2V0V2ViR0woJ2FudGlhbGlhc09mZicsIHsgZGVwdGg6IGZhbHNl
LCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwg
MCwgMCwgMSBdLCAxLCAwKSIpOworICAgICAgICBzaG91bGRCZU5vbk51bGwoIndlYkdMID0gZ2V0
V2ViR0woMiwgMiwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbHBoYTogZmFsc2Us
IGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CiAgICAgc2hvdWxk
QmVOb25OdWxsKCJjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCki
KTsKLSAgICBzaG91bGRCZURlZmluZWQoImNvbnRleHRBdHRyaWJzLmRlcHRoIik7Ci0gICAgc2hv
dWxkQmVEZWZpbmVkKCJjb250ZXh0QXR0cmlicy5hbHBoYSIpOwotICAgIHNob3VsZEJlRGVmaW5l
ZCgiY29udGV4dEF0dHJpYnMuc3RlbmNpbCIpOwotICAgIHNob3VsZEJlRGVmaW5lZCgiY29udGV4
dEF0dHJpYnMuYW50aWFsaWFzIik7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKCJjb250ZXh0QXR0cmli
cy5wcmVtdWx0aXBsaWVkQWxwaGEiKTsKIAogICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMy
QXJyYXkoWwogICAgICAgICAgMS4wLCAxLjAsIDAuMCwKQEAgLTI3MSwzMiArMjIyLDE5IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogICAgIHRlc3RBbHBoYShmYWxzZSk7CiAgICAgdGVzdERlcHRoKHRy
dWUpOwogICAgIHRlc3REZXB0aChmYWxzZSk7Ci0gICAgdGVzdFN0ZW5jaWwodHJ1ZSk7Ci0gICAg
dGVzdFN0ZW5jaWwoZmFsc2UpOworICAgIHRlc3RTdGVuY2lsQW5kRGVwdGgodHJ1ZSwgZmFsc2Up
OworICAgIHRlc3RTdGVuY2lsQW5kRGVwdGgoZmFsc2UsIGZhbHNlKTsKKyAgICB0ZXN0U3RlbmNp
bEFuZERlcHRoKHRydWUsIHRydWUpOworICAgIHRlc3RTdGVuY2lsQW5kRGVwdGgoZmFsc2UsIHRy
dWUpOwogICAgIHRlc3RBbnRpYWxpYXModHJ1ZSk7CiAgICAgdGVzdEFudGlhbGlhcyhmYWxzZSk7
Ci0gICAgdmFyIGVwaWxvZ3VlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Ci0g
ICAgZXBpbG9ndWUub25sb2FkID0gZmluaXNoOwotICAgIGVwaWxvZ3VlLnNyYyA9ICIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIjsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVwaWxvZ3VlKTsKLX0KIAotZnVuY3Rpb24gZmluaXNoKCkgewotICAgIGlmICh3aW5kb3cu
bm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsKLSAgICAgICAgd2luZG93Lm5vbktocm9u
b3NGcmFtZXdvcmtOb3RpZnlEb25lKCk7Ci0gICAgfQorICAgIGZpbmlzaFRlc3QoKTsKIH0KKwog
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci08Y2FudmFzIGlkPSJh
bHBoYU9uIiB3aWR0aD0iMXB4IiBoZWlnaHQ9IjFweCI+PC9jYW52YXM+Ci08Y2FudmFzIGlkPSJh
bHBoYU9mZiIgd2lkdGg9IjFweCIgaGVpZ2h0PSIxcHgiPjwvY2FudmFzPgotPGNhbnZhcyBpZD0i
ZGVwdGhPbiIgd2lkdGg9IjFweCIgaGVpZ2h0PSIxcHgiPjwvY2FudmFzPgotPGNhbnZhcyBpZD0i
ZGVwdGhPZmYiIHdpZHRoPSIxcHgiIGhlaWdodD0iMXB4Ij48L2NhbnZhcz4KLTxjYW52YXMgaWQ9
InN0ZW5jaWxPbiIgd2lkdGg9IjFweCIgaGVpZ2h0PSIxcHgiPjwvY2FudmFzPgotPGNhbnZhcyBp
ZD0ic3RlbmNpbE9mZiIgd2lkdGg9IjFweCIgaGVpZ2h0PSIxcHgiPjwvY2FudmFzPgotPGNhbnZh
cyBpZD0iYW50aWFsaWFzT24iIHdpZHRoPSIycHgiIGhlaWdodD0iMnB4Ij48L2NhbnZhcz4KLTxj
YW52YXMgaWQ9ImFudGlhbGlhc09mZiIgd2lkdGg9IjJweCIgaGVpZ2h0PSIycHgiPjwvY2FudmFz
PgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CiA8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>