<?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>216010</bug_id>
          
          <creation_ts>2020-08-31 12:48:02 -0700</creation_ts>
          <short_desc>[WebGL2] Support EXT_color_buffer_half_float on WebGL 2.0 contexts</short_desc>
          <delta_ts>2020-09-29 15:47:59 -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>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126404</blocked>
    
    <blocked>217107</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="James Darpinian">jdarpinian</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1684215</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-31 12:48:02 -0700</bug_when>
    <thetext>Per agreement in the WebGL working group, the EXT_color_buffer_half_float extension is being revised to be supported on WebGL 2.0 contexts:
https://github.com/KhronosGroup/WebGL/pull/3146

The reason for this change is principally that iOS devices support 16-bit floating-point render targets but not 32-bit, so the WebGL 2.0 EXT_color_buffer_float extension, which covers both, can not be supported there.

Developers are noticing this functionality gap:
https://github.com/playcanvas/engine/pull/2123#issuecomment-682438222

WebKit&apos;s WebGL 2.0 implementation should be updated as soon as possible to track this change so that developers upgrading to WebGL 2.0 can continue to use floating-point render targets on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684274</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-31 15:10:20 -0700</bug_when>
    <thetext>The update to the extension specification has landed, so implementation of this can proceed. Thanks James for taking this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684312</commentid>
    <comment_count>2</comment_count>
      <attachid>407639</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-08-31 17:07:15 -0700</bug_when>
    <thetext>Created attachment 407639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684313</commentid>
    <comment_count>3</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-08-31 17:08:02 -0700</bug_when>
    <thetext>Working on a test in https://github.com/KhronosGroup/WebGL/pull/3147, will add to this patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684314</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-08-31 17:08:09 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See http://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684535</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-09-01 10:40:11 -0700</bug_when>
    <thetext>Looks like webgl/2.0.0/conformance2/extensions/promoted-extensions.html needs to be updated here and upstream as well. Could you please put up another pull request on KhronosGroup/WebGL for that? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684537</commentid>
    <comment_count>6</comment_count>
      <attachid>407639</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-09-01 10:41:02 -0700</bug_when>
    <thetext>Comment on attachment 407639
Patch

The code changes look fine. Will wait to r+ until the new tests are uploaded. Thanks again for fixing (and testing) this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686425</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-07 12:48:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/68472384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687592</commentid>
    <comment_count>8</comment_count>
      <attachid>408496</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-09-10 16:34:23 -0700</bug_when>
    <thetext>Created attachment 408496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687593</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-09-10 16:35:17 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687594</commentid>
    <comment_count>10</comment_count>
      <attachid>408496</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-09-10 16:37:31 -0700</bug_when>
    <thetext>Comment on attachment 408496
Patch

Test added. Still working on the upstream test as there are issues with the WebGL 1 version. We can commit this version to test the new WebGL 2 functionality and I will update the test later when the WebGL 1 version is finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687780</commentid>
    <comment_count>11</comment_count>
      <attachid>408496</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-09-11 11:59:59 -0700</bug_when>
    <thetext>Comment on attachment 408496
Patch

Looks great! Nice work on the thorough test. In the WebKit bug, could you please link to an ANGLE bug in which those changes will be upstreamed, and make sure the conformance test changes are also upstreamed? Thanks! r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687823</commentid>
    <comment_count>12</comment_count>
      <attachid>408496</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-09-11 15:20:11 -0700</bug_when>
    <thetext>Comment on attachment 408496
Patch

I filed an ANGLE bug for this here: https://bugs.chromium.org/p/angleproject/issues/detail?id=5038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687826</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-11 15:24:35 -0700</bug_when>
    <thetext>Committed r266953: &lt;https://trac.webkit.org/changeset/266953&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408496.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407639</attachid>
            <date>2020-08-31 17:07:15 -0700</date>
            <delta_ts>2020-09-10 16:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216010-20200831170714.patch</filename>
            <type>text/plain</type>
            <size>6395</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYWNhN2MxNzA1MzVhODM5NDYzMWQ0YzRlMDVkMzdlOTY5ZTE3NzViMS4uMzMzYWZlYWNkNjk5
YmY3ZjE2NmI4ZThjMDJlNDZiMzM1YzZmNzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTMxICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGlu
aWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViR0wyXSBTdXBwb3J0IEVYVF9jb2xvcl9i
dWZmZXJfaGFsZl9mbG9hdCBvbiBXZWJHTCAyLjAgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcDoKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHVGV4dHVyZUF0dGFjaG1lbnRTdXBw
b3J0KToKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHQlRleHR1cmVBdHRhY2htZW50U3Vw
cG9ydCk6CisgICAgICAgIChnbDo6U2l6ZWRIYWxmRmxvYXRSR0JSZW5kZXJidWZmZXJTdXBwb3J0
KToKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHQkFUZXh0dXJlQXR0YWNobWVudFN1cHBv
cnQpOgorCiAyMDIwLTA4LTMxICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNf
c3JnYiBleHRlbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYTNhNzM1OGY2YmExZTczMzc2NjNhNjU5MTNh
NjU5ODNmZjEyZTRmLi42NGExMGEyMmU3NzYzOTkyYmNjYjg0YzE5MTA4OWFiYTVmNjlmMmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDgtMzEgIEphbWVzIERhcnBpbmlhbiAg
PGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJHTDJdIFN1cHBvcnQgRVhU
X2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IG9uIFdlYkdMIDIuMCBjb250ZXh0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MDEwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VJbXBsKToKKwogMjAyMC0wOC0zMSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBjb21wdXRpbmcgbWV0YWRhdGEg
Zm9yIGlkZW1wb3RlbnQgdGV4dCBhdXRvc2l6aW5nIG9uIG1hY09TCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAppbmRleCA4MzE0
ZjhjZmJlZWM0MjRhY2NjNWNlN2QzYjVmNGI2MzMyMTMyNDY4Li4yOTZkN2E5MGUyYjBkMWZhMTU0
NGY1MGVjZWVmNTllYzkwOWU5ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0
aWMgYm9vbCBTaXplZEhhbGZGbG9hdFJHVGV4dHVyZUF0dGFjaG1lbnRTdXBwb3J0KGNvbnN0IFZl
cnNpb24gJmNsaWVudFZlcnNpbwogICAgIC8vIEhBTEZfRkxPQVQKICAgICBpZiAoY2xpZW50VmVy
c2lvbiA+PSBWZXJzaW9uKDMsIDApKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMu
Y29sb3JCdWZmZXJGbG9hdDsKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMuY29sb3JCdWZmZXJG
bG9hdCB8fCAoZXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxpdHkgJiYgZXh0ZW5zaW9ucy5jb2xv
ckJ1ZmZlckhhbGZGbG9hdCk7CiAgICAgfQogICAgIC8vIEhBTEZfRkxPQVRfT0VTCiAgICAgZWxz
ZQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBib29sIFNpemVkSGFsZkZsb2F0UkdCVGV4dHVy
ZUF0dGFjaG1lbnRTdXBwb3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpCiAgICAgICAgIC8v
IEl0IGlzIHVuY2xlYXIgaG93IEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBhcHBsaWVzIHRv
IEVTMy4wIGFuZCBhYm92ZSwgaG93ZXZlciwKICAgICAgICAgLy8gZEVRUCBHTEVTMyBlczNmRmJv
Q29sb3JidWZmZXJUZXN0cy5jcHAgdmVyaWZpZXMgdGhhdCB0ZXh0dXJlIGF0dGFjaG1lbnQgb2Yg
R0xfUkdCMTZGCiAgICAgICAgIC8vIGlzIHBvc3NpYmxlLCBzbyBhc3N1bWUgdGhhdCBhbGwgR0xF
UyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydCBpdC4KLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMu
Y29sb3JCdWZmZXJIYWxmRmxvYXQ7CisgICAgICAgIHJldHVybiBleHRlbnNpb25zLmNvbG9yQnVm
ZmVySGFsZkZsb2F0ICYmICFleHRlbnNpb25zLndlYmdsQ29tcGF0aWJpbGl0eTsKICAgICB9CiAg
ICAgLy8gSEFMRl9GTE9BVF9PRVMKICAgICBlbHNlCkBAIC0yNjUsOCArMjY1LDggQEAgc3RhdGlj
IGJvb2wgU2l6ZWRIYWxmRmxvYXRSR0JUZXh0dXJlQXR0YWNobWVudFN1cHBvcnQoY29uc3QgVmVy
c2lvbiAmY2xpZW50VmVyc2kKIHN0YXRpYyBib29sIFNpemVkSGFsZkZsb2F0UkdCUmVuZGVyYnVm
ZmVyU3VwcG9ydChjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVu
c2lvbnMpCiB7Ci0gICAgcmV0dXJuIChjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMCkgfHwg
ZXh0ZW5zaW9ucy50ZXh0dXJlSGFsZkZsb2F0KSAmJgotICAgICAgICAgICBleHRlbnNpb25zLmNv
bG9yQnVmZmVySGFsZkZsb2F0OworICAgIHJldHVybiAhZXh0ZW5zaW9ucy53ZWJnbENvbXBhdGli
aWxpdHkgJiYgKChjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMCkgfHwgZXh0ZW5zaW9ucy50
ZXh0dXJlSGFsZkZsb2F0KSAmJgorICAgICAgICAgICBleHRlbnNpb25zLmNvbG9yQnVmZmVySGFs
ZkZsb2F0KTsKIH0KIAogc3RhdGljIGJvb2wgU2l6ZWRIYWxmRmxvYXRSR0JBVGV4dHVyZUF0dGFj
aG1lbnRTdXBwb3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCkBAIC0yNzUsNyArMjc1
LDcgQEAgc3RhdGljIGJvb2wgU2l6ZWRIYWxmRmxvYXRSR0JBVGV4dHVyZUF0dGFjaG1lbnRTdXBw
b3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnMKICAgICAvLyBIQUxGX0ZMT0FUCiAgICAgaWYg
KGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbigzLCAwKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBl
eHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQ7CisgICAgICAgIHJldHVybiBleHRlbnNpb25zLmNv
bG9yQnVmZmVyRmxvYXQgfHwgKGV4dGVuc2lvbnMud2ViZ2xDb21wYXRpYmlsaXR5ICYmIGV4dGVu
c2lvbnMuY29sb3JCdWZmZXJIYWxmRmxvYXQpOwogICAgIH0KICAgICAvLyBIQUxGX0ZMT0FUX09F
UwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMGUxNmU5NjRmMTgyNDBkNjJkMzFhODA2OWRlODBl
ODg5MzA4NjQwZi4uZGJkZjI0MDMyYjlkM2JhZDU2NGNiOTA1NzIzZTA2YjdkYzY3NGYyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAj
aW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgorI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVy
SGFsZkZsb2F0LmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAj
aW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCkBAIC0yNjg4
LDYgKzI2ODksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdl
YkdMRGVidWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbywgIldFQkdMX2Rl
YnVnX3JlbmRlcmVyX2luZm8iLCB0cnVlKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
RGVidWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xfZGVidWdfc2hhZGVycyIs
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVm
ZmVyRmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQi
LCBFWFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZs
b2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQ6OnN1cHBvcnRlZCgqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yNzMy
LDYgKzI3MzQsOCBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
ZGVidWdfcmVuZGVyZXJfaW5mbyJfcyk7CiAgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1
cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9jb2xvcl9idWZmZXJf
ZmxvYXQiX3MpOworICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0
aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
Il9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yOTYxLDYgKzI5NjUsMTIgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlIxNkY6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkcxNkY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UkdCQTE2RjoKKyAgICAgICAgaWYgKCFleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9jb2xv
cl9idWZmZXJfZmxvYXQiX3MpICYmICFleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9jb2xvcl9idWZm
ZXJfaGFsZl9mbG9hdCJfcykpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgIkVYVF9jb2xvcl9idWZm
ZXJfZmxvYXQgb3IgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IG5vdCBlbmFibGVkIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFn
ZUhlbHBlcih0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UjMyRjoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpSRzMyRjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpSR0JBMzJGOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408496</attachid>
            <date>2020-09-10 16:34:23 -0700</date>
            <delta_ts>2020-09-11 15:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216010-20200910163423.patch</filename>
            <type>text/plain</type>
            <size>34758</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNmY0MzJmNTZjODU3NTlkODRhZDI5MzM0MDA3YTNhMWFhNWRlMWNkMi4uZWVkZTJjNzEwNWU4
ZGQ5YWVlOGI3YmY1MDkxOTIyZDU3MDVkNzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTEwICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGlu
aWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViR0wyXSBTdXBwb3J0IEVYVF9jb2xvcl9i
dWZmZXJfaGFsZl9mbG9hdCBvbiBXZWJHTCAyLjAgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcDoKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHVGV4dHVyZUF0dGFjaG1lbnRTdXBw
b3J0KToKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHQlRleHR1cmVBdHRhY2htZW50U3Vw
cG9ydCk6CisgICAgICAgIChnbDo6U2l6ZWRIYWxmRmxvYXRSR0JSZW5kZXJidWZmZXJTdXBwb3J0
KToKKyAgICAgICAgKGdsOjpTaXplZEhhbGZGbG9hdFJHQkFUZXh0dXJlQXR0YWNobWVudFN1cHBv
cnQpOgorCiAyMDIwLTA5LTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFyayB1bmlmb3JtIHNhbXBsZXJzIGluIGFuIGFycmF5IHVudXNlZCBwZXIg
ZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzZTA3MTY2ZTk5MmU1YmE1NTQxMzA4ZGQ5NTc1NjY3YTc1
OGE2YjEuLjEzMmI2MWY0NGU3NGRhZDNhNzVmOTE1NDlhNmUzYjkyN2FmMzVmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wOS0xMCAgSmFtZXMgRGFycGluaWFuICA8amRhcnBp
bmlhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYkdMMl0gU3VwcG9ydCBFWFRfY29sb3Jf
YnVmZmVyX2hhbGZfZmxvYXQgb24gV2ViR0wgMi4wIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYwMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC5odG1sCisK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2VJbXBsKToKKwogMjAyMC0wOS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBwcmVjaXNpb24gaXNzdWVzIGluIEF1ZGlvUGFyYW1UaW1l
bGluZSB3aGVuIGV2ZW50IHRpbWVzIGFyZSB2ZXJ5IGNsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAppbmRleCBmMmRhMmZi
MmVjMjBhNzJjNDY2ODRmNGZiZDhkNDA4ZWNlM2Q3MGVhLi5lNDM0OTZmYzM0NzE5M2E5ZjFjYmMx
MWZiZjZlNGRmZjljOTJlMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMg
Ym9vbCBTaXplZEhhbGZGbG9hdFJHVGV4dHVyZUF0dGFjaG1lbnRTdXBwb3J0KGNvbnN0IFZlcnNp
b24gJmNsaWVudFZlcnNpbwogICAgIC8vIEhBTEZfRkxPQVQKICAgICBpZiAoY2xpZW50VmVyc2lv
biA+PSBWZXJzaW9uKDMsIDApKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMuY29s
b3JCdWZmZXJGbG9hdDsKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9h
dCB8fCAoZXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxpdHkgJiYgZXh0ZW5zaW9ucy5jb2xvckJ1
ZmZlckhhbGZGbG9hdCk7CiAgICAgfQogICAgIC8vIEhBTEZfRkxPQVRfT0VTCiAgICAgZWxzZQpA
QCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBib29sIFNpemVkSGFsZkZsb2F0UkdCVGV4dHVyZUF0
dGFjaG1lbnRTdXBwb3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpCiAgICAgICAgIC8vIEl0
IGlzIHVuY2xlYXIgaG93IEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBhcHBsaWVzIHRvIEVT
My4wIGFuZCBhYm92ZSwgaG93ZXZlciwKICAgICAgICAgLy8gZEVRUCBHTEVTMyBlczNmRmJvQ29s
b3JidWZmZXJUZXN0cy5jcHAgdmVyaWZpZXMgdGhhdCB0ZXh0dXJlIGF0dGFjaG1lbnQgb2YgR0xf
UkdCMTZGCiAgICAgICAgIC8vIGlzIHBvc3NpYmxlLCBzbyBhc3N1bWUgdGhhdCBhbGwgR0xFUyBp
bXBsZW1lbnRhdGlvbnMgc3VwcG9ydCBpdC4KLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMuY29s
b3JCdWZmZXJIYWxmRmxvYXQ7CisgICAgICAgIHJldHVybiBleHRlbnNpb25zLmNvbG9yQnVmZmVy
SGFsZkZsb2F0ICYmICFleHRlbnNpb25zLndlYmdsQ29tcGF0aWJpbGl0eTsKICAgICB9CiAgICAg
Ly8gSEFMRl9GTE9BVF9PRVMKICAgICBlbHNlCkBAIC0yNjUsOCArMjY1LDggQEAgc3RhdGljIGJv
b2wgU2l6ZWRIYWxmRmxvYXRSR0JUZXh0dXJlQXR0YWNobWVudFN1cHBvcnQoY29uc3QgVmVyc2lv
biAmY2xpZW50VmVyc2kKIHN0YXRpYyBib29sIFNpemVkSGFsZkZsb2F0UkdCUmVuZGVyYnVmZmVy
U3VwcG9ydChjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lv
bnMpCiB7Ci0gICAgcmV0dXJuIChjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMCkgfHwgZXh0
ZW5zaW9ucy50ZXh0dXJlSGFsZkZsb2F0KSAmJgotICAgICAgICAgICBleHRlbnNpb25zLmNvbG9y
QnVmZmVySGFsZkZsb2F0OworICAgIHJldHVybiAhZXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxp
dHkgJiYgKChjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMCkgfHwgZXh0ZW5zaW9ucy50ZXh0
dXJlSGFsZkZsb2F0KSAmJgorICAgICAgICAgICBleHRlbnNpb25zLmNvbG9yQnVmZmVySGFsZkZs
b2F0KTsKIH0KIAogc3RhdGljIGJvb2wgU2l6ZWRIYWxmRmxvYXRSR0JBVGV4dHVyZUF0dGFjaG1l
bnRTdXBwb3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCkBAIC0yNzUsNyArMjc1LDcg
QEAgc3RhdGljIGJvb2wgU2l6ZWRIYWxmRmxvYXRSR0JBVGV4dHVyZUF0dGFjaG1lbnRTdXBwb3J0
KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnMKICAgICAvLyBIQUxGX0ZMT0FUCiAgICAgaWYgKGNs
aWVudFZlcnNpb24gPj0gVmVyc2lvbigzLCAwKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBleHRl
bnNpb25zLmNvbG9yQnVmZmVyRmxvYXQ7CisgICAgICAgIHJldHVybiBleHRlbnNpb25zLmNvbG9y
QnVmZmVyRmxvYXQgfHwgKGV4dGVuc2lvbnMud2ViZ2xDb21wYXRpYmlsaXR5ICYmIGV4dGVuc2lv
bnMuY29sb3JCdWZmZXJIYWxmRmxvYXQpOwogICAgIH0KICAgICAvLyBIQUxGX0ZMT0FUX09FUwog
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMGUxNmU5NjRmMTgyNDBkNjJkMzFhODA2OWRlODBlODg5
MzA4NjQwZi4uZGJkZjI0MDMyYjlkM2JhZDU2NGNiOTA1NzIzZTA2YjdkYzY3NGYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgorI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVySGFs
ZkZsb2F0LmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5j
bHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCkBAIC0yNjg4LDYg
KzI2ODksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdM
RGVidWdSZW5kZXJlckluZm8sIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbywgIldFQkdMX2RlYnVn
X3JlbmRlcmVyX2luZm8iLCB0cnVlKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMRGVi
dWdTaGFkZXJzLCBtX3dlYmdsRGVidWdTaGFkZXJzLCAiV0VCR0xfZGVidWdfc2hhZGVycyIsIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVy
RmxvYXQsIG1fZXh0Q29sb3JCdWZmZXJGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiLCBF
WFRDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVR
VUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0
LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6
OnN1cHBvcnRlZCgqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yNzMyLDYg
KzI3MzQsOCBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVi
dWdfcmVuZGVyZXJfaW5mbyJfcyk7CiAgICAgaWYgKEVYVENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9jb2xvcl9idWZmZXJfZmxv
YXQiX3MpOworICAgIGlmIChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlz
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9z
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yOTYxLDYgKzI5NjUsMTIgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlSW1wbChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlIxNkY6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UkcxNkY6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6UkdCQTE2RjoKKyAgICAgICAgaWYgKCFleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9jb2xvcl9i
dWZmZXJfZmxvYXQiX3MpICYmICFleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCJfcykpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgIkVYVF9jb2xvcl9idWZmZXJf
ZmxvYXQgb3IgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IG5vdCBlbmFibGVkIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZUhl
bHBlcih0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6UjMyRjoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpSRzMyRjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpS
R0JBMzJGOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDA2ODc3YjgyZTE5YjYzY2Y4ZGE3ZmFkNmU0ZWJhYzJlZTcyNGVjMDAu
LjZkNGZiNzg1ZWMyOWQ1MzdlNTY1Y2EyMmNmNDZkN2EzYzEwMGNhMGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wOS0xMCAgSmFtZXMgRGFycGluaWFuICA8amRhcnBpbmlhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW1dlYkdMMl0gU3VwcG9ydCBFWFRfY29sb3JfYnVmZmVyX2hhbGZf
ZmxvYXQgb24gV2ViR0wgMi4wIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25z
L2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1jb2xvci1idWZmZXIt
aGFsZi1mbG9hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5j
ZTIvZXh0ZW5zaW9ucy9wcm9tb3RlZC1leHRlbnNpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWJnbC8yLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0
ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViZ2wvMi4wLjAvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4
dGVuc2lvbnMvcHJvbW90ZWQtZXh0ZW5zaW9ucy5odG1sOgorCiAyMDIwLTA5LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHByZWNpc2lvbiBpc3N1ZXMg
aW4gQXVkaW9QYXJhbVRpbWVsaW5lIHdoZW4gZXZlbnQgdGltZXMgYXJlIHZlcnkgY2xvc2UKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25z
L2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYt
ZmxvYXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYTZmOTVlNzBmZGY3NzE0MzU4MmJhMWQw
YWMwZDRiNDQwMzcxMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAu
MC9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3Qg
bGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rl
c3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNp
b25zL2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC5odG1sCitbIFBBU1MgXSBBbGwgdGVzdHMg
cGFzc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIv
ZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1jb2xvci1idWZmZXItaGFs
Zi1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMDg2ZGJmODJiMDIyOTk0YmU2N2MzZDQ2MDg3ZTk1
MjczZWNkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZTIvZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuaHRtbApAQCAt
MCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0
ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFu
Y2UgVGVzdCBXcmFwcGVyIGZvciBleHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuaHRtbDwvdGl0
bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVz
dCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+
CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZTIvZXh0ZW5zaW9ucy9leHQtY29sb3ItYnVmZmVyLWhhbGYtZmxvYXQuaHRtbCI+Li4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvZXh0LWNv
bG9yLWJ1ZmZlci1oYWxmLWZsb2F0Lmh0bWw8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFt
ZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRl
bnNpb25zL2V4dC1jb2xvci1idWZmZXItaGFsZi1mbG9hdC5odG1sIiB3aWR0aD0iODAwIiBoZWln
aHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZTIvZXh0ZW5zaW9ucy9wcm9tb3RlZC1leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3Byb21vdGVkLWV4dGVu
c2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDg3NDc1Mzk4ZTBhZThmMTdiNWU0MzRjMDJiMDMzMzY3
ZDc3Y2NmNWMuLjQ2NjNkZDk2YjFjMTY4NDAwMjIxNTc0ZDZhOWZhMTFmMDg3MjJmOTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3By
b21vdGVkLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3Byb21vdGVkLWV4dGVuc2lvbnMtZXhwZWN0ZWQu
dHh0CkBAIC01LDE3ICs1LDE2IEBAIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL3Byb21vdGVkLWV4dGVuc2lvCiBbIDE6IFBBU1Mg
XSBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIDIpIGlzIG5v
bi1udWxsLgogWyAyOiBQQVNTIF0gQU5HTEVfaW5zdGFuY2VkX2FycmF5cyB3YXMgbm90IGV4cG9z
ZWQgaW4gdGhlIFdlYkdMIDIuMCBjb250ZXh0CiBbIDM6IFBBU1MgXSBFWFRfYmxlbmRfbWlubWF4
IHdhcyBub3QgZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKLVsgNDogUEFTUyBdIEVY
VF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCB3YXMgbm90IGV4cG9zZWQgaW4gdGhlIFdlYkdMIDIu
MCBjb250ZXh0Ci1bIDU6IFBBU1MgXSBFWFRfZnJhZ19kZXB0aCB3YXMgbm90IGV4cG9zZWQgaW4g
dGhlIFdlYkdMIDIuMCBjb250ZXh0Ci1bIDY6IFBBU1MgXSBFWFRfc2hhZGVyX3RleHR1cmVfbG9k
IHdhcyBub3QgZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKLVsgNzogUEFTUyBdIEVY
VF9zUkdCIHdhcyBub3QgZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKLVsgODogUEFT
UyBdIE9FU19lbGVtZW50X2luZGV4X3VpbnQgd2FzIG5vdCBleHBvc2VkIGluIHRoZSBXZWJHTCAy
LjAgY29udGV4dAotWyA5OiBQQVNTIF0gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIHdhcyBub3Qg
ZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKLVsgMTA6IEZBSUwgXSBPRVNfdGV4dHVy
ZV9mbG9hdCB3YXMgZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQgYnV0IHNob3VsZCBu
b3QgaGF2ZSBiZWVuCi1bIDExOiBGQUlMIF0gT0VTX3RleHR1cmVfaGFsZl9mbG9hdCB3YXMgZXhw
b3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQgYnV0IHNob3VsZCBub3QgaGF2ZSBiZWVuCi1b
IDEyOiBGQUlMIF0gT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgd2FzIGV4cG9zZWQgaW4g
dGhlIFdlYkdMIDIuMCBjb250ZXh0IGJ1dCBzaG91bGQgbm90IGhhdmUgYmVlbgotWyAxMzogUEFT
UyBdIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IHdhcyBub3QgZXhwb3NlZCBpbiB0aGUgV2ViR0wg
Mi4wIGNvbnRleHQKLVsgMTQ6IEZBSUwgXSBXRUJHTF9kZXB0aF90ZXh0dXJlIHdhcyBleHBvc2Vk
IGluIHRoZSBXZWJHTCAyLjAgY29udGV4dCBidXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4KLVsgMTU6
IFBBU1MgXSBXRUJHTF9kcmF3X2J1ZmZlcnMgd2FzIG5vdCBleHBvc2VkIGluIHRoZSBXZWJHTCAy
LjAgY29udGV4dAotWyAxNjogUEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitbIDQ6
IFBBU1MgXSBFWFRfZnJhZ19kZXB0aCB3YXMgbm90IGV4cG9zZWQgaW4gdGhlIFdlYkdMIDIuMCBj
b250ZXh0CitbIDU6IFBBU1MgXSBFWFRfc2hhZGVyX3RleHR1cmVfbG9kIHdhcyBub3QgZXhwb3Nl
ZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKK1sgNjogUEFTUyBdIEVYVF9zUkdCIHdhcyBub3Qg
ZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNvbnRleHQKK1sgNzogUEFTUyBdIE9FU19lbGVtZW50
X2luZGV4X3VpbnQgd2FzIG5vdCBleHBvc2VkIGluIHRoZSBXZWJHTCAyLjAgY29udGV4dAorWyA4
OiBQQVNTIF0gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIHdhcyBub3QgZXhwb3NlZCBpbiB0aGUg
V2ViR0wgMi4wIGNvbnRleHQKK1sgOTogRkFJTCBdIE9FU190ZXh0dXJlX2Zsb2F0IHdhcyBleHBv
c2VkIGluIHRoZSBXZWJHTCAyLjAgY29udGV4dCBidXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4KK1sg
MTA6IEZBSUwgXSBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IHdhcyBleHBvc2VkIGluIHRoZSBXZWJH
TCAyLjAgY29udGV4dCBidXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4KK1sgMTE6IEZBSUwgXSBPRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciB3YXMgZXhwb3NlZCBpbiB0aGUgV2ViR0wgMi4wIGNv
bnRleHQgYnV0IHNob3VsZCBub3QgaGF2ZSBiZWVuCitbIDEyOiBQQVNTIF0gT0VTX3ZlcnRleF9h
cnJheV9vYmplY3Qgd2FzIG5vdCBleHBvc2VkIGluIHRoZSBXZWJHTCAyLjAgY29udGV4dAorWyAx
MzogRkFJTCBdIFdFQkdMX2RlcHRoX3RleHR1cmUgd2FzIGV4cG9zZWQgaW4gdGhlIFdlYkdMIDIu
MCBjb250ZXh0IGJ1dCBzaG91bGQgbm90IGhhdmUgYmVlbgorWyAxNDogUEFTUyBdIFdFQkdMX2Ry
YXdfYnVmZmVycyB3YXMgbm90IGV4cG9zZWQgaW4gdGhlIFdlYkdMIDIuMCBjb250ZXh0CitbIDE1
OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIFsgRkFJTCBdIDQgZmFpbHVyZXMg
cmVwb3J0ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1jb2xvci1idWZmZXIt
aGFsZi1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvZXh0LWNvbG9yLWJ1ZmZlci1oYWxm
LWZsb2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2MTVkYTY1OTM1YWYwNjBmMDQyMDlhODg5NTgzNjgx
NTljMmQ2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL2V4dC1jb2xvci1i
dWZmZXItaGFsZi1mbG9hdC5odG1sCkBAIC0wLDAgKzEsNTA4IEBACis8IS0tCitDb3B5cmlnaHQg
KGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGlu
IHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBFWFRfY29sb3JfYnVm
ZmVyX2hhbGZfZmxvYXQgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9
IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwhLS0gU2hhZGVycyBmb3IgdGVzdGluZyBmbG9hdGluZy1wb2ludCB0ZXh0dXJl
cyAtLT4KKzxzY3JpcHQgaWQ9InRlc3RGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHRl
eDsKK3VuaWZvcm0gdmVjNCBzdWJ0cmFjdG9yOwordmFyeWluZyB2ZWMyIHRleENvb3JkOwordm9p
ZCBtYWluKCkKK3sKKyAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpOwor
ICAgIGlmIChhYnMoY29sb3IuciAtIHN1YnRyYWN0b3IucikgKworICAgICAgICBhYnMoY29sb3Iu
ZyAtIHN1YnRyYWN0b3IuZykgKworICAgICAgICBhYnMoY29sb3IuYiAtIHN1YnRyYWN0b3IuYikg
KworICAgICAgICBhYnMoY29sb3IuYSAtIHN1YnRyYWN0b3IuYSkgPCAxNi4wKSB7CisgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRpbmctcG9pbnQgcmVu
ZGVyIHRhcmdldHMgLS0+Cis8c2NyaXB0IGlkPSJmbG9hdGluZ1BvaW50RnJhZ21lbnRTaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEwMDAuMCwgMTAwMC4wLCAxMDAwLjAsIDEwMDAuMCk7Cit9Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFsbG9jYXRlVGV4dHVyZSgp
Cit7CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRleHR1cmUgcGFyYW1ldGVyIHNldHVwIHNob3Vs
ZCBzdWNjZWVkIik7CisgICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUmVu
ZGVyaW5nUmVzdWx0cygpCit7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMjU1LCAwLCAy
NTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK2Z1bmN0aW9uIGFycmF5VG9TdHJpbmcoYXJy
LCBzaXplKSB7CisgICAgdmFyIG15U2l6ZTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIG15U2l6
ZSA9IGFyci5sZW5ndGg7CisgICAgZWxzZQorICAgICAgICBteVNpemUgPSBzaXplOworICAgIHZh
ciBvdXQgPSAiWyI7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IG15U2l6ZTsgKytpaSkgewor
ICAgIGlmIChpaSA+IDApIHsKKyAgICAgICAgb3V0ICs9ICIsICI7CisgICAgfQorICAgIG91dCAr
PSBhcnJbaWldOworICAgIH0KKyAgICByZXR1cm4gb3V0ICsgIl0iOworfQorCitmdW5jdGlvbiBy
dW5SZWFkYmFja1Rlc3QodGVzdFByb2dyYW0sIHN1YnRyYWN0b3IpCit7CisgICAgLy8gVmVyaWZ5
IGZsb2F0aW5nIHBvaW50IHJlYWRiYWNrCisgICAgZGVidWcoIkNoZWNraW5nIHJlYWRiYWNrIG9m
IGZsb2F0aW5nLXBvaW50IHZhbHVlcyIpOworICAgIHZhciBidWYgPSBuZXcgRmxvYXQzMkFycmF5
KDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuRkxPQVQgLCBi
dWYpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZFBpeGVs
cyBmcm9tIGZsb2F0aW5nLXBvaW50IGZyYW1lYnVmZmVyIHNob3VsZCBzdWNjZWVkIik7CisgICAg
dmFyIG9rID0gdHJ1ZTsKKyAgICB2YXIgdG9sZXJhbmNlID0gOC4wOyAvLyBUT0RPOiBmYWN0b3Ig
dGhpcyBvdXQgZnJvbSBib3RoIHRoaXMgdGVzdCBhbmQgdGhlIHN1YnRyYWN0b3Igc2hhZGVyIGFi
b3ZlLgorICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBidWYubGVuZ3RoOyArK2lpKSB7CisgICAg
ICAgIGlmIChNYXRoLmFicyhidWZbaWldIC0gc3VidHJhY3RvcltpaV0pID4gdG9sZXJhbmNlKSB7
CisgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIGlmIChvaykgeworICAgICAgICB0ZXN0UGFzc2VkKCJyZWFkUGl4ZWxzIG9mIGZsb2F0LXR5
cGUgZGF0YSBmcm9tIGZsb2F0aW5nLXBvaW50IGZyYW1lYnVmZmVyIHN1Y2NlZWRlZCIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRQaXhlbHMgb2YgZmxvYXQtdHlwZSBk
YXRhIGZyb20gZmxvYXRpbmctcG9pbnQgZnJhbWVidWZmZXIgZmFpbGVkOiBleHBlY3RlZCAiCisg
ICAgICAgICAgICAgICAgICAgKyBhcnJheVRvU3RyaW5nKHN1YnRyYWN0b3IsIDQpICsgIiwgZ290
ICIgKyBhcnJheVRvU3RyaW5nKGJ1ZikpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuRmxvYXRU
ZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChlbmFibGVkLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0
ZXN0UHJvZ3JhbSwgbnVtYmVyT2ZDaGFubmVscywgc3VidHJhY3RvciwgdGV4U3ViSW1hZ2VDb3Zl
cikKK3sKKyAgICB2YXIgZm9ybWF0U3RyaW5nID0gd3R1LmdsRW51bVRvU3RyaW5nKGdsLCBpbnRl
cm5hbEZvcm1hdCk7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIGZsb2F0aW5n
LXBvaW50ICIgKyBmb3JtYXRTdHJpbmcgKyAiIHRleHR1cmUgcmVuZGVyIHRhcmdldCIgKyAodGV4
U3ViSW1hZ2VDb3ZlciA+IDAgPyAiIGFmdGVyIGNhbGxpbmcgdGV4U3ViSW1hZ2UiIDogIiIpKTsK
KworICAgIHZhciB0ZXh0dXJlID0gYWxsb2NhdGVUZXh0dXJlKCk7CisgICAgdmFyIHdpZHRoID0g
MjsKKyAgICB2YXIgaGVpZ2h0ID0gMjsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIGdsLkZMT0FULCBu
dWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZsb2F0aW5n
LXBvaW50IHRleHR1cmUgYWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCIpOworCisgICAgLy8gVHJ5
IHRvIHVzZSB0aGlzIHRleHR1cmUgYXMgYSByZW5kZXIgdGFyZ2V0LgorICAgIHZhciBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOworICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgdmFyIGNvbXBsZXRlU3Rh
dHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7CisgICAgaWYg
KCFlbmFibGVkKSB7CisgICAgICAgIGlmIChjb21wbGV0ZVN0YXR1cyA9PSBnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURSAmJiAhZW5hYmxlZCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImZsb2F0aW5n
LXBvaW50ICIgKyBmb3JtYXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBz
dXBwb3J0ZWQgd2l0aG91dCBlbmFibGluZyBFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiZmxvYXRpbmctcG9pbnQgIiAr
IGZvcm1hdFN0cmluZyArICIgcmVuZGVyIHRhcmdldCBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCB3
aXRob3V0IGVuYWJsaW5nIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbXBsZXRlU3RhdHVzICE9IGdsLkZSQU1FQlVGRkVS
X0NPTVBMRVRFKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImZsb2F0aW5nLXBvaW50ICIgKyBmb3Jt
YXRTdHJpbmcgKyAiIHJlbmRlciB0YXJnZXQgbm90IHN1cHBvcnRlZCIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHRleFN1YkltYWdlQ292ZXIgPiAwKSB7CisgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHJlcGxhY2luZyB0aGUgd2hvbGUgdGV4dHVyZSBvciBhIHBhcnQgb2YgaXQg
d2l0aCB0ZXhTdWJJbWFnZTJEIGRvZXNuJ3QgYWZmZWN0IHJlbmRlcmFiaWxpdHkKKyAgICAgICAg
Z2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgIHZhciBkYXRh
ID0gbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAqIG51bWJlck9mQ2hhbm5lbHMgKiB0
ZXhTdWJJbWFnZUNvdmVyKTsKKyAgICAgICAgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICogdGV4U3ViSW1hZ2VDb3ZlciwgZm9ybWF0LCBnbC5G
TE9BVCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9S
LCAidGV4U3ViSW1hZ2UyRCBzaG91bGQgc3VjY2VlZCBpZiBFWFRfY29sb3JfYnVmZmVyX2hhbGZf
ZmxvYXQgaXMgZW5hYmxlZCIpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCBudWxsKTsKKyAgICAgICAgaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJyZW5kZXIgdGFyZ2V0IHN1cHBvcnQgY2hhbmdlZCBhZnRlciBjYWxsaW5nIHRleFN1Yklt
YWdlMkQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZh
ciByZW5kZXJQcm9ncmFtID0KKyAgICAgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBbd3R1LnNpbXBsZVZlcnRleFNoYWRlciwgImZsb2F0aW5nUG9pbnRG
cmFnbWVudFNoYWRlciJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndlBvc2l0aW9uJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgWzBdKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5p
dFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVu
ZGVyaW5nIHRvIGZsb2F0aW5nLXBvaW50IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQiKTsKKworICAg
IC8vIE5vdyBzYW1wbGUgZnJvbSB0aGUgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBhbmQgdmVyaWZ5
IHdlIGdvdCB0aGUgY29ycmVjdCB2YWx1ZXMuCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0
dXJlKTsKKyAgICBnbC51c2VQcm9ncmFtKHRlc3RQcm9ncmFtKTsKKyAgICBnbC51bmlmb3JtMWko
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAidGV4IiksIDApOworICAgIGdsLnVu
aWZvcm00ZnYoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAic3VidHJhY3RvciIp
LCBzdWJ0cmFjdG9yKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVuZGVyaW5nIGZyb20gZmxvYXRp
bmctcG9pbnQgdGV4dHVyZSBzaG91bGQgc3VjY2VlZCIpOworICAgIGNoZWNrUmVuZGVyaW5nUmVz
dWx0cygpOworCisgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwor
ICAgIHJ1blJlYWRiYWNrVGVzdCh0ZXN0UHJvZ3JhbSwgc3VidHJhY3Rvcik7Cit9CisKK2Z1bmN0
aW9uIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChlbmFibGVkLCBpbnRlcm5h
bEZvcm1hdCwgdGVzdFByb2dyYW0sIG51bWJlck9mQ2hhbm5lbHMsIHN1YnRyYWN0b3IpCit7Cisg
ICAgdmFyIGZvcm1hdFN0cmluZyA9IHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgaW50ZXJuYWxGb3Jt
YXQpOworICAgIHZhciBzYW1wbGVzID0gWzBdOworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAg
IHNhbXBsZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChnbC5nZXRJbnRlcm5hbGZvcm1h
dFBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGludGVybmFsRm9ybWF0LCBnbC5TQU1QTEVTKSk7
CisgICAgICAgIHNhbXBsZXMucHVzaCgwKTsKKyAgICB9CisgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgc2FtcGxlcy5sZW5ndGg7ICsrbmR4KSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgZGVidWcoInRlc3RpbmcgZmxvYXRpbmctcG9pbnQgIiArIGZvcm1hdFN0cmluZyArICIgcmVu
ZGVyYnVmZmVyIHJlbmRlciB0YXJnZXQgd2l0aCBudW1iZXIgb2Ygc2FtcGxlcyAiICsgc2FtcGxl
c1tuZHhdKTsKKworICAgICAgICB2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKKyAgICAgICAgdmFyIHdpZHRoID0gMjsKKyAgICAgICAgdmFyIGhlaWdodCA9IDI7Cisg
ICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7
CisgICAgICAgIGlmIChzYW1wbGVzW25keF0gPT0gMCkKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShnbC5SRU5ERVJCVUZGRVIsIHNhbXBsZXNbbmR4XSwgaW50ZXJuYWxGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImZsb2F0aW5nLXBvaW50IHJlbmRl
cmJ1ZmZlciBhbGxvY2F0aW9uIHNob3VsZCBmYWlsIGlmIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9m
bG9hdCBpcyBub3QgZW5hYmxlZCBvciB0aGlzIGlzIGEgMzIgYml0IGZvcm1hdCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJmbG9hdGluZy1wb2ludCByZW5kZXJidWZmZXIgYWxs
b2NhdGlvbiBzaG91bGQgc3VjY2VlZCBpZiBFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQgaXMg
ZW5hYmxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVHJ5IHRvIHVzZSB0aGlzIHJlbmRl
cmJ1ZmZlciBhcyBhIHJlbmRlciB0YXJnZXQuCisgICAgICAgIHZhciBmYm8gPSBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIs
IGZibyk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7CisK
KyAgICAgICAgdmFyIGNvbXBsZXRlU3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUik7CisgICAgICAgIGlmIChjb21wbGV0ZVN0YXR1cyAhPSBnbC5GUkFNRUJV
RkZFUl9DT01QTEVURSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZmxvYXRpbmctcG9pbnQg
IiArIGZvcm1hdFN0cmluZyArICIgcmVuZGVyIHRhcmdldCBub3Qgc3VwcG9ydGVkIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIHJlc29sdmVDb2xvclJibyA9
IG51bGw7CisgICAgICAgIHZhciByZXNvbHZlRmJvID0gbnVsbDsKKyAgICAgICAgaWYgKHNhbXBs
ZXNbbmR4XSA+IDApIHsKKyAgICAgICAgICAgIHJlc29sdmVDb2xvclJibyA9IGdsLmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJC
VUZGRVIsIHJlc29sdmVDb2xvclJibyk7CisgICAgICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9y
YWdlKGdsLlJFTkRFUkJVRkZFUiwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAg
ICAgICAgICAgcmVzb2x2ZUZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAg
ICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHJlc29sdmVGYm8pOworICAgICAg
ICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIHJlc29sdmVDb2xvclJibyk7CisgICAgICAg
ICAgICBjb21wbGV0ZVN0YXR1cyA9IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpOworICAgICAgICAgICAgaWYgKGNvbXBsZXRlU3RhdHVzICE9IGdsLkZSQU1FQlVGRkVS
X0NPTVBMRVRFKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIGNyZWF0
ZSByZXNvbHZlIGZyYW1lYnVmZmVyIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUiwgZmJvKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigxMDAwLjAsIDEwMDAuMCwgMTAwMC4w
LCAxMDAwLjApOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAg
ICAgICBpZiAoc2FtcGxlc1tuZHhdID4gMCkgeworICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkRSQVdfRlJBTUVCVUZGRVIsIHJlc29sdmVGYm8pOworICAgICAgICAgICAgZ2wuYmxp
dEZyYW1lYnVmZmVyKDAsIDAsIHdpZHRoLCBoZWlnaHQsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGds
LkNPTE9SX0JVRkZFUl9CSVQsIGdsLk5FQVJFU1QpOworICAgICAgICAgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLlJFQURfRlJBTUVCVUZGRVIsIHJlc29sdmVGYm8pOworICAgICAgICB9CisgICAg
ICAgIHJ1blJlYWRiYWNrVGVzdCh0ZXN0UHJvZ3JhbSwgc3VidHJhY3Rvcik7CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5SR0IxNkZOZWdhdGl2ZVRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygidGVzdGluZyBSR0IxNkYgaXNuJ3QgY29sb3IgcmVuZGVyYWJsZSIpOworCisgICAg
dmFyIHRleHR1cmUgPSBhbGxvY2F0ZVRleHR1cmUoKTsKKyAgICB2YXIgd2lkdGggPSAyOworICAg
IHZhciBoZWlnaHQgPSAyOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UkdCMTZGLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0IsIGdsLkZMT0FULCBudWxsKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlJHQjE2RiB0ZXh0dXJlIGFsbG9j
YXRpb24gc2hvdWxkIHN1Y2NlZWQiKTsKKworICAgIC8vIFRyeSB0byB1c2UgdGhpcyB0ZXh0dXJl
IGFzIGEgcmVuZGVyIHRhcmdldC4KKyAgICB2YXIgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIo
KTsKKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCBudWxsKTsKKworICAgIHZhciBjb21wbGV0ZVN0YXR1cyA9IGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpOworICAgIGlmIChjb21wbGV0ZVN0YXR1cyA9PSBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgdGVzdEZhaWxlZCgiUkdCMTZGIHJlbmRl
ciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgd2l0aCBvciB3aXRob3V0IGVuYWJsaW5n
IEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBh
c3NlZCgiUkdCMTZGIHJlbmRlciB0YXJnZXQgc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgd2l0aCBv
ciB3aXRob3V0IGVuYWJsaW5nIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4dHVyZSk7CisKKyAgICB2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKKyAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZF
UiwgY29sb3JidWZmZXIpOworICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SR0IxNkYsIHdpZHRoLCBoZWlnaHQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfRU5VTSwgIlJHQjE2RiByZW5kZXJidWZmZXIgYWxsb2NhdGlvbiBzaG91
bGQgZmFpbCB3aXRoIG9yIHdpdGhvdXQgZW5hYmxpbmcgRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zs
b2F0Iik7CisgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51bGwpOwor
ICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihjb2xvcmJ1ZmZlcik7CisKKyAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVy
KGZibyk7Cit9CisKK2Z1bmN0aW9uIHJ1blVuaXF1ZU9iamVjdFRlc3QoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0aGF0IGdldEV4dGVuc2lvbigpIHJldHVybnMgdGhl
IHNhbWUgb2JqZWN0IGVhY2ggdGltZSIpOworICAgIGdsLmdldEV4dGVuc2lvbigiRVhUX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0IikubXlQcm9wZXJ0eSA9IDI7CisgICAgd2ViZ2xIYXJuZXNzQ29s
bGVjdEdhcmJhZ2UoKTsKKyAgICBzaG91bGRCZSgnZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfY29sb3Jf
YnVmZmVyX2hhbGZfZmxvYXQiKS5teVByb3BlcnR5JywgJzInKTsKK30KKworZnVuY3Rpb24gcnVu
SW50ZXJuYWxGb3JtYXRRdWVyeVRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dGVzdGluZyB0aGUgaW50ZXJuYWwgZm9ybWF0IHF1ZXJ5Iik7CisKKyAgICB2YXIgbWF4U2FtcGxl
cyA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfU0FNUExFUyk7CisgICAgdmFyIGZvcm1hdHMgPSBu
ZXcgQXJyYXkoZ2wuUkdCQTE2RiwgZ2wuUjE2RiwgZ2wuUkcxNkYpOworICAgIHZhciBmaXJzdE11
bHRpT25seUZvcm1hdCA9IDQ7CisgICAgZm9yICh2YXIgZm10ID0gMDsgZm10IDwgZm9ybWF0cy5s
ZW5ndGg7ICsrZm10KSB7CisgICAgICAgIHZhciBzYW1wbGVzID0gZ2wuZ2V0SW50ZXJuYWxmb3Jt
YXRQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBmb3JtYXRzW2ZtdF0sIGdsLlNBTVBMRVMpOwor
ICAgICAgICBpZiAoZm10ID49IGZpcnN0TXVsdGlPbmx5Rm9ybWF0ICYmIChzYW1wbGVzLmxlbmd0
aCA9PSAwIHx8IHNhbXBsZXNbMF0gPCBtYXhTYW1wbGVzKSkgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgidGhlIG1heGltdW0gdmFsdWUgaW4gU0FNUExFUyBzaG91bGQgYmUgYXQgbGVhc3QgIiAr
IG1heFNhbXBsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIHByZXZTYW1wbGVDb3VudCA9IDA7CisgICAgICAgIHZhciBzYW1wbGVDb3VudDsKKyAgICAg
ICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgc2FtcGxlcy5sZW5ndGg7ICsrbmR4LCBwcmV2U2Ft
cGxlQ291bnQgPSBzYW1wbGVDb3VudCkgeworICAgICAgICAgICAgc2FtcGxlQ291bnQgPSBzYW1w
bGVzW25keF07CisgICAgICAgICAgICAvLyBzYW1wbGUgY291bnQgbXVzdCBiZSA+IDAKKyAgICAg
ICAgICAgIGlmIChzYW1wbGVDb3VudCA8PSAwKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiRXhwZWN0ZWQgc2FtcGxlIGNvdW50IHRvIGJlIGF0IGxlYXN0IG9uZTsgZ290ICIgKyBzYW1w
bGVDb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBzYW1wbGVzIG11c3QgYmUgb3JkZXJlZCBkZXNjZW5kaW5nCisgICAgICAgICAg
ICBpZiAobmR4ID4gMCAmJiBzYW1wbGVDb3VudCA+PSBwcmV2U2FtcGxlQ291bnQpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBzYW1wbGUgY291bnQgdG8gYmUgb3JkZXJl
ZCBpbiBkZXNjZW5kaW5nIG9yZGVyOyBnb3QgIiArIHByZXZTYW1wbGVDb3VudCArICIgYXQgaW5k
ZXggIiArIChuZHggLSAxKSArICIsIGFuZCAiICsgc2FtcGxlQ291bnQgKyAiIGF0IGluZGV4ICIg
KyBuZHgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJJbnRlcm5hbCBmb3JtYXQgcXVlcnkgc3VjY2VlZGVk
Iik7Cit9CisKK2Z1bmN0aW9uIHJ1bkNvcHlUZXhJbWFnZVRlc3QoZW5hYmxlZCkKK3sKKyAgICB2
YXIgd2lkdGggPSAxNjsKKyAgICB2YXIgaGVpZ2h0ID0gMTY7CisgICAgdmFyIGxldmVsID0gMDsK
KyAgICB2YXIgY2FzZXMgPSBbCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0
OiAiUkdCQTE2RiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5
cGU6ICJIQUxGX0ZMT0FUIiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlIxNkYi
LAorICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQxNkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCkK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICJSR0JB
MzJGIiwKKyAgICAgICAgICAgIGZvcm1hdDogIlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIkZM
T0FUIiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlIzMkYiLAorICAgICAgICAg
ICAgZGF0YTogbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUkdCQTE2RiIsCisgICAg
ICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJIQUxGX0ZMT0FUIiwK
KyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlJHMTZGIiwKKyAgICAgICAgICAgIGRh
dGE6IG5ldyBVaW50MTZBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAiUkdCQTMyRiIsCisgICAgICAgICAg
ICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAgICAg
ICBkZXN0SW50ZXJuYWxmb3JtYXQ6ICJSRzMyRiIsCisgICAgICAgICAgICBkYXRhOiBuZXcgRmxv
YXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCkKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQ6ICJSR0JBMTZGIiwKKyAgICAgICAgICAgIGZvcm1hdDog
IlJHQkEiLAorICAgICAgICAgICAgdHlwZTogIkhBTEZfRkxPQVQiLAorICAgICAgICAgICAgZGVz
dEludGVybmFsZm9ybWF0OiAiUkdCMTZGIiwKKyAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50MTZB
cnJheSh3aWR0aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGludGVybmFsZm9ybWF0OiAiUkdCQTMyRiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JB
IiwKKyAgICAgICAgICAgIHR5cGU6ICJGTE9BVCIsCisgICAgICAgICAgICBkZXN0SW50ZXJuYWxm
b3JtYXQ6ICJSR0IzMkYiLAorICAgICAgICAgICAgZGF0YTogbmV3IEZsb2F0MzJBcnJheSh3aWR0
aCAqIGhlaWdodCAqIDQpCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVy
bmFsZm9ybWF0OiAiUkdCQTE2RiIsCisgICAgICAgICAgICBmb3JtYXQ6ICJSR0JBIiwKKyAgICAg
ICAgICAgIHR5cGU6ICJIQUxGX0ZMT0FUIiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1h
dDogIlJHQkExNkYiLAorICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQxNkFycmF5KHdpZHRoICog
aGVpZ2h0ICogNCkKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJuYWxm
b3JtYXQ6ICJSR0JBMzJGIiwKKyAgICAgICAgICAgIGZvcm1hdDogIlJHQkEiLAorICAgICAgICAg
ICAgdHlwZTogIkZMT0FUIiwKKyAgICAgICAgICAgIGRlc3RJbnRlcm5hbGZvcm1hdDogIlJHQkEz
MkYiLAorICAgICAgICAgICAgZGF0YTogbmV3IEZsb2F0MzJBcnJheSh3aWR0aCAqIGhlaWdodCAq
IDQpCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVybmFsZm9ybWF0OiAi
UjExRl9HMTFGX0IxMEYiLAorICAgICAgICAgICAgZm9ybWF0OiAiUkdCIiwKKyAgICAgICAgICAg
IHR5cGU6ICJGTE9BVCIsCisgICAgICAgICAgICBkZXN0SW50ZXJuYWxmb3JtYXQ6ICJSMTFGX0cx
MUZfQjEwRiIsCisgICAgICAgICAgICBkYXRhOiBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVp
Z2h0ICogMykKKyAgICAgICAgfQorICAgIF07CisgICAgY2FzZXMuZm9yRWFjaChmdW5jdGlvbih0
ZXN0Y2FzZSkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJUZXN0aW5nIENv
cHlUZXhJbWFnZTJEIGZvciBpbnRlcm5hbGZvcm1hdDogIiArIHRlc3RjYXNlLmRlc3RJbnRlcm5h
bGZvcm1hdCk7CisKKyAgICAgICAgdmFyIGludGVybmFsZm9ybWF0ID0gZ2xbdGVzdGNhc2UuaW50
ZXJuYWxmb3JtYXRdOworICAgICAgICB2YXIgZm9ybWF0ID0gZ2xbdGVzdGNhc2UuZm9ybWF0XTsK
KyAgICAgICAgdmFyIHR5cGUgPSBnbFt0ZXN0Y2FzZS50eXBlXTsKKyAgICAgICAgdmFyIGRlc3RJ
bnRlcm5hbGZvcm1hdCA9IGdsW3Rlc3RjYXNlLmRlc3RJbnRlcm5hbGZvcm1hdF07CisgICAgICAg
IHZhciB0ZXhTcmMgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleFNyYyk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5F
QVJFU1QpOworICAgICAgICB2YXIgZGF0YSA9IHRlc3RjYXNlLmRhdGE7CisgICAgICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAwLCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICB2YXIgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVS
LCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleFNyYywgbGV2ZWwpOworICAg
ICAgICB2YXIgdGV4RGVzdCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4RGVzdCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2V0dXAgZnJhbWVidWZmZXIgd2l0aCB0ZXh0dXJlIHNob3Vs
ZCBzdWNjZWVkLiIpOworICAgICAgICBpZiAoZW5hYmxlZCAmJiB0ZXN0Y2FzZS50eXBlID09ICJI
QUxGX0ZMT0FUIikgeworICAgICAgICAgICAgc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoZ2wuRlJBTUVCVUZGRVIpIiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisgICAg
ICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCBsZXZlbCwgZGVzdEludGVy
bmFsZm9ybWF0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwKTsKKyAgICAgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiQ29weVRleEltYWdlMkQgc2hvdWxkIHN1Y2Nl
ZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9BVFRBQ0hNRU5UIik7CisgICAgICAgICAgICBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCBsZXZlbCwgZGVzdEludGVybmFsZm9ybWF0LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAw
KTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0VOVU0s
IGdsLklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXSwgIkNvcHlUZXhJbWFnZTJEIHNob3Vs
ZCBmYWlsLiIpOworICAgICAgICB9CisKKyAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhEZXN0
KTsKKyAgICAgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXhTcmMpOworICAgICAgICBnbC5kZWxldGVG
cmFtZWJ1ZmZlcihmYm8pOworICAgIH0pOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxv
YXQgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCBudWxs
LCAyKTsKKworaWYgKCFnbCkgeworICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7Cit9IGVsc2UgeworICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIp
OworCisgIHZhciB0ZXh0dXJlZFNoYWRlcnMgPSBbCisgICAgICB3dHUuc2ltcGxlVGV4dHVyZVZl
cnRleFNoYWRlciwKKyAgICAgICJ0ZXN0RnJhZ21lbnRTaGFkZXIiCisgIF07CisgIHZhciB0ZXN0
UHJvZ3JhbSA9CisgICAgICB3dHUuc2V0dXBQcm9ncmFtKGdsLAorICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlZFNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgIFsndlBvc2l0aW9u
JywgJ3RleENvb3JkMCddLAorICAgICAgICAgICAgICAgICAgICAgICBbMCwgMV0pOworICB2YXIg
cXVhZFBhcmFtZXRlcnMgPSB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAgLy8gRW5z
dXJlIHRoZXNlIGZvcm1hdHMgY2FuJ3QgYmUgdXNlZCBmb3IgcmVuZGVyaW5nIGlmIHRoZSBleHRl
bnNpb24gaXMgZGlzYWJsZWQKKyAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChmYWxz
ZSwgZ2wuUjE2RiwgZ2wuUkVEKTsKKyAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChm
YWxzZSwgZ2wuUkcxNkYsIGdsLlJHKTsKKyAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVz
dChmYWxzZSwgZ2wuUkdCQTE2RiwgZ2wuUkdCQSk7CisgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRh
cmdldFRlc3QoZmFsc2UsIGdsLlIzMkYsIGdsLlJFRCk7CisgIHJ1bkZsb2F0VGV4dHVyZVJlbmRl
clRhcmdldFRlc3QoZmFsc2UsIGdsLlJHMzJGLCBnbC5SRyk7CisgIHJ1bkZsb2F0VGV4dHVyZVJl
bmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlJHQkEzMkYsIGdsLlJHQkEpOworICBydW5GbG9hdFRl
eHR1cmVSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5SMTFGX0cxMUZfQjEwRiwgZ2wuUkdCKTsK
KworICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlIxNkYp
OworICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlJHMTZG
KTsKKyAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5SR0JB
MTZGKTsKKyAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5S
MzJGKTsKKyAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5S
RzMyRik7CisgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wu
UkdCQTMyRik7CisgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwg
Z2wuUjExRl9HMTFGX0IxMEYpOworCisgIC8vIEVuc3VyZSBSR0IxNkYgY2FuJ3QgYmUgdXNlZCBm
b3IgcmVuZGVyaW5nLgorICBydW5SR0IxNkZOZWdhdGl2ZVRlc3QoKTsKKworICBydW5Db3B5VGV4
SW1hZ2VUZXN0KGZhbHNlKTsKKworICBpZiAoIWdsLmdldEV4dGVuc2lvbigiRVhUX2NvbG9yX2J1
ZmZlcl9oYWxmX2Zsb2F0IikpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5vIEVYVF9jb2xvcl9idWZm
ZXJfaGFsZl9mbG9hdCBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgfSBlbHNlIHsKKyAg
ICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIEVYVF9jb2xvcl9idWZmZXJfaGFs
Zl9mbG9hdCBleHRlbnNpb24iKTsKKworICAgICAgcnVuSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3Qo
KTsKKworICAgICAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SMTZG
LCBnbC5SRUQsIHRlc3RQcm9ncmFtLCAxLCBbMTAwMCwgMSwgMSwgMV0sIDApOworICAgICAgcnVu
RmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SRzE2RiwgZ2wuUkcsIHRlc3RQ
cm9ncmFtLCAyLCBbMTAwMCwgMTAwMCwgMSwgMV0sIDApOworICAgICAgcnVuRmxvYXRUZXh0dXJl
UmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SR0JBMTZGLCBnbC5SR0JBLCB0ZXN0UHJvZ3JhbSwg
NCwgWzEwMDAsIDEwMDAsIDEwMDAsIDEwMDBdLCAwKTsKKyAgICAgIHJ1bkZsb2F0VGV4dHVyZVJl
bmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlIzMkYsIGdsLlJFRCwgdGVzdFByb2dyYW0sIDEsIFsx
MDAwLCAxLCAxLCAxXSwgMCk7CisgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0
KGZhbHNlLCBnbC5SRzMyRiwgZ2wuUkcsIHRlc3RQcm9ncmFtLCAyLCBbMTAwMCwgMTAwMCwgMSwg
MV0sIDApOworICAgICAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wu
UkdCQTMyRiwgZ2wuUkdCQSwgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAw
XSwgMCk7CisgICAgICBydW5GbG9hdFRleHR1cmVSZW5kZXJUYXJnZXRUZXN0KGZhbHNlLCBnbC5S
MTFGX0cxMUZfQjEwRiwgZ2wuUkdCLCB0ZXN0UHJvZ3JhbSwgMywgWzEwMDAsIDEwMDAsIDEwMDAs
IDFdLCAwKTsKKyAgICAgIHJ1bkZsb2F0VGV4dHVyZVJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGds
LlJHQkEzMkYsIGdsLlJHQkEsIHRlc3RQcm9ncmFtLCA0LCBbMTAwMCwgMTAwMCwgMTAwMCwgMTAw
MF0sIDEpOworICAgICAgcnVuRmxvYXRUZXh0dXJlUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wu
UkdCQTMyRiwgZ2wuUkdCQSwgdGVzdFByb2dyYW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAw
XSwgMC41KTsKKworICAgICAgcnVuRmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KHRy
dWUsIGdsLlIxNkYsIHRlc3RQcm9ncmFtLCAxLCBbMTAwMCwgMSwgMSwgMV0pOworICAgICAgcnVu
RmxvYXRSZW5kZXJidWZmZXJSZW5kZXJUYXJnZXRUZXN0KHRydWUsIGdsLlJHMTZGLCB0ZXN0UHJv
Z3JhbSwgMiwgWzEwMDAsIDEwMDAsIDEsIDFdKTsKKyAgICAgIHJ1bkZsb2F0UmVuZGVyYnVmZmVy
UmVuZGVyVGFyZ2V0VGVzdCh0cnVlLCBnbC5SR0JBMTZGLCB0ZXN0UHJvZ3JhbSwgNCwgWzEwMDAs
IDEwMDAsIDEwMDAsIDEwMDBdKTsKKyAgICAgIHJ1bkZsb2F0UmVuZGVyYnVmZmVyUmVuZGVyVGFy
Z2V0VGVzdChmYWxzZSwgZ2wuUjMyRiwgdGVzdFByb2dyYW0sIDEsIFsxMDAwLCAxLCAxLCAxXSk7
CisgICAgICBydW5GbG9hdFJlbmRlcmJ1ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlJH
MzJGLCB0ZXN0UHJvZ3JhbSwgMiwgWzEwMDAsIDEwMDAsIDEsIDFdKTsKKyAgICAgIHJ1bkZsb2F0
UmVuZGVyYnVmZmVyUmVuZGVyVGFyZ2V0VGVzdChmYWxzZSwgZ2wuUkdCQTMyRiwgdGVzdFByb2dy
YW0sIDQsIFsxMDAwLCAxMDAwLCAxMDAwLCAxMDAwXSk7CisgICAgICBydW5GbG9hdFJlbmRlcmJ1
ZmZlclJlbmRlclRhcmdldFRlc3QoZmFsc2UsIGdsLlIxMUZfRzExRl9CMTBGLCB0ZXN0UHJvZ3Jh
bSwgMywgWzEwMDAsIDEwMDAsIDEwMDAsIDFdKTsKKworICAgICAgLy8gRW5zdXJlIEVYVF9jb2xv
cl9idWZmZXJfaGFsZl9mbG9hdCBkb2VzIG5vdCBlbmFibGUgUkdCMTZGIGFzIGNvbG9yIHJlbmRl
cmFibGUuCisgICAgICBydW5SR0IxNkZOZWdhdGl2ZVRlc3QoKTsKKworICAgICAgcnVuQ29weVRl
eEltYWdlVGVzdCh0cnVlKTsKKworICAgICAgcnVuVW5pcXVlT2JqZWN0VGVzdCgpOworICB9Cit9
CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvcHJvbW90ZWQtZXh0
ZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvcHJvbW90ZWQtZXh0ZW5zaW9ucy5odG1s
CmluZGV4IGZlOTNlZWVjNzE5NmI4ZjU4MTE2NzRkYzk3ZjMyYWIxYzIxODhhMzguLmViODliM2Uw
MDQ1M2IwMTBhMjNhZWYyYzM4OTVkYmFkMTg0MGI1M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmdsLzIuMC4wL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRl
bnNpb25zL3Byb21vdGVkLWV4dGVuc2lvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9w
cm9tb3RlZC1leHRlbnNpb25zLmh0bWwKQEAgLTU5LDcgKzU5LDYgQEAgdmFyIGV4dHMgPSBnbC5n
ZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CiB2YXIgcHJvbW90ZWRFeHRlbnNpb25zID0gWwogICAg
ICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiwKICAgICAiRVhUX2JsZW5kX21pbm1heCIsCi0gICAg
IkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIsCiAgICAgIkVYVF9mcmFnX2RlcHRoIiwKICAg
ICAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsCiAgICAgIkVYVF9zUkdCIiwK
</data>

          </attachment>
      

    </bug>

</bugzilla>