<?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>49151</bug_id>
          
          <creation_ts>2010-11-07 18:13:16 -0800</creation_ts>
          <short_desc>[Chromium] REGRESSION(71474?) failing webkit tests on chromium canaries</short_desc>
          <delta_ts>2010-11-09 12:10:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305917</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-11-07 18:13:16 -0800</bug_when>
    <thetext>Since webkit r71474, webkit tests on chromium canaries started failing.

Win: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win/builds/872
Linux: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Linux/builds/1409
Mac: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac/builds/588</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305945</commentid>
    <comment_count>1</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-11-07 19:57:03 -0800</bug_when>
    <thetext>Reverted r71475 and r71474</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306313</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-08 13:12:08 -0800</bug_when>
    <thetext>Looks like scm.find_checkout_root() isn&apos;t working correctly for an SVN-based checkout when the caller is outside of the root. Investigating further.

As a side note, it would be good if we could run at least a subset of the scm unittest on the bots ... I&apos;ll have to think about how to do that w/o running them all. Maybe as a short-term hack, move them out of the checkout directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306317</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-08 13:14:25 -0800</bug_when>
    <thetext>So, r71475 and r71474 aren&apos;t broken per se, but they started using  the code in scm to find the top of the webkit tree, instead of using its own logic, and it looks like that might be what broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306391</commentid>
    <comment_count>4</comment_count>
      <attachid>73290</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-08 14:50:40 -0800</bug_when>
    <thetext>Created attachment 73290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306396</commentid>
    <comment_count>5</comment_count>
      <attachid>73290</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-08 15:06:43 -0800</bug_when>
    <thetext>Comment on attachment 73290
Patch

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

&gt; WebKitTools/ChangeLog:31
&gt; +2010-11-07  Fumitoshi Ukai  &lt;ukai@chromium.org&gt;
&gt; +
&gt; +        Unreviewed, rolling out r71475.

I don&apos;t think you meant to move Ukai&apos;s entry.

&gt; WebKitTools/Scripts/webkitpy/common/system/filesystem_mock.py:55
&gt; +    def isdir(self, path):
&gt; +        # FIXME: Implement :)
&gt; +        raise NotImplementedError

I&apos;m still not a big fan of these stubs. :)

&gt; WebKitTools/Scripts/webkitpy/common/system/filesystem_mock.py:77
&gt; +                exception = IOError()
&gt; +                exception.errno = errno.ENOENT
&gt; +                exception.filename = path
&gt; +                exception.strerror = &quot;No such file or directory&quot;

I bet there is a constructor...

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/config.py:126
&gt; +        # Note: this code somewhat duplicates the code in
&gt; +        # scm.find_checkout_root(). However, that code only works if the top
&gt; +        # of the SCM repository also matches the top of the WebKit tree. The
&gt; +        # Chromium ports, for example, only check out subdirectories like
&gt; +        # WebKitTools/Scripts, and so we still have to do additional work
&gt; +        # to find the top of the tree.

I suspect lots of other pieces of webkitpy break for chromium too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306411</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-08 15:35:10 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 73290 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73290&amp;action=review
&gt; 
&gt; &gt; WebKitTools/ChangeLog:31
&gt; &gt; +2010-11-07  Fumitoshi Ukai  &lt;ukai@chromium.org&gt;
&gt; &gt; +
&gt; &gt; +        Unreviewed, rolling out r71475.
&gt; 
&gt; I don&apos;t think you meant to move Ukai&apos;s entry.
&gt; 

No, I didn&apos;t. I caught the other one, but not this one. I&apos;ll add it back in. I&apos;m not sure why I didn&apos;t notice it in the diff.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/filesystem_mock.py:55
&gt; &gt; +    def isdir(self, path):
&gt; &gt; +        # FIXME: Implement :)
&gt; &gt; +        raise NotImplementedError
&gt; 
&gt; I&apos;m still not a big fan of these stubs. :)
&gt; 

Then, for you, I&apos;ll remove them :)

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/filesystem_mock.py:77
&gt; &gt; +                exception = IOError()
&gt; &gt; +                exception.errno = errno.ENOENT
&gt; &gt; +                exception.filename = path
&gt; &gt; +                exception.strerror = &quot;No such file or directory&quot;
&gt; 
&gt; I bet there is a constructor...
&gt; 

Yeah, sort of. It appears to be relatively undocumented, but is obvious enough how to use it. Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306415</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-08 15:36:48 -0800</bug_when>
    <thetext>Committed r71580: &lt;http://trac.webkit.org/changeset/71580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306915</commentid>
    <comment_count>8</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-09 12:10:35 -0800</bug_when>
    <thetext>This appears to have broken NRWT&apos;s ability to pick up the currently set configuration (even though the debug config is used, it tries to look for release binaries):

$ set-webkit-configuration --debug
$ new-run-webkit-tests --chromium --use-drt
Defaulting to one child - see https://bugs.webkit.org/show_bug.cgi?id=38553
Unable to find test driver
    at /Users/mihaip/Developer/source/chromium1/src/third_party/WebKit/WebKit/chromium/xcodebuild/Release/DumpRenderTree.app/Contents/MacOS/DumpRenderTree

Unable to find layout test helper
    at /Users/mihaip/Developer/source/chromium1/src/third_party/WebKit/WebKit/chromium/xcodebuild/Release/LayoutTestHelper
Unable to find image diff exe
    at /Users/mihaip/Developer/source/chromium1/src/third_party/WebKit/WebKit/chromium/xcodebuild/Release/ImageDiff
    To override, invoke with --no-pixel-tests

wdiff not found. Install using MacPorts or some other means
For complete Mac build requirements, please see:

    http://code.google.com/p/chromium/wiki/MacBuildInstructions
Build check failed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73290</attachid>
            <date>2010-11-08 14:50:40 -0800</date>
            <delta_ts>2010-11-08 15:06:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49151-20101108145039.patch</filename>
            <type>text/plain</type>
            <size>53618</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYmMzZjYzN2Q3MzRhYTAyODk1NTk5MGNhYzI3ODk0MWNkZDQ2NDNhLi5lNjk0NzNl
YzYxNDgwMmRkZWE0NjFiNzY0MTA5N2E1MWM0MjVlN2IyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTEtMDggIERpcmsgUHJhbmtlIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHdlYmtpdF9i
YXNlX2RpciBsb2dpYyBpbiB3ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkuIAor
ICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCBOUldUIGNhbid0IHVzZSB0aGUgY29kZSBpbiBzY20u
ZmluZF9jaGVja291dF9yb290KCkKKyAgICAgICAgYmVjYXVzZSB0aGUgQ2hyb21pdW0gYm90cyBk
b24ndCBkbyBmdWxsIGNoZWNrb3V0cyBvZiB0aGUgV2ViS2l0CisgICAgICAgIHRyZWU7IHRoZXkg
b25seSBjaGVjayBvdXQgc3ViZGlyZWN0b3JpZXMgbGlrZSBXZWJLaXRUb29scy9TY3JpcHRzLgor
ICAgICAgICBVbnRpbCB3ZSBjYW4gZmlndXJlIG91dCBhIGJldHRlciBhcHByb2FjaCBmb3IgdGhp
cywgSSd2ZQorICAgICAgICByZXN0b3JlZCB0aGUgYmFzZV9kaXItZGV0ZWN0aW5nIGNvZGUgZnJv
bSBOUldULCB3aGljaCB3b3JrcyBpbgorICAgICAgICBhbnkgZGlyZWN0b3J5IHRyZWUsIHNjbSBv
ciBuby4KKworICAgICAgICBUaGlzIGFsc28gcmVzdG9yZXMgdGhlIGZpbGVzIG1vZGlmaWVkIGlu
IHI3MTQ3NSBhbmQgcjcxNDc0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTE1MQorCisgICAgICAgICogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKKyAgICAgICAgKiBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorCiAy
MDEwLTExLTA4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkBAIC03LDYgKzI2LDIwIEBACiAgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgogICAgICAgICAocmVzZXREZWZhdWx0c1Rv
Q29uc2lzdGVudFZhbHVlcyk6IFNldCB0aGUgc2Nyb2xsYmFyIGRlZmF1bHQuCiAKKzIwMTAtMTEt
MDcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjcxNDc1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC83MTQ3NQorIAorICAgICAgICBicmVha3MgY2hyb21pdW0gd2Via2l0IHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE1MQor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRl
c3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2V4ZWN1dGl2ZV9tb2NrLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6IFJlbW92ZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfbW9jay5weTogUmVtb3ZlZC4K
KwogMjAxMC0xMS0wNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV91bml0dGVzdCBwYXNzIHdoZW4g
cnVubmluZyB1bmRlcgpAQCAtMTg1LDIwICsyMTgsNiBAQAogICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CiAgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5OgogCi0yMDEwLTExLTA3ICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI3MTQ3NS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvNzE0NzUKLQotICAgICAgICBicmVha3MgY2hyb21pdW0gd2Via2l0IHRlc3RzCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE1MQotCi0gICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHk6IFJlbW92ZWQuCi0gICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHk6IFJl
bW92ZWQuCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2
ZV9tb2NrLnB5OiBSZW1vdmVkLgotICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtX21vY2sucHk6IFJlbW92ZWQuCi0gICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfbW9jay5weTogUmVtb3ZlZC4KLQogMjAxMC0x
MS0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ld3N0cmluZ2lvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZDA4ZWM1OTdiNjg1NjQ2ODU5MTU2
OTY3NDE1Zjg3YzI3MDYwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weQpAQCAtMCwwICsxLDQwIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiInd2l0aCctY29tcGxpYW50IFN0
cmluZ0lPIGltcGxlbWVudGF0aW9uLiIiIgorCitpbXBvcnQgU3RyaW5nSU8KKworCitjbGFzcyBT
dHJpbmdJTyhTdHJpbmdJTy5TdHJpbmdJTyk6CisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwg
dHJhY2ViYWNrKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpb191bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NzU1Yzk4MTQzZGQzNDg5YjZlMDUxZTNmOWQ5OTZlZDVmMDhiZDA5Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5p
dHRlc3QucHkKQEAgLTAsMCArMSw0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgbmV3c3RyaW5naW8gbW9kdWxlLiIiIgorCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKK2ltcG9ydCB1bml0dGVzdAor
CitpbXBvcnQgbmV3c3RyaW5naW8KKworCitjbGFzcyBOZXdTdHJpbmdJT1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dpdGgoc2VsZik6CisgICAgICAgIHdpdGggbmV3c3Ry
aW5naW8uU3RyaW5nSU8oImZvbyIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50cyA9IGYucmVh
ZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudHMsICJmb28iKQorCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9t
b2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczNDdmZjkwZjFlYzViZDUzMTFlMTcwYzU2OTZlOWZjOGRiZjE5
Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgRklYTUU6IEltcGxlbWVudCB0aGUgcmVzdCBvZiB0aGUgaW50ZXJmYWNlIGFzIG5lZWRl
ZCBmb3IgdGVzdGluZyA6KS4KKworIyBGSVhNRTogVW5pZnkgd2l0aCB0b29sL21vY2t0b29sLk1v
Y2tFeGVjdXRpdmUuCisKKworY2xhc3MgTW9ja0V4ZWN1dGl2ZTIob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgb3V0cHV0PScnLCBleGl0X2NvZGU9MCwgZXhjZXB0aW9uPU5vbmUpOgor
ICAgICAgICBzZWxmLl9vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5fZXhpdF9jb2RlID0g
ZXhpdF9jb2RlCisgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbgorCisgICAgZGVm
IGNwdV9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIDIKKworICAgIGRlZiBraWxsX2FsbChz
ZWxmLCBwcm9jZXNzX25hbWUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYga2lsbF9wcm9jZXNz
KHNlbGYsIHBpZCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBh
cmdfbGlzdCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgZGVj
b2RlX291dHB1dD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbjoKKyAgICAgICAg
ICAgIHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgorICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4aXRfY29kZQorICAgICAgICByZXR1cm4gc2VsZi5f
b3V0cHV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODBiMzNmYTMxYWE5
ZTdiMGI1YWUwY2E0ZDlhNTU4N2JlYTVjNTY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAt
MCwwICsxLDg1IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHBhdGgKKworCitjbGFzcyBNb2Nr
RmlsZVN5c3RlbShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlcz17fSk6Cisg
ICAgICAgICIiIkluaXRpYWxpemVzIGEgIm1vY2siIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgdXNl
ZCB0byBjb21wbGV0ZWx5CisgICAgICAgIHN0dWIgb3V0IGEgZmlsZXN5c3RlbS4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgICAgZmlsZXM6IGEgZGljdCBvZiBmaWxlbmFtZXMgLT4gZmlsZSBj
b250ZW50cy4gQSBmaWxlIGNvbnRlbnRzCisgICAgICAgICAgICAgICAgdmFsdWUgb2YgTm9uZSBp
cyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgc2hvdWxkCisgICAgICAgICAgICAgICAg
bm90IGV4aXN0IChldmVuIGlmIHN0YW5kYWxvbmUgaXMgRmFsc2UpLgorICAgICAgICAgICAgc3Rh
bmRhbG9uZTogSWYgVHJ1ZSwgb25seSB0aGUgZmlsZXMgbGlzdGVkIGluIF9maWxlc18gZXhpc3Qu
CisgICAgICAgICAgICAgICAgSWYgRmFsc2UsIHRoZSBvYmplY3Qgd2lsbCBwYXNzIHRocm91Z2gg
cmVhZCBjYWxscyB0byB0aGUKKyAgICAgICAgICAgICAgICB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0u
IFdyaXRlcyBhcmUgbmV2ZXIgcGFzc2VkIHRocm91Z2guCisKKyAgICAgICAgIiIiCisgICAgICAg
IHNlbGYuZmlsZXMgPSBmaWxlcworCisgICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKKyAgICAg
ICAgaWYgcGF0aCBpbiBzZWxmLmZpbGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNb
cGF0aF0gaXMgbm90IE5vbmUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNkaXIo
c2VsZiwgcGF0aCk6CisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCA6KQorICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgam9pbihzZWxmLCAqY29tcHMpOgorICAg
ICAgICByZXR1cm4gJy8nLmpvaW4oY29tcHMpCisKKyAgICBkZWYgbGlzdGRpcihzZWxmLCBwYXRo
KToKKyAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IDopCisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IKKworICAgIGRlZiBtYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6
CisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCBzdWNoIHRoYXQgc3Vic2VxdWVudCBjYWxscyB0
byBpc2RpcigpIHdvcms/CisgICAgICAgIHBhc3MKKworICAgIGRlZiByZWFkX3RleHRfZmlsZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQor
CisgICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGgg
aW4gc2VsZi5maWxlczoKKyAgICAgICAgICAgIGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToK
KyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBJT0Vycm9yKCkKKyAgICAgICAgICAgICAgICBl
eGNlcHRpb24uZXJybm8gPSBlcnJuby5FTk9FTlQKKyAgICAgICAgICAgICAgICBleGNlcHRpb24u
ZmlsZW5hbWUgPSBwYXRoCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uLnN0cmVycm9yID0gIk5v
IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCisgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9u
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXQorCisgICAgZGVmIHdyaXRlX3Rl
eHRfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRl
X2JpbmFyeV9maWxlKHBhdGgsIGNvbnRlbnRzKQorCisgICAgZGVmIHdyaXRlX2JpbmFyeV9maWxl
KHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IGNvbnRl
bnRzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkKaW5kZXggYTk4Yjg1ODExZjdmOWUxZGI4YmIxYWEzOWI5Y2ZkYTBiYWM0
NDA2Yy4uNGEyOTcwZTMyMDNjNjAwZjVlMjg5ZjhlODNkZDhhYTQyOTAwYTFiNCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQpAQCAtMzAsMTAgKzMwLDcgQEAKICIiIkFic3RyYWN0IGJhc2UgY2xhc3Mgb2YgUG9ydC1z
cGVjaWZpYyBlbnRyeXBvaW50cyBmb3IgdGhlIGxheW91dCB0ZXN0cwogdGVzdCBpbmZyYXN0cnVj
dHVyZSAodGhlIFBvcnQgYW5kIERyaXZlciBjbGFzc2VzKS4iIiIKIAotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgY2dpCi1pbXBvcnQgY29kZWNzCiBpbXBv
cnQgZGlmZmxpYgogaW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKQEAgLTQyLDE1ICszOSwxNyBAQCBp
bXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBpbXBvcnQgYXBhY2hlX2h0dHBfc2VydmVyCitpbXBv
cnQgY29uZmlnIGFzIHBvcnRfY29uZmlnCiBpbXBvcnQgaHR0cF9sb2NrCiBpbXBvcnQgaHR0cF9z
ZXJ2ZXIKIGltcG9ydCB0ZXN0X2ZpbGVzCiBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKK2Zyb20gd2Via2l0cHku
Y29tbW9uIGltcG9ydCBzeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
ZmlsZXN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgYWJzcGF0aF90b191cmkKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiAKIApAQCAtNzUsMjcgKzc0
LDI2IEBAIGNsYXNzIER1bW15T3B0aW9ucyhvYmplY3QpOgogCiAjIEZJWE1FOiBUaGlzIGNsYXNz
IHNob3VsZCBtZXJnZSB3aXRoIHdlYmtpdHB5LndlYmtpdF9wb3J0IGF0IHNvbWUgcG9pbnQuCiBj
bGFzcyBQb3J0KG9iamVjdCk6Ci0gICAgIiIiQWJzdHJhY3QgY2xhc3MgZm9yIFBvcnQtc3BlY2lm
aWMgaG9va3MgZm9yIHRoZSBsYXlvdXRfdGVzdCBwYWNrYWdlLgotICAgICIiIgotCi0gICAgQHN0
YXRpY21ldGhvZAotICAgIGRlZiBmbGFnX2Zyb21fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KToKLSAgICAgICAgZmxhZ3NfYnlfY29uZmlndXJhdGlvbiA9IHsKLSAgICAgICAgICAgICJEZWJ1
ZyI6ICItLWRlYnVnIiwKLSAgICAgICAgICAgICJSZWxlYXNlIjogIi0tcmVsZWFzZSIsCi0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZsYWdzX2J5X2NvbmZpZ3VyYXRpb25bY29uZmlndXJhdGlv
bl0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuX25h
bWUgPSBrd2FyZ3MuZ2V0KCdwb3J0X25hbWUnLCBOb25lKQotICAgICAgICBzZWxmLl9vcHRpb25z
ID0ga3dhcmdzLmdldCgnb3B0aW9ucycpCisgICAgIiIiQWJzdHJhY3QgY2xhc3MgZm9yIFBvcnQt
c3BlY2lmaWMgaG9va3MgZm9yIHRoZSBsYXlvdXRfdGVzdCBwYWNrYWdlLiIiIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPU5vbmUsCisgICAgICAgICAg
ICAgICAgIGV4ZWN1dGl2ZT1Ob25lLAorICAgICAgICAgICAgICAgICB1c2VyPU5vbmUsCisgICAg
ICAgICAgICAgICAgIGZpbGVzeXN0ZW09Tm9uZSwKKyAgICAgICAgICAgICAgICAgY29uZmlnPU5v
bmUsCisgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IHBv
cnRfbmFtZQorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zIGlzIE5vbmU6CiAgICAgICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHdlJ2QgaGF2
ZSBhIHBhY2thZ2Utd2lkZSB3YXkgdG8gZ2V0IGEKICAgICAgICAgICAgICMgd2VsbC1mb3JtZWQg
b3B0aW9ucyBvYmplY3QgdGhhdCBoYWQgYWxsIG9mIHRoZSBuZWNlc3NhcnkKICAgICAgICAgICAg
ICMgb3B0aW9ucyBkZWZpbmVkIG9uIGl0LgogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IER1
bW15T3B0aW9ucygpCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGt3YXJncy5nZXQoJ2V4ZWN1
dGl2ZScsIEV4ZWN1dGl2ZSgpKQotICAgICAgICBzZWxmLl91c2VyID0ga3dhcmdzLmdldCgndXNl
cicsIFVzZXIoKSkKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1
dGl2ZSgpCisgICAgICAgIHNlbGYuX3VzZXIgPSB1c2VyIG9yIFVzZXIoKQorICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBzeXN0ZW0uZmlsZXN5c3RlbS5GaWxlU3lzdGVt
KCkKKyAgICAgICAgc2VsZi5fY29uZmlnID0gY29uZmlnIG9yIHBvcnRfY29uZmlnLkNvbmZpZyhz
ZWxmLl9leGVjdXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSkKICAgICAgICAgc2VsZi5faGVscGVyID0gTm9u
ZQogICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fd2Via2l0
X2Jhc2VfZGlyID0gTm9uZQpAQCAtMTE4LDcgKzExNiw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgc2VsZi5fd2RpZmZfYXZhaWxhYmxlID0gVHJ1ZQogCiAgICAgICAgIHNlbGYuX3By
ZXR0eV9wYXRjaF9wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkJ1Z3NTaXRlIiwK
LSAgICAgICAgICAgICAgIlByZXR0eVBhdGNoIiwgInByZXR0aWZ5LnJiIikKKyAgICAgICAgICAg
ICJQcmV0dHlQYXRjaCIsICJwcmV0dGlmeS5yYiIpCiAgICAgICAgIHNlbGYuX3ByZXR0eV9wYXRj
aF9hdmFpbGFibGUgPSBUcnVlCiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25m
aWd1cmF0aW9uJywgTm9uZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9u
IGlzIE5vbmU6CkBAIC0yNjUsNyArMjYzLDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAg
ICAgIGJhc2VsaW5lcyA9IFtdCiAgICAgICAgIGZvciBwbGF0Zm9ybV9kaXIgaW4gYmFzZWxpbmVf
c2VhcmNoX3BhdGg6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4o
cGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSkpOgorICAgICAgICAgICAgaWYgc2VsZi5w
YXRoX2V4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4ocGxhdGZvcm1fZGlyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZmls
ZW5hbWUpKToKICAgICAgICAgICAgICAgICBiYXNlbGluZXMuYXBwZW5kKChwbGF0Zm9ybV9kaXIs
IGJhc2VsaW5lX2ZpbGVuYW1lKSkKIAogICAgICAgICAgICAgaWYgbm90IGFsbF9iYXNlbGluZXMg
YW5kIGJhc2VsaW5lczoKQEAgLTI3NCw3ICsyNzMsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAg
ICAgICAgICMgSWYgaXQgd2Fzbid0IGZvdW5kIGluIGEgcGxhdGZvcm0gZGlyZWN0b3J5LCByZXR1
cm4gdGhlIGV4cGVjdGVkCiAgICAgICAgICMgcmVzdWx0IGluIHRoZSB0ZXN0IGRpcmVjdG9yeSwg
ZXZlbiBpZiBubyBzdWNoIGZpbGUgYWN0dWFsbHkgZXhpc3RzLgogICAgICAgICBwbGF0Zm9ybV9k
aXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhv
cy5wYXRoLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSkpOgorICAgICAgICBp
ZiBzZWxmLnBhdGhfZXhpc3RzKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihwbGF0Zm9ybV9kaXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5l
X2ZpbGVuYW1lKSk6CiAgICAgICAgICAgICBiYXNlbGluZXMuYXBwZW5kKChwbGF0Zm9ybV9kaXIs
IGJhc2VsaW5lX2ZpbGVuYW1lKSkKIAogICAgICAgICBpZiBiYXNlbGluZXM6CkBAIC0zMDQsMzUg
KzMwNCwzMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHBsYXRmb3JtX2RpciwgYmFz
ZWxpbmVfZmlsZW5hbWUgPSBzZWxmLmV4cGVjdGVkX2Jhc2VsaW5lcygKICAgICAgICAgICAgIGZp
bGVuYW1lLCBzdWZmaXgpWzBdCiAgICAgICAgIGlmIHBsYXRmb3JtX2RpcjoKLSAgICAgICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgYmFzZWxp
bmVfZmlsZW5hbWUpCi0KLSAgICBkZWYgX2V4cGVjdGVkX2ZpbGVfY29udGVudHMoc2VsZiwgdGVz
dCwgZXh0ZW5zaW9uLCBlbmNvZGluZyk6Ci0gICAgICAgIHBhdGggPSBzZWxmLmV4cGVjdGVkX2Zp
bGVuYW1lKHRlc3QsIGV4dGVuc2lvbikKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBh
dGgpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgb3Blbl9tb2RlID0gJ3InCi0g
ICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICBvcGVuX21vZGUgPSAnciti
JwotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsIG9wZW5fbW9kZSwgZW5jb2RpbmcpIGFz
IGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSkK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19k
aXIoKSwgYmFzZWxpbmVfZmlsZW5hbWUpCiAKICAgICBkZWYgZXhwZWN0ZWRfY2hlY2tzdW0oc2Vs
ZiwgdGVzdCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGNoZWNrc3VtIG9mIHRoZSBpbWFnZSB3
ZSBleHBlY3QgdGhlIHRlc3QgdG8gcHJvZHVjZSwgb3IgTm9uZSBpZiBpdCBpcyBhIHRleHQtb25s
eSB0ZXN0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0ZWRfZmlsZV9jb250ZW50cyh0
ZXN0LCAnLmNoZWNrc3VtJywgJ2FzY2lpJykKKyAgICAgICAgcGF0aCA9IHNlbGYuZXhwZWN0ZWRf
ZmlsZW5hbWUodGVzdCwgJy5jaGVja3N1bScpCisgICAgICAgIGlmIG5vdCBzZWxmLnBhdGhfZXhp
c3RzKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKIAogICAgIGRlZiBleHBlY3RlZF9pbWFn
ZShzZWxmLCB0ZXN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugd2UgZXhwZWN0IHRo
ZSB0ZXN0IHRvIHByb2R1Y2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RlZF9maWxl
X2NvbnRlbnRzKHRlc3QsICcucG5nJywgTm9uZSkKKyAgICAgICAgcGF0aCA9IHNlbGYuZXhwZWN0
ZWRfZmlsZW5hbWUodGVzdCwgJy5wbmcnKQorICAgICAgICBpZiBub3Qgc2VsZi5wYXRoX2V4aXN0
cyhwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9m
aWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIAogICAgIGRlZiBleHBlY3RlZF90ZXh0
KHNlbGYsIHRlc3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXh0IG91dHB1dCB3ZSBleHBl
Y3QgdGhlIHRlc3QgdG8gcHJvZHVjZS4iIiIKLSAgICAgICAgIyBOT1RFOiAtZXhwZWN0ZWQudHh0
IGZpbGVzIGFyZSBBTFdBWVMgdXRmLTguICBIb3dldmVyLAotICAgICAgICAjIHdlIGRvIG5vdCBk
ZWNvZGUgdGhlIG91dHB1dCBmcm9tIERSVCwgc28gd2Ugc2hvdWxkIG5vdAotICAgICAgICAjIGRl
Y29kZSB0aGUgLWV4cGVjdGVkLnR4dCB2YWx1ZXMgZWl0aGVyIHRvIGFsbG93IGNvbXBhcmlzb25z
LgotICAgICAgICB0ZXh0ID0gc2VsZi5fZXhwZWN0ZWRfZmlsZV9jb250ZW50cyh0ZXN0LCAnLnR4
dCcsIE5vbmUpCi0gICAgICAgIGlmIG5vdCB0ZXh0OgorICAgICAgICAjIEZJWE1FOiBEUlQgb3V0
cHV0IGlzIGFjdHVhbGx5IHV0Zi04LCBidXQgc2luY2Ugd2UgZG9uJ3QgZGVjb2RlIHRoZQorICAg
ICAgICAjIG91dHB1dCBmcm9tIERSVCAoaW5zdGVhZCB0cmVhdGluZyBpdCBhcyBhIGJpbmFyeSBz
dHJpbmcpLCB3ZSByZWFkIHRoZQorICAgICAgICAjIGJhc2VsaW5lcyBhcyBhIGJpbmFyeSBzdHJp
bmcsIHRvby4KKyAgICAgICAgcGF0aCA9IHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdCwgJy50
eHQnKQorICAgICAgICBpZiBub3Qgc2VsZi5wYXRoX2V4aXN0cyhwYXRoKToKICAgICAgICAgICAg
IHJldHVybiAnJworICAgICAgICB0ZXh0ID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9m
aWxlKHBhdGgpCiAgICAgICAgIHJldHVybiB0ZXh0LnN0cmlwKCJcclxuIikucmVwbGFjZSgiXHJc
biIsICJcbiIpICsgIlxuIgogCiAgICAgZGVmIGZpbGVuYW1lX3RvX3VyaShzZWxmLCBmaWxlbmFt
ZSk6CkBAIC0zNjIsNyArMzU5LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAg
ICAgIHByb3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4x
OiV1LyVzIiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICByZXR1
cm4gYWJzcGF0aF90b191cmkob3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKSkKKyAgICAgICAgcmV0
dXJuIHBhdGguYWJzcGF0aF90b191cmkob3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKSkKIAogICAg
IGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0
ZXN0cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rlc3RzX2RpcigpLiIiIgpAQCAtMzczLDIw
ICszNzAsMTkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgICAgIFVzZWQgYnkgLS1jbG9i
YmVyLW9sZC1yZXN1bHRzLiIiIgogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gc2VsZi5sYXlv
dXRfdGVzdHNfZGlyKCkKLSAgICAgICAgcmV0dXJuIGZpbHRlcihsYW1iZGEgeDogb3MucGF0aC5p
c2Rpcihvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgeCkpLAotICAgICAgICAgICAgICAg
ICAgICAgIG9zLmxpc3RkaXIobGF5b3V0X3Rlc3RzX2RpcikpCisgICAgICAgIHJldHVybiBmaWx0
ZXIobGFtYmRhIHg6IHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KGxheW91dF90ZXN0c19kaXIsIHgpKSwKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxl
c3lzdGVtLmxpc3RkaXIobGF5b3V0X3Rlc3RzX2RpcikpCiAKICAgICBkZWYgcGF0aF9pc2Rpcihz
ZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0
byBhIGRpcmVjdG9yeSBvZiB0ZXN0cy4KLQotICAgICAgICBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRp
b25zLnB5IHRvIGFwcGx5IHJ1bGVzIHRvIHdob2xlIGRpcmVjdG9yaWVzLiIiIgotICAgICAgICBy
ZXR1cm4gb3MucGF0aC5pc2RpcihwYXRoKQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUg
cGF0aCByZWZlcnMgdG8gYSBkaXJlY3Rvcnkgb2YgdGVzdHMuIiIiCisgICAgICAgICMgVXNlZCBi
eSB0ZXN0X2V4cGVjdGF0aW9ucy5weSB0byBhcHBseSBydWxlcyB0byB3aG9sZSBkaXJlY3Rvcmll
cy4KKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIocGF0aCkKIAogICAgIGRl
ZiBwYXRoX2V4aXN0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRo
ZSBwYXRoIHJlZmVycyB0byBhbiBleGlzdGluZyB0ZXN0IG9yIGJhc2VsaW5lLiIiIgorICAgICAg
ICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgdGVzdCBv
ciBiYXNlbGluZS4iIiIKICAgICAgICAgIyBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRpb25zLnB5IHRv
IGRldGVybWluZSBpZiBhbiBlbnRyeSByZWZlcnMgdG8gYQotICAgICAgICAjIHZhbGlkIHRlc3Qg
YW5kIGJ5IHByaW50aW5nLnB5IHRvIGRldGVybWluZSBpZiBiYXNlbGluZXMgZXhpc3QuIiIiCi0g
ICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhwYXRoKQorICAgICAgICAjIHZhbGlkIHRlc3Qg
YW5kIGJ5IHByaW50aW5nLnB5IHRvIGRldGVybWluZSBpZiBiYXNlbGluZXMgZXhpc3QuCisgICAg
ICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRoKQogCiAgICAgZGVmIHVwZGF0
ZV9iYXNlbGluZShzZWxmLCBwYXRoLCBkYXRhLCBlbmNvZGluZyk6CiAgICAgICAgICIiIlVwZGF0
ZXMgdGhlIGJhc2VsaW5lIGZvciBhIHRlc3QuCkBAIC0zOTgsMTEgKzM5NCwxMiBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgICAgICBkYXRhOiBjb250ZW50cyBvZiB0aGUgYmFzZWxpbmUu
CiAgICAgICAgICAgICBlbmNvZGluZzogZmlsZSBlbmNvZGluZyB0byB1c2UgZm9yIHRoZSBiYXNl
bGluZS4KICAgICAgICAgIiIiCi0gICAgICAgIHdyaXRlX21vZGUgPSAidyIKKyAgICAgICAgIyBG
SVhNRTogcmVtb3ZlIHRoZSBlbmNvZGluZyBwYXJhbWV0ZXIgaW4gZmF2b3Igb2YgdGV4dC9iaW5h
cnkKKyAgICAgICAgIyBmdW5jdGlvbnMuCiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0g
ICAgICAgICAgICB3cml0ZV9tb2RlID0gIndiIgotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBh
dGgsIHdyaXRlX21vZGUsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgotICAgICAgICAgICAg
ZmlsZS53cml0ZShkYXRhKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV9iaW5h
cnlfZmlsZShwYXRoLCBkYXRhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgZGF0YSkKIAogICAgIGRlZiB1cmlfdG9fdGVz
dF9uYW1lKHNlbGYsIHVyaSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYmFzZSBsYXlvdXQgdGVz
dCBuYW1lIGZvciBhIGdpdmVuIFVSSS4KQEAgLTQxNCw3ICs0MTEsNyBAQCBjbGFzcyBQb3J0KG9i
amVjdCk6CiAgICAgICAgICIiIgogICAgICAgICB0ZXN0ID0gdXJpCiAgICAgICAgIGlmIHVyaS5z
dGFydHN3aXRoKCJmaWxlOi8vLyIpOgotICAgICAgICAgICAgcHJlZml4ID0gYWJzcGF0aF90b191
cmkoc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpICsgIi8iCisgICAgICAgICAgICBwcmVmaXggPSBw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpKSArICIvIgogICAgICAg
ICAgICAgcmV0dXJuIHRlc3RbbGVuKHByZWZpeCk6XQogCiAgICAgICAgIGlmIHVyaS5zdGFydHN3
aXRoKCJodHRwOi8vMTI3LjAuMC4xOjg4ODAvIik6CkBAIC00NDEsMTggKzQzOCwxNiBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGZvciB0ZXN0X29yX2NhdGVnb3J5IGluIHNlbGYuc2tp
cHBlZF9sYXlvdXRfdGVzdHMoKToKICAgICAgICAgICAgIGlmIHRlc3Rfb3JfY2F0ZWdvcnkgPT0g
dGVzdF9uYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBjYXRl
Z29yeSA9IG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9vcl9jYXRl
Z29yeSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY2F0ZWdvcnkpIGFuZCB0ZXN0X25h
bWUuc3RhcnRzd2l0aCh0ZXN0X29yX2NhdGVnb3J5KToKKyAgICAgICAgICAgIGNhdGVnb3J5ID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vcl9jYXRlZ29yeSkKKyAg
ICAgICAgICAgIGlmIChzZWxmLl9maWxlc3lzdGVtLmlzZGlyKGNhdGVnb3J5KSBhbmQKKyAgICAg
ICAgICAgICAgICB0ZXN0X25hbWUuc3RhcnRzd2l0aCh0ZXN0X29yX2NhdGVnb3J5KSk6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYg
bWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZiwgKnBhdGgpOgogICAgICAgICAiIiJDcmVhdGVzIHRo
ZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4iIiIKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKCpwYXRoKSkK
LSAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVy
cm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KCpwYXRoKQogCiAgICAgZGVmIG5hbWUoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgcG9ydCAoZS5nLiwgJ21hYycsICdjaHJv
bWl1bS13aW4teHAnKS4KQEAgLTQ3MywxOSArNDY4LDEzIEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgbmFtZSk6CiAgICAgICAgICAg
ICByZXR1cm4gc2V0YXR0cihzZWxmLl9vcHRpb25zLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKQogCi0g
ICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSByZXBsYWNlZCBieSBmdW5jdGlvbnMgaW4gd2Via2l0
cHkuY29tbW9uLmNoZWNrb3V0LnNjbS4KICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNl
bGYsICpjb21wcyk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1h
ZGUgYnkgam9pbmluZyB0aGUgdG9wIG9mIHRoZQogICAgICAgICBXZWJLaXQgc291cmNlIHRyZWUg
YW5kIHRoZSBsaXN0IG9mIHBhdGggY29tcG9uZW50cyBpbiB8KmNvbXBzfC4iIiIKLSAgICAgICAg
aWYgbm90IHNlbGYuX3dlYmtpdF9iYXNlX2RpcjoKLSAgICAgICAgICAgIGFic3BhdGggPSBvcy5w
YXRoLmFic3BhdGgoX19maWxlX18pCi0gICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIg
PSBhYnNwYXRoWzA6YWJzcGF0aC5maW5kKCdXZWJLaXRUb29scycpXQotCi0gICAgICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VfZGlyLCAqY29tcHMpCisgICAgICAgIHJl
dHVybiBzZWxmLl9jb25maWcucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCpjb21wcykKIAotICAgICMg
RklYTUU6IENhbGxlcnMgc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byBzY20uc2NyaXB0X3BhdGgu
CiAgICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKLSAgICAgICAgcmV0dXJu
IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJXZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2Ny
aXB0X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9jb25maWcuc2NyaXB0X3BhdGgoc2NyaXB0
X25hbWUpCiAKICAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgog
ICAgICAgICAiIiJVcGRhdGUgdGhlIHRlc3QgZXhwZWN0YXRpb25zIHRvIHRoZSBwYXNzZWQtaW4g
c3RyaW5nLgpAQCAtNzI2LDUwICs3MTUsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGUubWVzc2FnZV93aXRoX291dHB1dCgpKSkKICAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wcmV0dHlfcGF0Y2hfZXJyb3JfaHRtbAogCi0gICAgZGVmIF93ZWJraXRfYnVp
bGRfZGlyZWN0b3J5X2NvbW1hbmQoc2VsZiwgYXJncyk6Ci0gICAgICAgIHJldHVybiBbInBlcmwi
LCBzZWxmLnNjcmlwdF9wYXRoKCJ3ZWJraXQtYnVpbGQtZGlyZWN0b3J5IildICsgYXJncwotCi0g
ICAgQG1lbW9pemVkCi0gICAgZGVmIF93ZWJraXRfdG9wX2xldmVsX2J1aWxkX2RpcmVjdG9yeShz
ZWxmLCB0b3BfbGV2ZWw9VHJ1ZSk6Ci0gICAgICAgICIiIlRoaXMgZGlyZWN0b3J5IGlzIGFib3Zl
IHdoZXJlIHByb2R1Y3RzIGFyZSBidWlsdCB0byBhbmQgY29udGFpbnMgdGhpbmdzIGxpa2UgdGhl
IENvbmZpZ3VyYXRpb24gZmlsZS4iIiIKLSAgICAgICAgYXJncyA9IHNlbGYuX3dlYmtpdF9idWls
ZF9kaXJlY3RvcnlfY29tbWFuZChbIi0tdG9wLWxldmVsIl0pCi0gICAgICAgIHJldHVybiBzZWxm
Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJncykucnN0cmlwKCkKLQotICAgIEBtZW1vaXplZAot
ICAgIGRlZiBfd2Via2l0X2NvbmZpZ3VyYXRpb25fYnVpbGRfZGlyZWN0b3J5KHNlbGYsIGNvbmZp
Z3VyYXRpb249Tm9uZSk6Ci0gICAgICAgICIiIlRoaXMgaXMgd2hlcmUgcHJvZHVjdHMgYXJlIG5v
cm1hbGx5IGJ1aWx0IHRvLiIiIgotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmZsYWdfZnJvbV9jb25maWd1cmF0aW9uKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKQotICAgICAgICBhcmdzID0gc2VsZi5fd2Via2l0
X2J1aWxkX2RpcmVjdG9yeV9jb21tYW5kKFsiLS1jb25maWd1cmF0aW9uIiwgY29uZmlndXJhdGlv
bl0pCi0gICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJncykucnN0
cmlwKCkKLQotICAgIGRlZiBfY29uZmlndXJhdGlvbl9maWxlX3BhdGgoc2VsZik6Ci0gICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5fd2Via2l0X3RvcF9sZXZlbF9idWlsZF9kaXJlY3Rv
cnkoKSwgIkNvbmZpZ3VyYXRpb24iKQotCi0gICAgIyBFYXN5IG92ZXJyaWRlIGZvciB1bml0IHRl
c3RzCi0gICAgZGVmIF9vcGVuX2NvbmZpZ3VyYXRpb25fZmlsZShzZWxmKToKLSAgICAgICAgY29u
ZmlndXJhdGlvbl9wYXRoID0gc2VsZi5fY29uZmlndXJhdGlvbl9maWxlX3BhdGgoKQotICAgICAg
ICByZXR1cm4gY29kZWNzLm9wZW4oY29uZmlndXJhdGlvbl9wYXRoLCAiciIsICJ1dGYtOCIpCi0K
LSAgICBkZWYgX3JlYWRfY29uZmlndXJhdGlvbihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgd2l0aCBzZWxmLl9vcGVuX2NvbmZpZ3VyYXRpb25fZmlsZSgpIGFzIGZpbGU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZGxpbmUoKS5yc3RyaXAoKQotICAgICAgICBleGNl
cHQ6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIyBGSVhNRTogVGhpcyBsaXN0IG1h
eSBiZSBpbmNvbXBsZXRlIGFzIEFwcGxlIGhhcyBzb21lIHNla3JldCBjb25maWdzLgotICAgIF9S
RUNPR05JWkVEX0NPTkZJR1VSQVRJT05TID0gKCJEZWJ1ZyIsICJSZWxlYXNlIikKLQogICAgIGRl
ZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAgICAgICMgRklYTUU6IFVuaWZ5IHRo
aXMgd2l0aCB3ZWJraXRkaXIucG0gY29uZmlndXJhdGlvbiByZWFkaW5nIGNvZGUuCi0gICAgICAg
IGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9yZWFkX2NvbmZpZ3VyYXRpb24oKQotICAgICAgICBpZiBu
b3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
LSAgICAgICAgaWYgY29uZmlndXJhdGlvbiBub3QgaW4gc2VsZi5fUkVDT0dOSVpFRF9DT05GSUdV
UkFUSU9OUzoKLSAgICAgICAgICAgIF9sb2cud2FybigiQ29uZmlndXJhdGlvbiBcIiVzXCIgZm91
bmQgaW4gJXMgaXMgbm90IGEgcmVjb2duaXplZCB2YWx1ZS5cbiIgJSAoY29uZmlndXJhdGlvbiwg
c2VsZi5fY29uZmlndXJhdGlvbl9maWxlX3BhdGgoKSkpCi0gICAgICAgICAgICBfbG9nLndhcm4o
IlNjcmlwdHMgbWF5IGZhaWwuICBTZWUgJ3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAn
LiIpCi0gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCisgICAgICAgIHJldHVybiBzZWxmLl9j
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKIAogICAgICMKICAgICAjIFBST1RFQ1RFRCBS
T1VUSU5FUwpAQCAtNzc3LDYgKzcyNCw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAjIFRo
ZSByb3V0aW5lcyBiZWxvdyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgcm91dGluZXMgaW4gdGhp
cyBjbGFzcwogICAgICMgb3IgYW55IG9mIGl0cyBzdWJjbGFzc2VzLgogICAgICMKKyAgICBkZWYg
X3dlYmtpdF9idWlsZF9kaXJlY3Rvcnkoc2VsZiwgYXJncyk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9jb25maWcuYnVpbGRfZGlyZWN0b3J5KGFyZ3NbMF0pCiAKICAgICBkZWYgX3BhdGhfdG9fYXBh
Y2hlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGFwYWNo
ZSBiaW5hcnkuCkBAIC04NDgsOCArNzk3LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRl
ZiBfd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZiwgcGxhdGZvcm0pOgogICAgICAgICAiIiJSZXR1
cm4gdGhlICBmdWxsIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgYmFzZWxpbmUgdHJlZSBmb3IgYQog
ICAgICAgICBnaXZlbiBwbGF0Zm9ybS4iIiIKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihz
ZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihz
ZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybSkKIAogCiBjbGFzcyBEcml2ZXI6CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggZWU4NjhlODBmM2FhMGQ2ODU0NDRiM2YzN2RjZWMxNTU1
OGRhZWYzNi4uMWU5YzJiNzVlMDI0OTA5OWIxOGYxNDgyOTczNDAxZWI2OGYwOTk5MSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjgsNDkgKzI4LDIxIEBACiAKIGltcG9ydCBv
cHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKIGltcG9ydCB0
ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5w
YXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmVfbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBmaWxlc3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IG91dHB1dGNhcHR1cmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBh
YnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sK
IGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIAogaW1wb3J0IGJhc2UKLQotIyBG
SVhNRTogVGhpcyBtYWtlcyBTdHJpbmdJTyBvYmplY3RzIHdvcmsgd2l0aCAid2l0aCIuIFJlbW92
ZQotIyB3aGVuIHdlIHVwZ3JhZGUgdG8gMi42LgotY2xhc3MgTmV3U3RyaW5nSU8oU3RyaW5nSU8u
U3RyaW5nSU8pOgotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ci0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAg
ICAgIHBhc3MKLQotCi1jbGFzcyBNb2NrRXhlY3V0aXZlKCk6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGV4Y2VwdGlvbik6Ci0gICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbgotCi0g
ICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHJhaXNl
IHNlbGYuX2V4Y2VwdGlvbgotCi0KLWNsYXNzIFVuaXRUZXN0UG9ydChiYXNlLlBvcnQpOgotICAg
ICIiIlN1YmNsYXNzIG9mIGJhc2UuUG9ydCB1c2VkIGZvciB1bml0IHRlc3RpbmcuIiIiCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb25fY29udGVudHM9Tm9uZSwgY29uZmlndXJh
dGlvbl9leGNlcHRpb249SU9FcnJvciwgZXhlY3V0aXZlX2V4Y2VwdGlvbj1Ob25lKToKLSAgICAg
ICAgYmFzZS5Qb3J0Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb25f
Y29udGVudHMgPSBjb25maWd1cmF0aW9uX2NvbnRlbnRzCi0gICAgICAgIHNlbGYuX2NvbmZpZ3Vy
YXRpb25fZXhjZXB0aW9uID0gY29uZmlndXJhdGlvbl9leGNlcHRpb24KLSAgICAgICAgaWYgZXhl
Y3V0aXZlX2V4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVj
dXRpdmUoZXhlY3V0aXZlX2V4Y2VwdGlvbikKLQotICAgIGRlZiBfb3Blbl9jb25maWd1cmF0aW9u
X2ZpbGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2NvbmZpZ3VyYXRpb25fY29udGVudHM6Ci0g
ICAgICAgICAgICByZXR1cm4gTmV3U3RyaW5nSU8oc2VsZi5fY29uZmlndXJhdGlvbl9jb250ZW50
cykKLSAgICAgICAgcmFpc2Ugc2VsZi5fY29uZmlndXJhdGlvbl9leGNlcHRpb24KK2ltcG9ydCBj
b25maWcKK2ltcG9ydCBjb25maWdfbW9jawogCiAKIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKQEAgLTEwMiwxOCArNzQsMjEgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICByZXR1cm4gbmV3X2ZpbGUKIAogICAgIGRlZiB0ZXN0X3ByZXR0eV9w
YXRjaF9vc19lcnJvcihzZWxmKToKLSAgICAgICAgcG9ydCA9IFVuaXRUZXN0UG9ydChleGVjdXRp
dmVfZXhjZXB0aW9uPU9TRXJyb3IpCisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoZXhlY3V0aXZl
PWV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4Y2VwdGlvbj1PU0Vycm9yKSkKKyAgICAg
ICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJl
X291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2hfdGV4
dCgicGF0Y2gudHh0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5fcHJldHR5X3Bh
dGNoX2Vycm9yX2h0bWwpCiAKICAgICAgICAgIyBUaGlzIHRlc3RzIHJlcGVhdGVkIGNhbGxzIHRv
IG1ha2Ugc3VyZSB3ZSBjYWNoZSB0aGUgcmVzdWx0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQucHJldHR5X3BhdGNoX3RleHQoInBhdGNoLnR4dCIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcnQuX3ByZXR0eV9wYXRjaF9lcnJvcl9odG1sKQorICAgICAgICBvYy5yZXN0b3Jl
X291dHB1dCgpCiAKICAgICBkZWYgdGVzdF9wcmV0dHlfcGF0Y2hfc2NyaXB0X2Vycm9yKHNlbGYp
OgogICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIHNvbWUgdWdseSB3aGl0ZS1ib3ggdGVzdCBoYWNr
aW5nIC4uLgogICAgICAgICBiYXNlLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxlID0gVHJ1ZQotICAg
ICAgICBwb3J0ID0gVW5pdFRlc3RQb3J0KGV4ZWN1dGl2ZV9leGNlcHRpb249U2NyaXB0RXJyb3Ip
CisgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoZXhlY3V0aXZlPWV4ZWN1dGl2ZV9tb2NrLk1vY2tF
eGVjdXRpdmUyKGV4Y2VwdGlvbj1TY3JpcHRFcnJvcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5wcmV0dHlfcGF0Y2hfdGV4dCgicGF0Y2gudHh0IiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9ydC5fcHJldHR5X3BhdGNoX2Vycm9yX2h0bWwpCiAKQEAgLTE5NCwxMyArMTY5
LDkgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCdub3N1Y2h0aGluZycgaW4gZGlmZikKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRf
Y29uZmlndXJhdGlvbl9ub3Rmb3VuZChzZWxmKToKLSAgICAgICAgIyBSZWd1bGFyIElPRXJyb3Ig
dGhyb3duIHdoaWxlIHRyeWluZyB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIHBv
cnQgPSBVbml0VGVzdFBvcnQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZGVmYXVs
dF9jb25maWd1cmF0aW9uKCksICJSZWxlYXNlIikKLQotICAgICAgICAjIE1vcmUgZXhvdGljIE9T
RXJyb3IgdGhyb3duLgotICAgICAgICBwb3J0ID0gVW5pdFRlc3RQb3J0KGNvbmZpZ3VyYXRpb25f
ZXhjZXB0aW9uPU9TRXJyb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0
X2NvbmZpZ3VyYXRpb24oKSwgIlJlbGVhc2UiKQorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBkZWxl
Z2F0ZSB0byB0aGUgY29uZmlnIG9iamVjdCBwcm9wZXJseS4KKyAgICAgICAgcG9ydCA9IGJhc2Uu
UG9ydChjb25maWc9Y29uZmlnX21vY2suTW9ja0NvbmZpZyhkZWZhdWx0X2NvbmZpZ3VyYXRpb249
J2RlZmF1bHQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfY29uZmln
dXJhdGlvbigpLCAnZGVmYXVsdCcpCiAKICAgICBkZWYgdGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBp
bmcoc2VsZik6CiAgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQpAQCAtMjA5LDE0ICsxODAsNiBA
QCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0LnNraXBzX2xheW91dF90ZXN0KCdtZWRpYS92aWRlby16b29tLmh0bWwnKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LnNraXBzX2xheW91dF90ZXN0KCdmb28vZm9vLmh0
bWwnKSkKIAotICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9mb3VuZChzZWxmKToK
LSAgICAgICAgcG9ydCA9IFVuaXRUZXN0UG9ydChjb25maWd1cmF0aW9uX2NvbnRlbnRzPSJEZWJ1
ZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0X2NvbmZpZ3VyYXRpb24o
KSwgIkRlYnVnIikKLQotICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl91bmtub3du
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVW5pdFRlc3RQb3J0KGNvbmZpZ3VyYXRpb25fY29udGVu
dHM9IndlaXJkX3ZhbHVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRf
Y29uZmlndXJhdGlvbigpLCAid2VpcmRfdmFsdWUiKQotCiAgICAgZGVmIHRlc3Rfc2V0dXBfdGVz
dF9ydW4oc2VsZik6CiAgICAgICAgIHBvcnQgPSBiYXNlLlBvcnQoKQogICAgICAgICAjIFRoaXMg
cm91dGluZSBpcyBhIG5vLW9wLiBXZSBqdXN0IHRlc3QgaXQgZm9yIGNvdmVyYWdlLgpAQCAtMjI5
LDcgKzE5Miw2IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdjc3MyLjEnIGluIGRpcnMpCiAKICAgICBkZWYgdGVzdF9maWxlbmFt
ZV90b191cmkoc2VsZik6Ci0KICAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCiAgICAgICAgIGxh
eW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHRlc3RfZmls
ZSA9IG9zLnBhdGguam9pbihsYXlvdXRfdGVzdF9kaXIsICJmb28iLCAiYmFyLmh0bWwiKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
b25maWcucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2NvbmZpZy5weQppbmRleCAyMzY0MDk4NjliMjYwODk4MGI1NWFhMDlmYjA0ZTUzY2M0ZTliNjIz
Li40YTBkZTk2MzQ2YWI0Y2FiODcwNmNkZjc5Y2UyNWIxZDE3ZTU4MmZiIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZp
Zy5weQpAQCAtMzIsMTIgKzMyLDggQEAKICMgRklYTUU6IFRoaXMgZmlsZSBuZWVkcyB0byBiZSB1
bmlmaWVkIHdpdGggY29tbW9uL2NoZWNrb3V0L3NjbS5weSBhbmQKICMgY29tbW9uL2NvbmZpZy9w
b3J0cy5weSAuCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1w
b3J0IGNvZGVjcwogaW1wb3J0IG9zCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGlt
cG9ydCBzY20KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKIAog
CkBAIC02Miw4ICs1OCw5IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAiUmVsZWFz
ZSI6ICItLXJlbGVhc2UiLAogICAgIH0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGVjdXRp
dmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGVjdXRpdmUsIGZpbGVzeXN0ZW0pOgogICAg
ICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRpdmUKKyAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bSA9IGZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGlyID0gTm9uZQogICAg
ICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSBOb25lCiAgICAgICAgIHNlbGYuX2J1
aWxkX2RpcmVjdG9yaWVzID0ge30KQEAgLTExNSwyOCArMTEyLDM2IEBAIGNsYXNzIENvbmZpZyhv
YmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uCiAKICAg
ICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oc2VsZi53ZWJraXRfYmFzZV9kaXIoKSwgKmNvbXBzKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICpjb21w
cykKIAogICAgIGRlZiB3ZWJraXRfYmFzZV9kaXIoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMg
dGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgV2ViS2l0IHRyZWUuCiAKICAgICAg
ICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSB0b3AgZGlyIGNhbid0IGJlIGRldGVy
bWluZWQuIiIiCi0gICAgICAgICMgRklYTUU6IENvbnNpZGVyIGRldGVybWluaW5nIHRoaXMgaW5k
ZXBlbmRlbnRseSBvZiBzY20gaW4gb3JkZXIKLSAgICAgICAgIyB0byBiZSBhYmxlIHRvIHJ1biBp
biBhIGJhcmUgdHJlZS4KKyAgICAgICAgIyBOb3RlOiB0aGlzIGNvZGUgc29tZXdoYXQgZHVwbGlj
YXRlcyB0aGUgY29kZSBpbgorICAgICAgICAjIHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKS4gSG93
ZXZlciwgdGhhdCBjb2RlIG9ubHkgd29ya3MgaWYgdGhlIHRvcAorICAgICAgICAjIG9mIHRoZSBT
Q00gcmVwb3NpdG9yeSBhbHNvIG1hdGNoZXMgdGhlIHRvcCBvZiB0aGUgV2ViS2l0IHRyZWUuIFRo
ZQorICAgICAgICAjIENocm9taXVtIHBvcnRzLCBmb3IgZXhhbXBsZSwgb25seSBjaGVjayBvdXQg
c3ViZGlyZWN0b3JpZXMgbGlrZQorICAgICAgICAjIFdlYktpdFRvb2xzL1NjcmlwdHMsIGFuZCBz
byB3ZSBzdGlsbCBoYXZlIHRvIGRvIGFkZGl0aW9uYWwgd29yaworICAgICAgICAjIHRvIGZpbmQg
dGhlIHRvcCBvZiB0aGUgdHJlZS4KKyAgICAgICAgIworICAgICAgICAjIFRoaXMgY29kZSB3aWxs
IGFsc28gd29yayBpZiB0aGVyZSBpcyBubyBTQ00gc3lzdGVtIGF0IGFsbC4KICAgICAgICAgaWYg
bm90IHNlbGYuX3dlYmtpdF9iYXNlX2RpcjoKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNl
X2RpciA9IHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKQotICAgICAgICAgICAgYXNzZXJ0IHNlbGYu
X3dlYmtpdF9iYXNlX2RpciwgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHRvcCBvZiB0aGUgV2Vi
S2l0IGNoZWNrb3V0IgorICAgICAgICAgICAgYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChfX2Zp
bGVfXykKKyAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IGFic3BhdGhbMDphYnNw
YXRoLmZpbmQoJ1dlYktpdFRvb2xzJyldCiAgICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFz
ZV9kaXIKIAogICAgIGRlZiBfc2NyaXB0X3BhdGgoc2VsZiwgc2NyaXB0X25hbWUpOgotICAgICAg
ICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICJXZWJLaXRUb29s
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLndlYmtpdF9iYXNlX2Rp
cigpLCAiV2ViS2l0VG9vbHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCiAKICAgICBkZWYgX2RldGVybWluZV9jb25maWd1cmF0
aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gd2Via2l0ZGly
cy5wbTpkZXRlcm1pbmVDb25maWd1cmF0aW9uKCkuCiAgICAgICAgIGdsb2JhbCBfZGV0ZXJtaW5l
ZF9jb25maWd1cmF0aW9uCiAgICAgICAgIGlmIF9kZXRlcm1pbmVkX2NvbmZpZ3VyYXRpb24gPT0g
LTE6CiAgICAgICAgICAgICBjb250ZW50cyA9IHNlbGYuX3JlYWRfY29uZmlndXJhdGlvbigpCisg
ICAgICAgICAgICBpZiBub3QgY29udGVudHM6CisgICAgICAgICAgICAgICAgY29udGVudHMgPSAi
UmVsZWFzZSIKICAgICAgICAgICAgIGlmIGNvbnRlbnRzID09ICJEZXBsb3ltZW50IjoKICAgICAg
ICAgICAgICAgICBjb250ZW50cyA9ICJSZWxlYXNlIgogICAgICAgICAgICAgaWYgY29udGVudHMg
PT0gIkRldmVsb3BtZW50IjoKQEAgLTE0NSwxMCArMTUwLDkgQEAgY2xhc3MgQ29uZmlnKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBfZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9uCiAKICAgICBkZWYg
X3JlYWRfY29uZmlndXJhdGlvbihzZWxmKToKLSAgICAgICAgY29uZmlndXJhdGlvbl9wYXRoID0g
b3MucGF0aC5qb2luKHNlbGYuYnVpbGRfZGlyZWN0b3J5KE5vbmUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24iKQotICAgICAgICBpZiBu
b3Qgb3MucGF0aC5leGlzdHMoY29uZmlndXJhdGlvbl9wYXRoKToKKyAgICAgICAgY29uZmlndXJh
dGlvbl9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuYnVpbGRfZGlyZWN0b3J5KE5v
bmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNvbmZpZ3VyYXRpb24iKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
Y29uZmlndXJhdGlvbl9wYXRoKToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAg
d2l0aCBjb2RlY3Mub3Blbihjb25maWd1cmF0aW9uX3BhdGgsICJyIiwgInV0Zi04IikgYXMgZmg6
Ci0gICAgICAgICAgICByZXR1cm4gZmgucmVhZCgpLnJzdHJpcCgpCisgICAgICAgIHJldHVybiBz
ZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGNvbmZpZ3VyYXRpb25fcGF0aCkucnN0cmlw
KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY29uZmlnX21vY2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNzFmYTMzMjU1MGNmNmZl
YjZhY2JhYTJkNjM4YTY5NWZhNjUwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5CkBAIC0wLDAg
KzEsNTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIldy
YXBwZXIgb2JqZWN0cyBmb3IgV2ViS2l0LXNwZWNpZmljIHV0aWxpdHkgcm91dGluZXMuIiIiCisK
KworY2xhc3MgTW9ja0NvbmZpZyhvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZh
dWx0X2NvbmZpZ3VyYXRpb249J1JlbGVhc2UnKToKKyAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25m
aWd1cmF0aW9uID0gZGVmYXVsdF9jb25maWd1cmF0aW9uCisKKyAgICBkZWYgYnVpbGRfZGlyZWN0
b3J5KHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICByZXR1cm4gIi9idWlsZCIKKworICAg
IGRlZiBidWlsZF9kdW1wcmVuZGVydHJlZShzZWxmLCBjb25maWd1cmF0aW9uKToKKyAgICAgICAg
cmV0dXJuIFRydWUKKworICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBwYXRoX2Zy
b21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuICIvIiArICIvIi5q
b2luKGxpc3QoY29tcHMpKQorCisgICAgZGVmIHdlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuICIvIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQppbmRleCA0Njc0
Y2JhMzYwZjJhZWJjM2EzOWQxODMxZWY3ZGQzYjYyYmIyMDgyLi5lZDVhYjhiNzMwNGUwNWRlYTQ3
MTk4ZjllNDQ3MmZjYzU4MGQ2NWViIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5w
eQpAQCAtMjYsMTUwICsyNiwxMjAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LWltcG9ydCBjb2RlY3MKIGltcG9ydCBvcwotaW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgdW5pdHRl
c3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQogCiBpbXBvcnQgY29uZmlnCiAKLQotIyBGSVhNRTogVGhp
cyBtYWtlcyBTdHJpbmdJTyBvYmplY3RzIHdvcmsgd2l0aCAid2l0aCIuIFJlbW92ZQotIyB3aGVu
IHdlIHVwZ3JhZGUgdG8gMi42LgotY2xhc3MgTmV3U3RyaW5nSU8oU3RyaW5nSU8uU3RyaW5nSU8p
OgotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBk
ZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHBhc3MK
LQotCi1jbGFzcyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG91dHB1dD0nJywgZXhpdF9jb2RlPTApOgotICAgICAgICBzZWxmLl9vdXRwdXQgPSBvdXRwdXQK
LSAgICAgICAgc2VsZi5fZXhpdF9jb2RlID0gZXhpdF9jb2RlCi0KLSAgICBkZWYgcnVuX2NvbW1h
bmQoc2VsZiwgYXJnX2xpc3QsIHJldHVybl9leGl0X2NvZGU9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgIGRlY29kZV9vdXRwdXQ9RmFsc2UpOgotICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2Rl
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4aXRfY29kZQotICAgICAgICByZXR1cm4gc2Vs
Zi5fb3V0cHV0Ci0KLQogY2xhc3MgQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBjb25maWcuY2xlYXJfY2FjaGVkX2NvbmZpZ3Vy
YXRpb24oKQogCi0gICAgZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oc2VsZiwgY29udGVudHMsIGV4
cGVjdGVkKToKKyAgICBkZWYgbWFrZV9jb25maWcoc2VsZiwgb3V0cHV0PScnLCBmaWxlcz17fSwg
ZXhpdF9jb2RlPTApOgorICAgICAgICBlID0gZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIo
b3V0cHV0PW91dHB1dCwgZXhpdF9jb2RlPWV4aXRfY29kZSkKKyAgICAgICAgZnMgPSBmaWxlc3lz
dGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIHJldHVybiBjb25maWcuQ29u
ZmlnKGUsIGZzKQorCisgICAgZGVmIGFzc2VydF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbnRlbnRz
LCBleHBlY3RlZCk6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IGEgY29uZmlndXJhdGlvbiBm
aWxlIGNvbnRhaW5pbmcKICAgICAgICAgIyBfY29udGVudHNfIGVuZHNkIHVwIGJlaW5nIGludGVy
cHJldGVkIGFzIF9leHBlY3RlZF8uCi0gICAgICAgICMKLSAgICAgICAgIyBGSVhNRTogcmV3cml0
ZSB0aGlzIHdoZW4gd2UgaGF2ZSBhIGZpbGVzeXN0ZW0gYWJzdHJhY3Rpb24gd2UKLSAgICAgICAg
IyBjYW4gbW9jayBvdXQgbW9yZSBlYXNpbHkuCi0gICAgICAgIGNvbmZpZy5jbGVhcl9jYWNoZWRf
Y29uZmlndXJhdGlvbigpCi0gICAgICAgIG9yaWdfb3BlbiA9IGNvZGVjcy5vcGVuCi0KLSAgICAg
ICAgZGVmIHdyYXBfb3Blbihjb250ZW50cyk6Ci0gICAgICAgICAgICBkZWYgb3Blbl93cmFwcGVy
KHBhdGgsIG1vZGUsIGVuY29kaW5nKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTmV3U3RyaW5n
SU8oY29udGVudHMpCi0gICAgICAgICAgICByZXR1cm4gb3Blbl93cmFwcGVyCi0KLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgb3JpZ19leGlzdHMgPSBvcy5wYXRoLmV4aXN0cwotICAgICAgICAg
ICAgb3MucGF0aC5leGlzdHMgPSBsYW1iZGEgcDogVHJ1ZQotICAgICAgICAgICAgY29kZWNzLm9w
ZW4gPSB3cmFwX29wZW4oY29udGVudHMpCi0KLSAgICAgICAgICAgIGUgPSBNb2NrRXhlY3V0aXZl
KG91dHB1dD0nZm9vJykKLSAgICAgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGVmYXVsdF9jb25maWd1cmF0aW9uKCksIGV4cGVjdGVk
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBvcmlnX2V4
aXN0cwotICAgICAgICAgICAgY29kZWNzLm9wZW4gPSBvcmlnX29wZW4KKyAgICAgICAgYyA9IHNl
bGYubWFrZV9jb25maWcoJ2ZvbycsIHsnZm9vL0NvbmZpZ3VyYXRpb24nOiBjb250ZW50c30pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSwgZXhwZWN0
ZWQpCiAKICAgICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfdG9wbGV2ZWwoc2VsZik6Ci0gICAg
ICAgIGUgPSBNb2NrRXhlY3V0aXZlKG91dHB1dD0idG9wbGV2ZWwiKQotICAgICAgICBjID0gY29u
ZmlnLkNvbmZpZyhlKQorICAgICAgICBjID0gc2VsZi5tYWtlX2NvbmZpZygndG9wbGV2ZWwnKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYnVpbGRfZGlyZWN0b3J5KE5vbmUpLCAndG9wbGV2
ZWwnKQogCiAgICAgICAgICMgVGVzdCBhZ2FpbiB0byBjaGVjayBjYWNoaW5nCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYy5idWlsZF9kaXJlY3RvcnkoTm9uZSksICd0b3BsZXZlbCcpCiAKICAg
ICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfX3JlbGVhc2Uoc2VsZik6Ci0gICAgICAgIGUgPSBN
b2NrRXhlY3V0aXZlKG91dHB1dD0icmVsZWFzZSIpCi0gICAgICAgIGMgPSBjb25maWcuQ29uZmln
KGUpCisgICAgICAgIGMgPSBzZWxmLm1ha2VfY29uZmlnKCdyZWxlYXNlJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjLmJ1aWxkX2RpcmVjdG9yeSgnUmVsZWFzZScpLCAncmVsZWFzZScpCiAK
ICAgICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfX2RlYnVnKHNlbGYpOgotICAgICAgICBlID0g
TW9ja0V4ZWN1dGl2ZShvdXRwdXQ9ImRlYnVnIikKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWco
ZSkKKyAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcoJ2RlYnVnJykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjLmJ1aWxkX2RpcmVjdG9yeSgnRGVidWcnKSwgJ2RlYnVnJykKIAogICAgIGRl
ZiB0ZXN0X2J1aWxkX2RpcmVjdG9yeV9fdW5rbm93bihzZWxmKToKLSAgICAgICAgZSA9IE1vY2tF
eGVjdXRpdmUob3V0cHV0PSJ1bmtub3duIikKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoZSkK
KyAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcoInVua25vd24iKQogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhLZXlFcnJvciwgYy5idWlsZF9kaXJlY3RvcnksICdVbmtub3duJykKIAogICAg
IGRlZiB0ZXN0X2J1aWxkX2R1bXByZW5kZXJ0cmVlX19zdWNjZXNzKHNlbGYpOgotICAgICAgICBl
ID0gTW9ja0V4ZWN1dGl2ZShleGl0X2NvZGU9MCkKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWco
ZSkKKyAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcoZXhpdF9jb2RlPTApCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlKCJEZWJ1ZyIpKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgiUmVsZWFzZSIpKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5idWlsZF9kdW1wcmVuZGVydHJlZSwgIlVu
a25vd24iKQogCiAgICAgZGVmIHRlc3RfYnVpbGRfZHVtcHJlbmRlcnRyZWVfX2ZhaWx1cmUoc2Vs
Zik6Ci0gICAgICAgIGUgPSBNb2NrRXhlY3V0aXZlKGV4aXRfY29kZT0tMSkKLSAgICAgICAgYyA9
IGNvbmZpZy5Db25maWcoZSkKKyAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcoZXhpdF9jb2Rl
PS0xKQogCisgICAgICAgICMgRklYTUU6IEJ1aWxkIGZhaWx1cmVzIHNob3VsZCBsb2cgZXJyb3Jz
LiBIb3dldmVyLCB0aGUgbWVzc2FnZSB3ZQorICAgICAgICAjIGdldCBkZXBlbmRzIG9uIGhvdyB3
ZSdyZSBiZWluZyBjYWxsZWQ7IGFzIGEgc3RhbmRhbG9uZSB0ZXN0LAorICAgICAgICAjIHdlJ2xs
IGdldCB0aGUgIm5vIGhhbmRsZXJzIGZvdW5kIiBtZXNzYWdlLiBBcyBwYXJ0IG9mCisgICAgICAg
ICMgdGVzdC13ZWJraXRweSwgd2UgZ2V0IHRoZSBhY3R1YWwgbWVzc2FnZS4gUmVhbGx5LCB3ZSBu
ZWVkCisgICAgICAgICMgb3V0cHV0Y2FwdHVyZSB0byBpbnN0YWxsIGl0cyBvd24gaGFuZGxlci4K
ICAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5j
YXB0dXJlX291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5idWlsZF9kdW1wcmVu
ZGVydHJlZSgnRGVidWcnKSkKLSAgICAgICAgKG91dCwgZXJyKSA9IG9jLnJlc3RvcmVfb3V0cHV0
KCkKKyAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIG9jLmNhcHR1cmVfb3V0
cHV0KCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlKCdS
ZWxlYXNlJykpCiAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgIGRlZiB0ZXN0X2Rl
ZmF1bHRfY29uZmlndXJhdGlvbl9fcmVsZWFzZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRD
b25maWd1cmF0aW9uKCdSZWxlYXNlJywgJ1JlbGVhc2UnKQorICAgICAgICBzZWxmLmFzc2VydF9j
b25maWd1cmF0aW9uKCdSZWxlYXNlJywgJ1JlbGVhc2UnKQogCiAgICAgZGVmIHRlc3RfZGVmYXVs
dF9jb25maWd1cmF0aW9uX19kZWJ1ZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRDb25maWd1
cmF0aW9uKCdEZWJ1ZycsICdEZWJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NvbmZpZ3VyYXRp
b24oJ0RlYnVnJywgJ0RlYnVnJykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlv
bl9fZGVwbG95bWVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRDb25maWd1cmF0aW9uKCdE
ZXBsb3ltZW50JywgJ1JlbGVhc2UnKQorICAgICAgICBzZWxmLmFzc2VydF9jb25maWd1cmF0aW9u
KCdEZXBsb3ltZW50JywgJ1JlbGVhc2UnKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1
cmF0aW9uX19kZXZlbG9wbWVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRDb25maWd1cmF0
aW9uKCdEZXZlbG9wbWVudCcsICdEZWJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NvbmZpZ3Vy
YXRpb24oJ0RldmVsb3BtZW50JywgJ0RlYnVnJykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29u
ZmlndXJhdGlvbl9fbm90Zm91bmQoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB3aGF0IGhh
cHBlbnMgaWYgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlCiAgICAgICAgICMgZG9lc24n
dCBleGlzdC4KLSAgICAgICAgY29uZmlnLmNsZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uKCkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgb3JpZ19leGlzdHMgPSBvcy5wYXRoLmV4aXN0cwotICAg
ICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBsYW1iZGEgcDogRmFsc2UKLSAgICAgICAgICAgIGUg
PSBNb2NrRXhlY3V0aXZlKG91dHB1dD0iZm9vIikKLSAgICAgICAgICAgIGMgPSBjb25maWcuQ29u
ZmlnKGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGVmYXVsdF9jb25maWd1cmF0
aW9uKCksICJSZWxlYXNlIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnBhdGgu
ZXhpc3RzID0gb3JpZ19leGlzdHMKKyAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcob3V0cHV0
PSdmb28nLCBmaWxlcz17J2Zvby9Db25maWd1cmF0aW9uJzogTm9uZX0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSwgIlJlbGVhc2UiKQogCiAgICAg
ZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX191bmtub3duKHNlbGYpOgogICAgICAgICAj
IElnbm9yZSB0aGUgd2FybmluZyBhYm91dCBhbiB1bmtub3duIGNvbmZpZ3VyYXRpb24gdmFsdWUu
CiAgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2VydENvbmZpZ3VyYXRpb24oJ1Vua25v
d24nLCAnVW5rbm93bicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NvbmZpZ3VyYXRpb24oJ1Vua25v
d24nLCAnVW5rbm93bicpCiAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIAotICAgIGRlZiB0
ZXN0X3BhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgotICAgICAgICBjID0gY29u
ZmlnLkNvbmZpZyhOb25lKQorICAgIGRlZiB0ZXN0X3BhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxm
KToKKyAgICAgICAgIyBGSVhNRTogV2UgdXNlIGEgcmVhbCBmaWxlc3lzdGVtIGhlcmUuIFNob3Vs
ZCB0aGlzIG1vdmUgdG8gYQorICAgICAgICAjIG1vY2tlZCBvbmU/CisgICAgICAgIGMgPSBjb25m
aWcuQ29uZmlnKGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKSwgZmlsZXN5c3RlbS5GaWxlU3lzdGVtKCkp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnZm9vJykp
CiAKICAgICBkZWYgdGVzdF93ZWJraXRfYmFzZV9kaXIoc2VsZik6Ci0gICAgICAgIGMgPSBjb25m
aWcuQ29uZmlnKE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLndlYmtpdF9iYXNlX2Rp
cigpKQorICAgICAgICAjIEZJWE1FOiBXZSB1c2UgYSByZWFsIGZpbGVzeXN0ZW0gaGVyZS4gU2hv
dWxkIHRoaXMgbW92ZSB0byBhCisgICAgICAgICMgbW9ja2VkIG9uZT8KKyAgICAgICAgYyA9IGNv
bmZpZy5Db25maWcoZXhlY3V0aXZlLkV4ZWN1dGl2ZSgpLCBmaWxlc3lzdGVtLkZpbGVTeXN0ZW0o
KSkKKyAgICAgICAgYmFzZV9kaXIgPSBjLndlYmtpdF9iYXNlX2RpcigpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShiYXNlX2RpcikKKworICAgICAgICBvcmlnX2N3ZCA9IG9zLmdldGN3ZCgpCisg
ICAgICAgIG9zLmNoZGlyKG9zLmVudmlyb25bJ0hPTUUnXSkKKyAgICAgICAgYyA9IGNvbmZpZy5D
b25maWcoZXhlY3V0aXZlLkV4ZWN1dGl2ZSgpLCBmaWxlc3lzdGVtLkZpbGVTeXN0ZW0oKSkKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgYmFzZV9kaXJfMiA9IGMud2Via2l0X2Jhc2VfZGlyKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZV9kaXIsIGJhc2VfZGlyXzIpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2N3ZCkKIAogCiBpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3Vu
aXR0ZXN0LnB5CmluZGV4IGM0Yzg4NWQ2MzI5YWIzZDBiYmFmYWFlY2ExNzM0M2E0NjRlZTdhMzUu
LmU2MGMyNzQxNmRlYjM3OTM1ZjQwYjQ1MzU3Y2JkMjk3MWQyYzZlYTYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9t
ZV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKQEAgLTI4LDcgKzI4LDggQEAgaW1w
b3J0IGNvZGVjcwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IGJhc2VfdW5p
dHRlc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBuZXdzdHJpbmdpbworCiBpbXBvcnQg
ZmFjdG9yeQogaW1wb3J0IGdvb2dsZV9jaHJvbWUKIApAQCAtNzcsNyArNzgsNyBAQCBjbGFzcyBH
ZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgZGVm
IG1vY2tfb3BlbihwYXRoLCBtb2RlLCBlbmNvZGluZyk6CiAgICAgICAgICAgICBpZiAndGVzdF9l
eHBlY3RhdGlvbnNfY2hyb21lLnR4dCcgaW4gcGF0aDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
YmFzZV91bml0dGVzdC5OZXdTdHJpbmdJTyhleHBlY3RlZF9zdHJpbmcpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ld3N0cmluZ2lvLlN0cmluZ0lPKGV4cGVjdGVkX3N0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBvcmlnX29wZW4ocGF0aCwgbW9kZSwgZW5jb2RpbmcpCiAKICAgICAgICAgdHJ5
OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weQppbmRleCAwYjMyNGY1NTJhNTUwODgwOWJkODhjODdmMjgyYjYxMGRm
Mzc2OGM5Li41MWY1N2M0MGU2NjYxNjdiMThjZGY1MmQ2NDIwMTg3NTk2NTI0N2U4IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQpAQCAtODEsMTQgKzgxLDggQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQp
OgogICAgICAgICByZXR1cm4gJycKIAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgotICAg
ICAgICBleGl0X2NvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWwotICAgICAgICAg
ICAgc2VsZi5zY3JpcHRfcGF0aCgiYnVpbGQtZHVtcHJlbmRlcnRyZWUiKSwKLSAgICAgICAgICAg
IHNlbGYuZmxhZ19mcm9tX2NvbmZpZ3VyYXRpb24oc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJykpLAotICAgICAgICBdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCi0gICAgICAgIGlmIGV4
aXRfY29kZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIER1
bXBSZW5kZXJUcmVlIikKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZy5idWlsZF9kdW1wcmVuZGVydHJlZShj
b25maWd1cmF0aW9uKQogCiAgICAgZGVmIF9jaGVja19kcml2ZXIoc2VsZik6CiAgICAgICAgIGRy
aXZlcl9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQpAQCAtMzU3LDggKzM1MSw4IEBAIGNs
YXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICdtYWMtdGlnZXInLCAnbWFj
LWxlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJykKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxm
LCAqY29tcHMpOgotICAgICAgICBidWlsZF9yb290ID0gc2VsZi5fd2Via2l0X2NvbmZpZ3VyYXRp
b25fYnVpbGRfZGlyZWN0b3J5KCkKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihidWlsZF9y
b290LCAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5f
Y29uZmlnLmJ1aWxkX2RpcmVjdG9yeSgKKyAgICAgICAgICAgIHNlbGYuZ2V0X29wdGlvbignY29u
ZmlndXJhdGlvbicpKSwgKmNvbXBzKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlJykKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGYyMWU3YTVlNzRiMjhi
Y2YwZTEzYWQzNTY1MDBiYmI4OWJhMWI3MDguLjI0OGEyOTFkMzkzMDMyNWZjNzJjYmYwNmRmZDYy
ZTNhZDA2YTQyMmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eQpAQCAtMzgwLDMxICszODAsMzAgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgYmFzZWxpbmUgPSBmaWxlICsgIi1leHBlY3RlZCIgKyBleHQK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoZi5maW5kKGJhc2VsaW5lKSAhPSAtMSBm
b3IgZiBpbiBmaWxlX2xpc3QpKQogCi0gICAgIyBGSVhNRTogVGhpcyB0ZXN0IGlzIGZhaWxpbmcg
b24gdGhlIGJvdHMuIEFsc28sIHRoaXMgdGVzdCB0b3VjaGVzIHRoZQotICAgICMgICAgICAgIGZp
bGUgc3lzdGVtLiAgVW5pdCB0ZXN0cyBzaG91bGQgbm90IHJlYWQgb3Igd3JpdGUgdGhlIGZpbGUg
c3lzdGVtLgotICAgICMgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Nzg3OQogICAgIGRlZiBkaXNhYmxlZF90ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6Cisg
ICAgICAgICMgRklYTUU6IFRoaXMgdGVzdCBpcyBkaXNhYmxlZCB1bnRpbCB3ZSBjYW4gcmV3cml0
ZSBpdCB0byB1c2UgYQorICAgICAgICAjIG1vY2sgZmlsZXN5c3RlbS4KKyAgICAgICAgIworICAg
ICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUg
ZXhwZWN0YXRpb24KKyAgICAgICAgIyBpcyBtaXNzaW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdl
bmVyaWMgbG9jYXRpb24uCiAgICAgICAgIGZpbGVfbGlzdCA9IFtdCi0gICAgICAgIG9yaWdpbmFs
X29wZW4gPSBjb2RlY3Mub3BlbgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRlc3QgdGhh
dCB3ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KLSAg
ICAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0
aW9uLgotICAgICAgICAgICAgZmlsZV9saXN0ID0gW10KLSAgICAgICAgICAgIGNvZGVjcy5vcGVu
ID0gX21vY2tlZF9vcGVuKG9yaWdpbmFsX29wZW4sIGZpbGVfbGlzdCkKLSAgICAgICAgICAgIHBh
c3NpbmdfcnVuKFsnLS1waXhlbC10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy0t
cmVzZXQtcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFnZS5o
dG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2lu
Z19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDYpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsCi0gICAgICAgICAgICAg
ICAgImRhdGEvcGFzc2VzL2ltYWdlIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVz
KGZpbGVfbGlzdCwKLSAgICAgICAgICAgICAgICAiZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9taXNz
aW5nX2ltYWdlIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvZGVjcy5vcGVuID0g
b3JpZ2luYWxfb3BlbgotCi0gICAgZGVmIHRlc3RfbmV3X2Jhc2VsaW5lKHNlbGYpOgorICAgICAg
ICBwYXNzaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
Jy0tcmVzZXQtcmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdl
Lmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfaW1hZ2UuaHRtbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgNikKKyAgICAg
ICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAorICAgICAgICAgICAgImRhdGEvcGFz
c2VzL2ltYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAorICAg
ICAgICAgICAgImRhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZSIpCisKKyAgICBk
ZWYgZGlzYWJsZWRfdGVzdF9uZXdfYmFzZWxpbmUoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRo
aXMgdGVzdCBpcyBkaXNhYmxlZCB1bnRpbCB3ZSBjYW4gcmV3cml0ZSBpdCB0byB1c2UgYQorICAg
ICAgICAjIG1vY2sgZmlsZXN5c3RlbS4KKyAgICAgICAgIworICAgICAgICAjIFRlc3QgdGhhdCB3
ZSB1cGRhdGUgdGhlIHBsYXRmb3JtIGV4cGVjdGF0aW9ucy4gSWYgdGhlIGV4cGVjdGF0aW9uCisg
ICAgICAgICMgaXMgbXNzaW5nLCB0aGVuIGNyZWF0ZSBhIG5ldyBleHBlY3RhdGlvbiBpbiB0aGUg
cGxhdGZvcm0gZGlyLgogICAgICAgICBmaWxlX2xpc3QgPSBbXQogICAgICAgICBvcmlnaW5hbF9v
cGVuID0gY29kZWNzLm9wZW4KICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL21vY2t0b29sLnB5CmluZGV4IGI2ZWU5NWY1NzEwMzBlMTk2YTY3MjUyNjUy
ZDRmMjUyYzAyYzRkYmEuLjcxOWY5YjFiYmM4MjM1NTY5ZDg1MWU4ZjI0MjE2ZDhmYzM0NDJlOWUg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAg
LTU3MSw2ICs1NzEsNyBAQCBjbGFzcyBNb2NrU3RhdHVzU2VydmVyKG9iamVjdCk6CiAKIAogIyBG
SVhNRTogVGhpcyBzaG91bGQgbm90IGluaGVyaXQgZnJvbSBNb2NrCisjIEZJWE1FOiBVbmlmeSB3
aXRoIGNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZS4KIGNsYXNzIE1v
Y2tFeGVjdXRpdmUoTW9jayk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNob3VsZF9sb2cpOgog
ICAgICAgICBzZWxmLl9zaG91bGRfbG9nID0gc2hvdWxkX2xvZwo=
</data>
<flag name="review"
          id="63693"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>