<?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>95183</bug_id>
          
          <creation_ts>2012-08-28 02:46:55 -0700</creation_ts>
          <short_desc>[Qt] New inspector/profiler/webgl-profiler-api-changes.html times out</short_desc>
          <delta_ts>2012-08-31 00:36:15 -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>New Bugs</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79668</blocked>
    
    <blocked>87008</blocked>
    
    <blocked>94941</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>aandrey</cc>
    
    <cc>kbr</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706199</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-28 02:46:55 -0700</bug_when>
    <thetext>This test introduced in https://trac.webkit.org/changeset/126856,
but fails on Qt with notifyDone timeout:


--- /ramdisk/qt-linux-64-release/build/layout-test-results/inspector/profiler/webgl-profiler-api-changes-expected.txt 
+++ /ramdisk/qt-linux-64-release/build/layout-test-results/inspector/profiler/webgl-profiler-api-changes-actual.txt 
@@ -1,67 +1,11 @@
+CONSOLE MESSAGE: line 155: TypeError: &apos;null&apos; is not an object (evaluating &apos;gl.createTexture&apos;)
+FAIL: Timed out waiting for notifyDone to be called
 Test to catch WebGL API changes. If this test should ever fail, we should re-examine the WebGL state saving/restoring logic in the InjectedScriptModule to include any latest changes to the API.
 
+ERROR: Could not create a WebGL context.
 Constants for gl.isEnabled():
-BLEND
-CULL_FACE
-DEPTH_TEST
-DITHER
-POLYGON_OFFSET_FILL
-SAMPLE_ALPHA_TO_COVERAGE
-SAMPLE_COVERAGE
-SCISSOR_TEST
-STENCIL_TEST
 
 Constants for gl.pixelStorei():
-PACK_ALIGNMENT
-UNPACK_ALIGNMENT
-UNPACK_COLORSPACE_CONVERSION_WEBGL
-UNPACK_FLIP_Y_WEBGL
-UNPACK_PREMULTIPLY_ALPHA_WEBGL
 
 Constants for gl.getTexParameter():
-TEXTURE_MAG_FILTER
-TEXTURE_MIN_FILTER
-TEXTURE_WRAP_S
-TEXTURE_WRAP_T
 
-Constants for gl.getVertexAttrib():
-CURRENT_VERTEX_ATTRIB
-VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
-VERTEX_ATTRIB_ARRAY_ENABLED
-VERTEX_ATTRIB_ARRAY_NORMALIZED
-VERTEX_ATTRIB_ARRAY_SIZE
-VERTEX_ATTRIB_ARRAY_STRIDE
-VERTEX_ATTRIB_ARRAY_TYPE
-
-Constants for gl.getVertexAttribOffset():
-VERTEX_ATTRIB_ARRAY_POINTER
-
-Constants for gl.getParameter() that we do not track in InjectedScriptModule:
-ALIASED_LINE_WIDTH_RANGE
-ALIASED_POINT_SIZE_RANGE
-ALPHA_BITS
-BLUE_BITS
-COMPRESSED_TEXTURE_FORMATS
-DEPTH_BITS
-GREEN_BITS
-MAX_COMBINED_TEXTURE_IMAGE_UNITS
-MAX_CUBE_MAP_TEXTURE_SIZE
-MAX_FRAGMENT_UNIFORM_VECTORS
-MAX_RENDERBUFFER_SIZE
-MAX_TEXTURE_IMAGE_UNITS
-MAX_TEXTURE_SIZE
-MAX_VARYING_VECTORS
-MAX_VERTEX_ATTRIBS
-MAX_VERTEX_TEXTURE_IMAGE_UNITS
-MAX_VERTEX_UNIFORM_VECTORS
-MAX_VIEWPORT_DIMS
-RED_BITS
-RENDERER
-SAMPLES
-SAMPLE_BUFFERS
-SHADING_LANGUAGE_VERSION
-STENCIL_BITS
-SUBPIXEL_BITS
-VENDOR
-VERSION
-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706200</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-28 02:47:45 -0700</bug_when>
    <thetext>And it crashes on our parallel NRWT bot:

crash log for DumpRenderTree (pid 21164):
STDOUT: &lt;empty&gt;
STDERR: 1   0xf6bc96cc /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x17636cc) [0xf6bc96cc]
STDERR: 2   0xf77db400 [0xf77db400]
STDERR: 3   0xf4346a36 /usr/lib/libGL.so.1(+0x60a36) [0xf4346a36]
STDERR: 4   0xf63a12f3 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xf3b2f3) [0xf63a12f3]
STDERR: 5   0xf639897f /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xf3297f) [0xf639897f]
STDERR: 6   0xf639900d /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xf3300d) [0xf639900d]
STDERR: 7   0xf6379d97 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xf13d97) [0xf6379d97]
STDERR: 8   0xf5c01ff4 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x79bff4) [0xf5c01ff4]
STDERR: 9   0xf58d0465 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x46a465) [0xf58d0465]
STDERR: 10  0xf65c2b1b /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x115cb1b) [0xf65c2b1b]
STDERR: 11  0xeec3742f [0xeec3742f]
STDERR: 12  0xf6a25a6f /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x15bfa6f) [0xf6a25a6f]
STDERR: 13  0xf6a1ff17 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x15b9f17) [0xf6a1ff17]
STDERR: 14  0xf6b0ad5c /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(_ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE+0x60) [0xf6b0ad5c]
STDERR: 15  0xf58cb3a6 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x4653a6) [0xf58cb3a6]
STDERR: 16  0xf5aba922 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x654922) [0xf5aba922]
STDERR: 17  0xf5abaaf1 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x654af1) [0xf5abaaf1]
STDERR: 18  0xf5e29e29 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x9c3e29) [0xf5e29e29]
STDERR: 19  0xf5e29ff4 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x9c3ff4) [0xf5e29ff4]
STDERR: 20  0xf5a70bbc /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x60abbc) [0xf5a70bbc]
STDERR: 21  0xf5a8f26c /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x62926c) [0xf5a8f26c]
STDERR: 22  0xf5db4759 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x94e759) [0xf5db4759]
STDERR: 23  0xf5dbc71b /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x95671b) [0xf5dbc71b]
STDERR: 24  0xf5da349e /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x93d49e) [0xf5da349e]
STDERR: 25  0xf5def64a /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x98964a) [0xf5def64a]
STDERR: 26  0xf5de5ace /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x97face) [0xf5de5ace]
STDERR: 27  0xf5defbfb /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x989bfb) [0xf5defbfb]
STDERR: 28  0xf5de5752 /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0x97f752) [0xf5de5752]
STDERR: 29  0xf611702c /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xcb102c) [0xf611702c]
STDERR: 30  0xf6113f1e /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xcadf1e) [0xf6113f1e]
STDERR: 31  0xf611444c /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/WebKitBuild/Release/lib/libQtWebKit.so.5(+0xcae44c) [0xf611444c]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706206</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-28 03:09:41 -0700</bug_when>
    <thetext>It fails to create a WebGL context for some reason. Any insight of why that may be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706438</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-28 09:47:10 -0700</bug_when>
    <thetext>Do any other WebGL tests run on that bot? Some of the bots aren&apos;t configured with a real GPU, and some of the WebKit ports aren&apos;t set up to use a software renderer like Mesa for running WebGL related layout tests. It might be necessary to skip this new test on some ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708415</commentid>
    <comment_count>4</comment_count>
      <attachid>161425</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-30 01:35:13 -0700</bug_when>
    <thetext>Created attachment 161425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708422</commentid>
    <comment_count>5</comment_count>
      <attachid>161427</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-30 01:44:27 -0700</bug_when>
    <thetext>Created attachment 161427
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709346</commentid>
    <comment_count>6</comment_count>
      <attachid>161427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 00:36:11 -0700</bug_when>
    <thetext>Comment on attachment 161427
Rebased patch

Clearing flags on attachment: 161427

Committed r127236: &lt;http://trac.webkit.org/changeset/127236&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709347</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 00:36:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161425</attachid>
            <date>2012-08-30 01:35:13 -0700</date>
            <delta_ts>2012-08-30 01:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95183-20120830123501.patch</filename>
            <type>text/plain</type>
            <size>18693</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTgyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjlmY2EyM2JkN2JmMTcwOTUzZDZj
YjNhOTRjNGNiMjM1ZGRlYzIxYy4uZTQzNzdlMGIwYzFjZmQ3NmM1MGY4ZWQ0MTMwZWJkYzQ5NWUx
ODBlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTMwICBBbmRyZXkgQWRhaWtpbiAg
PGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtRdF0gTmV3IGluc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1sIHRpbWVzIG91dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGluc3BlY3RvciBXZWJH
TCB0ZXN0KHMpIHRvIGl0cyBvd24gZm9sZGVyIHNvIHRoYXQgdGhleSBhcmUgZWFzeSB0byBibGFj
a2xpc3QuIFNraXAgdGhlbSBmb3IgUVQgd2hlcmUgV2ViR0wgaXMgZGlzYWJsZWQgYXQgdGhlIG1v
bWVudC4KKyAgICAgICAgRHJpdmUtYnk6IG1ha2UgdGhlIHRlc3QgZmFpbCBpbnN0ZWFkIG9mIHRp
bWluZyBvdXQgd2hlbiBXZWJHTCBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQ6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXIt
YXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93
ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwu
CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMi0wOC0yOSAgS3dhbmdZb25n
IENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBSZWJhc2VsaW5l
IGFmdGVyIHIxMjY4NjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDMxN2Q4MmFiNTk3NTJkYzY3OTE0YzJm
M2E2M2RiMzRmMDU3N2VjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC1wcm9maWxlci1hcGkt
Y2hhbmdlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1UZXN0
IHRvIGNhdGNoIFdlYkdMIEFQSSBjaGFuZ2VzLiBJZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFp
bCwgd2Ugc2hvdWxkIHJlLWV4YW1pbmUgdGhlIFdlYkdMIHN0YXRlIHNhdmluZy9yZXN0b3Jpbmcg
bG9naWMgaW4gdGhlIEluamVjdGVkU2NyaXB0TW9kdWxlIHRvIGluY2x1ZGUgYW55IGxhdGVzdCBj
aGFuZ2VzIHRvIHRoZSBBUEkuCi0KLUNvbnN0YW50cyBmb3IgZ2wuaXNFbmFibGVkKCk6Ci1CTEVO
RAotQ1VMTF9GQUNFCi1ERVBUSF9URVNUCi1ESVRIRVIKLVBPTFlHT05fT0ZGU0VUX0ZJTEwKLVNB
TVBMRV9BTFBIQV9UT19DT1ZFUkFHRQotU0FNUExFX0NPVkVSQUdFCi1TQ0lTU09SX1RFU1QKLVNU
RU5DSUxfVEVTVAotCi1Db25zdGFudHMgZm9yIGdsLnBpeGVsU3RvcmVpKCk6Ci1QQUNLX0FMSUdO
TUVOVAotVU5QQUNLX0FMSUdOTUVOVAotVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJH
TAotVU5QQUNLX0ZMSVBfWV9XRUJHTAotVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMCi0K
LUNvbnN0YW50cyBmb3IgZ2wuZ2V0VGV4UGFyYW1ldGVyKCk6Ci1URVhUVVJFX01BR19GSUxURVIK
LVRFWFRVUkVfTUlOX0ZJTFRFUgotVEVYVFVSRV9XUkFQX1MKLVRFWFRVUkVfV1JBUF9UCi0KLUNv
bnN0YW50cyBmb3IgZ2wuZ2V0VmVydGV4QXR0cmliKCk6Ci1DVVJSRU5UX1ZFUlRFWF9BVFRSSUIK
LVZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcKLVZFUlRFWF9BVFRSSUJfQVJSQVlf
RU5BQkxFRAotVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVECi1WRVJURVhfQVRUUklCX0FS
UkFZX1NJWkUKLVZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFCi1WRVJURVhfQVRUUklCX0FSUkFZ
X1RZUEUKLQotQ29uc3RhbnRzIGZvciBnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoKToKLVZFUlRF
WF9BVFRSSUJfQVJSQVlfUE9JTlRFUgotCi1Db25zdGFudHMgZm9yIGdsLmdldFBhcmFtZXRlcigp
IHRoYXQgd2UgZG8gbm90IHRyYWNrIGluIEluamVjdGVkU2NyaXB0TW9kdWxlOgotQUxJQVNFRF9M
SU5FX1dJRFRIX1JBTkdFCi1BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UKLUFMUEhBX0JJVFMKLUJM
VUVfQklUUwotQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMKLURFUFRIX0JJVFMKLUdSRUVOX0JJ
VFMKLU1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTCi1NQVhfQ1VCRV9NQVBfVEVYVFVS
RV9TSVpFCi1NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTCi1NQVhfUkVOREVSQlVGRkVSX1NJ
WkUKLU1BWF9URVhUVVJFX0lNQUdFX1VOSVRTCi1NQVhfVEVYVFVSRV9TSVpFCi1NQVhfVkFSWUlO
R19WRUNUT1JTCi1NQVhfVkVSVEVYX0FUVFJJQlMKLU1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUwotTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMKLU1BWF9WSUVXUE9SVF9ESU1TCi1SRURf
QklUUwotUkVOREVSRVIKLVNBTVBMRVMKLVNBTVBMRV9CVUZGRVJTCi1TSEFESU5HX0xBTkdVQUdF
X1ZFUlNJT04KLVNURU5DSUxfQklUUwotU1VCUElYRUxfQklUUwotVkVORE9SCi1WRVJTSU9OCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC1wcm9maWxl
ci1hcGktY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmds
LXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVjZWI3MTgxODkwYTBiZGFkZjRkODg3MGEzMjMxZDBmY2VlZGEyM2QuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyMTMgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi0g
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHdhc0Vy
cm9yKGdsKQotewotICAgIHZhciByZXN1bHQgPSBmYWxzZTsKLSAgICB3aGlsZSAoZ2wuZ2V0RXJy
b3IoKSAhPT0gZ2wuTk9fRVJST1IpCi0gICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotIGZ1bmN0aW9uIGNyZWF0ZVdlYkdMQ29udGV4dCgpCi0gewotICAgICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgIHZhciBj
b250ZXh0SWRzID0gWyJleHBlcmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNkIiwgIjNkIl07Ci0g
ICAgIGZvciAodmFyIGkgPSAwLCBjb250ZXh0SWQ7IGNvbnRleHRJZCA9IGNvbnRleHRJZHNbaV07
ICsraSkgewotICAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoY29udGV4dElkKTsK
LSAgICAgICAgIGlmIChnbCkKLSAgICAgICAgICAgICByZXR1cm4gZ2w7Ci0gICAgIH0KLSAgICAg
b3V0cHV0KCJFUlJPUjogQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIik7Ci0gICAg
IHJldHVybiBudWxsOwotIH0KLQotIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlID0ge307
Ci0gCi0gLyoqCi0gICogQGNvbnN0Ci0gICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQotICAqLwot
IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLkdMQ2FwYWJpbGl0aWVzID0gWwotICAgICAi
QkxFTkQiLAotICAgICAiQ1VMTF9GQUNFIiwKLSAgICAgIkRFUFRIX1RFU1QiLAotICAgICAiRElU
SEVSIiwKLSAgICAgIlBPTFlHT05fT0ZGU0VUX0ZJTEwiLAotICAgICAiU0FNUExFX0FMUEhBX1RP
X0NPVkVSQUdFIiwKLSAgICAgIlNBTVBMRV9DT1ZFUkFHRSIsCi0gICAgICJTQ0lTU09SX1RFU1Qi
LAotICAgICAiU1RFTkNJTF9URVNUIgotIF07Ci0KLSAvKioKLSAgKiBAY29uc3QKLSAgKiBAdHlw
ZSB7QXJyYXkuPHN0cmluZz59Ci0gICovCi0gV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2Uu
UGl4ZWxTdG9yZVBhcmFtZXRlcnMgPSBbCi0gICAgICJQQUNLX0FMSUdOTUVOVCIsCi0gICAgICJV
TlBBQ0tfQUxJR05NRU5UIiwKLSAgICAgIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VC
R0wiLAotICAgICAiVU5QQUNLX0ZMSVBfWV9XRUJHTCIsCi0gICAgICJVTlBBQ0tfUFJFTVVMVElQ
TFlfQUxQSEFfV0VCR0wiCi0gXTsKLQotIC8qKgotICAqIEBjb25zdAotICAqIEB0eXBlIHtBcnJh
eS48c3RyaW5nPn0KLSAgKi8KLSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5TdGF0ZVBh
cmFtZXRlcnMgPSBbCi0gICAgICJBQ1RJVkVfVEVYVFVSRSIsCi0gICAgICJBUlJBWV9CVUZGRVJf
QklORElORyIsCi0gICAgICJCTEVORF9DT0xPUiIsCi0gICAgICJCTEVORF9EU1RfQUxQSEEiLAot
ICAgICAiQkxFTkRfRFNUX1JHQiIsCi0gICAgICJCTEVORF9FUVVBVElPTl9BTFBIQSIsCi0gICAg
ICJCTEVORF9FUVVBVElPTl9SR0IiLAotICAgICAiQkxFTkRfU1JDX0FMUEhBIiwKLSAgICAgIkJM
RU5EX1NSQ19SR0IiLAotICAgICAiQ09MT1JfQ0xFQVJfVkFMVUUiLAotICAgICAiQ09MT1JfV1JJ
VEVNQVNLIiwKLSAgICAgIkNVTExfRkFDRV9NT0RFIiwKLSAgICAgIkNVUlJFTlRfUFJPR1JBTSIs
Ci0gICAgICJERVBUSF9DTEVBUl9WQUxVRSIsCi0gICAgICJERVBUSF9GVU5DIiwKLSAgICAgIkRF
UFRIX1JBTkdFIiwKLSAgICAgIkRFUFRIX1dSSVRFTUFTSyIsCi0gICAgICJFTEVNRU5UX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HIiwKLSAgICAgIkZSQU1FQlVGRkVSX0JJTkRJTkciLAotICAgICAiRlJP
TlRfRkFDRSIsCi0gICAgICJHRU5FUkFURV9NSVBNQVBfSElOVCIsCi0gICAgICJMSU5FX1dJRFRI
IiwKLSAgICAgIlBBQ0tfQUxJR05NRU5UIiwKLSAgICAgIlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIs
Ci0gICAgICJQT0xZR09OX09GRlNFVF9VTklUUyIsCi0gICAgICJSRU5ERVJCVUZGRVJfQklORElO
RyIsCi0gICAgICJTQU1QTEVfQ09WRVJBR0VfSU5WRVJUIiwKLSAgICAgIlNBTVBMRV9DT1ZFUkFH
RV9WQUxVRSIsCi0gICAgICJTQ0lTU09SX0JPWCIsCi0gICAgICJTVEVOQ0lMX0JBQ0tfRkFJTCIs
Ci0gICAgICJTVEVOQ0lMX0JBQ0tfRlVOQyIsCi0gICAgICJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBU
SF9GQUlMIiwKLSAgICAgIlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MiLAotICAgICAiU1RF
TkNJTF9CQUNLX1JFRiIsCi0gICAgICJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyIsCi0gICAgICJT
VEVOQ0lMX0JBQ0tfV1JJVEVNQVNLIiwKLSAgICAgIlNURU5DSUxfQ0xFQVJfVkFMVUUiLAotICAg
ICAiU1RFTkNJTF9GQUlMIiwKLSAgICAgIlNURU5DSUxfRlVOQyIsCi0gICAgICJTVEVOQ0lMX1BB
U1NfREVQVEhfRkFJTCIsCi0gICAgICJTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyIsCi0gICAgICJT
VEVOQ0lMX1JFRiIsCi0gICAgICJTVEVOQ0lMX1ZBTFVFX01BU0siLAotICAgICAiU1RFTkNJTF9X
UklURU1BU0siLAotICAgICAiVU5QQUNLX0FMSUdOTUVOVCIsCi0gICAgICJVTlBBQ0tfQ09MT1JT
UEFDRV9DT05WRVJTSU9OX1dFQkdMIiwKLSAgICAgIlVOUEFDS19GTElQX1lfV0VCR0wiLAotICAg
ICAiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIiwKLSAgICAgIlZJRVdQT1JUIgotIF07
Ci0KLSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5UZXh0dXJlQmluZGluZ3MgPSBbCi0g
ICAgICJURVhUVVJFX0JJTkRJTkdfMkQiLAotICAgICAiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQ
IgotIF07Ci0KLSBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZ2wgPSBjcmVhdGVXZWJHTENv
bnRleHQoKTsKLQotICAgIHZhciBjb25zdGFudE5hbWVzID0gW107Ci0gICAgZm9yICh2YXIgcHJv
cGVydHkgaW4gZ2wpIHsKLSAgICAgICAgaWYgKC9eW0EtWjAtOV9dKyQvLnRlc3QocHJvcGVydHkp
KQotICAgICAgICAgICAgY29uc3RhbnROYW1lcy5wdXNoKHByb3BlcnR5KTsKLSAgICB9Ci0gICAg
Y29uc3RhbnROYW1lcy5zb3J0KCk7Ci0KLSAgICBvdXRwdXQoIkNvbnN0YW50cyBmb3IgZ2wuaXNF
bmFibGVkKCk6Iik7Ci0gICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3BlcnR5
KSB7Ci0gICAgICAgIHdhc0Vycm9yKGdsKTsKLSAgICAgICAgZ2wuaXNFbmFibGVkKGdsW3Byb3Bl
cnR5XSk7Ci0gICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQotICAgICAgICAgICAgb3V0cHV0KHBy
b3BlcnR5KTsKLSAgICB9KTsKLQotICAgIG91dHB1dCgiXG5Db25zdGFudHMgZm9yIGdsLnBpeGVs
U3RvcmVpKCk6Iik7Ci0gICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3BlcnR5
KSB7Ci0gICAgICAgIHdhc0Vycm9yKGdsKTsKLSAgICAgICAgdmFyIHZhbHVlID0gZ2wuZ2V0UGFy
YW1ldGVyKGdsW3Byb3BlcnR5XSk7Ci0gICAgICAgIGlmICh3YXNFcnJvcihnbCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsW3Byb3BlcnR5XSwgdmFsdWUp
OwotICAgICAgICBpZiAoIXdhc0Vycm9yKGdsKSkKLSAgICAgICAgICAgIG91dHB1dChwcm9wZXJ0
eSk7Ci0gICAgfSk7Ci0KLSAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZvciBnbC5nZXRUZXhQYXJh
bWV0ZXIoKToiKTsKLSAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKLSAgICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBjb25zdGFudE5hbWVz
LmZvckVhY2goZnVuY3Rpb24ocHJvcGVydHkpIHsKLSAgICAgICAgd2FzRXJyb3IoZ2wpOwotICAg
ICAgICBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2xbcHJvcGVydHldKTsKLSAg
ICAgICAgaWYgKCF3YXNFcnJvcihnbCkpCi0gICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOwot
ICAgIH0pOwotCi0gICAgb3V0cHV0KCJcbkNvbnN0YW50cyBmb3IgZ2wuZ2V0VmVydGV4QXR0cmli
KCk6Iik7Ci0gICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3BlcnR5KSB7Ci0g
ICAgICAgIHdhc0Vycm9yKGdsKTsKLSAgICAgICAgZ2wuZ2V0VmVydGV4QXR0cmliKDAsIGdsW3By
b3BlcnR5XSk7Ci0gICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQotICAgICAgICAgICAgb3V0cHV0
KHByb3BlcnR5KTsKLSAgICB9KTsKLQotICAgIG91dHB1dCgiXG5Db25zdGFudHMgZm9yIGdsLmdl
dFZlcnRleEF0dHJpYk9mZnNldCgpOiIpOwotICAgIGNvbnN0YW50TmFtZXMuZm9yRWFjaChmdW5j
dGlvbihwcm9wZXJ0eSkgewotICAgICAgICB3YXNFcnJvcihnbCk7Ci0gICAgICAgIGdsLmdldFZl
cnRleEF0dHJpYk9mZnNldCgwLCBnbFtwcm9wZXJ0eV0pOwotICAgICAgICBpZiAoIXdhc0Vycm9y
KGdsKSkKLSAgICAgICAgICAgIG91dHB1dChwcm9wZXJ0eSk7Ci0gICAgfSk7Ci0KLSAgICBvdXRw
dXQoIlxuQ29uc3RhbnRzIGZvciBnbC5nZXRQYXJhbWV0ZXIoKSB0aGF0IHdlIGRvIG5vdCB0cmFj
ayBpbiBJbmplY3RlZFNjcmlwdE1vZHVsZToiKTsKLSAgICBjb25zdGFudE5hbWVzLmZvckVhY2go
ZnVuY3Rpb24ocHJvcGVydHkpIHsKLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBlcXVhbCBj
b25zdGFudHMgQkxFTkRfRVFVQVRJT04gYW5kIEJMRU5EX0VRVUFUSU9OX1JHQi4KLSAgICAgICAg
aWYgKHByb3BlcnR5ID09PSAiQkxFTkRfRVFVQVRJT04iICYmIGdsLkJMRU5EX0VRVUFUSU9OID09
PSBnbC5CTEVORF9FUVVBVElPTl9SR0IpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5HTENhcGFiaWxpdGllcy5pbmRleE9mKHBy
b3BlcnR5KSAhPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChXZWJHTFJl
bmRlcmluZ0NvbnRleHRSZXNvdXJjZS5QaXhlbFN0b3JlUGFyYW1ldGVycy5pbmRleE9mKHByb3Bl
cnR5KSAhPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChXZWJHTFJlbmRl
cmluZ0NvbnRleHRSZXNvdXJjZS5TdGF0ZVBhcmFtZXRlcnMuaW5kZXhPZihwcm9wZXJ0eSkgIT09
IC0xKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoV2ViR0xSZW5kZXJpbmdDb250
ZXh0UmVzb3VyY2UuVGV4dHVyZUJpbmRpbmdzLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2FzRXJyb3IoZ2wpOwotICAgICAgICBnbC5nZXRQ
YXJhbWV0ZXIoZ2xbcHJvcGVydHldKTsKLSAgICAgICAgaWYgKCF3YXNFcnJvcihnbCkpCi0gICAg
ICAgICAgICBvdXRwdXQocHJvcGVydHkpOwotICAgIH0pOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08cD4KLVRlc3QgdG8gY2F0Y2ggV2Vi
R0wgQVBJIGNoYW5nZXMuCi1JZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ugc2hvdWxk
IHJlLWV4YW1pbmUgdGhlIFdlYkdMIHN0YXRlIHNhdmluZy9yZXN0b3JpbmcgbG9naWMgaW4gdGhl
Ci1JbmplY3RlZFNjcmlwdE1vZHVsZSB0byBpbmNsdWRlIGFueSBsYXRlc3QgY2hhbmdlcyB0byB0
aGUgQVBJLgotCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXBy
b2ZpbGVyLWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDMxN2Q4MmFiNTk3
NTJkYzY3OTE0YzJmM2E2M2RiMzRmMDU3N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDY3IEBACitUZXN0IHRvIGNhdGNoIFdlYkdMIEFQSSBjaGFu
Z2VzLiBJZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ugc2hvdWxkIHJlLWV4YW1pbmUg
dGhlIFdlYkdMIHN0YXRlIHNhdmluZy9yZXN0b3JpbmcgbG9naWMgaW4gdGhlIEluamVjdGVkU2Ny
aXB0TW9kdWxlIHRvIGluY2x1ZGUgYW55IGxhdGVzdCBjaGFuZ2VzIHRvIHRoZSBBUEkuCisKK0Nv
bnN0YW50cyBmb3IgZ2wuaXNFbmFibGVkKCk6CitCTEVORAorQ1VMTF9GQUNFCitERVBUSF9URVNU
CitESVRIRVIKK1BPTFlHT05fT0ZGU0VUX0ZJTEwKK1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRQor
U0FNUExFX0NPVkVSQUdFCitTQ0lTU09SX1RFU1QKK1NURU5DSUxfVEVTVAorCitDb25zdGFudHMg
Zm9yIGdsLnBpeGVsU3RvcmVpKCk6CitQQUNLX0FMSUdOTUVOVAorVU5QQUNLX0FMSUdOTUVOVAor
VU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorVU5QQUNLX0ZMSVBfWV9XRUJHTAor
VU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMCisKK0NvbnN0YW50cyBmb3IgZ2wuZ2V0VGV4
UGFyYW1ldGVyKCk6CitURVhUVVJFX01BR19GSUxURVIKK1RFWFRVUkVfTUlOX0ZJTFRFUgorVEVY
VFVSRV9XUkFQX1MKK1RFWFRVUkVfV1JBUF9UCisKK0NvbnN0YW50cyBmb3IgZ2wuZ2V0VmVydGV4
QXR0cmliKCk6CitDVVJSRU5UX1ZFUlRFWF9BVFRSSUIKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkcKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRAorVkVSVEVYX0FUVFJJQl9B
UlJBWV9OT1JNQUxJWkVECitWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUKK1ZFUlRFWF9BVFRSSUJf
QVJSQVlfU1RSSURFCitWRVJURVhfQVRUUklCX0FSUkFZX1RZUEUKKworQ29uc3RhbnRzIGZvciBn
bC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoKToKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUgor
CitDb25zdGFudHMgZm9yIGdsLmdldFBhcmFtZXRlcigpIHRoYXQgd2UgZG8gbm90IHRyYWNrIGlu
IEluamVjdGVkU2NyaXB0TW9kdWxlOgorQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFCitBTElBU0VE
X1BPSU5UX1NJWkVfUkFOR0UKK0FMUEhBX0JJVFMKK0JMVUVfQklUUworQ09NUFJFU1NFRF9URVhU
VVJFX0ZPUk1BVFMKK0RFUFRIX0JJVFMKK0dSRUVOX0JJVFMKK01BWF9DT01CSU5FRF9URVhUVVJF
X0lNQUdFX1VOSVRTCitNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFCitNQVhfRlJBR01FTlRfVU5J
Rk9STV9WRUNUT1JTCitNQVhfUkVOREVSQlVGRkVSX1NJWkUKK01BWF9URVhUVVJFX0lNQUdFX1VO
SVRTCitNQVhfVEVYVFVSRV9TSVpFCitNQVhfVkFSWUlOR19WRUNUT1JTCitNQVhfVkVSVEVYX0FU
VFJJQlMKK01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUworTUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMKK01BWF9WSUVXUE9SVF9ESU1TCitSRURfQklUUworUkVOREVSRVIKK1NBTVBMRVMK
K1NBTVBMRV9CVUZGRVJTCitTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04KK1NURU5DSUxfQklUUwor
U1VCUElYRUxfQklUUworVkVORE9SCitWRVJTSU9OCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWFw
aS1jaGFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFmNjZmMTVkZTc2OGJiNDY3MWIxNzgyZmU5YzZh
MTFjNDllOThlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1sCkBAIC0wLDAgKzEsMjIx
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHdhc0Vycm9yKGdsKQoreworICAgIHZhciByZXN1bHQgPSBmYWxzZTsKKyAgICB3aGlsZSAoZ2wu
Z2V0RXJyb3IoKSAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY3JlYXRlV2ViR0xDb250ZXh0KCkKK3sKKyAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgdmFy
IGNvbnRleHRJZHMgPSBbImV4cGVyaW1lbnRhbC13ZWJnbCIsICJ3ZWJraXQtM2QiLCAiM2QiXTsK
KyAgICBmb3IgKHZhciBpID0gMCwgY29udGV4dElkOyBjb250ZXh0SWQgPSBjb250ZXh0SWRzW2ld
OyArK2kpIHsKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoY29udGV4dElkKTsK
KyAgICAgICAgaWYgKGdsKQorICAgICAgICAgICAgcmV0dXJuIGdsOworICAgIH0KKyAgICBvdXRw
dXQoIkVSUk9SOiBDb3VsZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKTsKKyAgICByZXR1
cm4gbnVsbDsKK30KKworV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UgPSB7fTsKKyAKKy8q
KgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK1dlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLkdMQ2FwYWJpbGl0aWVzID0gWworICAgICJCTEVORCIsCisgICAg
IkNVTExfRkFDRSIsCisgICAgIkRFUFRIX1RFU1QiLAorICAgICJESVRIRVIiLAorICAgICJQT0xZ
R09OX09GRlNFVF9GSUxMIiwKKyAgICAiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIiwKKyAgICAi
U0FNUExFX0NPVkVSQUdFIiwKKyAgICAiU0NJU1NPUl9URVNUIiwKKyAgICAiU1RFTkNJTF9URVNU
IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLwor
V2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuUGl4ZWxTdG9yZVBhcmFtZXRlcnMgPSBbCisg
ICAgIlBBQ0tfQUxJR05NRU5UIiwKKyAgICAiVU5QQUNLX0FMSUdOTUVOVCIsCisgICAgIlVOUEFD
S19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wiLAorICAgICJVTlBBQ0tfRkxJUF9ZX1dFQkdM
IiwKKyAgICAiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIgorXTsKKworLyoqCisgKiBA
Y29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworV2ViR0xSZW5kZXJpbmdDb250
ZXh0UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzID0gWworICAgICJBQ1RJVkVfVEVYVFVSRSIsCisg
ICAgIkFSUkFZX0JVRkZFUl9CSU5ESU5HIiwKKyAgICAiQkxFTkRfQ09MT1IiLAorICAgICJCTEVO
RF9EU1RfQUxQSEEiLAorICAgICJCTEVORF9EU1RfUkdCIiwKKyAgICAiQkxFTkRfRVFVQVRJT05f
QUxQSEEiLAorICAgICJCTEVORF9FUVVBVElPTl9SR0IiLAorICAgICJCTEVORF9TUkNfQUxQSEEi
LAorICAgICJCTEVORF9TUkNfUkdCIiwKKyAgICAiQ09MT1JfQ0xFQVJfVkFMVUUiLAorICAgICJD
T0xPUl9XUklURU1BU0siLAorICAgICJDVUxMX0ZBQ0VfTU9ERSIsCisgICAgIkNVUlJFTlRfUFJP
R1JBTSIsCisgICAgIkRFUFRIX0NMRUFSX1ZBTFVFIiwKKyAgICAiREVQVEhfRlVOQyIsCisgICAg
IkRFUFRIX1JBTkdFIiwKKyAgICAiREVQVEhfV1JJVEVNQVNLIiwKKyAgICAiRUxFTUVOVF9BUlJB
WV9CVUZGRVJfQklORElORyIsCisgICAgIkZSQU1FQlVGRkVSX0JJTkRJTkciLAorICAgICJGUk9O
VF9GQUNFIiwKKyAgICAiR0VORVJBVEVfTUlQTUFQX0hJTlQiLAorICAgICJMSU5FX1dJRFRIIiwK
KyAgICAiUEFDS19BTElHTk1FTlQiLAorICAgICJQT0xZR09OX09GRlNFVF9GQUNUT1IiLAorICAg
ICJQT0xZR09OX09GRlNFVF9VTklUUyIsCisgICAgIlJFTkRFUkJVRkZFUl9CSU5ESU5HIiwKKyAg
ICAiU0FNUExFX0NPVkVSQUdFX0lOVkVSVCIsCisgICAgIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSIs
CisgICAgIlNDSVNTT1JfQk9YIiwKKyAgICAiU1RFTkNJTF9CQUNLX0ZBSUwiLAorICAgICJTVEVO
Q0lMX0JBQ0tfRlVOQyIsCisgICAgIlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwiLAorICAg
ICJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTIiwKKyAgICAiU1RFTkNJTF9CQUNLX1JFRiIs
CisgICAgIlNURU5DSUxfQkFDS19WQUxVRV9NQVNLIiwKKyAgICAiU1RFTkNJTF9CQUNLX1dSSVRF
TUFTSyIsCisgICAgIlNURU5DSUxfQ0xFQVJfVkFMVUUiLAorICAgICJTVEVOQ0lMX0ZBSUwiLAor
ICAgICJTVEVOQ0lMX0ZVTkMiLAorICAgICJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCIsCisgICAg
IlNURU5DSUxfUEFTU19ERVBUSF9QQVNTIiwKKyAgICAiU1RFTkNJTF9SRUYiLAorICAgICJTVEVO
Q0lMX1ZBTFVFX01BU0siLAorICAgICJTVEVOQ0lMX1dSSVRFTUFTSyIsCisgICAgIlVOUEFDS19B
TElHTk1FTlQiLAorICAgICJVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIiwKKyAg
ICAiVU5QQUNLX0ZMSVBfWV9XRUJHTCIsCisgICAgIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9X
RUJHTCIsCisgICAgIlZJRVdQT1JUIgorXTsKKworV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3Vy
Y2UuVGV4dHVyZUJpbmRpbmdzID0gWworICAgICJURVhUVVJFX0JJTkRJTkdfMkQiLAorICAgICJU
RVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAiCitdOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2
YXIgZ2wgPSBjcmVhdGVXZWJHTENvbnRleHQoKTsKKyAgICBpZiAoIWdsKQorICAgICAgICByZXR1
cm47CisKKyAgICB2YXIgY29uc3RhbnROYW1lcyA9IFtdOworICAgIGZvciAodmFyIHByb3BlcnR5
IGluIGdsKSB7CisgICAgICAgIGlmICgvXltBLVowLTlfXSskLy50ZXN0KHByb3BlcnR5KSkKKyAg
ICAgICAgICAgIGNvbnN0YW50TmFtZXMucHVzaChwcm9wZXJ0eSk7CisgICAgfQorICAgIGNvbnN0
YW50TmFtZXMuc29ydCgpOworCisgICAgb3V0cHV0KCJDb25zdGFudHMgZm9yIGdsLmlzRW5hYmxl
ZCgpOiIpOworICAgIGNvbnN0YW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewor
ICAgICAgICB3YXNFcnJvcihnbCk7CisgICAgICAgIGdsLmlzRW5hYmxlZChnbFtwcm9wZXJ0eV0p
OworICAgICAgICBpZiAoIXdhc0Vycm9yKGdsKSkKKyAgICAgICAgICAgIG91dHB1dChwcm9wZXJ0
eSk7CisgICAgfSk7CisKKyAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZvciBnbC5waXhlbFN0b3Jl
aSgpOiIpOworICAgIGNvbnN0YW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewor
ICAgICAgICB3YXNFcnJvcihnbCk7CisgICAgICAgIHZhciB2YWx1ZSA9IGdsLmdldFBhcmFtZXRl
cihnbFtwcm9wZXJ0eV0pOworICAgICAgICBpZiAod2FzRXJyb3IoZ2wpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBnbC5waXhlbFN0b3JlaShnbFtwcm9wZXJ0eV0sIHZhbHVlKTsKKyAg
ICAgICAgaWYgKCF3YXNFcnJvcihnbCkpCisgICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOwor
ICAgIH0pOworCisgICAgb3V0cHV0KCJcbkNvbnN0YW50cyBmb3IgZ2wuZ2V0VGV4UGFyYW1ldGVy
KCk6Iik7CisgICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgY29uc3RhbnROYW1lcy5mb3JF
YWNoKGZ1bmN0aW9uKHByb3BlcnR5KSB7CisgICAgICAgIHdhc0Vycm9yKGdsKTsKKyAgICAgICAg
Z2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsW3Byb3BlcnR5XSk7CisgICAgICAg
IGlmICghd2FzRXJyb3IoZ2wpKQorICAgICAgICAgICAgb3V0cHV0KHByb3BlcnR5KTsKKyAgICB9
KTsKKworICAgIG91dHB1dCgiXG5Db25zdGFudHMgZm9yIGdsLmdldFZlcnRleEF0dHJpYigpOiIp
OworICAgIGNvbnN0YW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgeworICAgICAg
ICB3YXNFcnJvcihnbCk7CisgICAgICAgIGdsLmdldFZlcnRleEF0dHJpYigwLCBnbFtwcm9wZXJ0
eV0pOworICAgICAgICBpZiAoIXdhc0Vycm9yKGdsKSkKKyAgICAgICAgICAgIG91dHB1dChwcm9w
ZXJ0eSk7CisgICAgfSk7CisKKyAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZvciBnbC5nZXRWZXJ0
ZXhBdHRyaWJPZmZzZXQoKToiKTsKKyAgICBjb25zdGFudE5hbWVzLmZvckVhY2goZnVuY3Rpb24o
cHJvcGVydHkpIHsKKyAgICAgICAgd2FzRXJyb3IoZ2wpOworICAgICAgICBnbC5nZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoMCwgZ2xbcHJvcGVydHldKTsKKyAgICAgICAgaWYgKCF3YXNFcnJvcihnbCkp
CisgICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOworICAgIH0pOworCisgICAgb3V0cHV0KCJc
bkNvbnN0YW50cyBmb3IgZ2wuZ2V0UGFyYW1ldGVyKCkgdGhhdCB3ZSBkbyBub3QgdHJhY2sgaW4g
SW5qZWN0ZWRTY3JpcHRNb2R1bGU6Iik7CisgICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1bmN0
aW9uKHByb3BlcnR5KSB7CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZXF1YWwgY29uc3Rh
bnRzIEJMRU5EX0VRVUFUSU9OIGFuZCBCTEVORF9FUVVBVElPTl9SR0IuCisgICAgICAgIGlmIChw
cm9wZXJ0eSA9PT0gIkJMRU5EX0VRVUFUSU9OIiAmJiBnbC5CTEVORF9FUVVBVElPTiA9PT0gZ2wu
QkxFTkRfRVFVQVRJT05fUkdCKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuR0xDYXBhYmlsaXRpZXMuaW5kZXhPZihwcm9wZXJ0
eSkgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV2ViR0xSZW5kZXJp
bmdDb250ZXh0UmVzb3VyY2UuUGl4ZWxTdG9yZVBhcmFtZXRlcnMuaW5kZXhPZihwcm9wZXJ0eSkg
IT09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV2ViR0xSZW5kZXJpbmdD
b250ZXh0UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFdlYkdMUmVuZGVyaW5nQ29udGV4dFJl
c291cmNlLlRleHR1cmVCaW5kaW5ncy5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHdhc0Vycm9yKGdsKTsKKyAgICAgICAgZ2wuZ2V0UGFyYW1l
dGVyKGdsW3Byb3BlcnR5XSk7CisgICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQorICAgICAgICAg
ICAgb3V0cHV0KHByb3BlcnR5KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorICAgIHRyeSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+CitUZXN0IHRvIGNhdGNoIFdlYkdMIEFQSSBjaGFuZ2VzLgorSWYgdGhpcyB0
ZXN0IHNob3VsZCBldmVyIGZhaWwsIHdlIHNob3VsZCByZS1leGFtaW5lIHRoZSBXZWJHTCBzdGF0
ZSBzYXZpbmcvcmVzdG9yaW5nIGxvZ2ljIGluIHRoZQorSW5qZWN0ZWRTY3JpcHRNb2R1bGUgdG8g
aW5jbHVkZSBhbnkgbGF0ZXN0IGNoYW5nZXMgdG8gdGhlIEFQSS4KKworPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZjFlYWQ0MzUyMjhhYWQxNWMxNmFk
NTA5YjI2NDdhYWQ5YTRhNmU2Zi4uYmZmNTQ3MDE3NzRjYjhiZWE2ZmI2OTlhYTE0ZWYxMTZhNzdm
NzU5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMzcsNiArMTM3LDcgQEAgY29tcG9z
aXRpbmcvd2ViZ2wKIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3Rl
LWltYWdlLWFsbG93ZWQuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVh
ZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIGh0dHAvdGVzdHMv
c2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWJsb2NrZWQtbm8tY3Jvc3Nv
cmlnaW4uaHRtbAoraW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsCiAKICMgRU5BQkxFKExJTktfUFJF
RkVUQ0gpIGlzIGRpc2FibGVkLgogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1
YnJlc291cmNlLXRlc3QuaHRtbApAQCAtMjc1OCw3ICsyNzU5LDMgQEAgaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldEludGVydmFsLmh0
bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5LWJs
b2Nrcy1zZXRUaW1lb3V0Lmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NzcC1pbmplY3RlZC1j
b250ZW50LXdhcm5pbmctY29udGFpbnMtc3RhY2t0cmFjZS5odG1sCiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jc3AtaW5saW5lLXdhcm5pbmctY29udGFpbnMtc3RhY2t0cmFjZS5odG1sCi0KLSMgW1F0
XSBOZXcgaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwg
dGltZXMgb3V0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4
MwotaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161427</attachid>
            <date>2012-08-30 01:44:27 -0700</date>
            <delta_ts>2012-08-31 00:36:11 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-95183-20120830124415.patch</filename>
            <type>text/plain</type>
            <size>18812</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTEzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzcyMjE5ZGFjZDdmODQ3MThmZjU1
YjU4YmMxNzZlZjQ5YTkxODUyYy4uZTIyNWVjN2FiNjkyZWExNWNkNjgzNTIzZGIxYTY0ZGVhMTc3
NWY4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTMwICBBbmRyZXkgQWRhaWtpbiAg
PGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtRdF0gTmV3IGluc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1sIHRpbWVzIG91dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGluc3BlY3RvciBXZWJH
TCB0ZXN0KHMpIHRvIGl0cyBvd24gZm9sZGVyIHNvIHRoYXQgdGhleSBhcmUgZWFzeSB0byBibGFj
a2xpc3QuIFNraXAgdGhlbSBmb3IgUVQgd2hlcmUgV2ViR0wgaXMgZGlzYWJsZWQgYXQgdGhlIG1v
bWVudC4KKyAgICAgICAgRHJpdmUtYnk6IG1ha2UgdGhlIHRlc3QgZmFpbCBpbnN0ZWFkIG9mIHRp
bWluZyBvdXQgd2hlbiBXZWJHTCBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQ6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXIt
YXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93
ZWJnbC93ZWJnbC1wcm9maWxlci1hcGktY2hhbmdlcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwu
CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMi0wOC0zMCAgTWlraGFpbCBQ
b3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBHYXJkZW5pbmcgYWZ0ZXIgcjEyNzEzNSwgcjEyNzAzOQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC1wcm9maWxlci1hcGkt
Y2hhbmdlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MzE3
ZDgyYWI1OTc1MmRjNjc5MTRjMmYzYTYzZGIzNGYwNTc3ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLVRlc3QgdG8gY2F0Y2ggV2ViR0wgQVBJIGNoYW5nZXMuIElmIHRoaXMg
dGVzdCBzaG91bGQgZXZlciBmYWlsLCB3ZSBzaG91bGQgcmUtZXhhbWluZSB0aGUgV2ViR0wgc3Rh
dGUgc2F2aW5nL3Jlc3RvcmluZyBsb2dpYyBpbiB0aGUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgdG8g
aW5jbHVkZSBhbnkgbGF0ZXN0IGNoYW5nZXMgdG8gdGhlIEFQSS4KLQotQ29uc3RhbnRzIGZvciBn
bC5pc0VuYWJsZWQoKToKLUJMRU5ECi1DVUxMX0ZBQ0UKLURFUFRIX1RFU1QKLURJVEhFUgotUE9M
WUdPTl9PRkZTRVRfRklMTAotU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFCi1TQU1QTEVfQ09WRVJB
R0UKLVNDSVNTT1JfVEVTVAotU1RFTkNJTF9URVNUCi0KLUNvbnN0YW50cyBmb3IgZ2wucGl4ZWxT
dG9yZWkoKToKLVBBQ0tfQUxJR05NRU5UCi1VTlBBQ0tfQUxJR05NRU5UCi1VTlBBQ0tfQ09MT1JT
UEFDRV9DT05WRVJTSU9OX1dFQkdMCi1VTlBBQ0tfRkxJUF9ZX1dFQkdMCi1VTlBBQ0tfUFJFTVVM
VElQTFlfQUxQSEFfV0VCR0wKLQotQ29uc3RhbnRzIGZvciBnbC5nZXRUZXhQYXJhbWV0ZXIoKToK
LVRFWFRVUkVfTUFHX0ZJTFRFUgotVEVYVFVSRV9NSU5fRklMVEVSCi1URVhUVVJFX1dSQVBfUwot
VEVYVFVSRV9XUkFQX1QKLQotQ29uc3RhbnRzIGZvciBnbC5nZXRWZXJ0ZXhBdHRyaWIoKToKLUNV
UlJFTlRfVkVSVEVYX0FUVFJJQgotVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORwot
VkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVECi1WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQKLVZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRQotVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUK
LVZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRQotCi1Db25zdGFudHMgZm9yIGdsLmdldFZlcnRleEF0
dHJpYk9mZnNldCgpOgotVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSCi0KLUNvbnN0YW50cyBm
b3IgZ2wuZ2V0UGFyYW1ldGVyKCkgdGhhdCB3ZSBkbyBub3QgdHJhY2sgaW4gSW5qZWN0ZWRTY3Jp
cHRNb2R1bGU6Ci1BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UKLUFMSUFTRURfUE9JTlRfU0laRV9S
QU5HRQotQUxQSEFfQklUUwotQkxVRV9CSVRTCi1DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUwot
REVQVEhfQklUUwotR1JFRU5fQklUUwotTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMK
LU1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUKLU1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMK
LU1BWF9SRU5ERVJCVUZGRVJfU0laRQotTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMKLU1BWF9URVhU
VVJFX1NJWkUKLU1BWF9WQVJZSU5HX1ZFQ1RPUlMKLU1BWF9WRVJURVhfQVRUUklCUwotTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTCi1NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUwotTUFY
X1ZJRVdQT1JUX0RJTVMKLVJFRF9CSVRTCi1SRU5ERVJFUgotU0FNUExFUwotU0FNUExFX0JVRkZF
UlMKLVNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTgotU1RFTkNJTF9CSVRTCi1TVUJQSVhFTF9CSVRT
Ci1WRU5ET1IKLVZFUlNJT04KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWNlYjcxODE4OTBhMGJkYWRmNGQ4ODcwYTMyMzFkMGZjZWVk
YTIzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci0KLSBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LX0KLQotZnVuY3Rpb24gd2FzRXJyb3IoZ2wpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGZhbHNlOwot
ICAgIHdoaWxlIChnbC5nZXRFcnJvcigpICE9PSBnbC5OT19FUlJPUikKLSAgICAgICAgcmVzdWx0
ID0gdHJ1ZTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0gZnVuY3Rpb24gY3JlYXRlV2ViR0xD
b250ZXh0KCkKLSB7Ci0gICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKLSAgICAgdmFyIGNvbnRleHRJZHMgPSBbImV4cGVyaW1lbnRhbC13ZWJnbCIsICJ3
ZWJraXQtM2QiLCAiM2QiXTsKLSAgICAgZm9yICh2YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4
dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7Ci0gICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0
Q29udGV4dChjb250ZXh0SWQpOwotICAgICAgICAgaWYgKGdsKQotICAgICAgICAgICAgIHJldHVy
biBnbDsKLSAgICAgfQotICAgICBvdXRwdXQoIkVSUk9SOiBDb3VsZCBub3QgY3JlYXRlIGEgV2Vi
R0wgY29udGV4dC4iKTsKLSAgICAgcmV0dXJuIG51bGw7Ci0gfQotCi0gV2ViR0xSZW5kZXJpbmdD
b250ZXh0UmVzb3VyY2UgPSB7fTsKLSAKLSAvKioKLSAgKiBAY29uc3QKLSAgKiBAdHlwZSB7QXJy
YXkuPHN0cmluZz59Ci0gICovCi0gV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuR0xDYXBh
YmlsaXRpZXMgPSBbCi0gICAgICJCTEVORCIsCi0gICAgICJDVUxMX0ZBQ0UiLAotICAgICAiREVQ
VEhfVEVTVCIsCi0gICAgICJESVRIRVIiLAotICAgICAiUE9MWUdPTl9PRkZTRVRfRklMTCIsCi0g
ICAgICJTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UiLAotICAgICAiU0FNUExFX0NPVkVSQUdFIiwK
LSAgICAgIlNDSVNTT1JfVEVTVCIsCi0gICAgICJTVEVOQ0lMX1RFU1QiCi0gXTsKLQotIC8qKgot
ICAqIEBjb25zdAotICAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KLSAgKi8KLSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRSZXNvdXJjZS5QaXhlbFN0b3JlUGFyYW1ldGVycyA9IFsKLSAgICAgIlBBQ0tf
QUxJR05NRU5UIiwKLSAgICAgIlVOUEFDS19BTElHTk1FTlQiLAotICAgICAiVU5QQUNLX0NPTE9S
U1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCIsCi0gICAgICJVTlBBQ0tfRkxJUF9ZX1dFQkdMIiwKLSAg
ICAgIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCIKLSBdOwotCi0gLyoqCi0gICogQGNv
bnN0Ci0gICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQotICAqLwotIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dFJlc291cmNlLlN0YXRlUGFyYW1ldGVycyA9IFsKLSAgICAgIkFDVElWRV9URVhUVVJFIiwK
LSAgICAgIkFSUkFZX0JVRkZFUl9CSU5ESU5HIiwKLSAgICAgIkJMRU5EX0NPTE9SIiwKLSAgICAg
IkJMRU5EX0RTVF9BTFBIQSIsCi0gICAgICJCTEVORF9EU1RfUkdCIiwKLSAgICAgIkJMRU5EX0VR
VUFUSU9OX0FMUEhBIiwKLSAgICAgIkJMRU5EX0VRVUFUSU9OX1JHQiIsCi0gICAgICJCTEVORF9T
UkNfQUxQSEEiLAotICAgICAiQkxFTkRfU1JDX1JHQiIsCi0gICAgICJDT0xPUl9DTEVBUl9WQUxV
RSIsCi0gICAgICJDT0xPUl9XUklURU1BU0siLAotICAgICAiQ1VMTF9GQUNFX01PREUiLAotICAg
ICAiQ1VSUkVOVF9QUk9HUkFNIiwKLSAgICAgIkRFUFRIX0NMRUFSX1ZBTFVFIiwKLSAgICAgIkRF
UFRIX0ZVTkMiLAotICAgICAiREVQVEhfUkFOR0UiLAotICAgICAiREVQVEhfV1JJVEVNQVNLIiwK
LSAgICAgIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkciLAotICAgICAiRlJBTUVCVUZGRVJf
QklORElORyIsCi0gICAgICJGUk9OVF9GQUNFIiwKLSAgICAgIkdFTkVSQVRFX01JUE1BUF9ISU5U
IiwKLSAgICAgIkxJTkVfV0lEVEgiLAotICAgICAiUEFDS19BTElHTk1FTlQiLAotICAgICAiUE9M
WUdPTl9PRkZTRVRfRkFDVE9SIiwKLSAgICAgIlBPTFlHT05fT0ZGU0VUX1VOSVRTIiwKLSAgICAg
IlJFTkRFUkJVRkZFUl9CSU5ESU5HIiwKLSAgICAgIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiLAot
ICAgICAiU0FNUExFX0NPVkVSQUdFX1ZBTFVFIiwKLSAgICAgIlNDSVNTT1JfQk9YIiwKLSAgICAg
IlNURU5DSUxfQkFDS19GQUlMIiwKLSAgICAgIlNURU5DSUxfQkFDS19GVU5DIiwKLSAgICAgIlNU
RU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwiLAotICAgICAiU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfUEFTUyIsCi0gICAgICJTVEVOQ0lMX0JBQ0tfUkVGIiwKLSAgICAgIlNURU5DSUxfQkFDS19W
QUxVRV9NQVNLIiwKLSAgICAgIlNURU5DSUxfQkFDS19XUklURU1BU0siLAotICAgICAiU1RFTkNJ
TF9DTEVBUl9WQUxVRSIsCi0gICAgICJTVEVOQ0lMX0ZBSUwiLAotICAgICAiU1RFTkNJTF9GVU5D
IiwKLSAgICAgIlNURU5DSUxfUEFTU19ERVBUSF9GQUlMIiwKLSAgICAgIlNURU5DSUxfUEFTU19E
RVBUSF9QQVNTIiwKLSAgICAgIlNURU5DSUxfUkVGIiwKLSAgICAgIlNURU5DSUxfVkFMVUVfTUFT
SyIsCi0gICAgICJTVEVOQ0lMX1dSSVRFTUFTSyIsCi0gICAgICJVTlBBQ0tfQUxJR05NRU5UIiwK
LSAgICAgIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wiLAotICAgICAiVU5QQUNL
X0ZMSVBfWV9XRUJHTCIsCi0gICAgICJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wiLAot
ICAgICAiVklFV1BPUlQiCi0gXTsKLQotIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlRl
eHR1cmVCaW5kaW5ncyA9IFsKLSAgICAgIlRFWFRVUkVfQklORElOR18yRCIsCi0gICAgICJURVhU
VVJFX0JJTkRJTkdfQ1VCRV9NQVAiCi0gXTsKLQotIGZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZh
ciBnbCA9IGNyZWF0ZVdlYkdMQ29udGV4dCgpOwotCi0gICAgdmFyIGNvbnN0YW50TmFtZXMgPSBb
XTsKLSAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBnbCkgewotICAgICAgICBpZiAoL15bQS1aMC05
X10rJC8udGVzdChwcm9wZXJ0eSkpCi0gICAgICAgICAgICBjb25zdGFudE5hbWVzLnB1c2gocHJv
cGVydHkpOwotICAgIH0KLSAgICBjb25zdGFudE5hbWVzLnNvcnQoKTsKLQotICAgIG91dHB1dCgi
Q29uc3RhbnRzIGZvciBnbC5pc0VuYWJsZWQoKToiKTsKLSAgICBjb25zdGFudE5hbWVzLmZvckVh
Y2goZnVuY3Rpb24ocHJvcGVydHkpIHsKLSAgICAgICAgd2FzRXJyb3IoZ2wpOwotICAgICAgICBn
bC5pc0VuYWJsZWQoZ2xbcHJvcGVydHldKTsKLSAgICAgICAgaWYgKCF3YXNFcnJvcihnbCkpCi0g
ICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOwotICAgIH0pOwotCi0gICAgb3V0cHV0KCJcbkNv
bnN0YW50cyBmb3IgZ2wucGl4ZWxTdG9yZWkoKToiKTsKLSAgICBjb25zdGFudE5hbWVzLmZvckVh
Y2goZnVuY3Rpb24ocHJvcGVydHkpIHsKLSAgICAgICAgd2FzRXJyb3IoZ2wpOwotICAgICAgICB2
YXIgdmFsdWUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2xbcHJvcGVydHldKTsKLSAgICAgICAgaWYgKHdh
c0Vycm9yKGdsKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2wucGl4ZWxTdG9yZWko
Z2xbcHJvcGVydHldLCB2YWx1ZSk7Ci0gICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQotICAgICAg
ICAgICAgb3V0cHV0KHByb3BlcnR5KTsKLSAgICB9KTsKLQotICAgIG91dHB1dCgiXG5Db25zdGFu
dHMgZm9yIGdsLmdldFRleFBhcmFtZXRlcigpOiIpOwotICAgIHZhciB0ZXh0dXJlID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOwotICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUp
OwotICAgIGNvbnN0YW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewotICAgICAg
ICB3YXNFcnJvcihnbCk7Ci0gICAgICAgIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJE
LCBnbFtwcm9wZXJ0eV0pOwotICAgICAgICBpZiAoIXdhc0Vycm9yKGdsKSkKLSAgICAgICAgICAg
IG91dHB1dChwcm9wZXJ0eSk7Ci0gICAgfSk7Ci0KLSAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZv
ciBnbC5nZXRWZXJ0ZXhBdHRyaWIoKToiKTsKLSAgICBjb25zdGFudE5hbWVzLmZvckVhY2goZnVu
Y3Rpb24ocHJvcGVydHkpIHsKLSAgICAgICAgd2FzRXJyb3IoZ2wpOwotICAgICAgICBnbC5nZXRW
ZXJ0ZXhBdHRyaWIoMCwgZ2xbcHJvcGVydHldKTsKLSAgICAgICAgaWYgKCF3YXNFcnJvcihnbCkp
Ci0gICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOwotICAgIH0pOwotCi0gICAgb3V0cHV0KCJc
bkNvbnN0YW50cyBmb3IgZ2wuZ2V0VmVydGV4QXR0cmliT2Zmc2V0KCk6Iik7Ci0gICAgY29uc3Rh
bnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3BlcnR5KSB7Ci0gICAgICAgIHdhc0Vycm9yKGds
KTsKLSAgICAgICAgZ2wuZ2V0VmVydGV4QXR0cmliT2Zmc2V0KDAsIGdsW3Byb3BlcnR5XSk7Ci0g
ICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQotICAgICAgICAgICAgb3V0cHV0KHByb3BlcnR5KTsK
LSAgICB9KTsKLQotICAgIG91dHB1dCgiXG5Db25zdGFudHMgZm9yIGdsLmdldFBhcmFtZXRlcigp
IHRoYXQgd2UgZG8gbm90IHRyYWNrIGluIEluamVjdGVkU2NyaXB0TW9kdWxlOiIpOwotICAgIGNv
bnN0YW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewotICAgICAgICAvLyBTcGVj
aWFsIGNhc2UgZm9yIGVxdWFsIGNvbnN0YW50cyBCTEVORF9FUVVBVElPTiBhbmQgQkxFTkRfRVFV
QVRJT05fUkdCLgotICAgICAgICBpZiAocHJvcGVydHkgPT09ICJCTEVORF9FUVVBVElPTiIgJiYg
Z2wuQkxFTkRfRVFVQVRJT04gPT09IGdsLkJMRU5EX0VRVUFUSU9OX1JHQikKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLkdMQ2Fw
YWJpbGl0aWVzLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlBpeGVsU3RvcmVQYXJh
bWV0ZXJzLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgaWYgKFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlN0YXRlUGFyYW1ldGVycy5p
bmRleE9mKHByb3BlcnR5KSAhPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5UZXh0dXJlQmluZGluZ3MuaW5kZXhPZihw
cm9wZXJ0eSkgIT09IC0xKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3YXNFcnJvcihn
bCk7Ci0gICAgICAgIGdsLmdldFBhcmFtZXRlcihnbFtwcm9wZXJ0eV0pOwotICAgICAgICBpZiAo
IXdhc0Vycm9yKGdsKSkKLSAgICAgICAgICAgIG91dHB1dChwcm9wZXJ0eSk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxw
PgotVGVzdCB0byBjYXRjaCBXZWJHTCBBUEkgY2hhbmdlcy4KLUlmIHRoaXMgdGVzdCBzaG91bGQg
ZXZlciBmYWlsLCB3ZSBzaG91bGQgcmUtZXhhbWluZSB0aGUgV2ViR0wgc3RhdGUgc2F2aW5nL3Jl
c3RvcmluZyBsb2dpYyBpbiB0aGUKLUluamVjdGVkU2NyaXB0TW9kdWxlIHRvIGluY2x1ZGUgYW55
IGxhdGVzdCBjaGFuZ2VzIHRvIHRoZSBBUEkuCi0KLTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9m
aWxlci1hcGktY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI0MzE3ZDgyYWI1OTc1MmRjNjc5MTRjMmYzYTYzZGIzNGYwNTc3ZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJv
ZmlsZXItYXBpLWNoYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1Rlc3QgdG8g
Y2F0Y2ggV2ViR0wgQVBJIGNoYW5nZXMuIElmIHRoaXMgdGVzdCBzaG91bGQgZXZlciBmYWlsLCB3
ZSBzaG91bGQgcmUtZXhhbWluZSB0aGUgV2ViR0wgc3RhdGUgc2F2aW5nL3Jlc3RvcmluZyBsb2dp
YyBpbiB0aGUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgdG8gaW5jbHVkZSBhbnkgbGF0ZXN0IGNoYW5n
ZXMgdG8gdGhlIEFQSS4KKworQ29uc3RhbnRzIGZvciBnbC5pc0VuYWJsZWQoKToKK0JMRU5ECitD
VUxMX0ZBQ0UKK0RFUFRIX1RFU1QKK0RJVEhFUgorUE9MWUdPTl9PRkZTRVRfRklMTAorU0FNUExF
X0FMUEhBX1RPX0NPVkVSQUdFCitTQU1QTEVfQ09WRVJBR0UKK1NDSVNTT1JfVEVTVAorU1RFTkNJ
TF9URVNUCisKK0NvbnN0YW50cyBmb3IgZ2wucGl4ZWxTdG9yZWkoKToKK1BBQ0tfQUxJR05NRU5U
CitVTlBBQ0tfQUxJR05NRU5UCitVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMCitV
TlBBQ0tfRkxJUF9ZX1dFQkdMCitVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wKKworQ29u
c3RhbnRzIGZvciBnbC5nZXRUZXhQYXJhbWV0ZXIoKToKK1RFWFRVUkVfTUFHX0ZJTFRFUgorVEVY
VFVSRV9NSU5fRklMVEVSCitURVhUVVJFX1dSQVBfUworVEVYVFVSRV9XUkFQX1QKKworQ29uc3Rh
bnRzIGZvciBnbC5nZXRWZXJ0ZXhBdHRyaWIoKToKK0NVUlJFTlRfVkVSVEVYX0FUVFJJQgorVkVS
VEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORworVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVECitWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQKK1ZFUlRFWF9BVFRSSUJfQVJSQVlf
U0laRQorVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQ
RQorCitDb25zdGFudHMgZm9yIGdsLmdldFZlcnRleEF0dHJpYk9mZnNldCgpOgorVkVSVEVYX0FU
VFJJQl9BUlJBWV9QT0lOVEVSCisKK0NvbnN0YW50cyBmb3IgZ2wuZ2V0UGFyYW1ldGVyKCkgdGhh
dCB3ZSBkbyBub3QgdHJhY2sgaW4gSW5qZWN0ZWRTY3JpcHRNb2R1bGU6CitBTElBU0VEX0xJTkVf
V0lEVEhfUkFOR0UKK0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRQorQUxQSEFfQklUUworQkxVRV9C
SVRTCitDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUworREVQVEhfQklUUworR1JFRU5fQklUUwor
TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMKK01BWF9DVUJFX01BUF9URVhUVVJFX1NJ
WkUKK01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMKK01BWF9SRU5ERVJCVUZGRVJfU0laRQor
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMKK01BWF9URVhUVVJFX1NJWkUKK01BWF9WQVJZSU5HX1ZF
Q1RPUlMKK01BWF9WRVJURVhfQVRUUklCUworTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRT
CitNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUworTUFYX1ZJRVdQT1JUX0RJTVMKK1JFRF9CSVRT
CitSRU5ERVJFUgorU0FNUExFUworU0FNUExFX0JVRkZFUlMKK1NIQURJTkdfTEFOR1VBR0VfVkVS
U0lPTgorU1RFTkNJTF9CSVRTCitTVUJQSVhFTF9CSVRTCitWRU5ET1IKK1ZFUlNJT04KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2Zp
bGVyLWFwaS1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2Vi
Z2wvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWY2NmYxNWRl
NzY4YmI0NjcxYjE3ODJmZTljNmExMWM0OWU5OGUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2Vz
Lmh0bWwKQEAgLTAsMCArMSwyMjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gd2FzRXJyb3IoZ2wpCit7CisgICAgdmFyIHJlc3VsdCA9IGZh
bHNlOworICAgIHdoaWxlIChnbC5nZXRFcnJvcigpICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBjcmVhdGVX
ZWJHTENvbnRleHQoKQoreworICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKKyAgICB2YXIgY29udGV4dElkcyA9IFsiZXhwZXJpbWVudGFsLXdlYmdsIiwg
IndlYmtpdC0zZCIsICIzZCJdOworICAgIGZvciAodmFyIGkgPSAwLCBjb250ZXh0SWQ7IGNvbnRl
eHRJZCA9IGNvbnRleHRJZHNbaV07ICsraSkgeworICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0
Q29udGV4dChjb250ZXh0SWQpOworICAgICAgICBpZiAoZ2wpCisgICAgICAgICAgICByZXR1cm4g
Z2w7CisgICAgfQorICAgIG91dHB1dCgiRVJST1I6IENvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBj
b250ZXh0LiIpOworICAgIHJldHVybiBudWxsOworfQorCitXZWJHTFJlbmRlcmluZ0NvbnRleHRS
ZXNvdXJjZSA9IHt9OworIAorLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5n
Pn0KKyAqLworV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuR0xDYXBhYmlsaXRpZXMgPSBb
CisgICAgIkJMRU5EIiwKKyAgICAiQ1VMTF9GQUNFIiwKKyAgICAiREVQVEhfVEVTVCIsCisgICAg
IkRJVEhFUiIsCisgICAgIlBPTFlHT05fT0ZGU0VUX0ZJTEwiLAorICAgICJTQU1QTEVfQUxQSEFf
VE9fQ09WRVJBR0UiLAorICAgICJTQU1QTEVfQ09WRVJBR0UiLAorICAgICJTQ0lTU09SX1RFU1Qi
LAorICAgICJTVEVOQ0lMX1RFU1QiCitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0Fy
cmF5LjxzdHJpbmc+fQorICovCitXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5QaXhlbFN0
b3JlUGFyYW1ldGVycyA9IFsKKyAgICAiUEFDS19BTElHTk1FTlQiLAorICAgICJVTlBBQ0tfQUxJ
R05NRU5UIiwKKyAgICAiVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCIsCisgICAg
IlVOUEFDS19GTElQX1lfV0VCR0wiLAorICAgICJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VC
R0wiCitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICov
CitXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5TdGF0ZVBhcmFtZXRlcnMgPSBbCisgICAg
IkFDVElWRV9URVhUVVJFIiwKKyAgICAiQVJSQVlfQlVGRkVSX0JJTkRJTkciLAorICAgICJCTEVO
RF9DT0xPUiIsCisgICAgIkJMRU5EX0RTVF9BTFBIQSIsCisgICAgIkJMRU5EX0RTVF9SR0IiLAor
ICAgICJCTEVORF9FUVVBVElPTl9BTFBIQSIsCisgICAgIkJMRU5EX0VRVUFUSU9OX1JHQiIsCisg
ICAgIkJMRU5EX1NSQ19BTFBIQSIsCisgICAgIkJMRU5EX1NSQ19SR0IiLAorICAgICJDT0xPUl9D
TEVBUl9WQUxVRSIsCisgICAgIkNPTE9SX1dSSVRFTUFTSyIsCisgICAgIkNVTExfRkFDRV9NT0RF
IiwKKyAgICAiQ1VSUkVOVF9QUk9HUkFNIiwKKyAgICAiREVQVEhfQ0xFQVJfVkFMVUUiLAorICAg
ICJERVBUSF9GVU5DIiwKKyAgICAiREVQVEhfUkFOR0UiLAorICAgICJERVBUSF9XUklURU1BU0si
LAorICAgICJFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIiwKKyAgICAiRlJBTUVCVUZGRVJf
QklORElORyIsCisgICAgIkZST05UX0ZBQ0UiLAorICAgICJHRU5FUkFURV9NSVBNQVBfSElOVCIs
CisgICAgIkxJTkVfV0lEVEgiLAorICAgICJQQUNLX0FMSUdOTUVOVCIsCisgICAgIlBPTFlHT05f
T0ZGU0VUX0ZBQ1RPUiIsCisgICAgIlBPTFlHT05fT0ZGU0VUX1VOSVRTIiwKKyAgICAiUkVOREVS
QlVGRkVSX0JJTkRJTkciLAorICAgICJTQU1QTEVfQ09WRVJBR0VfSU5WRVJUIiwKKyAgICAiU0FN
UExFX0NPVkVSQUdFX1ZBTFVFIiwKKyAgICAiU0NJU1NPUl9CT1giLAorICAgICJTVEVOQ0lMX0JB
Q0tfRkFJTCIsCisgICAgIlNURU5DSUxfQkFDS19GVU5DIiwKKyAgICAiU1RFTkNJTF9CQUNLX1BB
U1NfREVQVEhfRkFJTCIsCisgICAgIlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MiLAorICAg
ICJTVEVOQ0lMX0JBQ0tfUkVGIiwKKyAgICAiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0siLAorICAg
ICJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLIiwKKyAgICAiU1RFTkNJTF9DTEVBUl9WQUxVRSIsCisg
ICAgIlNURU5DSUxfRkFJTCIsCisgICAgIlNURU5DSUxfRlVOQyIsCisgICAgIlNURU5DSUxfUEFT
U19ERVBUSF9GQUlMIiwKKyAgICAiU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MiLAorICAgICJTVEVO
Q0lMX1JFRiIsCisgICAgIlNURU5DSUxfVkFMVUVfTUFTSyIsCisgICAgIlNURU5DSUxfV1JJVEVN
QVNLIiwKKyAgICAiVU5QQUNLX0FMSUdOTUVOVCIsCisgICAgIlVOUEFDS19DT0xPUlNQQUNFX0NP
TlZFUlNJT05fV0VCR0wiLAorICAgICJVTlBBQ0tfRkxJUF9ZX1dFQkdMIiwKKyAgICAiVU5QQUNL
X1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIiwKKyAgICAiVklFV1BPUlQiCitdOworCitXZWJHTFJl
bmRlcmluZ0NvbnRleHRSZXNvdXJjZS5UZXh0dXJlQmluZGluZ3MgPSBbCisgICAgIlRFWFRVUkVf
QklORElOR18yRCIsCisgICAgIlRFWFRVUkVfQklORElOR19DVUJFX01BUCIKK107CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHZhciBnbCA9IGNyZWF0ZVdlYkdMQ29udGV4dCgpOworICAgIGlm
ICghZ2wpCisgICAgICAgIHJldHVybjsKKworICAgIHZhciBjb25zdGFudE5hbWVzID0gW107Cisg
ICAgZm9yICh2YXIgcHJvcGVydHkgaW4gZ2wpIHsKKyAgICAgICAgaWYgKC9eW0EtWjAtOV9dKyQv
LnRlc3QocHJvcGVydHkpKQorICAgICAgICAgICAgY29uc3RhbnROYW1lcy5wdXNoKHByb3BlcnR5
KTsKKyAgICB9CisgICAgY29uc3RhbnROYW1lcy5zb3J0KCk7CisKKyAgICBvdXRwdXQoIkNvbnN0
YW50cyBmb3IgZ2wuaXNFbmFibGVkKCk6Iik7CisgICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1
bmN0aW9uKHByb3BlcnR5KSB7CisgICAgICAgIHdhc0Vycm9yKGdsKTsKKyAgICAgICAgZ2wuaXNF
bmFibGVkKGdsW3Byb3BlcnR5XSk7CisgICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQorICAgICAg
ICAgICAgb3V0cHV0KHByb3BlcnR5KTsKKyAgICB9KTsKKworICAgIG91dHB1dCgiXG5Db25zdGFu
dHMgZm9yIGdsLnBpeGVsU3RvcmVpKCk6Iik7CisgICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1
bmN0aW9uKHByb3BlcnR5KSB7CisgICAgICAgIHdhc0Vycm9yKGdsKTsKKyAgICAgICAgdmFyIHZh
bHVlID0gZ2wuZ2V0UGFyYW1ldGVyKGdsW3Byb3BlcnR5XSk7CisgICAgICAgIGlmICh3YXNFcnJv
cihnbCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsW3By
b3BlcnR5XSwgdmFsdWUpOworICAgICAgICBpZiAoIXdhc0Vycm9yKGdsKSkKKyAgICAgICAgICAg
IG91dHB1dChwcm9wZXJ0eSk7CisgICAgfSk7CisKKyAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZv
ciBnbC5nZXRUZXhQYXJhbWV0ZXIoKToiKTsKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAg
ICBjb25zdGFudE5hbWVzLmZvckVhY2goZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgICAgd2Fz
RXJyb3IoZ2wpOworICAgICAgICBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2xb
cHJvcGVydHldKTsKKyAgICAgICAgaWYgKCF3YXNFcnJvcihnbCkpCisgICAgICAgICAgICBvdXRw
dXQocHJvcGVydHkpOworICAgIH0pOworCisgICAgb3V0cHV0KCJcbkNvbnN0YW50cyBmb3IgZ2wu
Z2V0VmVydGV4QXR0cmliKCk6Iik7CisgICAgY29uc3RhbnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9u
KHByb3BlcnR5KSB7CisgICAgICAgIHdhc0Vycm9yKGdsKTsKKyAgICAgICAgZ2wuZ2V0VmVydGV4
QXR0cmliKDAsIGdsW3Byb3BlcnR5XSk7CisgICAgICAgIGlmICghd2FzRXJyb3IoZ2wpKQorICAg
ICAgICAgICAgb3V0cHV0KHByb3BlcnR5KTsKKyAgICB9KTsKKworICAgIG91dHB1dCgiXG5Db25z
dGFudHMgZm9yIGdsLmdldFZlcnRleEF0dHJpYk9mZnNldCgpOiIpOworICAgIGNvbnN0YW50TmFt
ZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgeworICAgICAgICB3YXNFcnJvcihnbCk7Cisg
ICAgICAgIGdsLmdldFZlcnRleEF0dHJpYk9mZnNldCgwLCBnbFtwcm9wZXJ0eV0pOworICAgICAg
ICBpZiAoIXdhc0Vycm9yKGdsKSkKKyAgICAgICAgICAgIG91dHB1dChwcm9wZXJ0eSk7CisgICAg
fSk7CisKKyAgICBvdXRwdXQoIlxuQ29uc3RhbnRzIGZvciBnbC5nZXRQYXJhbWV0ZXIoKSB0aGF0
IHdlIGRvIG5vdCB0cmFjayBpbiBJbmplY3RlZFNjcmlwdE1vZHVsZToiKTsKKyAgICBjb25zdGFu
dE5hbWVzLmZvckVhY2goZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgICAgLy8gU3BlY2lhbCBj
YXNlIGZvciBlcXVhbCBjb25zdGFudHMgQkxFTkRfRVFVQVRJT04gYW5kIEJMRU5EX0VRVUFUSU9O
X1JHQi4KKyAgICAgICAgaWYgKHByb3BlcnR5ID09PSAiQkxFTkRfRVFVQVRJT04iICYmIGdsLkJM
RU5EX0VRVUFUSU9OID09PSBnbC5CTEVORF9FUVVBVElPTl9SR0IpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5HTENhcGFiaWxp
dGllcy5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5QaXhlbFN0b3JlUGFyYW1ldGVy
cy5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5TdGF0ZVBhcmFtZXRlcnMuaW5kZXhP
Zihwcm9wZXJ0eSkgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuVGV4dHVyZUJpbmRpbmdzLmluZGV4T2YocHJvcGVy
dHkpICE9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2FzRXJyb3IoZ2wpOwor
ICAgICAgICBnbC5nZXRQYXJhbWV0ZXIoZ2xbcHJvcGVydHldKTsKKyAgICAgICAgaWYgKCF3YXNF
cnJvcihnbCkpCisgICAgICAgICAgICBvdXRwdXQocHJvcGVydHkpOworICAgIH0pOworfQorCitm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIx
Iik7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdGVzdCgpOworICAg
IH0gZmluYWxseSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdG8gY2F0Y2ggV2ViR0wgQVBJ
IGNoYW5nZXMuCitJZiB0aGlzIHRlc3Qgc2hvdWxkIGV2ZXIgZmFpbCwgd2Ugc2hvdWxkIHJlLWV4
YW1pbmUgdGhlIFdlYkdMIHN0YXRlIHNhdmluZy9yZXN0b3JpbmcgbG9naWMgaW4gdGhlCitJbmpl
Y3RlZFNjcmlwdE1vZHVsZSB0byBpbmNsdWRlIGFueSBsYXRlc3QgY2hhbmdlcyB0byB0aGUgQVBJ
LgorCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBh
NGUxZGEwNjliZDk3MDYxMDUyZTE5YWEzN2ExOTM5NDYzZDA3YjMxLi42MGYwMDMzYTgzYjBlY2Zm
NjY5MzFhZWJlYTAxNzM1MTE5Y2ZhMzMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTEz
Nyw2ICsxMzcsNyBAQCBjb21wb3NpdGluZy93ZWJnbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJn
bC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC5odG1sCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlh
bHMuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1h
Z2UtYmxvY2tlZC1uby1jcm9zc29yaWdpbi5odG1sCitpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wK
IAogIyBFTkFCTEUoTElOS19QUkVGRVRDSCkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCkBAIC0yNzYzLDEwICsyNzY0
LDYgQEAgaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3kt
YmxvY2tzLXNldFRpbWVvdXQuaHRtbAogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY3NwLWluamVjdGVk
LWNvbnRlbnQtd2FybmluZy1jb250YWlucy1zdGFja3RyYWNlLmh0bWwKIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2NzcC1pbmxpbmUtd2FybmluZy1jb250YWlucy1zdGFja3RyYWNlLmh0bWwKIAotIyBb
UXRdIE5ldyBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRt
bCB0aW1lcyBvdXQKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTgzCi1pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRtbAot
CiAjIFtRdF0gTmV3IHN2Zy9jdXN0b20vY2xhbXBlZC1tYXNraW5nLWNsaXBwaW5nLnN2ZyBhc3Nl
cnRzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQzMQogIyBb
UXRdW0dUS10gTmV3IHN2Zy9jdXN0b20vY2xhbXBlZC1tYXNraW5nLWNsaXBwaW5nLnN2ZyBmYWls
cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>