<?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>119338</bug_id>
          
          <creation_ts>2013-07-31 06:06:31 -0700</creation_ts>
          <short_desc>General GDB backtrace generation for GTK/EFL/Qt</short_desc>
          <delta_ts>2013-09-12 08:30:05 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Arvai">zarvai</reporter>
          <assigned_to name="Gábor Ábrahám">abrhm</assigned_to>
          <cc>abrhm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>kadam</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>tczene</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>913335</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2013-07-31 06:06:31 -0700</bug_when>
    <thetext>When a crash occurs it would be helpful to get a backtrace generated by the tester bot.
The GTK guys have a nice solution for this:
https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/port/gtk.py#L138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917916</commentid>
    <comment_count>1</comment_count>
      <attachid>208915</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-08-16 04:50:39 -0700</bug_when>
    <thetext>Created attachment 208915
draft patch

Solution based on the gtk auto backtrace generating, you should do the next things:

Change /proc/sys/kernel/core_pattern file to:
/path/to/webkit/coredumps/folder/core-pid_%p-_-process_%e

For example in my computer:
/home/abrhm/webkit/WK/coredumps/core-pid_%p-_-process_%e


set the WEBKIT_CORE_DUMPS_DIRECTORY enviromental variable to the same location:

For example in my computer:
export WEBKIT_CORE_DUMPS_DIRECTORY=/home/abrhm/webkit/WK/coredumps/

After this changes if you have debug build and a test crashes, in the results.html you should see the backtrace in the test crashlog.

Unit test needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917917</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-16 04:53:39 -0700</bug_when>
    <thetext>Attachment 208915 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/Scripts/webkitpy/port/qt.py&apos;]&quot; exit_code: 1
Tools/Scripts/webkitpy/port/qt.py:196:  [QtPort._get_gdb_output] Undefined variable &apos;subprocess&apos;  [pylint/E0602] [5]
Tools/Scripts/webkitpy/port/qt.py:196:  [QtPort._get_gdb_output] Undefined variable &apos;subprocess&apos;  [pylint/E0602] [5]
Tools/Scripts/webkitpy/port/qt.py:196:  [QtPort._get_gdb_output] Undefined variable &apos;subprocess&apos;  [pylint/E0602] [5]
Total errors found: 3 in 1 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917918</commentid>
    <comment_count>3</comment_count>
      <attachid>208916</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-08-16 04:56:50 -0700</bug_when>
    <thetext>Created attachment 208916
draft patch fix

Fixed: import the subprocess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921036</commentid>
    <comment_count>4</comment_count>
      <attachid>209657</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-08-26 09:12:53 -0700</bug_when>
    <thetext>Created attachment 209657
draft patch v2

We had a little talk about how to do this change in a clever way. The idea is to avoid the copy-paste code so I did some refactoring, there are some things that are not ready yet. For example, the GTK copyright, changelog, or maybe some more little changes.
So I would like you to check this patch and give me some recommendation about further changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921367</commentid>
    <comment_count>5</comment_count>
      <attachid>209657</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-27 01:19:40 -0700</bug_when>
    <thetext>Comment on attachment 209657
draft patch v2

Rather than creating a mix-in object from which the Port subclasses then inherit, I&apos;d recommend creating a standalone object which the overriden Port._get_crash_log method instantiates and passes to it all the requirements (the filesystem and the path to the driver, and the required _get_crash_log parameters), returning the acquired crash log.

For instance, the class could be called GdbCrashLogGenerator, and the port which would like to use it would then just implement the _get_crash_log(...):

def _get_crash_log(self, name, pid, stdout, stderr, newer_than):
    return GdbCrashLogGenerator(...).generate()

I think the GdbCrashLogGenerator class (or whatever it will be named) is more in line with how the PulseAudioSanitizer class behaves and is used, so I wouldn&apos;t make port classes inherit from it. Plus, when implemented as a standalone object, I think it will be easier to produce a test case for it (there&apos;s already one in gtk_unittest.py, so you can take it as the base case).

Also, whatever way you choose to implement it, I think its file should be put in Tools/Scripts/webkitpy/port - the crash generator is not really specific to the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922390</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-08-29 03:23:07 -0700</bug_when>
    <thetext>*** Bug 120150 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922922</commentid>
    <comment_count>7</comment_count>
      <attachid>210101</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-08-30 06:43:59 -0700</bug_when>
    <thetext>Created attachment 210101
proposed patch

With this changes EFL/GTK bots could easily auto generate backtrace, just like Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923603</commentid>
    <comment_count>8</comment_count>
      <attachid>210264</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-09-01 23:48:37 -0700</bug_when>
    <thetext>Created attachment 210264
proposed patch with changelog.

I hope this is the final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924985</commentid>
    <comment_count>9</comment_count>
      <attachid>210264</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-09-05 06:23:59 -0700</bug_when>
    <thetext>Comment on attachment 210264
proposed patch with changelog.

That patch is about 3 ports but modifies only one(qt) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925425</commentid>
    <comment_count>10</comment_count>
      <attachid>210707</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-09-06 00:15:23 -0700</bug_when>
    <thetext>Created attachment 210707
add auto backtrace to efl and gtk

efl.py gtk.py and unittests fixed.
TEST NEEDED ON EFL AND GTK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925436</commentid>
    <comment_count>11</comment_count>
      <attachid>210707</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-06 00:36:25 -0700</bug_when>
    <thetext>Comment on attachment 210707
add auto backtrace to efl and gtk

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

&gt; Tools/Scripts/webkitpy/port/efl_unittest.py:54
&gt; +    def test_get_crash_log(self):
&gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; +        pass

This doesn&apos;t test anything, so there&apos;s no much point for the method to exist.

&gt; Tools/Scripts/webkitpy/port/gtk_unittest.py:86
&gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; +        pass

Ditto.

&gt; Tools/Scripts/webkitpy/port/qt_unittest.py:130
&gt; +    def test_get_crash_log(self):
&gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; +        pass

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925437</commentid>
    <comment_count>12</comment_count>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-09-06 00:43:21 -0700</bug_when>
    <thetext>Without that line Tools/Scripts/test-webkitpy fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927729</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-11 05:06:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 210707 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210707&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/port/efl_unittest.py:54
&gt; &gt; +    def test_get_crash_log(self):
&gt; &gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; &gt; +        pass
&gt; 
&gt; This doesn&apos;t test anything, so there&apos;s no much point for the method to exist.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/port/gtk_unittest.py:86
&gt; &gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; &gt; +        pass
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/port/qt_unittest.py:130
&gt; &gt; +    def test_get_crash_log(self):
&gt; &gt; +        # This function tested in linux_get_crash_log_unittest.py
&gt; &gt; +        pass
&gt; 
&gt; Ditto.

Without them efl.test_get_crash_log, gtk.test_get_crash_log and
qt.test_get_crash_log will derived from PortTestCase.test_get_crash_log 
which gives incorrect results for the Linux&apos;s GDBCrashLogGenerator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927730</commentid>
    <comment_count>14</comment_count>
      <attachid>210707</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-11 05:07:53 -0700</bug_when>
    <thetext>Comment on attachment 210707
add auto backtrace to efl and gtk

It doesn&apos;t apply now, it conflicts with https://trac.webkit.org/changeset/155373.
Could you rebase this patch to ToT, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927747</commentid>
    <comment_count>15</comment_count>
      <attachid>211307</attachid>
    <who name="Gábor Ábrahám">abrhm</who>
    <bug_when>2013-09-11 06:38:43 -0700</bug_when>
    <thetext>Created attachment 211307
rebased patch

Rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928299</commentid>
    <comment_count>16</comment_count>
      <attachid>211307</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-12 08:28:20 -0700</bug_when>
    <thetext>Comment on attachment 211307
rebased patch

r=me, I&apos;ll land it manually to make sure we don&apos;t break the GTK debug bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928301</commentid>
    <comment_count>17</comment_count>
      <attachid>211307</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-12 08:29:58 -0700</bug_when>
    <thetext>Comment on attachment 211307
rebased patch

Clearing flags on attachment: 211307

Committed r155614: &lt;http://trac.webkit.org/changeset/155614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928302</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-12 08:30:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208915</attachid>
            <date>2013-08-16 04:50:39 -0700</date>
            <delta_ts>2013-08-16 05:10:53 -0700</delta_ts>
            <desc>draft patch</desc>
            <filename>patch36.patch</filename>
            <type>text/plain</type>
            <size>2723</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weQppbmRleCA1NTgwMzE4Li4xZjg2OTU5IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3F0LnB5CkBAIC0xOTAsMyArMTkwLDUxIEBAIGNsYXNzIFF0UG9ydChQ
b3J0KToKICAgICAjIFF0IHBvcnQgaXMgbm90IHJlYWR5IGZvciBwYXJhbGxlbCB0ZXN0aW5nLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzMwIGZvciBkZXRh
aWxzLgogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgcmV0
dXJuIDEKKworICAgIGRlZiBfZ2V0X2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0aCk6Cisg
ICAgICAgIGNtZCA9IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0IDEwMjQnLCAn
LS1iYXRjaCcsIHN0cihzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwgY29yZWR1bXBfcGF0aF0KKyAg
ICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRvdXQsIHN0
ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQorICAgICAgICBlcnJvcnMgPSBbbC5zdHJpcCgpLmRl
Y29kZSgndXRmOCcsICdpZ25vcmUnKSBmb3IgbCBpbiBzdGRlcnIuc3BsaXRsaW5lcygpXQorICAg
ICAgICByZXR1cm4gKHN0ZG91dC5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJyksIGVycm9ycykKKwor
ICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBu
ZXdlcl90aGFuKToKKyAgICAgICAgcGlkX3JlcHJlc2VudGF0aW9uID0gc3RyKHBpZCBvciAnPHVu
a25vd24+JykKKyAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRf
Q09SRV9EVU1QU19ESVJFQ1RPUlkiKQorICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBjcmFz
aF9sb2cgPSAnJworICAgICAgICBleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lID0gImNvcmUt
cGlkXyVzLV8tcHJvY2Vzc18lcyIgJSAocGlkX3JlcHJlc2VudGF0aW9uLCBuYW1lKQorCisgICAg
ICAgIGRlZiBtYXRjaF9maWxlbmFtZShmaWxlc3lzdGVtLCBkaXJlY3RvcnksIGZpbGVuYW1lKToK
KyAgICAgICAgICAgIGlmIHBpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUgPT0g
ZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1l
LmZpbmQobmFtZSkgPiAtMQorCisgICAgICAgIGlmIGxvZ19kaXJlY3Rvcnk6CisgICAgICAgICAg
ICBkdW1wcyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmls
ZV9maWx0ZXI9bWF0Y2hfZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBkdW1wczoKKyAgICAgICAg
ICAgICAgICAjIEdldCB0aGUgbW9zdCByZWNlbnQgY29yZWR1bXAgbWF0Y2hpbmcgdGhlIHBpZCBh
bmQvb3IgcHJvY2VzcyBuYW1lLgorICAgICAgICAgICAgICAgIGNvcmVkdW1wX3BhdGggPSBsaXN0
KHJldmVyc2VkKHNvcnRlZChkdW1wcykpKVswXQorICAgICAgICAgICAgICAgIGlmIG5vdCBuZXdl
cl90aGFuIG9yIHNlbGYuX2ZpbGVzeXN0ZW0ubXRpbWUoY29yZWR1bXBfcGF0aCkgPiBuZXdlcl90
aGFuOgorICAgICAgICAgICAgICAgICAgICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF9n
ZGJfb3V0cHV0KGNvcmVkdW1wX3BhdGgpCisKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3Jz
ICsgKHN0ZGVyciBvciAnPGVtcHR5PicpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKS5zcGxpdGxp
bmVzKCkKKyAgICAgICAgZXJyb3JzX3N0ciA9ICdcbicuam9pbigoJ1NUREVSUjogJyArIGwpIGZv
ciBsIGluIHN0ZGVycl9saW5lcykKKyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAg
ICAgIGlmIG5vdCBsb2dfZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIGxvZ19kaXJlY3Rvcnkg
PSAiL3BhdGgvdG8vY29yZWR1bXBzIgorICAgICAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0
aC5qb2luKGxvZ19kaXJlY3RvcnksICJjb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiKQorICAgICAg
ICAgICAgY3Jhc2hfbG9nID0gIiIiXAorQ29yZWR1bXAgJShleHBlY3RlZF9jcmFzaF9kdW1wX2Zp
bGVuYW1lKXMgbm90IGZvdW5kLiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBj
b21tYW5kIGFzIHN1cGVyLXVzZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lz
L2tlcm5lbC9jb3JlX3BhdHRlcm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxp
bWl0ZWQKKy0gc2V0IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQg
dmFyaWFibGU6IGV4cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShsb2dfZGlyZWN0
b3J5KXMKKworIiIiICUgbG9jYWxzKCkKKworICAgICAgICByZXR1cm4gKHN0ZGVyciwgIiIiXAor
Q3Jhc2ggbG9nIGZvciAlKG5hbWUpcyAocGlkICUocGlkX3JlcHJlc2VudGF0aW9uKXMpOgorCisl
KGNyYXNoX2xvZylzCislKGVycm9yc19zdHIpcyIiIiAlIGxvY2FscygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208916</attachid>
            <date>2013-08-16 04:56:50 -0700</date>
            <delta_ts>2013-08-16 05:08:58 -0700</delta_ts>
            <desc>draft patch fix</desc>
            <filename>patch36.patch</filename>
            <type>text/plain</type>
            <size>2825</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weQppbmRleCA1NTgwMzE4Li5kOThhMmNlIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3F0LnB5CkBAIC0zMSw2ICszMSw3IEBACiBpbXBvcnQgZ2xvYgogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGlt
cG9ydCBvcwogCkBAIC0xOTAsMyArMTkxLDUxIEBAIGNsYXNzIFF0UG9ydChQb3J0KToKICAgICAj
IFF0IHBvcnQgaXMgbm90IHJlYWR5IGZvciBwYXJhbGxlbCB0ZXN0aW5nLCBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzMwIGZvciBkZXRhaWxzLgogICAgIGRl
ZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIDEKKworICAg
IGRlZiBfZ2V0X2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0aCk6CisgICAgICAgIGNtZCA9
IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0IDEwMjQnLCAnLS1iYXRjaCcsIHN0
cihzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwgY29yZWR1bXBfcGF0aF0KKyAgICAgICAgcHJvYyA9
IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF
LCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Mu
Y29tbXVuaWNhdGUoKQorICAgICAgICBlcnJvcnMgPSBbbC5zdHJpcCgpLmRlY29kZSgndXRmOCcs
ICdpZ25vcmUnKSBmb3IgbCBpbiBzdGRlcnIuc3BsaXRsaW5lcygpXQorICAgICAgICByZXR1cm4g
KHN0ZG91dC5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJyksIGVycm9ycykKKworICAgIGRlZiBfZ2V0
X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKToK
KyAgICAgICAgcGlkX3JlcHJlc2VudGF0aW9uID0gc3RyKHBpZCBvciAnPHVua25vd24+JykKKyAg
ICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfQ09SRV9EVU1QU19E
SVJFQ1RPUlkiKQorICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBjcmFzaF9sb2cgPSAnJwor
ICAgICAgICBleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lID0gImNvcmUtcGlkXyVzLV8tcHJv
Y2Vzc18lcyIgJSAocGlkX3JlcHJlc2VudGF0aW9uLCBuYW1lKQorCisgICAgICAgIGRlZiBtYXRj
aF9maWxlbmFtZShmaWxlc3lzdGVtLCBkaXJlY3RvcnksIGZpbGVuYW1lKToKKyAgICAgICAgICAg
IGlmIHBpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUgPT0gZXhwZWN0ZWRfY3Jh
c2hfZHVtcF9maWxlbmFtZQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmZpbmQobmFtZSkg
PiAtMQorCisgICAgICAgIGlmIGxvZ19kaXJlY3Rvcnk6CisgICAgICAgICAgICBkdW1wcyA9IHNl
bGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9bWF0
Y2hfZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBkdW1wczoKKyAgICAgICAgICAgICAgICAjIEdl
dCB0aGUgbW9zdCByZWNlbnQgY29yZWR1bXAgbWF0Y2hpbmcgdGhlIHBpZCBhbmQvb3IgcHJvY2Vz
cyBuYW1lLgorICAgICAgICAgICAgICAgIGNvcmVkdW1wX3BhdGggPSBsaXN0KHJldmVyc2VkKHNv
cnRlZChkdW1wcykpKVswXQorICAgICAgICAgICAgICAgIGlmIG5vdCBuZXdlcl90aGFuIG9yIHNl
bGYuX2ZpbGVzeXN0ZW0ubXRpbWUoY29yZWR1bXBfcGF0aCkgPiBuZXdlcl90aGFuOgorICAgICAg
ICAgICAgICAgICAgICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF9nZGJfb3V0cHV0KGNv
cmVkdW1wX3BhdGgpCisKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgKHN0ZGVyciBv
ciAnPGVtcHR5PicpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKKyAgICAg
ICAgZXJyb3JzX3N0ciA9ICdcbicuam9pbigoJ1NUREVSUjogJyArIGwpIGZvciBsIGluIHN0ZGVy
cl9saW5lcykKKyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAgIGlmIG5vdCBs
b2dfZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSAiL3BhdGgvdG8v
Y29yZWR1bXBzIgorICAgICAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGxvZ19k
aXJlY3RvcnksICJjb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiKQorICAgICAgICAgICAgY3Jhc2hf
bG9nID0gIiIiXAorQ29yZWR1bXAgJShleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lKXMgbm90
IGZvdW5kLiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFzIHN1
cGVyLXVzZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3Jl
X3BhdHRlcm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0gc2V0
IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFyaWFibGU6IGV4
cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShsb2dfZGlyZWN0b3J5KXMKKworIiIi
ICUgbG9jYWxzKCkKKworICAgICAgICByZXR1cm4gKHN0ZGVyciwgIiIiXAorQ3Jhc2ggbG9nIGZv
ciAlKG5hbWUpcyAocGlkICUocGlkX3JlcHJlc2VudGF0aW9uKXMpOgorCislKGNyYXNoX2xvZylz
CislKGVycm9yc19zdHIpcyIiIiAlIGxvY2FscygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209657</attachid>
            <date>2013-08-26 09:12:53 -0700</date>
            <delta_ts>2013-08-27 01:19:40 -0700</delta_ts>
            <desc>draft patch v2</desc>
            <filename>patch38.patch</filename>
            <type>text/plain</type>
            <size>4935</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnV4X2dl
dF9jcmFzaF9sb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW51
eF9nZXRfY3Jhc2hfbG9nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4
Y2QyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgc3VicHJvY2VzcworaW1wb3J0IG9zCisKKworY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3JN
aXhpbihvYmplY3QpOgorICAgIGRlZiBfZ2V0X2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0
aCk6CisgICAgICAgIGNtZCA9IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0IDEw
MjQnLCAnLS1iYXRjaCcsIHN0cihzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwgY29yZWR1bXBfcGF0
aF0KKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRv
dXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRv
dXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQorICAgICAgICBlcnJvcnMgPSBbc3RkZXJy
X2xpbmUuc3RyaXAoKS5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJykgZm9yIHN0ZGVycl9saW5lIGlu
IHN0ZGVyci5zcGxpdGxpbmVzKCldCisgICAgICAgIHJldHVybiAoc3Rkb3V0LmRlY29kZSgndXRm
OCcsICdpZ25vcmUnKSwgZXJyb3JzKQorCisgICAgZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5h
bWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgorICAgICAgICBwaWRfcmVwcmVz
ZW50YXRpb24gPSBzdHIocGlkIG9yICc8dW5rbm93bj4nKQorICAgICAgICBsb2dfZGlyZWN0b3J5
ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWSIpCisgICAgICAg
IGVycm9ycyA9IFtdCisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGV4cGVjdGVkX2Ny
YXNoX2R1bXBfZmlsZW5hbWUgPSAiY29yZS1waWRfJXMtXy1wcm9jZXNzXyVzIiAlIChwaWRfcmVw
cmVzZW50YXRpb24sIG5hbWUpCisKKyAgICAgICAgZGVmIG1hdGNoX2ZpbGVuYW1lKGZpbGVzeXN0
ZW0sIGRpcmVjdG9yeSwgZmlsZW5hbWUpOgorICAgICAgICAgICAgaWYgcGlkOgorICAgICAgICAg
ICAgICAgIHJldHVybiBmaWxlbmFtZSA9PSBleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lCisg
ICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZmluZChuYW1lKSA+IC0xCisKKyAgICAgICAgaWYg
bG9nX2RpcmVjdG9yeToKKyAgICAgICAgICAgIGR1bXBzID0gc2VsZi5fZmlsZXN5c3RlbS5maWxl
c191bmRlcihsb2dfZGlyZWN0b3J5LCBmaWxlX2ZpbHRlcj1tYXRjaF9maWxlbmFtZSkKKyAgICAg
ICAgICAgIGlmIGR1bXBzOgorICAgICAgICAgICAgICAgICMgR2V0IHRoZSBtb3N0IHJlY2VudCBj
b3JlZHVtcCBtYXRjaGluZyB0aGUgcGlkIGFuZC9vciBwcm9jZXNzIG5hbWUuCisgICAgICAgICAg
ICAgICAgY29yZWR1bXBfcGF0aCA9IGxpc3QocmV2ZXJzZWQoc29ydGVkKGR1bXBzKSkpWzBdCisg
ICAgICAgICAgICAgICAgaWYgbm90IG5ld2VyX3RoYW4gb3Igc2VsZi5fZmlsZXN5c3RlbS5tdGlt
ZShjb3JlZHVtcF9wYXRoKSA+IG5ld2VyX3RoYW46CisgICAgICAgICAgICAgICAgICAgIGNyYXNo
X2xvZywgZXJyb3JzID0gc2VsZi5fZ2V0X2dkYl9vdXRwdXQoY29yZWR1bXBfcGF0aCkKKworICAg
ICAgICBzdGRlcnJfbGluZXMgPSBlcnJvcnMgKyAoc3RkZXJyIG9yICc8ZW1wdHk+JykuZGVjb2Rl
KCd1dGY4JywgJ2lnbm9yZScpLnNwbGl0bGluZXMoKQorICAgICAgICBlcnJvcnNfc3RyID0gJ1xu
Jy5qb2luKCgnU1RERVJSOiAnICsgc3RkZXJyX2xpbmUpIGZvciBzdGRlcnJfbGluZSBpbiBzdGRl
cnJfbGluZXMpCisgICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6CisgICAgICAgICAgICBpZiBub3Qg
bG9nX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICBsb2dfZGlyZWN0b3J5ID0gIi9wYXRoL3Rv
L2NvcmVkdW1wcyIKKyAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihsb2df
ZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgICAgIGNyYXNo
X2xvZyA9ICIiIlwKK0NvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSlzIG5v
dCBmb3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBhcyBz
dXBlci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29y
ZV9wYXR0ZXJuCistIGVuYWJsZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5saW1pdGVkCistIHNl
dCB0aGUgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50IHZhcmlhYmxlOiBl
eHBvcnQgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZPSUobG9nX2RpcmVjdG9yeSlzCisKKyIi
IiAlIGxvY2FscygpCisKKyAgICAgICAgcmV0dXJuIChzdGRlcnIsICIiIlwKK0NyYXNoIGxvZyBm
b3IgJShuYW1lKXMgKHBpZCAlKHBpZF9yZXByZXNlbnRhdGlvbilzKToKKworJShjcmFzaF9sb2cp
cworJShlcnJvcnNfc3RyKXMiIiIgJSBsb2NhbHMoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5w
eQppbmRleCA2ZDgyZDU0Li4xMjViYjNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5CkBA
IC0zOSwxMSArMzksMTIgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1l
bW9pemVkCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0
aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0LmJhc2UgaW1w
b3J0IFBvcnQKIGZyb20gd2Via2l0cHkucG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVy
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBH
REJDcmFzaExvZ0dlbmVyYXRvck1peGluCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogCi1jbGFzcyBRdFBvcnQoUG9ydCk6CitjbGFzcyBRdFBvcnQoR0RCQ3Jhc2hMb2dH
ZW5lcmF0b3JNaXhpbiwgUG9ydCk6CiAgICAgQUxMX1ZFUlNJT05TID0gWydsaW51eCcsICd3aW4n
LCAnbWFjJ10KICAgICBwb3J0X25hbWUgPSAicXQiCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210101</attachid>
            <date>2013-08-30 06:43:59 -0700</date>
            <delta_ts>2013-09-01 23:47:21 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch39.patch</filename>
            <type>text/plain</type>
            <size>9558</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hf
bG9nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkMzVkZQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9n
LnB5CkBAIC0wLDAgKzEsODkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkCisjIFRoaXMgbW9kdWxlIGlzIGEgcmVmYWN0b3JpbmcgZnJvbSBndGsucHksIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3Vi
cHJvY2VzcworaW1wb3J0IG9zCisKKworY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3Iob2JqZWN0
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGlkLCBuZXdlcl90aGFuLCBmaWxlc3lz
dGVtLCBwYXRoX3RvX2RyaXZlcik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAg
c2VsZi5waWQgPSBwaWQKKyAgICAgICAgc2VsZi5uZXdlcl90aGFuID0gbmV3ZXJfdGhhbgorICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9wYXRoX3Rv
X2RyaXZlciA9IHBhdGhfdG9fZHJpdmVyCisKKyAgICBkZWYgX2dldF9nZGJfb3V0cHV0KHNlbGYs
IGNvcmVkdW1wX3BhdGgpOgorICAgICAgICBjbWQgPSBbJ2dkYicsICctZXgnLCAndGhyZWFkIGFw
cGx5IGFsbCBidCAxMDI0JywgJy0tYmF0Y2gnLCBzdHIoc2VsZi5fcGF0aF90b19kcml2ZXIoKSks
IGNvcmVkdW1wX3BhdGhdCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rk
aW49Tm9uZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkK
KyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKCkKKyAgICAgICAgZXJy
b3JzID0gW3N0ZGVycl9saW5lLnN0cmlwKCkuZGVjb2RlKCd1dGY4JywgJ2lnbm9yZScpIGZvciBz
dGRlcnJfbGluZSBpbiBzdGRlcnIuc3BsaXRsaW5lcygpXQorICAgICAgICByZXR1cm4gKHN0ZG91
dC5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJyksIGVycm9ycykKKworICAgIGRlZiBnZW5lcmF0ZV9j
cmFzaF9sb2coc2VsZiwgc3Rkb3V0LCBzdGRlcnIpOgorICAgICAgICBwaWRfcmVwcmVzZW50YXRp
b24gPSBzdHIoc2VsZi5waWQgb3IgJzx1bmtub3duPicpCisgICAgICAgIGxvZ19kaXJlY3Rvcnkg
PSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIikKKyAgICAgICAg
ZXJyb3JzID0gW10KKyAgICAgICAgY3Jhc2hfbG9nID0gJycKKyAgICAgICAgZXhwZWN0ZWRfY3Jh
c2hfZHVtcF9maWxlbmFtZSA9ICJjb3JlLXBpZF8lcy1fLXByb2Nlc3NfJXMiICUgKHBpZF9yZXBy
ZXNlbnRhdGlvbiwgc2VsZi5uYW1lKQorICAgICAgICBwcm9jX25hbWUgPSAiJXMiICUgKHNlbGYu
bmFtZSkKKworICAgICAgICBkZWYgbWF0Y2hfZmlsZW5hbWUoZmlsZXN5c3RlbSwgZGlyZWN0b3J5
LCBmaWxlbmFtZSk6CisgICAgICAgICAgICBpZiBzZWxmLnBpZDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmlsZW5hbWUgPT0gZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZQorICAgICAgICAg
ICAgcmV0dXJuIGZpbGVuYW1lLmZpbmQoc2VsZi5uYW1lKSA+IC0xCisKKyAgICAgICAgaWYgbG9n
X2RpcmVjdG9yeToKKyAgICAgICAgICAgIGR1bXBzID0gc2VsZi5fZmlsZXN5c3RlbS5maWxlc191
bmRlcihsb2dfZGlyZWN0b3J5LCBmaWxlX2ZpbHRlcj1tYXRjaF9maWxlbmFtZSkKKyAgICAgICAg
ICAgIGlmIGR1bXBzOgorICAgICAgICAgICAgICAgICMgR2V0IHRoZSBtb3N0IHJlY2VudCBjb3Jl
ZHVtcCBtYXRjaGluZyB0aGUgcGlkIGFuZC9vciBwcm9jZXNzIG5hbWUuCisgICAgICAgICAgICAg
ICAgY29yZWR1bXBfcGF0aCA9IGxpc3QocmV2ZXJzZWQoc29ydGVkKGR1bXBzKSkpWzBdCisgICAg
ICAgICAgICAgICAgaWYgbm90IHNlbGYubmV3ZXJfdGhhbiBvciBzZWxmLl9maWxlc3lzdGVtLm10
aW1lKGNvcmVkdW1wX3BhdGgpID4gc2VsZi5uZXdlcl90aGFuOgorICAgICAgICAgICAgICAgICAg
ICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF9nZGJfb3V0cHV0KGNvcmVkdW1wX3BhdGgp
CisKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgc3RyKHN0ZGVyciBvciAnPGVtcHR5
PicpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgZXJyb3Jz
X3N0ciA9ICdcbicuam9pbigoJ1NUREVSUjogJyArIHN0ZGVycl9saW5lKSBmb3Igc3RkZXJyX2xp
bmUgaW4gc3RkZXJyX2xpbmVzKQorICAgICAgICBpZiBub3QgY3Jhc2hfbG9nOgorICAgICAgICAg
ICAgaWYgbm90IGxvZ19kaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9
ICIvcGF0aC90by9jb3JlZHVtcHMiCisgICAgICAgICAgICBjb3JlX3BhdHRlcm4gPSBvcy5wYXRo
LmpvaW4obG9nX2RpcmVjdG9yeSwgImNvcmUtcGlkXyVwLV8tcHJvY2Vzc18lZSIpCisgICAgICAg
ICAgICBjcmFzaF9sb2cgPSAiIiJcCitDb3JlZHVtcCAlKGV4cGVjdGVkX2NyYXNoX2R1bXBfZmls
ZW5hbWUpcyBub3QgZm91bmQuIFRvIGVuYWJsZSBjcmFzaCBsb2dzOgorCistIHJ1biB0aGlzIGNv
bW1hbmQgYXMgc3VwZXItdXNlcjogZWNobyAiJShjb3JlX3BhdHRlcm4pcyIgPiAvcHJvYy9zeXMv
a2VybmVsL2NvcmVfcGF0dGVybgorLSBlbmFibGUgY29yZSBkdW1wczogdWxpbWl0IC1jIHVubGlt
aXRlZAorLSBzZXQgdGhlIFdFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWSBlbnZpcm9ubWVudCB2
YXJpYWJsZTogZXhwb3J0IFdFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWT0lKGxvZ19kaXJlY3Rv
cnkpcworCisiIiIgJSBsb2NhbHMoKQorCisgICAgICAgIHJldHVybiAoc3RkZXJyLCAiIiJcCitj
cmFzaCBsb2cgZm9yICUocHJvY19uYW1lKXMgKHBpZCAlKHBpZF9yZXByZXNlbnRhdGlvbilzKToK
KworJShjcmFzaF9sb2cpcworJShlcnJvcnNfc3RyKXMiIiIgJSBsb2NhbHMoKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2df
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxOWRmZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRf
Y3Jhc2hfbG9nX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjIFRoaXMgbW9kdWxlIGlzIGEgcmVmYWN0b3Jpbmcg
ZnJvbSBndGsucHksIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CitpbXBvcnQgb3MKKworZnJvbSB3
ZWJraXRweS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1wb3J0IEdEQkNyYXNoTG9nR2VuZXJh
dG9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBN
b2NrRmlsZVN5c3RlbQorCisKK2NsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZW5lcmF0ZV9jcmFzaF9sb2coc2VsZik6Cisg
ICAgICAgIGdlbmVyYXRvciA9IEdEQkNyYXNoTG9nR2VuZXJhdG9yKCdEdW1wUmVuZGVyVHJlZScs
IDI4NTI5LCBuZXdlcl90aGFuPU5vbmUsIGZpbGVzeXN0ZW09TW9ja0ZpbGVTeXN0ZW0oeycvcGF0
aC90by9jb3JlZHVtcHMnOiAnJ30pLCBwYXRoX3RvX2RyaXZlcj1Ob25lKQorCisgICAgICAgIGNv
cmVfZGlyZWN0b3J5ID0gb3MuZW52aXJvbi5nZXQoJ1dFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9S
WScsICcvcGF0aC90by9jb3JlZHVtcHMnKQorICAgICAgICBjb3JlX3BhdHRlcm4gPSBvcy5wYXRo
LmpvaW4oY29yZV9kaXJlY3RvcnksICJjb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiKQorICAgICAg
ICBtb2NrX2VtcHR5X2NyYXNoX2xvZyA9ICIiIlwKK2NyYXNoIGxvZyBmb3IgRHVtcFJlbmRlclRy
ZWUgKHBpZCAyODUyOSk6CisKK0NvcmVkdW1wIGNvcmUtcGlkXzI4NTI5LV8tcHJvY2Vzc19EdW1w
UmVuZGVyVHJlZSBub3QgZm91bmQuIFRvIGVuYWJsZSBjcmFzaCBsb2dzOgorCistIHJ1biB0aGlz
IGNvbW1hbmQgYXMgc3VwZXItdXNlcjogZWNobyAiJShjb3JlX3BhdHRlcm4pcyIgPiAvcHJvYy9z
eXMva2VybmVsL2NvcmVfcGF0dGVybgorLSBlbmFibGUgY29yZSBkdW1wczogdWxpbWl0IC1jIHVu
bGltaXRlZAorLSBzZXQgdGhlIFdFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWSBlbnZpcm9ubWVu
dCB2YXJpYWJsZTogZXhwb3J0IFdFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWT0lKGNvcmVfZGly
ZWN0b3J5KXMKKworCitTVERFUlI6IDxlbXB0eT4iIiIgJSBsb2NhbHMoKQorCisgICAgICAgIGRl
ZiBfbW9ja19nZGJfb3V0cHV0KHNlbGYsIGNvcmVkdW1wX3BhdGgpOgorICAgICAgICAgICAgcmV0
dXJuIChtb2NrX2VtcHR5X2NyYXNoX2xvZywgW10pCisKKyAgICAgICAgZ2VuZXJhdG9yLl9nZXRf
Z2RiX291dHB1dCA9IF9tb2NrX2dkYl9vdXRwdXQKKyAgICAgICAgc3RkZXJyLCBsb2cgPSBnZW5l
cmF0b3IuZ2VuZXJhdGVfY3Jhc2hfbG9nKE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RkZXJyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGxv
ZywgbW9ja19lbXB0eV9jcmFzaF9sb2cpCisKKyAgICAgICAgZ2VuZXJhdG9yLm5ld2VyX3RoYW4g
PSAwLjAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsIE5vbmUpCisgICAgICAgIHNl
bGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwobG9nLCBtb2NrX2VtcHR5X2NyYXNoX2xvZykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9xdC5weQppbmRleCA1ZGI1ZDhlLi5jZWRhYzUwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3F0LnB5CkBAIC0zOSw2ICszOSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm1l
bW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
LnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0
cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQueHZmYmRyaXZlciBp
bXBvcnQgWHZmYkRyaXZlcgorZnJvbSB3ZWJraXRweS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cg
aW1wb3J0IEdEQkNyYXNoTG9nR2VuZXJhdG9yCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIApAQCAtMTg4LDMgKzE4OSw2IEBAIGNsYXNzIFF0UG9ydChQb3J0KToKICAgICAj
IFF0IHBvcnQgaXMgbm90IHJlYWR5IGZvciBwYXJhbGxlbCB0ZXN0aW5nLCBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzMwIGZvciBkZXRhaWxzLgogICAgIGRl
ZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIDEKKworICAg
IGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdl
cl90aGFuKToKKyAgICAgICAgcmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwg
bmV3ZXJfdGhhbiwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVy
YXRlX2NyYXNoX2xvZyhzdGRvdXQsIHN0ZGVycikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9xdF91bml0dGVzdC5weQppbmRleCAyMzM4ZjY3Li45MzhjYWYzIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3F0X3VuaXR0ZXN0LnB5CkBAIC0xMjQsMyArMTI0LDcgQEAgY2xhc3Mg
UXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2V4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0xLAogICAgICAgICAgICAgb3V0cHV0
PSd0ZXN0aW5nIG91dHB1dCBmYWlsdXJlJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0
LmNoZWNrX3N5c19kZXBzKG5lZWRzX2h0dHA9RmFsc2UpKQorCisgICAgZGVmIHRlc3RfZ2V0X2Ny
YXNoX2xvZyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHRlc3RlZCBpbiBsaW51eF9n
ZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5CisgICAgICAgIHBhc3MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210264</attachid>
            <date>2013-09-01 23:48:37 -0700</date>
            <delta_ts>2013-09-05 06:23:59 -0700</delta_ts>
            <desc>proposed patch with changelog.</desc>
            <filename>patch39.patch</filename>
            <type>text/plain</type>
            <size>10801</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NmMy
M2U2Li42YWMzNDlhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTMtMDktMDEgIEdhYm9yIEFicmFoYW0gIDxhYnJo
bUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgQXV0byBHREIgYmFja3RyYWNlIGdlbmVyYXRp
b24gZm9yIEVGTC9HVEsvUXQgYm90cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExOTMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9s
b2cucHk6IEFkZGVkLgorICAgICAgICAoR0RCQ3Jhc2hMb2dHZW5lcmF0b3IpOgorICAgICAgICAo
R0RCQ3Jhc2hMb2dHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoR0RCQ3Jhc2hMb2dHZW5l
cmF0b3IuX2dldF9nZGJfb3V0cHV0KToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLmdl
bmVyYXRlX2NyYXNoX2xvZyk6CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvci5nZW5lcmF0
ZV9jcmFzaF9sb2cubWF0Y2hfZmlsZW5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKEdE
QkNyYXNoTG9nR2VuZXJhdG9yVGVzdCk6CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvclRl
c3QudGVzdF9nZW5lcmF0ZV9jcmFzaF9sb2cpOgorICAgICAgICAoX21vY2tfZ2RiX291dHB1dCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5OgorICAgICAgICAoUXRQb3J0
LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKToKKyAgICAgICAgKFF0UG9ydCk6CisgICAgICAgIChR
dFBvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9x
dF91bml0dGVzdC5weToKKyAgICAgICAgKFF0UG9ydFRlc3QudGVzdF9jaGVja19zeXNfZGVwcyk6
CisgICAgICAgIChRdFBvcnRUZXN0KToKKyAgICAgICAgKFF0UG9ydFRlc3QudGVzdF9nZXRfY3Jh
c2hfbG9nKToKKwogMjAxMy0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDM1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQpAQCAtMCww
ICsxLDg5IEBACisjIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIyBU
aGlzIG1vZHVsZSBpcyBhIHJlZmFjdG9yaW5nIGZyb20gZ3RrLnB5LCBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN1YnByb2Nlc3MKK2lt
cG9ydCBvcworCisKK2NsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgZmlsZXN5c3RlbSwgcGF0aF90
b19kcml2ZXIpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGlkID0g
cGlkCisgICAgICAgIHNlbGYubmV3ZXJfdGhhbiA9IG5ld2VyX3RoYW4KKyAgICAgICAgc2VsZi5f
ZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fcGF0aF90b19kcml2ZXIgPSBw
YXRoX3RvX2RyaXZlcgorCisgICAgZGVmIF9nZXRfZ2RiX291dHB1dChzZWxmLCBjb3JlZHVtcF9w
YXRoKToKKyAgICAgICAgY21kID0gWydnZGInLCAnLWV4JywgJ3RocmVhZCBhcHBseSBhbGwgYnQg
MTAyNCcsICctLWJhdGNoJywgc3RyKHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkpLCBjb3JlZHVtcF9w
YXRoXQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZGluPU5vbmUsIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0
ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCisgICAgICAgIGVycm9ycyA9IFtzdGRl
cnJfbGluZS5zdHJpcCgpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKSBmb3Igc3RkZXJyX2xpbmUg
aW4gc3RkZXJyLnNwbGl0bGluZXMoKV0KKyAgICAgICAgcmV0dXJuIChzdGRvdXQuZGVjb2RlKCd1
dGY4JywgJ2lnbm9yZScpLCBlcnJvcnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfY3Jhc2hfbG9nKHNl
bGYsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgcGlkX3JlcHJlc2VudGF0aW9uID0gc3RyKHNl
bGYucGlkIG9yICc8dW5rbm93bj4nKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWSIpCisgICAgICAgIGVycm9ycyA9IFtd
CisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGV4cGVjdGVkX2NyYXNoX2R1bXBfZmls
ZW5hbWUgPSAiY29yZS1waWRfJXMtXy1wcm9jZXNzXyVzIiAlIChwaWRfcmVwcmVzZW50YXRpb24s
IHNlbGYubmFtZSkKKyAgICAgICAgcHJvY19uYW1lID0gIiVzIiAlIChzZWxmLm5hbWUpCisKKyAg
ICAgICAgZGVmIG1hdGNoX2ZpbGVuYW1lKGZpbGVzeXN0ZW0sIGRpcmVjdG9yeSwgZmlsZW5hbWUp
OgorICAgICAgICAgICAgaWYgc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVu
YW1lID09IGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUKKyAgICAgICAgICAgIHJldHVybiBm
aWxlbmFtZS5maW5kKHNlbGYubmFtZSkgPiAtMQorCisgICAgICAgIGlmIGxvZ19kaXJlY3Rvcnk6
CisgICAgICAgICAgICBkdW1wcyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2Rp
cmVjdG9yeSwgZmlsZV9maWx0ZXI9bWF0Y2hfZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBkdW1w
czoKKyAgICAgICAgICAgICAgICAjIEdldCB0aGUgbW9zdCByZWNlbnQgY29yZWR1bXAgbWF0Y2hp
bmcgdGhlIHBpZCBhbmQvb3IgcHJvY2VzcyBuYW1lLgorICAgICAgICAgICAgICAgIGNvcmVkdW1w
X3BhdGggPSBsaXN0KHJldmVyc2VkKHNvcnRlZChkdW1wcykpKVswXQorICAgICAgICAgICAgICAg
IGlmIG5vdCBzZWxmLm5ld2VyX3RoYW4gb3Igc2VsZi5fZmlsZXN5c3RlbS5tdGltZShjb3JlZHVt
cF9wYXRoKSA+IHNlbGYubmV3ZXJfdGhhbjoKKyAgICAgICAgICAgICAgICAgICAgY3Jhc2hfbG9n
LCBlcnJvcnMgPSBzZWxmLl9nZXRfZ2RiX291dHB1dChjb3JlZHVtcF9wYXRoKQorCisgICAgICAg
IHN0ZGVycl9saW5lcyA9IGVycm9ycyArIHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKS5kZWNvZGUo
J3V0ZjgnLCAnaWdub3JlJykuc3BsaXRsaW5lcygpCisgICAgICAgIGVycm9yc19zdHIgPSAnXG4n
LmpvaW4oKCdTVERFUlI6ICcgKyBzdGRlcnJfbGluZSkgZm9yIHN0ZGVycl9saW5lIGluIHN0ZGVy
cl9saW5lcykKKyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAgIGlmIG5vdCBs
b2dfZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSAiL3BhdGgvdG8v
Y29yZWR1bXBzIgorICAgICAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGxvZ19k
aXJlY3RvcnksICJjb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiKQorICAgICAgICAgICAgY3Jhc2hf
bG9nID0gIiIiXAorQ29yZWR1bXAgJShleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lKXMgbm90
IGZvdW5kLiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFzIHN1
cGVyLXVzZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3Jl
X3BhdHRlcm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0gc2V0
IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFyaWFibGU6IGV4
cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShsb2dfZGlyZWN0b3J5KXMKKworIiIi
ICUgbG9jYWxzKCkKKworICAgICAgICByZXR1cm4gKHN0ZGVyciwgIiIiXAorY3Jhc2ggbG9nIGZv
ciAlKHByb2NfbmFtZSlzIChwaWQgJShwaWRfcmVwcmVzZW50YXRpb24pcyk6CisKKyUoY3Jhc2hf
bG9nKXMKKyUoZXJyb3JzX3N0cilzIiIiICUgbG9jYWxzKCkpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTlkZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191
bml0dGVzdC5weQpAQCAtMCwwICsxLDY2IEBACisjIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJz
aXR5IG9mIFN6ZWdlZAorIyBUaGlzIG1vZHVsZSBpcyBhIHJlZmFjdG9yaW5nIGZyb20gZ3RrLnB5
LCBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAoraW1wb3J0IG9zCisKK2Zyb20gd2Via2l0cHkucG9y
dC5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJDcmFzaExvZ0dlbmVyYXRvcgorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0
ZW0KKworCitjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgorCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfY3Jhc2hfbG9nKHNlbGYpOgorICAgICAgICBnZW5l
cmF0b3IgPSBHREJDcmFzaExvZ0dlbmVyYXRvcignRHVtcFJlbmRlclRyZWUnLCAyODUyOSwgbmV3
ZXJfdGhhbj1Ob25lLCBmaWxlc3lzdGVtPU1vY2tGaWxlU3lzdGVtKHsnL3BhdGgvdG8vY29yZWR1
bXBzJzogJyd9KSwgcGF0aF90b19kcml2ZXI9Tm9uZSkKKworICAgICAgICBjb3JlX2RpcmVjdG9y
eSA9IG9zLmVudmlyb24uZ2V0KCdXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlknLCAnL3BhdGgv
dG8vY29yZWR1bXBzJykKKyAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGNvcmVf
ZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgbW9ja19lbXB0
eV9jcmFzaF9sb2cgPSAiIiJcCitjcmFzaCBsb2cgZm9yIER1bXBSZW5kZXJUcmVlIChwaWQgMjg1
MjkpOgorCitDb3JlZHVtcCBjb3JlLXBpZF8yODUyOS1fLXByb2Nlc3NfRHVtcFJlbmRlclRyZWUg
bm90IGZvdW5kLiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFz
IHN1cGVyLXVzZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9j
b3JlX3BhdHRlcm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0g
c2V0IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFyaWFibGU6
IGV4cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShjb3JlX2RpcmVjdG9yeSlzCisK
KworU1RERVJSOiA8ZW1wdHk+IiIiICUgbG9jYWxzKCkKKworICAgICAgICBkZWYgX21vY2tfZ2Ri
X291dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiAobW9ja19l
bXB0eV9jcmFzaF9sb2csIFtdKQorCisgICAgICAgIGdlbmVyYXRvci5fZ2V0X2dkYl9vdXRwdXQg
PSBfbW9ja19nZGJfb3V0cHV0CisgICAgICAgIHN0ZGVyciwgbG9nID0gZ2VuZXJhdG9yLmdlbmVy
YXRlX2NyYXNoX2xvZyhOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVy
ciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChsb2csIG1vY2tfZW1w
dHlfY3Jhc2hfbG9nKQorCisgICAgICAgIGdlbmVyYXRvci5uZXdlcl90aGFuID0gMC4wCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE11
bHRpTGluZUVxdWFsKGxvZywgbW9ja19lbXB0eV9jcmFzaF9sb2cpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvcXQucHkKaW5kZXggNWRiNWQ4ZS4uY2VkYWM1MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3F0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9x
dC5weQpAQCAtMzksNiArMzksNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBv
cnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZp
Z3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuYmFz
ZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJE
cml2ZXIKK2Zyb20gd2Via2l0cHkucG9ydC5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJD
cmFzaExvZ0dlbmVyYXRvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
QEAgLTE4OCwzICsxODksNiBAQCBjbGFzcyBRdFBvcnQoUG9ydCk6CiAgICAgIyBRdCBwb3J0IGlz
IG5vdCByZWFkeSBmb3IgcGFyYWxsZWwgdGVzdGluZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzczMCBmb3IgZGV0YWlscy4KICAgICBkZWYgZGVmYXVsdF9j
aGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHJldHVybiAxCisKKyAgICBkZWYgX2dldF9j
cmFzaF9sb2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6Cisg
ICAgICAgIHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBwaWQsIG5ld2VyX3RoYW4s
IHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9s
b2coc3Rkb3V0LCBzdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvcXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRl
c3QucHkKaW5kZXggMjMzOGY2Ny4uOTM4Y2FmMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3F0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9xdF91bml0dGVzdC5weQpAQCAtMTI0LDMgKzEyNCw3IEBAIGNsYXNzIFF0UG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBN
b2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MSwKICAgICAgICAgICAgIG91dHB1dD0ndGVzdGluZyBv
dXRwdXQgZmFpbHVyZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5jaGVja19zeXNf
ZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKKworICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2Vs
Zik6CisgICAgICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xv
Z191bml0dGVzdC5weQorICAgICAgICBwYXNzCg==
</data>
<flag name="review"
          id="232365"
          type_id="1"
          status="-"
          setter="pnormand"
    />
    <flag name="commit-queue"
          id="232366"
          type_id="3"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210707</attachid>
            <date>2013-09-06 00:15:23 -0700</date>
            <delta_ts>2013-09-11 05:07:52 -0700</delta_ts>
            <desc>add auto backtrace to efl and gtk</desc>
            <filename>patch39.patch</filename>
            <type>text/plain</type>
            <size>17347</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMThj
ZWFiLi5lYzhjYzgzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMtMDktMDYgIEdhYm9yIEFicmFoYW0gIDxhYnJo
bUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgQXV0byBHREIgYmFja3RyYWNlIGdlbmVyYXRp
b24gZm9yIEVGTC9HVEsvUXQgYm90cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExOTMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weToKKyAgICAgICAg
KEVmbFBvcnQuY2hlY2tfc3lzX2RlcHMpOgorICAgICAgICAoRWZsUG9ydCk6CisgICAgICAgIChF
ZmxQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZWZsX3VuaXR0ZXN0LnB5OgorICAgICAgICAoRWZsUG9ydFRlc3QudGVzdF9zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKToKKyAgICAgICAgKEVmbFBvcnRUZXN0KToKKyAgICAgICAgKEVmbFBvcnRUZXN0
LnRlc3RfZ2V0X2NyYXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weToKKyAgICAgICAgKEd0a1BvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHk6CisgICAgICAgIChHdGtQb3J0VGVzdC50
ZXN0X2dldF9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51
eF9nZXRfY3Jhc2hfbG9nLnB5OiBBZGRlZC4KKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9y
KToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEdE
QkNyYXNoTG9nR2VuZXJhdG9yLl9nZXRfZ2RiX291dHB1dCk6CisgICAgICAgIChHREJDcmFzaExv
Z0dlbmVyYXRvci5nZW5lcmF0ZV9jcmFzaF9sb2cpOgorICAgICAgICAoR0RCQ3Jhc2hMb2dHZW5l
cmF0b3IuZ2VuZXJhdGVfY3Jhc2hfbG9nLm1hdGNoX2ZpbGVuYW1lKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weTogQWRkZWQu
CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvclRlc3QpOgorICAgICAgICAoR0RCQ3Jhc2hM
b2dHZW5lcmF0b3JUZXN0LnRlc3RfZ2VuZXJhdGVfY3Jhc2hfbG9nKToKKyAgICAgICAgKF9tb2Nr
X2dkYl9vdXRwdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weToKKyAg
ICAgICAgKFF0UG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyk6CisgICAgICAgIChRdFBvcnQp
OgorICAgICAgICAoUXRQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHk6CisgICAgICAgIChRdFBvcnRUZXN0LnRlc3RfY2hl
Y2tfc3lzX2RlcHMpOgorICAgICAgICAoUXRQb3J0VGVzdCk6CisgICAgICAgIChRdFBvcnRUZXN0
LnRlc3RfZ2V0X2NyYXNoX2xvZyk6CisKIDIwMTMtMDktMDUgIFNlb2tqdSBLd29uICA8c2Vva2p1
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIFZlY3RvclJldmVy
c2UuY3BwIHdhcyByZW1vdmVkIGFmdGVyIHIxNTUxNTEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Vm
bC5weQppbmRleCAyN2Q5N2EyLi5kYzdiODIwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZWZsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmwu
cHkKQEAgLTMzLDcgKzMzLDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHku
cG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQucHVsc2VhdWRpb19zYW5p
dGl6ZXIgaW1wb3J0IFB1bHNlQXVkaW9TYW5pdGl6ZXIKIGZyb20gd2Via2l0cHkucG9ydC54dmZi
ZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVyCi0KK2Zyb20gd2Via2l0cHkucG9ydC5saW51eF9nZXRf
Y3Jhc2hfbG9nIGltcG9ydCBHREJDcmFzaExvZ0dlbmVyYXRvcgogCiBjbGFzcyBFZmxQb3J0KFBv
cnQpOgogICAgIHBvcnRfbmFtZSA9ICdlZmwnCkBAIC0xMzQsMyArMTM0LDYgQEAgY2xhc3MgRWZs
UG9ydChQb3J0KToKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToK
ICAgICAgICAgcmV0dXJuIHN1cGVyKEVmbFBvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKG5lZWRz
X2h0dHApIGFuZCBzZWxmLl9kcml2ZXJfY2xhc3MoKS5jaGVja19kcml2ZXIoc2VsZikKKworICAg
IGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdl
cl90aGFuKToKKyAgICAgICAgcmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwg
bmV3ZXJfdGhhbiwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVy
YXRlX2NyYXNoX2xvZyhzdGRvdXQsIHN0ZGVycikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9lZmxfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsX3VuaXR0ZXN0LnB5CmluZGV4IGExNmRiYWYuLmIzMTRiNDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmxfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2VmbF91bml0dGVzdC5weQpAQCAtNDgsMyArNDgsNyBAQCBjbGFz
cyBFZmxQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQu
X2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBleHBl
Y3RlZF9sb2dzID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNo
ZXInLCAnLS1yZWxlYXNlJywgJy0tZWZsJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2Nr
LWNoZWNrb3V0XG4iCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUsIFsidGVzdC5odG1sIl0sIGV4cGVjdGVkX2xv
Z3M9ZXhwZWN0ZWRfbG9ncykKKworICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6Cisg
ICAgICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xvZ191bml0
dGVzdC5weQorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQppbmRleCBi
NDg1Yjc0Li5kMzhkYzY4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
Z3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKQEAgLTM3LDYg
KzM3LDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0
cHkucG9ydC5wdWxzZWF1ZGlvX3Nhbml0aXplciBpbXBvcnQgUHVsc2VBdWRpb1Nhbml0aXplcgog
ZnJvbSB3ZWJraXRweS5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJEcml2ZXIKIGZyb20gd2Vi
a2l0cHkucG9ydC53ZXN0b25kcml2ZXIgaW1wb3J0IFdlc3RvbkRyaXZlcgorZnJvbSB3ZWJraXRw
eS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1wb3J0IEdEQkNyYXNoTG9nR2VuZXJhdG9yCiAK
IAogY2xhc3MgR3RrUG9ydChQb3J0KToKQEAgLTE4MSw0MiArMTgyLDQgQEAgY2xhc3MgR3RrUG9y
dChQb3J0KToKICAgICAgICAgcmV0dXJuIChzdGRvdXQuZGVjb2RlKCd1dGY4JywgJ2lnbm9yZScp
LCBlcnJvcnMpCiAKICAgICBkZWYgX2dldF9jcmFzaF9sb2coc2VsZiwgbmFtZSwgcGlkLCBzdGRv
dXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6Ci0gICAgICAgIHBpZF9yZXByZXNlbnRhdGlvbiA9IHN0
cihwaWQgb3IgJzx1bmtub3duPicpCi0gICAgICAgIGxvZ19kaXJlY3RvcnkgPSBvcy5lbnZpcm9u
LmdldCgiV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIikKLSAgICAgICAgZXJyb3JzID0gW10K
LSAgICAgICAgY3Jhc2hfbG9nID0gJycKLSAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxl
bmFtZSA9ICJjb3JlLXBpZF8lcy1fLXByb2Nlc3NfJXMiICUgKHBpZF9yZXByZXNlbnRhdGlvbiwg
bmFtZSkKLQotICAgICAgICBkZWYgbWF0Y2hfZmlsZW5hbWUoZmlsZXN5c3RlbSwgZGlyZWN0b3J5
LCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICBpZiBwaWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZpbGVuYW1lID09IGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUKLSAgICAgICAgICAgIHJl
dHVybiBmaWxlbmFtZS5maW5kKG5hbWUpID4gLTEKLQotICAgICAgICBpZiBsb2dfZGlyZWN0b3J5
OgotICAgICAgICAgICAgZHVtcHMgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19k
aXJlY3RvcnksIGZpbGVfZmlsdGVyPW1hdGNoX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgZHVt
cHM6Ci0gICAgICAgICAgICAgICAgIyBHZXQgdGhlIG1vc3QgcmVjZW50IGNvcmVkdW1wIG1hdGNo
aW5nIHRoZSBwaWQgYW5kL29yIHByb2Nlc3MgbmFtZS4KLSAgICAgICAgICAgICAgICBjb3JlZHVt
cF9wYXRoID0gbGlzdChyZXZlcnNlZChzb3J0ZWQoZHVtcHMpKSlbMF0KLSAgICAgICAgICAgICAg
ICBpZiBub3QgbmV3ZXJfdGhhbiBvciBzZWxmLl9maWxlc3lzdGVtLm10aW1lKGNvcmVkdW1wX3Bh
dGgpID4gbmV3ZXJfdGhhbjoKLSAgICAgICAgICAgICAgICAgICAgY3Jhc2hfbG9nLCBlcnJvcnMg
PSBzZWxmLl9nZXRfZ2RiX291dHB1dChjb3JlZHVtcF9wYXRoKQotCi0gICAgICAgIHN0ZGVycl9s
aW5lcyA9IGVycm9ycyArIChzdGRlcnIgb3IgJzxlbXB0eT4nKS5kZWNvZGUoJ3V0ZjgnLCAnaWdu
b3JlJykuc3BsaXRsaW5lcygpCi0gICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERF
UlI6ICcgKyBsKSBmb3IgbCBpbiBzdGRlcnJfbGluZXMpCi0gICAgICAgIGlmIG5vdCBjcmFzaF9s
b2c6Ci0gICAgICAgICAgICBpZiBub3QgbG9nX2RpcmVjdG9yeToKLSAgICAgICAgICAgICAgICBs
b2dfZGlyZWN0b3J5ID0gIi9wYXRoL3RvL2NvcmVkdW1wcyIKLSAgICAgICAgICAgIGNvcmVfcGF0
dGVybiA9IG9zLnBhdGguam9pbihsb2dfZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNz
XyVlIikKLSAgICAgICAgICAgIGNyYXNoX2xvZyA9ICIiIlwKLUNvcmVkdW1wICUoZXhwZWN0ZWRf
Y3Jhc2hfZHVtcF9maWxlbmFtZSlzIG5vdCBmb3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6Ci0K
LS0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBlci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilz
IiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCi0tIGVuYWJsZSBjb3JlIGR1bXBzOiB1
bGltaXQgLWMgdW5saW1pdGVkCi0tIHNldCB0aGUgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZ
IGVudmlyb25tZW50IHZhcmlhYmxlOiBleHBvcnQgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZ
PSUobG9nX2RpcmVjdG9yeSlzCi0KLSIiIiAlIGxvY2FscygpCi0KLSAgICAgICAgcmV0dXJuIChz
dGRlcnIsICIiIlwKLUNyYXNoIGxvZyBmb3IgJShuYW1lKXMgKHBpZCAlKHBpZF9yZXByZXNlbnRh
dGlvbilzKToKLQotJShjcmFzaF9sb2cpcwotJShlcnJvcnNfc3RyKXMiIiIgJSBsb2NhbHMoKSkK
KyAgICAgICAgcmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwgbmV3ZXJfdGhh
biwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVyYXRlX2NyYXNo
X2xvZyhzdGRvdXQsIHN0ZGVycikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9ndGtfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3Vu
aXR0ZXN0LnB5CmluZGV4IGU4MDYwOTEuLjFiNjZkOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2d0a191bml0dGVzdC5weQpAQCAtODIsMjkgKzgyLDUgQEAgY2xhc3MgR3RrUG9y
dFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nRGVi
dWcnKSkuZGVmYXVsdF90aW1lb3V0X21zKCksIDEyMDAwKQogCiAgICAgZGVmIHRlc3RfZ2V0X2Ny
YXNoX2xvZyhzZWxmKToKLSAgICAgICAgY29yZV9kaXJlY3RvcnkgPSBvcy5lbnZpcm9uLmdldCgn
V0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZJywgJy9wYXRoL3RvL2NvcmVkdW1wcycpCi0gICAg
ICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihjb3JlX2RpcmVjdG9yeSwgImNvcmUtcGlk
XyVwLV8tcHJvY2Vzc18lZSIpCi0gICAgICAgIG1vY2tfZW1wdHlfY3Jhc2hfbG9nID0gIiIiXAot
Q3Jhc2ggbG9nIGZvciBEdW1wUmVuZGVyVHJlZSAocGlkIDI4NTI5KToKLQotQ29yZWR1bXAgY29y
ZS1waWRfMjg1MjktXy1wcm9jZXNzX0R1bXBSZW5kZXJUcmVlIG5vdCBmb3VuZC4gVG8gZW5hYmxl
IGNyYXNoIGxvZ3M6Ci0KLS0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBlci11c2VyOiBlY2hvICIl
KGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCi0tIGVuYWJs
ZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5saW1pdGVkCi0tIHNldCB0aGUgV0VCS0lUX0NPUkVf
RFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50IHZhcmlhYmxlOiBleHBvcnQgV0VCS0lUX0NPUkVf
RFVNUFNfRElSRUNUT1JZPSUoY29yZV9kaXJlY3RvcnkpcwotCi0KLVNUREVSUjogPGVtcHR5PiIi
IiAlIGxvY2FscygpCi0KLSAgICAgICAgZGVmIF9tb2NrX2dkYl9vdXRwdXQoY29yZWR1bXBfcGF0
aCk6Ci0gICAgICAgICAgICByZXR1cm4gKG1vY2tfZW1wdHlfY3Jhc2hfbG9nLCBbXSkKLQotICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0Ll9nZXRfZ2RiX291dHB1
dCA9IG1vY2tfZW1wdHlfY3Jhc2hfbG9nCi0gICAgICAgIHN0ZGVyciwgbG9nID0gcG9ydC5fZ2V0
X2NyYXNoX2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUyOSwgIiIsICIiLCBuZXdlcl90aGFuPU5v
bmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLCAiIikKLSAgICAgICAgc2VsZi5h
c3NlcnRNdWx0aUxpbmVFcXVhbChsb2csIG1vY2tfZW1wdHlfY3Jhc2hfbG9nKQotCi0gICAgICAg
IHN0ZGVyciwgbG9nID0gcG9ydC5fZ2V0X2NyYXNoX2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUy
OSwgIiIsICIiLCBuZXdlcl90aGFuPTAuMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRl
cnIsICIiKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGxvZywgbW9ja19lbXB0
eV9jcmFzaF9sb2cpCisgICAgICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0
X2NyYXNoX2xvZ191bml0dGVzdC5weQorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDM1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQpAQCAtMCwwICsxLDg5IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIyBUaGlzIG1vZHVs
ZSBpcyBhIHJlZmFjdG9yaW5nIGZyb20gZ3RrLnB5LCBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlh
IFMuTAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBvcwor
CisKK2NsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgZmlsZXN5c3RlbSwgcGF0aF90b19kcml2ZXIp
OgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGlkID0gcGlkCisgICAg
ICAgIHNlbGYubmV3ZXJfdGhhbiA9IG5ld2VyX3RoYW4KKyAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bSA9IGZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fcGF0aF90b19kcml2ZXIgPSBwYXRoX3RvX2Ry
aXZlcgorCisgICAgZGVmIF9nZXRfZ2RiX291dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKKyAg
ICAgICAgY21kID0gWydnZGInLCAnLWV4JywgJ3RocmVhZCBhcHBseSBhbGwgYnQgMTAyNCcsICct
LWJhdGNoJywgc3RyKHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkpLCBjb3JlZHVtcF9wYXRoXQorICAg
ICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZGluPU5vbmUsIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0ZG91dCwgc3Rk
ZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCisgICAgICAgIGVycm9ycyA9IFtzdGRlcnJfbGluZS5z
dHJpcCgpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKSBmb3Igc3RkZXJyX2xpbmUgaW4gc3RkZXJy
LnNwbGl0bGluZXMoKV0KKyAgICAgICAgcmV0dXJuIChzdGRvdXQuZGVjb2RlKCd1dGY4JywgJ2ln
bm9yZScpLCBlcnJvcnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfY3Jhc2hfbG9nKHNlbGYsIHN0ZG91
dCwgc3RkZXJyKToKKyAgICAgICAgcGlkX3JlcHJlc2VudGF0aW9uID0gc3RyKHNlbGYucGlkIG9y
ICc8dW5rbm93bj4nKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MuZW52aXJvbi5nZXQoIldF
QktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWSIpCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAg
IGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUgPSAi
Y29yZS1waWRfJXMtXy1wcm9jZXNzXyVzIiAlIChwaWRfcmVwcmVzZW50YXRpb24sIHNlbGYubmFt
ZSkKKyAgICAgICAgcHJvY19uYW1lID0gIiVzIiAlIChzZWxmLm5hbWUpCisKKyAgICAgICAgZGVm
IG1hdGNoX2ZpbGVuYW1lKGZpbGVzeXN0ZW0sIGRpcmVjdG9yeSwgZmlsZW5hbWUpOgorICAgICAg
ICAgICAgaWYgc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lID09IGV4
cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5m
aW5kKHNlbGYubmFtZSkgPiAtMQorCisgICAgICAgIGlmIGxvZ19kaXJlY3Rvcnk6CisgICAgICAg
ICAgICBkdW1wcyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwg
ZmlsZV9maWx0ZXI9bWF0Y2hfZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBkdW1wczoKKyAgICAg
ICAgICAgICAgICAjIEdldCB0aGUgbW9zdCByZWNlbnQgY29yZWR1bXAgbWF0Y2hpbmcgdGhlIHBp
ZCBhbmQvb3IgcHJvY2VzcyBuYW1lLgorICAgICAgICAgICAgICAgIGNvcmVkdW1wX3BhdGggPSBs
aXN0KHJldmVyc2VkKHNvcnRlZChkdW1wcykpKVswXQorICAgICAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLm5ld2VyX3RoYW4gb3Igc2VsZi5fZmlsZXN5c3RlbS5tdGltZShjb3JlZHVtcF9wYXRoKSA+
IHNlbGYubmV3ZXJfdGhhbjoKKyAgICAgICAgICAgICAgICAgICAgY3Jhc2hfbG9nLCBlcnJvcnMg
PSBzZWxmLl9nZXRfZ2RiX291dHB1dChjb3JlZHVtcF9wYXRoKQorCisgICAgICAgIHN0ZGVycl9s
aW5lcyA9IGVycm9ycyArIHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKS5kZWNvZGUoJ3V0ZjgnLCAn
aWdub3JlJykuc3BsaXRsaW5lcygpCisgICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdT
VERFUlI6ICcgKyBzdGRlcnJfbGluZSkgZm9yIHN0ZGVycl9saW5lIGluIHN0ZGVycl9saW5lcykK
KyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAgIGlmIG5vdCBsb2dfZGlyZWN0
b3J5OgorICAgICAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSAiL3BhdGgvdG8vY29yZWR1bXBz
IgorICAgICAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGxvZ19kaXJlY3Rvcnks
ICJjb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiKQorICAgICAgICAgICAgY3Jhc2hfbG9nID0gIiIi
XAorQ29yZWR1bXAgJShleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lKXMgbm90IGZvdW5kLiBU
byBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFzIHN1cGVyLXVzZXI6
IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4K
Ky0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0gc2V0IHRoZSBXRUJL
SVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFyaWFibGU6IGV4cG9ydCBXRUJL
SVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShsb2dfZGlyZWN0b3J5KXMKKworIiIiICUgbG9jYWxz
KCkKKworICAgICAgICByZXR1cm4gKHN0ZGVyciwgIiIiXAorY3Jhc2ggbG9nIGZvciAlKHByb2Nf
bmFtZSlzIChwaWQgJShwaWRfcmVwcmVzZW50YXRpb24pcyk6CisKKyUoY3Jhc2hfbG9nKXMKKyUo
ZXJyb3JzX3N0cilzIiIiICUgbG9jYWxzKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTlkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDY2IEBACisjIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6
ZWdlZAorIyBUaGlzIG1vZHVsZSBpcyBhIHJlZmFjdG9yaW5nIGZyb20gZ3RrLnB5LCBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhIFMuTAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0
ZXN0MiBhcyB1bml0dGVzdAoraW1wb3J0IG9zCisKK2Zyb20gd2Via2l0cHkucG9ydC5saW51eF9n
ZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJDcmFzaExvZ0dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KKworCitj
bGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
ZGVmIHRlc3RfZ2VuZXJhdGVfY3Jhc2hfbG9nKHNlbGYpOgorICAgICAgICBnZW5lcmF0b3IgPSBH
REJDcmFzaExvZ0dlbmVyYXRvcignRHVtcFJlbmRlclRyZWUnLCAyODUyOSwgbmV3ZXJfdGhhbj1O
b25lLCBmaWxlc3lzdGVtPU1vY2tGaWxlU3lzdGVtKHsnL3BhdGgvdG8vY29yZWR1bXBzJzogJyd9
KSwgcGF0aF90b19kcml2ZXI9Tm9uZSkKKworICAgICAgICBjb3JlX2RpcmVjdG9yeSA9IG9zLmVu
dmlyb24uZ2V0KCdXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlknLCAnL3BhdGgvdG8vY29yZWR1
bXBzJykKKyAgICAgICAgY29yZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGNvcmVfZGlyZWN0b3J5
LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgbW9ja19lbXB0eV9jcmFzaF9s
b2cgPSAiIiJcCitjcmFzaCBsb2cgZm9yIER1bXBSZW5kZXJUcmVlIChwaWQgMjg1MjkpOgorCitD
b3JlZHVtcCBjb3JlLXBpZF8yODUyOS1fLXByb2Nlc3NfRHVtcFJlbmRlclRyZWUgbm90IGZvdW5k
LiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFzIHN1cGVyLXVz
ZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRl
cm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0gc2V0IHRoZSBX
RUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFyaWFibGU6IGV4cG9ydCBX
RUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9JShjb3JlX2RpcmVjdG9yeSlzCisKKworU1RERVJS
OiA8ZW1wdHk+IiIiICUgbG9jYWxzKCkKKworICAgICAgICBkZWYgX21vY2tfZ2RiX291dHB1dChz
ZWxmLCBjb3JlZHVtcF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiAobW9ja19lbXB0eV9jcmFz
aF9sb2csIFtdKQorCisgICAgICAgIGdlbmVyYXRvci5fZ2V0X2dkYl9vdXRwdXQgPSBfbW9ja19n
ZGJfb3V0cHV0CisgICAgICAgIHN0ZGVyciwgbG9nID0gZ2VuZXJhdG9yLmdlbmVyYXRlX2NyYXNo
X2xvZyhOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyciwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChsb2csIG1vY2tfZW1wdHlfY3Jhc2hf
bG9nKQorCisgICAgICAgIGdlbmVyYXRvci5uZXdlcl90aGFuID0gMC4wCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RkZXJyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKGxvZywgbW9ja19lbXB0eV9jcmFzaF9sb2cpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvcXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkK
aW5kZXggNWRiNWQ4ZS4uY2VkYWM1MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3F0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weQpAQCAt
MzksNiArMzksNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6
ZWQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24g
aW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuYmFzZSBpbXBvcnQg
UG9ydAogZnJvbSB3ZWJraXRweS5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJEcml2ZXIKK2Zy
b20gd2Via2l0cHkucG9ydC5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJDcmFzaExvZ0dl
bmVyYXRvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTE4OCwz
ICsxODksNiBAQCBjbGFzcyBRdFBvcnQoUG9ydCk6CiAgICAgIyBRdCBwb3J0IGlzIG5vdCByZWFk
eSBmb3IgcGFyYWxsZWwgdGVzdGluZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzczMCBmb3IgZGV0YWlscy4KICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9j
ZXNzZXMoc2VsZik6CiAgICAgICAgIHJldHVybiAxCisKKyAgICBkZWYgX2dldF9jcmFzaF9sb2co
c2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6CisgICAgICAgIHJl
dHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBwaWQsIG5ld2VyX3RoYW4sIHNlbGYuX2Zp
bGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rkb3V0
LCBzdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHkKaW5k
ZXggMjMzOGY2Ny4uOTM4Y2FmMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3F0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91
bml0dGVzdC5weQpAQCAtMTI0LDMgKzEyNCw3IEBAIGNsYXNzIFF0UG9ydFRlc3QocG9ydF90ZXN0
Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0
aXZlMihleGl0X2NvZGU9MSwKICAgICAgICAgICAgIG91dHB1dD0ndGVzdGluZyBvdXRwdXQgZmFp
bHVyZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5jaGVja19zeXNfZGVwcyhuZWVk
c19odHRwPUZhbHNlKSkKKworICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6CisgICAg
ICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVz
dC5weQorICAgICAgICBwYXNzCg==
</data>
<flag name="review"
          id="232802"
          type_id="1"
          status="-"
          setter="ossy"
    />
    <flag name="commit-queue"
          id="232803"
          type_id="3"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211307</attachid>
            <date>2013-09-11 06:38:43 -0700</date>
            <delta_ts>2013-09-12 08:29:57 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>patch46.patch</filename>
            <type>text/plain</type>
            <size>18134</size>
            <attacher name="Gábor Ábrahám">abrhm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODk3
ZTUzLi43ZTkzY2QwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMtMDktMTEgIEdhYm9yIEFicmFoYW0gIDxhYnJo
bUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgQXV0byBHREIgYmFja3RyYWNlIGdlbmVyYXRp
b24gZm9yIEVGTC9HVEsvUXQgYm90cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExOTMzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weToKKyAgICAgICAg
KEVmbFBvcnQuY2hlY2tfc3lzX2RlcHMpOgorICAgICAgICAoRWZsUG9ydCk6CisgICAgICAgIChF
ZmxQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZWZsX3VuaXR0ZXN0LnB5OgorICAgICAgICAoRWZsUG9ydFRlc3QudGVzdF9zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKToKKyAgICAgICAgKEVmbFBvcnRUZXN0KToKKyAgICAgICAgKEVmbFBvcnRUZXN0
LnRlc3RfZ2V0X2NyYXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weToKKyAgICAgICAgKEd0a1BvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHk6CisgICAgICAgIChHdGtQb3J0VGVzdC50
ZXN0X2dldF9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51
eF9nZXRfY3Jhc2hfbG9nLnB5OiBBZGRlZC4KKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9y
KToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEdE
QkNyYXNoTG9nR2VuZXJhdG9yLl9nZXRfZ2RiX291dHB1dCk6CisgICAgICAgIChHREJDcmFzaExv
Z0dlbmVyYXRvci5nZW5lcmF0ZV9jcmFzaF9sb2cpOgorICAgICAgICAoR0RCQ3Jhc2hMb2dHZW5l
cmF0b3IuZ2VuZXJhdGVfY3Jhc2hfbG9nLm1hdGNoX2ZpbGVuYW1lKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weTogQWRkZWQu
CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvclRlc3QpOgorICAgICAgICAoR0RCQ3Jhc2hM
b2dHZW5lcmF0b3JUZXN0LnRlc3RfZ2VuZXJhdGVfY3Jhc2hfbG9nKToKKyAgICAgICAgKF9tb2Nr
X2dkYl9vdXRwdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9xdC5weToKKyAg
ICAgICAgKFF0UG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyk6CisgICAgICAgIChRdFBvcnQp
OgorICAgICAgICAoUXRQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHk6CisgICAgICAgIChRdFBvcnRUZXN0LnRlc3RfY2hl
Y2tfc3lzX2RlcHMpOgorICAgICAgICAoUXRQb3J0VGVzdCk6CisgICAgICAgIChRdFBvcnRUZXN0
LnRlc3RfZ2V0X2NyYXNoX2xvZyk6CisKIDIwMTMtMDktMTEgIEtyenlzenRvZiBDemVjaCAgPGsu
Y3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gQWRkcyBtYXBwaW5nIE1lbnVJdGVt
UmFkaW9Sb2xlIHRvIEFUSwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2VmbC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmwucHkKaW5kZXggNjk3NGQ4
NC4uYWQ5ZGUzYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZWZsLnB5CkBAIC0zMyw2ICszMyw3
IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24g
aW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuYmFzZSBpbXBvcnQg
UG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyIGltcG9ydCBQdWxz
ZUF1ZGlvU2FuaXRpemVyCiBmcm9tIHdlYmtpdHB5LnBvcnQueHZmYmRyaXZlciBpbXBvcnQgWHZm
YkRyaXZlcgorZnJvbSB3ZWJraXRweS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1wb3J0IEdE
QkNyYXNoTG9nR2VuZXJhdG9yCiAKIAogY2xhc3MgRWZsUG9ydChQb3J0KToKQEAgLTE0NCwzICsx
NDUsNiBAQCBjbGFzcyBFZmxQb3J0KFBvcnQpOgogICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQo
Ii0tbm8td2Via2l0MiIpCiAgICAgICAgIGNvbW1hbmQuYXBwZW5kKHN1cGVyKEVmbFBvcnQsIHNl
bGYpLm1ha2VfYXJncygpKQogICAgICAgICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIF9nZXRf
Y3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgor
ICAgICAgICByZXR1cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IobmFtZSwgcGlkLCBuZXdlcl90aGFu
LCBzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9wYXRoX3RvX2RyaXZlcikuZ2VuZXJhdGVfY3Jhc2hf
bG9nKHN0ZG91dCwgc3RkZXJyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2VmbF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmxfdW5p
dHRlc3QucHkKaW5kZXggOWQ4NWMxNy4uZTU4ZTI3NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2VmbF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZWZsX3VuaXR0ZXN0LnB5CkBAIC03NywzICs3Nyw3IEBAIGNsYXNzIEVmbFBvcnRU
ZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxf
Y29tbWFuZCgidGVzdC13ZWJraXRweSIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
cnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
dGVzdC13ZWJraXRwZXJsIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmlu
ZGluZ3NfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmlu
ZGluZ3MtdGVzdHMiKSkKKworICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6CisgICAg
ICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVz
dC5weQorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQppbmRleCBlNmRj
NjQ3Li41NzY5OTNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3Rr
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKQEAgLTM3LDYgKzM3
LDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHku
cG9ydC5wdWxzZWF1ZGlvX3Nhbml0aXplciBpbXBvcnQgUHVsc2VBdWRpb1Nhbml0aXplcgogZnJv
bSB3ZWJraXRweS5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJEcml2ZXIKIGZyb20gd2Via2l0
cHkucG9ydC53ZXN0b25kcml2ZXIgaW1wb3J0IFdlc3RvbkRyaXZlcgorZnJvbSB3ZWJraXRweS5w
b3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1wb3J0IEdEQkNyYXNoTG9nR2VuZXJhdG9yCiAKIAog
Y2xhc3MgR3RrUG9ydChQb3J0KToKQEAgLTE3Myw1MyArMTc0LDggQEAgY2xhc3MgR3RrUG9ydChQ
b3J0KToKICAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAg
IHJldHVybiBzdXBlcihHdGtQb3J0LCBzZWxmKS5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwKSBh
bmQgc2VsZi5fZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJpdmVyKHNlbGYpCiAKLSAgICBkZWYgX2dl
dF9nZGJfb3V0cHV0KHNlbGYsIGNvcmVkdW1wX3BhdGgpOgotICAgICAgICBjbWQgPSBbJ2dkYics
ICctZXgnLCAndGhyZWFkIGFwcGx5IGFsbCBidCAxMDI0JywgJy0tYmF0Y2gnLCBzdHIoc2VsZi5f
cGF0aF90b19kcml2ZXIoKSksIGNvcmVkdW1wX3BhdGhdCi0gICAgICAgIHByb2MgPSBzdWJwcm9j
ZXNzLlBvcGVuKGNtZCwgc3RkaW49Tm9uZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJy
PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmlj
YXRlKCkKLSAgICAgICAgZXJyb3JzID0gW2wuc3RyaXAoKS5kZWNvZGUoJ3V0ZjgnLCAnaWdub3Jl
JykgZm9yIGwgaW4gc3RkZXJyLnNwbGl0bGluZXMoKV0KLSAgICAgICAgcmV0dXJuIChzdGRvdXQu
ZGVjb2RlKCd1dGY4JywgJ2lnbm9yZScpLCBlcnJvcnMpCi0KICAgICBkZWYgX2dldF9jcmFzaF9s
b2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6Ci0gICAgICAg
IHBpZF9yZXByZXNlbnRhdGlvbiA9IHN0cihwaWQgb3IgJzx1bmtub3duPicpCi0gICAgICAgIGxv
Z19kaXJlY3RvcnkgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZ
IikKLSAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgY3Jhc2hfbG9nID0gJycKLSAgICAgICAg
ZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSA9ICJjb3JlLXBpZF8lcy1fLXByb2Nlc3NfJXMi
ICUgKHBpZF9yZXByZXNlbnRhdGlvbiwgbmFtZSkKLQotICAgICAgICBkZWYgbWF0Y2hfZmlsZW5h
bWUoZmlsZXN5c3RlbSwgZGlyZWN0b3J5LCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICBpZiBwaWQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lID09IGV4cGVjdGVkX2NyYXNoX2R1bXBf
ZmlsZW5hbWUKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5maW5kKG5hbWUpID4gLTEKLQot
ICAgICAgICBpZiBsb2dfZGlyZWN0b3J5OgotICAgICAgICAgICAgZHVtcHMgPSBzZWxmLl9maWxl
c3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19kaXJlY3RvcnksIGZpbGVfZmlsdGVyPW1hdGNoX2ZpbGVu
YW1lKQotICAgICAgICAgICAgaWYgZHVtcHM6Ci0gICAgICAgICAgICAgICAgIyBHZXQgdGhlIG1v
c3QgcmVjZW50IGNvcmVkdW1wIG1hdGNoaW5nIHRoZSBwaWQgYW5kL29yIHByb2Nlc3MgbmFtZS4K
LSAgICAgICAgICAgICAgICBjb3JlZHVtcF9wYXRoID0gbGlzdChyZXZlcnNlZChzb3J0ZWQoZHVt
cHMpKSlbMF0KLSAgICAgICAgICAgICAgICBpZiBub3QgbmV3ZXJfdGhhbiBvciBzZWxmLl9maWxl
c3lzdGVtLm10aW1lKGNvcmVkdW1wX3BhdGgpID4gbmV3ZXJfdGhhbjoKLSAgICAgICAgICAgICAg
ICAgICAgY3Jhc2hfbG9nLCBlcnJvcnMgPSBzZWxmLl9nZXRfZ2RiX291dHB1dChjb3JlZHVtcF9w
YXRoKQotCi0gICAgICAgIHN0ZGVycl9saW5lcyA9IGVycm9ycyArIChzdGRlcnIgb3IgJzxlbXB0
eT4nKS5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJykuc3BsaXRsaW5lcygpCi0gICAgICAgIGVycm9y
c19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6ICcgKyBsKSBmb3IgbCBpbiBzdGRlcnJfbGluZXMp
Ci0gICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6Ci0gICAgICAgICAgICBpZiBub3QgbG9nX2RpcmVj
dG9yeToKLSAgICAgICAgICAgICAgICBsb2dfZGlyZWN0b3J5ID0gIi9wYXRoL3RvL2NvcmVkdW1w
cyIKLSAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihsb2dfZGlyZWN0b3J5
LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKLSAgICAgICAgICAgIGNyYXNoX2xvZyA9ICIi
IlwKLUNvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSlzIG5vdCBmb3VuZC4g
VG8gZW5hYmxlIGNyYXNoIGxvZ3M6Ci0KLS0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBlci11c2Vy
OiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJu
Ci0tIGVuYWJsZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5saW1pdGVkCi0tIHNldCB0aGUgV0VC
S0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50IHZhcmlhYmxlOiBleHBvcnQgV0VC
S0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZPSUobG9nX2RpcmVjdG9yeSlzCi0KLSIiIiAlIGxvY2Fs
cygpCi0KLSAgICAgICAgcmV0dXJuIChzdGRlcnIsICIiIlwKLUNyYXNoIGxvZyBmb3IgJShuYW1l
KXMgKHBpZCAlKHBpZF9yZXByZXNlbnRhdGlvbilzKToKLQotJShjcmFzaF9sb2cpcwotJShlcnJv
cnNfc3RyKXMiIiIgJSBsb2NhbHMoKSkKKyAgICAgICAgcmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJh
dG9yKG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fcGF0aF90
b19kcml2ZXIpLmdlbmVyYXRlX2NyYXNoX2xvZyhzdGRvdXQsIHN0ZGVycikKIAogICAgIGRlZiBi
dWlsZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHlsZT1Ob25lKToKICAgICAgICAgY29t
bWFuZCA9IHN1cGVyKEd0a1BvcnQsIHNlbGYpLmJ1aWxkX3dlYmtpdF9jb21tYW5kKGJ1aWxkX3N0
eWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHkKaW5kZXgg
YTE0YTc1Ni4uOWU2ZDVkNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2d0a191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3Vu
aXR0ZXN0LnB5CkBAIC04MywzMiArODMsOCBAQCBjbGFzcyBHdGtQb3J0VGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYWtlX3Bv
cnQob3B0aW9ucz1Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdEZWJ1ZycpKS5kZWZhdWx0X3Rp
bWVvdXRfbXMoKSwgMTIwMDApCiAKICAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgot
ICAgICAgICBjb3JlX2RpcmVjdG9yeSA9IG9zLmVudmlyb24uZ2V0KCdXRUJLSVRfQ09SRV9EVU1Q
U19ESVJFQ1RPUlknLCAnL3BhdGgvdG8vY29yZWR1bXBzJykKLSAgICAgICAgY29yZV9wYXR0ZXJu
ID0gb3MucGF0aC5qb2luKGNvcmVfZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVl
IikKLSAgICAgICAgbW9ja19lbXB0eV9jcmFzaF9sb2cgPSAiIiJcCi1DcmFzaCBsb2cgZm9yIER1
bXBSZW5kZXJUcmVlIChwaWQgMjg1MjkpOgotCi1Db3JlZHVtcCBjb3JlLXBpZF8yODUyOS1fLXBy
b2Nlc3NfRHVtcFJlbmRlclRyZWUgbm90IGZvdW5kLiBUbyBlbmFibGUgY3Jhc2ggbG9nczoKLQot
LSBydW4gdGhpcyBjb21tYW5kIGFzIHN1cGVyLXVzZXI6IGVjaG8gIiUoY29yZV9wYXR0ZXJuKXMi
ID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KLS0gZW5hYmxlIGNvcmUgZHVtcHM6IHVs
aW1pdCAtYyB1bmxpbWl0ZWQKLS0gc2V0IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkg
ZW52aXJvbm1lbnQgdmFyaWFibGU6IGV4cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9
JShjb3JlX2RpcmVjdG9yeSlzCi0KLQotU1RERVJSOiA8ZW1wdHk+IiIiICUgbG9jYWxzKCkKLQot
ICAgICAgICBkZWYgX21vY2tfZ2RiX291dHB1dChjb3JlZHVtcF9wYXRoKToKLSAgICAgICAgICAg
IHJldHVybiAobW9ja19lbXB0eV9jcmFzaF9sb2csIFtdKQotCi0gICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2dldF9nZGJfb3V0cHV0ID0gbW9ja19lbXB0eV9j
cmFzaF9sb2cKLSAgICAgICAgc3RkZXJyLCBsb2cgPSBwb3J0Ll9nZXRfY3Jhc2hfbG9nKCJEdW1w
UmVuZGVyVHJlZSIsIDI4NTI5LCAiIiwgIiIsIG5ld2VyX3RoYW49Tm9uZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdGRlcnIsICIiKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKGxvZywgbW9ja19lbXB0eV9jcmFzaF9sb2cpCi0KLSAgICAgICAgc3RkZXJyLCBsb2cgPSBw
b3J0Ll9nZXRfY3Jhc2hfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTI5LCAiIiwgIiIsIG5ld2Vy
X3RoYW49MC4wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyciwgIiIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwobG9nLCBtb2NrX2VtcHR5X2NyYXNoX2xvZykKKyAg
ICAgICAgIyBUaGlzIGZ1bmN0aW9uIHRlc3RlZCBpbiBsaW51eF9nZXRfY3Jhc2hfbG9nX3VuaXR0
ZXN0LnB5CisgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2NvbW1hbmRzKHNlbGYpOgogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJndGsiKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWQzNWRlCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkKQEAgLTAsMCAr
MSw4OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMgVGhp
cyBtb2R1bGUgaXMgYSByZWZhY3RvcmluZyBmcm9tIGd0ay5weSwgQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSBTLkwKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgb3MKKworCitjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBwaWQsIG5ld2VyX3RoYW4sIGZpbGVzeXN0ZW0sIHBhdGhfdG9f
ZHJpdmVyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBpZCA9IHBp
ZAorICAgICAgICBzZWxmLm5ld2VyX3RoYW4gPSBuZXdlcl90aGFuCisgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtCisgICAgICAgIHNlbGYuX3BhdGhfdG9fZHJpdmVyID0gcGF0
aF90b19kcml2ZXIKKworICAgIGRlZiBfZ2V0X2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0
aCk6CisgICAgICAgIGNtZCA9IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0IDEw
MjQnLCAnLS1iYXRjaCcsIHN0cihzZWxmLl9wYXRoX3RvX2RyaXZlcigpKSwgY29yZWR1bXBfcGF0
aF0KKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRv
dXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRv
dXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQorICAgICAgICBlcnJvcnMgPSBbc3RkZXJy
X2xpbmUuc3RyaXAoKS5kZWNvZGUoJ3V0ZjgnLCAnaWdub3JlJykgZm9yIHN0ZGVycl9saW5lIGlu
IHN0ZGVyci5zcGxpdGxpbmVzKCldCisgICAgICAgIHJldHVybiAoc3Rkb3V0LmRlY29kZSgndXRm
OCcsICdpZ25vcmUnKSwgZXJyb3JzKQorCisgICAgZGVmIGdlbmVyYXRlX2NyYXNoX2xvZyhzZWxm
LCBzdGRvdXQsIHN0ZGVycik6CisgICAgICAgIHBpZF9yZXByZXNlbnRhdGlvbiA9IHN0cihzZWxm
LnBpZCBvciAnPHVua25vd24+JykKKyAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLmVudmlyb24u
Z2V0KCJXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkiKQorICAgICAgICBlcnJvcnMgPSBbXQor
ICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVu
YW1lID0gImNvcmUtcGlkXyVzLV8tcHJvY2Vzc18lcyIgJSAocGlkX3JlcHJlc2VudGF0aW9uLCBz
ZWxmLm5hbWUpCisgICAgICAgIHByb2NfbmFtZSA9ICIlcyIgJSAoc2VsZi5uYW1lKQorCisgICAg
ICAgIGRlZiBtYXRjaF9maWxlbmFtZShmaWxlc3lzdGVtLCBkaXJlY3RvcnksIGZpbGVuYW1lKToK
KyAgICAgICAgICAgIGlmIHNlbGYucGlkOgorICAgICAgICAgICAgICAgIHJldHVybiBmaWxlbmFt
ZSA9PSBleHBlY3RlZF9jcmFzaF9kdW1wX2ZpbGVuYW1lCisgICAgICAgICAgICByZXR1cm4gZmls
ZW5hbWUuZmluZChzZWxmLm5hbWUpID4gLTEKKworICAgICAgICBpZiBsb2dfZGlyZWN0b3J5Ogor
ICAgICAgICAgICAgZHVtcHMgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19kaXJl
Y3RvcnksIGZpbGVfZmlsdGVyPW1hdGNoX2ZpbGVuYW1lKQorICAgICAgICAgICAgaWYgZHVtcHM6
CisgICAgICAgICAgICAgICAgIyBHZXQgdGhlIG1vc3QgcmVjZW50IGNvcmVkdW1wIG1hdGNoaW5n
IHRoZSBwaWQgYW5kL29yIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgICAgICAgICBjb3JlZHVtcF9w
YXRoID0gbGlzdChyZXZlcnNlZChzb3J0ZWQoZHVtcHMpKSlbMF0KKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5uZXdlcl90aGFuIG9yIHNlbGYuX2ZpbGVzeXN0ZW0ubXRpbWUoY29yZWR1bXBf
cGF0aCkgPiBzZWxmLm5ld2VyX3RoYW46CisgICAgICAgICAgICAgICAgICAgIGNyYXNoX2xvZywg
ZXJyb3JzID0gc2VsZi5fZ2V0X2dkYl9vdXRwdXQoY29yZWR1bXBfcGF0aCkKKworICAgICAgICBz
dGRlcnJfbGluZXMgPSBlcnJvcnMgKyBzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JykuZGVjb2RlKCd1
dGY4JywgJ2lnbm9yZScpLnNwbGl0bGluZXMoKQorICAgICAgICBlcnJvcnNfc3RyID0gJ1xuJy5q
b2luKCgnU1RERVJSOiAnICsgc3RkZXJyX2xpbmUpIGZvciBzdGRlcnJfbGluZSBpbiBzdGRlcnJf
bGluZXMpCisgICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6CisgICAgICAgICAgICBpZiBub3QgbG9n
X2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICBsb2dfZGlyZWN0b3J5ID0gIi9wYXRoL3RvL2Nv
cmVkdW1wcyIKKyAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihsb2dfZGly
ZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgICAgIGNyYXNoX2xv
ZyA9ICIiIlwKK0NvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSlzIG5vdCBm
b3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBl
ci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9w
YXR0ZXJuCistIGVuYWJsZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5saW1pdGVkCistIHNldCB0
aGUgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50IHZhcmlhYmxlOiBleHBv
cnQgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZPSUobG9nX2RpcmVjdG9yeSlzCisKKyIiIiAl
IGxvY2FscygpCisKKyAgICAgICAgcmV0dXJuIChzdGRlcnIsICIiIlwKK2NyYXNoIGxvZyBmb3Ig
JShwcm9jX25hbWUpcyAocGlkICUocGlkX3JlcHJlc2VudGF0aW9uKXMpOgorCislKGNyYXNoX2xv
ZylzCislKGVycm9yc19zdHIpcyIiIiAlIGxvY2FscygpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZ191bml0dGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDE5ZGZkCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2dfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSw2NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0
eSBvZiBTemVnZWQKKyMgVGhpcyBtb2R1bGUgaXMgYSByZWZhY3RvcmluZyBmcm9tIGd0ay5weSwg
Q29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
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
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKK2ltcG9ydCBvcworCitmcm9tIHdlYmtpdHB5LnBvcnQu
bGludXhfZ2V0X2NyYXNoX2xvZyBpbXBvcnQgR0RCQ3Jhc2hMb2dHZW5lcmF0b3IKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVt
CisKKworY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgIGRlZiB0ZXN0X2dlbmVyYXRlX2NyYXNoX2xvZyhzZWxmKToKKyAgICAgICAgZ2VuZXJh
dG9yID0gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IoJ0R1bXBSZW5kZXJUcmVlJywgMjg1MjksIG5ld2Vy
X3RoYW49Tm9uZSwgZmlsZXN5c3RlbT1Nb2NrRmlsZVN5c3RlbSh7Jy9wYXRoL3RvL2NvcmVkdW1w
cyc6ICcnfSksIHBhdGhfdG9fZHJpdmVyPU5vbmUpCisKKyAgICAgICAgY29yZV9kaXJlY3Rvcnkg
PSBvcy5lbnZpcm9uLmdldCgnV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZJywgJy9wYXRoL3Rv
L2NvcmVkdW1wcycpCisgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihjb3JlX2Rp
cmVjdG9yeSwgImNvcmUtcGlkXyVwLV8tcHJvY2Vzc18lZSIpCisgICAgICAgIG1vY2tfZW1wdHlf
Y3Jhc2hfbG9nID0gIiIiXAorY3Jhc2ggbG9nIGZvciBEdW1wUmVuZGVyVHJlZSAocGlkIDI4NTI5
KToKKworQ29yZWR1bXAgY29yZS1waWRfMjg1MjktXy1wcm9jZXNzX0R1bXBSZW5kZXJUcmVlIG5v
dCBmb3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBhcyBz
dXBlci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29y
ZV9wYXR0ZXJuCistIGVuYWJsZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5saW1pdGVkCistIHNl
dCB0aGUgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50IHZhcmlhYmxlOiBl
eHBvcnQgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZPSUoY29yZV9kaXJlY3RvcnkpcworCisK
K1NUREVSUjogPGVtcHR5PiIiIiAlIGxvY2FscygpCisKKyAgICAgICAgZGVmIF9tb2NrX2dkYl9v
dXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4gKG1vY2tfZW1w
dHlfY3Jhc2hfbG9nLCBbXSkKKworICAgICAgICBnZW5lcmF0b3IuX2dldF9nZGJfb3V0cHV0ID0g
X21vY2tfZ2RiX291dHB1dAorICAgICAgICBzdGRlcnIsIGxvZyA9IGdlbmVyYXRvci5nZW5lcmF0
ZV9jcmFzaF9sb2coTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIs
IE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwobG9nLCBtb2NrX2VtcHR5
X2NyYXNoX2xvZykKKworICAgICAgICBnZW5lcmF0b3IubmV3ZXJfdGhhbiA9IDAuMAorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0
aUxpbmVFcXVhbChsb2csIG1vY2tfZW1wdHlfY3Jhc2hfbG9nKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L3F0LnB5CmluZGV4IDljNGJiMDUuLmMyMmRjNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9xdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQu
cHkKQEAgLTM5LDYgKzM5LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0
IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1
cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0LmJhc2Ug
aW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkucG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJp
dmVyCitmcm9tIHdlYmtpdHB5LnBvcnQubGludXhfZ2V0X2NyYXNoX2xvZyBpbXBvcnQgR0RCQ3Jh
c2hMb2dHZW5lcmF0b3IKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBA
IC0yMDMsMyArMjA0LDYgQEAgY2xhc3MgUXRQb3J0KFBvcnQpOgogICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgogICAgICAgICAgICAgY29tbWFuZC5hcHBl
bmQoIi0yIikKICAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworICAgIGRlZiBfZ2V0X2NyYXNoX2xv
ZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKToKKyAgICAgICAg
cmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgc2VsZi5f
ZmlsZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVyYXRlX2NyYXNoX2xvZyhzdGRv
dXQsIHN0ZGVycikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weQpp
bmRleCAyYmVmYjgyLi5jZjRjZWZjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0
X3VuaXR0ZXN0LnB5CkBAIC0xNTIsMyArMTUyLDcgQEAgY2xhc3MgUXRQb3J0VGVzdChwb3J0X3Rl
c3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5f
cHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRl
c3Qtd2Via2l0cHkiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9wZXJsX3Vu
aXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0
cGVybCIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2JpbmRpbmdzX3Rlc3Rz
X2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdzLXRlc3Rz
IikpCisKKyAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgorICAgICAgICAjIFRoaXMg
ZnVuY3Rpb24gdGVzdGVkIGluIGxpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkKKyAgICAg
ICAgcGFzcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>