<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>10352</bug_id>
          
          <creation_ts>2016-09-30 12:27:15 +0000</creation_ts>
          <short_desc>Performance of bitbake -S is horrible</short_desc>
          <delta_ts>2017-01-19 20:59:20 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>BitBake</product>
          <component>bitbake</component>
          <version>2.3</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>High</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>2.3 M2</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Richard Purdie">richard.purdie</reporter>
          <assigned_to name="Jianxun Zhang">jianxun.zhang</assigned_to>
          <cc>jianxun.zhang</cc>
    
    <cc>poky.bs.watcher</cc>
    
    <cc>poky.watcher</cc>
    
    <cc>sgw</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>66750</commentid>
    <comment_count>0</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-09-30 12:27:15 +0000</bug_when>
    <thetext>bitbake -S is slow. Its heavily used by sstate signature tests and is slow because it does a single threaded reparse. We should look at speeding it up to speed up selftests and -S usage (which will be important for automated YP Compatible testing).

We have to reparse in order to be able to generate accurate sigdata files. The base part of them can only be generated from a full data store which we don&apos;t retain in memory or disk after parsing. Sadly we also need the runtime data in order to write out a completely consistent file and this is only in the main bitbake process scope, not in the standard parser. This is why the current code ends up single threaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66821</commentid>
    <comment_count>1</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-10-03 17:26:10 +0000</bug_when>
    <thetext>I haven&apos;t work in bitbake so I take it as a start point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66842</commentid>
    <comment_count>2</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-10-03 21:59:19 +0000</bug_when>
    <thetext>RP,
I could need some time to understand BB&apos;s internal flow and data structures. Hope you could provide some details like a test procedure so that we can quantify it.

I tried &quot;bitbake -S printdiff core-image-minimal&quot; and noticed it takes some time to finish after showing &quot;NOTE: Reparsing files to collect dependency data&quot; on my build host. Is this part we want to improve?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66843</commentid>
    <comment_count>3</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-10-03 22:05:58 +0000</bug_when>
    <thetext>(In reply to comment #2)
&gt; RP,
&gt; I could need some time to understand BB&apos;s internal flow and data structures.
&gt; Hope you could provide some details like a test procedure so that we can
&gt; quantify it.
&gt; 
&gt; I tried &quot;bitbake -S printdiff core-image-minimal&quot; and noticed it takes some
&gt; time to finish after showing &quot;NOTE: Reparsing files to collect dependency
&gt; data&quot; on my build host. Is this part we want to improve?

That is the part we need to improve, yes. It comes from http://git.yoctoproject.org/cgit.cgi/poky/tree/bitbake/lib/bb/runqueue.py#n1297
which is dump_signatures() and some simple instrumentation or even just using the -P option to bitbake will show its spending a lot of time in that function for the reasons I described above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67331</commentid>
    <comment_count>4</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-10-18 17:08:28 +0000</bug_when>
    <thetext>I have to give this task a big estimation though I believe the answer or solution is obvious for people expertise in this area. I feel I should have a solid understanding of the internal of logic and data structure prior to the first line of a new patch. Another necessary task is I should find some way to quantify the result and make sure to get same consistent data with new change.

In a short, you could not hear me back so often on this ticket when I am on the road.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68663</commentid>
    <comment_count>5</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-11-29 00:45:59 +0000</bug_when>
    <thetext>come back to this task after other stuffs reaching their milestones.

This finding doesn&apos;t indicate the issue tacked here, but could be worth as a side note. I run the same &quot;bitbake -S none core-image-minimal&quot; 3 times, started with a clean build dir. It seems bitbake takes cache from the 3rd test cycle instead of 2nd test cycle where I think everything should be already cached from the first clean run. I don&apos;t see this cause any change in -S &quot;reparsing files...&quot; stage however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68664</commentid>
    <comment_count>6</comment_count>
      <attachid>3550</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-11-29 00:48:11 +0000</bug_when>
    <thetext>Created attachment 3550
possibly-irrelavant-bb-doesnot-take-cache-since-2nd-build.log

attach the stdout of build for the finding in my previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68705</commentid>
    <comment_count>7</comment_count>
      <attachid>3551</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-11-30 00:36:50 +0000</bug_when>
    <thetext>Created attachment 3551
[HACK][WIP] Multi-processing dump signature routine

I attached a shabby and unclean patch to exploit any cheap fruits. I actually don&apos;t know if it is the best way or could mess up any BB internals, just assuming there is no global data preventing us to do so.

It shorts the reparsing recipe stage from 13.3 to 1 second and a _sorted_ diff between generated locked-sigs.inc looks okay compared with a sorted original one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68708</commentid>
    <comment_count>8</comment_count>
    <who name="Saul Wold">sgw</who>
    <bug_when>2016-11-30 05:20:34 +0000</bug_when>
    <thetext>Looking at the history of dump_signatures, I can see that prior to the multi-config change set this code used bb.cache.Cache, but after that change it changed to NoCache.

Similar to Chang&apos;s findings of parallelization, changing from NoCache to Cache based, improved performance greatly.

In both cases we have not done extensive testing, but confirmed that both options provide equivalent output in the locked-sig.ing file before and after the change. So getting a better understanding of the concern from the first comment about requiring a full re-generation of the data store is important.

I started oe-selftest runs before sending these comments, which are still in progress!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68725</commentid>
    <comment_count>9</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-11-30 16:09:04 +0000</bug_when>
    <thetext>(In reply to comment #8)
&gt; Looking at the history of dump_signatures, I can see that prior to the
&gt; multi-config change set this code used bb.cache.Cache, but after that change
&gt; it changed to NoCache.
&gt; 
&gt; Similar to Chang&apos;s findings of parallelization, changing from NoCache to
&gt; Cache based, improved performance greatly.
&gt; 
&gt; In both cases we have not done extensive testing, but confirmed that both
&gt; options provide equivalent output in the locked-sig.ing file before and
&gt; after the change. So getting a better understanding of the concern from the
&gt; first comment about requiring a full re-generation of the data store is
&gt; important.
&gt; 
&gt; I started oe-selftest runs before sending these comments, which are still in
&gt; progress!

We can&apos;t benefit from the cache here which is why it uses NoCache. NoCache didn&apos;t exist before the multiconfig changes.

The reason we can&apos;t use the cache is that it doesn&apos;t store a full dependency tree for the signatures, it only stores the pieces between the basehash and the taskhash. In order to generate the data on how the basehash is constructed, we need to run the parse process.

I therefore thing that whilst putting &quot;Cache&quot; in here might appear to work and will make the locked-sigs.inc work just fine, it won&apos;t actually dump the siginfo/sigdata files onto the disk, or if it does, they won&apos;t contain all the dependency information and will be incomplete. The function is called &quot;dump_sigs&quot; and should write out this information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68803</commentid>
    <comment_count>10</comment_count>
      <attachid>3554</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-02 00:39:18 +0000</bug_when>
    <thetext>Created attachment 3554
WRONG_DO_without_parsing_but_result_looks_okay.patch

RP and Saul,
I upload a wrong-do patch which get rid of re-parsing. It still generates a locked-sig.inc with content seeming okay from manual check. The only difference is the order of dumped config sections. I cleaned build dir before these tests:

() rm -rf bitbake.lock cache downloads sstate-cache tmp
() bitbake -S none core-image-minimal

I definitely don&apos;t mean this is a solution for RP has suggested a need of reparsing. But the _problem_ indicated by the wrong-do patch is that I cannot tell if any agreed solution can effectively cover the potential issues without parsing. I have to find other validation procedures beyond merely checking the generated locked-sig.inc...

Or could there be some info already missed or wrong in dump with the current code tip?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68909</commentid>
    <comment_count>11</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-12-07 17:01:05 +0000</bug_when>
    <thetext>To illustrate what this command is meant to do, setup a clean build environment (empty TMPDIR), then run &quot;bitbake -S printdiff bash&quot;.

What you will find is that as well as a locked-sigs.inc file, it will generate a lot of files under tmp/stamps/, for example:

build$ ls tmp/stamps/core2-64-poky-linux/bash/
4.3.30-r0.do_build.sigdata.89ebf459ff3470fc295cc38e3a5faecd                 4.3.30-r0.do_package.sigdata.2edc233f2e7ffb33f7b4d3f2f4b3450f
4.3.30-r0.do_compile_ptest_base.sigdata.f10144fbd8882d75ce9707a5f44ce584    4.3.30-r0.do_package_write_deb.sigdata.e0511ff32fc2a6d669c1ba8029f06790
4.3.30-r0.do_compile.sigdata.f3d738dd9645700afa50d9a712e9a163               4.3.30-r0.do_package_write_ipk.sigdata.1873c076fb45d7ddb5ffcec2fb53600d
4.3.30-r0.do_configure_ptest_base.sigdata.14342141d81f42cc3f0a68e44f61ecc8  4.3.30-r0.do_package_write_rpm.sigdata.51aeceb0e8ff9d493464ae5c6ae8d9fa
4.3.30-r0.do_configure.sigdata.af8a39a363f89d2227a183f4fbd94a40             4.3.30-r0.do_patch.sigdata.a79d188ede0adfdfbd2c48a2bb23aef7
4.3.30-r0.do_fetch.sigdata.fcf446621baa2a5bf46b4d65c1d8f720                 4.3.30-r0.do_populate_lic.sigdata.ea9a83ae3c7a2272aee8fcefccd5561a
4.3.30-r0.do_install_ptest_base.sigdata.bf5d925f1f8e7d9311562334edcc6169    4.3.30-r0.do_populate_sysroot.sigdata.7046ed309d0a76f79aa04b13f5fbc5d4
4.3.30-r0.do_install.sigdata.63c3fbed0335eb2e4036850dd344a0db               4.3.30-r0.do_prepare_recipe_sysroot.sigdata.d98f97fe7ef1fc3f85d9fc00af1ca463
4.3.30-r0.do_packagedata.sigdata.e9134c2dcd0e4b8a0a15f4ed1476fcf0           4.3.30-r0.do_unpack.sigdata.6b560a0430c4b7c163976643b5baa48c
4.3.30-r0.do_package_qa.sigdata.b4517b80c7bb6e1ff517a63a1837a30c

These files are only generated by a reparse and if the metadata is not reparsed, these files will either not be generated at all, or will be incomplete. Generating these files was the original point of this command, not the locked-sigs.inc file which in fact was a later addition. These sigdata files are used by sstate tests and other pieces of code and are very important, we need to generate them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68915</commentid>
    <comment_count>12</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-07 20:29:28 +0000</bug_when>
    <thetext>RP,
Thanks lot to enlighten me. I tried the uploaded wip patch and it shows no stamps in build dir with same test. I guess this is what you meant in previous mail for why it is single threaded...

Let me hike more in BB with these hints for a right solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69071</commentid>
    <comment_count>13</comment_count>
      <attachid>3558</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-13 01:29:21 +0000</bug_when>
    <thetext>Created attachment 3558
[WIP] Multi-processing dump signature routine

I uploaded another wip patch which seems getting good stamps and locked-sigs.inc with a multi-process solution. (reparing perf: 14.7sec -&gt; 1.5sec) However I still cannot explain it very well since I am still hiking in BB to grasp its internal data and threading models.

Some notes here:
() Even this turns out to be the direction, the usage of processing of python is subject to change (to a queue or pool) when respecting BB_NUMBER_THREADS. This wip patch fires one process for every file to reparse!

() Each process outputs one &quot;Writing locked sigs to...&quot; line to screen because I moved dump_sig into sub-process. But the output seems no mixed up content at all. I am not sure if BB has some magic to lock the file to write, and I will check it. Also it should be worthy to check each process&apos;s dump respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69101</commentid>
    <comment_count>14</comment_count>
      <attachid>3560</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-13 20:22:35 +0000</bug_when>
    <thetext>Created attachment 3560
0001-WIP-V3-Try-to-use-multiple-processes-to-dump-signatu.patch

Okay, I get closer...

Upload a WIP [v3] patch which still has several items/questions to be addressed. The improvement in V3 is that we won&apos;t cause dumping locked-sig.inc (in OE) triggered multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69124</commentid>
    <comment_count>15</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-12-14 16:00:22 +0000</bug_when>
    <thetext>FWIW I think you&apos;re right with the &quot;Maybe we should have a dump_sigfn() in siggen&quot; comment, we don&apos;t want to duplicate that code as you have here. I think this does look like the approximate right direction. As you say, we need a BB_NUMBER_PARSE_THREADS pool of parsers (not BB_NUMBER_THREADS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69224</commentid>
    <comment_count>16</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-20 00:46:57 +0000</bug_when>
    <thetext>RP &amp; Saul,
I managed to have a patch to overcome obstacles on the road. I think it is close to a submission if you guys don&apos;t see any better solution.

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=jxzhang/bz10352-submission

Please let me know any test I could run to validate it, beside from seeing stamps and lock-sigs.inc generated.

I have other two patches as byproduct. They are _not_ related to this 10352:

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=jxzhang/misc-sig-fixes

Maybe you can help to review them by any chance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69237</commentid>
    <comment_count>17</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-20 17:08:34 +0000</bug_when>
    <thetext>I am thinking to use a better logic to replace the batch-launching in dump_signature(). I could fire processes continuously with checking is_alive() and a final join() at the end. (Still don&apos;t want to bother more complicated solutions...)

But the most in the uploaded gonna stay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69249</commentid>
    <comment_count>18</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-20 20:30:11 +0000</bug_when>
    <thetext>Update patch for bz10352 to replace batch-launching progresses with a better approach. Go ahead with more tests:
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=jxzhang/bz10352-submission-1

(Recap) the other two patches as byproduct. They are _not_ related to this 10352:

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=jxzhang/misc-sig-fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69285</commentid>
    <comment_count>19</comment_count>
      <attachid>3569</attachid>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-21 20:27:21 +0000</bug_when>
    <thetext>Created attachment 3569
Submitted: Patch for bz10352

The attached is submitted to bitbake-devel@lists.openembedded.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69286</commentid>
    <comment_count>20</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-21 20:28:45 +0000</bug_when>
    <thetext>Tested with sstatetest module in oe-selftest. The submitted has been attached in this ticket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69297</commentid>
    <comment_count>21</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2016-12-21 22:33:26 +0000</bug_when>
    <thetext>The first of two by-product patches is submitted:

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=jxzhang/misc-sig-fixes&amp;id=d75548a64eed6060d94e1ed145f07dfbc51f94da

The 2nd is in test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69944</commentid>
    <comment_count>22</comment_count>
    <who name="Jianxun Zhang">jianxun.zhang</who>
    <bug_when>2017-01-19 20:59:20 +0000</bug_when>
    <thetext>The patch has been merged into bitbake repo and integrated into poky master branch
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=7eb02e837ed253a2ae69023595c25660b4d56b7c</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3550</attachid>
            <date>2016-11-29 00:48:11 +0000</date>
            <delta_ts>2016-11-29 00:48:11 +0000</delta_ts>
            <desc>possibly-irrelavant-bb-doesnot-take-cache-since-2nd-build.log</desc>
            <filename>bz10352-no-cache-in-2nd-test</filename>
            <type>text/plain</type>
            <size>4975</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">IyB0aGUgZmlyc3QgY29tbWFuZCAicm1iIiBpcyB0byByZW1vdmUgZGlycyBpbiBhIGJ1aWxkIGRp
ciBleGNlcHQgY29uZgoKY2hhbmdAY2hhbmctUzI2MDBDUDp+LzQ4MHgyUkFJRC9iejEwMzUyL2J1
aWxkJCBybWIKY2hhbmdAY2hhbmctUzI2MDBDUDp+LzQ4MHgyUkFJRC9iejEwMzUyL2J1aWxkJCBi
aXRiYWtlICAtUyBub25lIGNvcmUtaW1hZ2UtbWluaW1hbApQYXJzaW5nIHJlY2lwZXM6IDEwMCUg
fCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDUKUGFyc2luZyBvZiA4NTEgLmJiIGZp
bGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgODUxIHBhcnNlZCkuIDEzMDUgdGFyZ2V0cywgNTEgc2tp
cHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgpOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFz
ayBxdWV1ZSBkZXBlbmRlbmNpZXMKCkJ1aWxkIENvbmZpZ3VyYXRpb246CkJCX1ZFUlNJT04gICAg
ICAgID0gIjEuMzIuMCIKQlVJTERfU1lTICAgICAgICAgPSAieDg2XzY0LWxpbnV4IgpOQVRJVkVM
U0JTVFJJTkcgICA9ICJ1YnVudHUtMTYuMDQiClRBUkdFVF9TWVMgICAgICAgID0gIng4Nl82NC1w
b2t5LWxpbnV4IgpNQUNISU5FICAgICAgICAgICA9ICJxZW11eDg2LTY0IgpESVNUUk8gICAgICAg
ICAgICA9ICJwb2t5IgpESVNUUk9fVkVSU0lPTiAgICA9ICIyLjIiClRVTkVfRkVBVFVSRVMgICAg
ID0gIm02NCBjb3JlMiIKVEFSR0VUX0ZQVSAgICAgICAgPSAiIgptZXRhICAgICAgICAgICAgICAK
bWV0YS1wb2t5ICAgICAgICAgCm1ldGEteW9jdG8tYnNwICAgID0gIkhFQUQ6NzFiN2MzYTg4ZWM1
YTIwZDVlNDUzMTc1MWQwYmYyM2Q1Yzk0ZTQ5NCIKCk5PVEU6IEZldGNoaW5nIHVuaW5hdGl2ZSBi
aW5hcnkgc2hpbSBmcm9tIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNl
cy91bmluYXRpdmUvMS40L3g4Nl82NC1uYXRpdmVzZGstbGliYy50YXIuYnoyO3NoYTI1NnN1bT0x
MDFmZjhmMjU4MGMxOTM0ODhkYjllNzZmOTY0NmZiNmVkMzhiNjVmYjc2ZjQwM2FjYjBlMjE3OGNl
NzEyN2NhCi0tMjAxNi0xMS0yOCAxNjozMTo0Ny0tICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJv
amVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzEuNC94ODZfNjQtbmF0aXZlc2RrLWxpYmMudGFy
LmJ6MgpSZXNvbHZpbmcgcHJveHktdXMuaW50ZWwuY29tIChwcm94eS11cy5pbnRlbC5jb20pLi4u
IDEwLjEuMTkyLjQ4CkNvbm5lY3RpbmcgdG8gcHJveHktdXMuaW50ZWwuY29tIChwcm94eS11cy5p
bnRlbC5jb20pfDEwLjEuMTkyLjQ4fDo5MTEuLi4gY29ubmVjdGVkLgpQcm94eSByZXF1ZXN0IHNl
bnQsIGF3YWl0aW5nIHJlc3BvbnNlLi4uIDIwMCBPSwpMZW5ndGg6IDI0NzMyMTYgKDIuNE0pIFth
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW1dClNhdmluZyB0bzog4oCYL2hvbWUvY2hhbmcvNDgweDJS
QUlEL2J6MTAzNTIvYnVpbGQvZG93bmxvYWRzL3VuaW5hdGl2ZS8xMDFmZjhmMjU4MGMxOTM0ODhk
YjllNzZmOTY0NmZiNmVkMzhiNjVmYjc2ZjQwM2FjYjBlMjE3OGNlNzEyN2NhL3g4Nl82NC1uYXRp
dmVzZGstbGliYy50YXIuYnoy4oCZCgoKMjAxNi0xMS0yOCAxNjozMTo0OCAoNC43MyBNQi9zKSAt
IOKAmC9ob21lL2NoYW5nLzQ4MHgyUkFJRC9iejEwMzUyL2J1aWxkL2Rvd25sb2Fkcy91bmluYXRp
dmUvMTAxZmY4ZjI1ODBjMTkzNDg4ZGI5ZTc2Zjk2NDZmYjZlZDM4YjY1ZmI3NmY0MDNhY2IwZTIx
NzhjZTcxMjdjYS94ODZfNjQtbmF0aXZlc2RrLWxpYmMudGFyLmJ6MuKAmSBzYXZlZCBbMjQ3MzIx
Ni8yNDczMjE2XQoKSW5pdGlhbGlzaW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBU
aW1lOiAwOjAwOjAzCk5PVEU6IFJlcGFyc2luZyBmaWxlcyB0byBjb2xsZWN0IGRlcGVuZGVuY3kg
ZGF0YQpXcml0aW5nIGxvY2tlZCBzaWdzIHRvIC9ob21lL2NoYW5nLzQ4MHgyUkFJRC9iejEwMzUy
L2J1aWxkL2xvY2tlZC1zaWdzLmluYwpOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgMCB0
YXNrcyBvZiB3aGljaCAwIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVk
LgpjaGFuZ0BjaGFuZy1TMjYwMENQOn4vNDgweDJSQUlEL2J6MTAzNTIvYnVpbGQkIGJpdGJha2Ug
IC1TIG5vbmUgY29yZS1pbWFnZS1taW5pbWFsClBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMwpQYXJzaW5nIG9mIDg1MSAuYmIgZmlsZXMgY29t
cGxldGUgKDAgY2FjaGVkLCA4NTEgcGFyc2VkKS4gMTMwNSB0YXJnZXRzLCA1MSBza2lwcGVkLCAw
IG1hc2tlZCwgMCBlcnJvcnMuCk5PVEU6IFJlc29sdmluZyBhbnkgbWlzc2luZyB0YXNrIHF1ZXVl
IGRlcGVuZGVuY2llcwoKQnVpbGQgQ29uZmlndXJhdGlvbjoKQkJfVkVSU0lPTiAgICAgICAgPSAi
MS4zMi4wIgpCVUlMRF9TWVMgICAgICAgICA9ICJ4ODZfNjQtbGludXgiCk5BVElWRUxTQlNUUklO
RyAgID0gInVuaXZlcnNhbCIKVEFSR0VUX1NZUyAgICAgICAgPSAieDg2XzY0LXBva3ktbGludXgi
Ck1BQ0hJTkUgICAgICAgICAgID0gInFlbXV4ODYtNjQiCkRJU1RSTyAgICAgICAgICAgID0gInBv
a3kiCkRJU1RST19WRVJTSU9OICAgID0gIjIuMiIKVFVORV9GRUFUVVJFUyAgICAgPSAibTY0IGNv
cmUyIgpUQVJHRVRfRlBVICAgICAgICA9ICIiCm1ldGEgICAgICAgICAgICAgIAptZXRhLXBva3kg
ICAgICAgICAKbWV0YS15b2N0by1ic3AgICAgPSAiSEVBRDo3MWI3YzNhODhlYzVhMjBkNWU0NTMx
NzUxZDBiZjIzZDVjOTRlNDk0IgoKSW5pdGlhbGlzaW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjfCBUaW1lOiAwOjAwOjA0Ck5PVEU6IFJlcGFyc2luZyBmaWxlcyB0byBjb2xsZWN0IGRl
cGVuZGVuY3kgZGF0YQpXcml0aW5nIGxvY2tlZCBzaWdzIHRvIC9ob21lL2NoYW5nLzQ4MHgyUkFJ
RC9iejEwMzUyL2J1aWxkL2xvY2tlZC1zaWdzLmluYwpOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRl
bXB0ZWQgMCB0YXNrcyBvZiB3aGljaCAwIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwg
c3VjY2VlZGVkLgpjaGFuZ0BjaGFuZy1TMjYwMENQOn4vNDgweDJSQUlEL2J6MTAzNTIvYnVpbGQk
IGJpdGJha2UgIC1TIG5vbmUgY29yZS1pbWFnZS1taW5pbWFsCkxvYWRpbmcgY2FjaGU6IDEwMCUg
fCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMApMb2FkZWQgMTMwNSBlbnRyaWVz
IGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sg
cXVldWUgZGVwZW5kZW5jaWVzCgpCdWlsZCBDb25maWd1cmF0aW9uOgpCQl9WRVJTSU9OICAgICAg
ICA9ICIxLjMyLjAiCkJVSUxEX1NZUyAgICAgICAgID0gIng4Nl82NC1saW51eCIKTkFUSVZFTFNC
U1RSSU5HICAgPSAidW5pdmVyc2FsIgpUQVJHRVRfU1lTICAgICAgICA9ICJ4ODZfNjQtcG9reS1s
aW51eCIKTUFDSElORSAgICAgICAgICAgPSAicWVtdXg4Ni02NCIKRElTVFJPICAgICAgICAgICAg
PSAicG9reSIKRElTVFJPX1ZFUlNJT04gICAgPSAiMi4yIgpUVU5FX0ZFQVRVUkVTICAgICA9ICJt
NjQgY29yZTIiClRBUkdFVF9GUFUgICAgICAgID0gIiIKbWV0YSAgICAgICAgICAgICAgCm1ldGEt
cG9reSAgICAgICAgIAptZXRhLXlvY3RvLWJzcCAgICA9ICJIRUFEOjcxYjdjM2E4OGVjNWEyMGQ1
ZTQ1MzE3NTFkMGJmMjNkNWM5NGU0OTQiCgpJbml0aWFsaXNpbmcgdGFza3M6IDEwMCUgfCMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDIKTk9URTogUmVwYXJzaW5nIGZpbGVzIHRvIGNvbGxl
Y3QgZGVwZW5kZW5jeSBkYXRhCldyaXRpbmcgbG9ja2VkIHNpZ3MgdG8gL2hvbWUvY2hhbmcvNDgw
eDJSQUlEL2J6MTAzNTIvYnVpbGQvbG9ja2VkLXNpZ3MuaW5jCk5PVEU6IFRhc2tzIFN1bW1hcnk6
IEF0dGVtcHRlZCAwIHRhc2tzIG9mIHdoaWNoIDAgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5k
IGFsbCBzdWNjZWVkZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3551</attachid>
            <date>2016-11-30 00:36:50 +0000</date>
            <delta_ts>2016-12-13 01:29:21 +0000</delta_ts>
            <desc>[HACK][WIP] Multi-processing dump signature routine</desc>
            <filename>0001-WIP-Try-to-use-multiple-processes-to-dump-signatures.patch</filename>
            <type>application/octet-stream</type>
            <size>2937</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">RnJvbSBhZmMxNjg3ZGMwM2EwZDE1YmQyMjE5NWE5ZmQ3MDJjMTZkOTMxNmJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4Lmlu
dGVsLmNvbT4KRGF0ZTogTW9uLCAyOCBOb3YgMjAxNiAxNTo1NDowMiAtMDgwMApTdWJqZWN0OiBb
UEFUQ0hdIFdJUDogVHJ5IHRvIHVzZSBtdWx0aXBsZSBwcm9jZXNzZXMgdG8gZHVtcCBzaWduYXR1
cmVzLgoKaGFja2lzaCBhbmQgbmVlZCBjaGVjazoKClZhbGlkYXRlIGdlbmVyYXRlZCBzaWcgZmls
ZQpQZXJmIHRlc3QKClNpZ25lZC1vZmYtYnk6IEppYW54dW4gWmhhbmcgPGppYW54dW4uemhhbmdA
bGludXguaW50ZWwuY29tPgotLS0KIGJpdGJha2UvbGliL2JiL2NhY2hlLnB5ICAgIHwgIDMgKysr
CiBiaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSB8IDI1ICsrKysrKysrKysrKysrKysrKy0tLS0t
LS0KIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weSBiL2JpdGJha2UvbGliL2JiL2NhY2hl
LnB5CmluZGV4IGRkOWNmZGYuLjY1NWVhOGMgMTAwNjQ0Ci0tLSBhL2JpdGJha2UvbGliL2JiL2Nh
Y2hlLnB5CisrKyBiL2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CkBAIC0zNCw2ICszNCw3IEBAIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgcGlja2xlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZh
dWx0ZGljdAogaW1wb3J0IGJiLnV0aWxzCitpbXBvcnQgdHJhY2ViYWNrCiAKIGxvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkNhY2hlIikKIApAQCAtMzM1LDYgKzMzNiw4IEBAIGNs
YXNzIE5vQ2FjaGUob2JqZWN0KToKICAgICAgICAgVG8gZG8gdGhpcywgd2UgbmVlZCB0byBwYXJz
ZSB0aGUgZmlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUGFyc2lu
ZyAlcyAoZnVsbCkiICUgdmlydHVhbGZuKQorICAgICAgICAjYmIud2FybigiPT09PT1EVU1QIGJh
Y2t0cmFjZSBvZiBsb2FkRGF0YUZ1bGw9PT09PSIpCisgICAgICAgICN0cmFjZWJhY2sucHJpbnRf
c3RhY2soKQogICAgICAgICAoZm4sIHZpcnR1YWwsIG1jKSA9IHZpcnR1YWxmbjJyZWFsZm4odmly
dHVhbGZuKQogICAgICAgICBiYl9kYXRhID0gc2VsZi5sb2FkX2JiZmlsZSh2aXJ0dWFsZm4sIGFw
cGVuZHMsIHZpcnRvbmx5PVRydWUpCiAgICAgICAgIHJldHVybiBiYl9kYXRhW3ZpcnR1YWxdCmRp
ZmYgLS1naXQgYS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSBiL2JpdGJha2UvbGliL2JiL3J1
bnF1ZXVlLnB5CmluZGV4IDg0YjI2ODUuLjkzZmY1N2EgMTAwNjQ0Ci0tLSBhL2JpdGJha2UvbGli
L2JiL3J1bnF1ZXVlLnB5CisrKyBiL2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CkBAIC0zNiw2
ICszNiw4IEBAIGZyb20gYmIgaW1wb3J0IG1zZywgZGF0YSwgZXZlbnQKIGZyb20gYmIgaW1wb3J0
IG1vbml0b3JkaXNrCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHBpY2tsZQoraW1wb3J0IHRp
bWUKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzCiAKIGJibG9nZ2VyID0gbG9n
Z2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKQogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJp
dEJha2UuUnVuUXVldWUiKQpAQCAtMTI4OCwxNyArMTI5MCwyNiBAQCBjbGFzcyBSdW5RdWV1ZToK
ICAgICAgICAgICAgIHNlbGYucnFleGUuZmluaXNoKCkKIAogICAgIGRlZiBkdW1wX3NpZ25hdHVy
ZXMoc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICBiYi5ub3Rl
KCJSZXBhcnNpbmcgZmlsZXMgdG8gY29sbGVjdCBkZXBlbmRlbmN5IGRhdGEiKQotICAgICAgICBi
Yl9jYWNoZSA9IGJiLmNhY2hlLk5vQ2FjaGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIpCisgICAg
ICAgIGZucyA9IHt9CisKKyAgICAgICAgZGVmIHBhcnNlX3dvcmtlcihzZWxmLCBmbik6CisgICAg
ICAgICAgICAgYmJfY2FjaGUgPSBiYi5jYWNoZS5Ob0NhY2hlKHNlbGYuY29va2VyLmRhdGFidWls
ZGVyKQorICAgICAgICAgICAgIHRoZV9kYXRhID0gYmJfY2FjaGUubG9hZERhdGFGdWxsKGZuLCBz
ZWxmLmNvb2tlci5jb2xsZWN0aW9uLmdldF9maWxlX2FwcGVuZHMoZm4pKQorCisgICAgICAgIGJi
Lm5vdGUoIlJlcGFyc2luZyBmaWxlcyB0byBjb2xsZWN0IGRlcGVuZGVuY3kgZGF0YSB3aXRoIG11
bHRpcGxlIHByb2Nlc3NlcyIpCisgICAgICAgIGxvYWRzdGFydCA9IHRpbWUudGltZSgpCisKICAg
ICAgICAgZm9yIHRpZCBpbiBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllczoKICAgICAgICAgICAg
IGZuID0gZm5fZnJvbV90aWQodGlkKQotICAgICAgICAgICAgaWYgZm4gbm90IGluIGRvbmU6Ci0g
ICAgICAgICAgICAgICAgdGhlX2RhdGEgPSBiYl9jYWNoZS5sb2FkRGF0YUZ1bGwoZm4sIHNlbGYu
Y29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhmbikpCi0gICAgICAgICAgICAgICAg
ZG9uZS5hZGQoZm4pCisgICAgICAgICAgICBpZiBmbiBub3QgaW4gZm5zOgorICAgICAgICAgICAg
ICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9cGFyc2Vfd29ya2VyLCBhcmdzPShzZWxmLCBmbikpCisg
ICAgICAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgICAgICBmbnNbZm5dID0gcAor
ICAgICAgICBmb3IgZiBpbiBmbnM6CisgICAgICAgICAgICAgZm5zW2ZdLmpvaW4oKQogCiAgICAg
ICAgIGJiLnBhcnNlLnNpZ2dlbi5kdW1wX3NpZ3Moc2VsZi5ycWRhdGEuZGF0YUNhY2hlcywgb3B0
aW9ucykKLQorICAgICAgICBiYi5ub3RlKCJsb2FkIGFsbCBmbiB0YWtlcyAiICsgc3RyKHRpbWUu
dGltZSgpIC0gbG9hZHN0YXJ0KSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgcHJpbnRfZGlm
ZnNjZW5ldGFza3Moc2VsZik6Ci0tIAoyLjcuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3554</attachid>
            <date>2016-12-02 00:39:18 +0000</date>
            <delta_ts>2016-12-13 01:29:21 +0000</delta_ts>
            <desc>WRONG_DO_without_parsing_but_result_looks_okay.patch</desc>
            <filename>WRONG_DO_WITHOUT_PARSING.patch</filename>
            <type>application/octet-stream</type>
            <size>743</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvYml0YmFrZS9saWIvYmIv
cnVucXVldWUucHkKaW5kZXggODRiMjY4NS4uNmRmMDk3ZiAxMDA2NDQKLS0tIGEvYml0YmFrZS9s
aWIvYmIvcnVucXVldWUucHkKKysrIGIvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTEy
ODgsMTQgKzEyODgsNiBAQCBjbGFzcyBSdW5RdWV1ZToKICAgICAgICAgICAgIHNlbGYucnFleGUu
ZmluaXNoKCkKIAogICAgIGRlZiBkdW1wX3NpZ25hdHVyZXMoc2VsZiwgb3B0aW9ucyk6Ci0gICAg
ICAgIGRvbmUgPSBzZXQoKQotICAgICAgICBiYi5ub3RlKCJSZXBhcnNpbmcgZmlsZXMgdG8gY29s
bGVjdCBkZXBlbmRlbmN5IGRhdGEiKQotICAgICAgICBiYl9jYWNoZSA9IGJiLmNhY2hlLk5vQ2Fj
aGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIpCi0gICAgICAgIGZvciB0aWQgaW4gc2VsZi5ycWRh
dGEucnVudGFza2VudHJpZXM6Ci0gICAgICAgICAgICBmbiA9IGZuX2Zyb21fdGlkKHRpZCkKLSAg
ICAgICAgICAgIGlmIGZuIG5vdCBpbiBkb25lOgotICAgICAgICAgICAgICAgIHRoZV9kYXRhID0g
YmJfY2FjaGUubG9hZERhdGFGdWxsKGZuLCBzZWxmLmNvb2tlci5jb2xsZWN0aW9uLmdldF9maWxl
X2FwcGVuZHMoZm4pKQotICAgICAgICAgICAgICAgIGRvbmUuYWRkKGZuKQogCiAgICAgICAgIGJi
LnBhcnNlLnNpZ2dlbi5kdW1wX3NpZ3Moc2VsZi5ycWRhdGEuZGF0YUNhY2hlcywgb3B0aW9ucykK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3558</attachid>
            <date>2016-12-13 01:29:21 +0000</date>
            <delta_ts>2016-12-21 20:27:21 +0000</delta_ts>
            <desc>[WIP] Multi-processing dump signature routine</desc>
            <filename>0001-WIP-Try-to-use-multiple-processes-to-dump-signatures.patch</filename>
            <type>text/plain</type>
            <size>2350</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">RnJvbSA1ZTQwZWM2YmI2ZTY2ZGJmMzRhZGE0NTZmZjAwMjgzM2FlZTUzOTBkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4Lmlu
dGVsLmNvbT4KRGF0ZTogTW9uLCAyOCBOb3YgMjAxNiAxNTo1NDowMiAtMDgwMApTdWJqZWN0OiBb
UEFUQ0hdIFdJUDogVHJ5IHRvIHVzZSBtdWx0aXBsZSBwcm9jZXNzZXMgdG8gZHVtcCBzaWduYXR1
cmVzLgoKUHJvYmxlbToKc2lnIGluYyBmaWxlIHdpbGwgYmUgd3JpdGUgbWFueSB0aW1lcyBzaW5j
ZSBlYWNoIHByb2Nlc3MgZm9ya2VkCndpbGwgZG8gaXQuIChUaGUgZ29vZCBuZXdzIGlzIHdlIGdl
dCBzdGFtcHMgZmlsZXMpCgpWYWxpZGF0ZSBnZW5lcmF0ZWQgc2lnIGZpbGUKUGVyZiB0ZXN0CgpT
aWduZWQtb2ZmLWJ5OiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4LmludGVsLmNv
bT4KLS0tCiBiaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSB8IDI4ICsrKysrKysrKysrKysrKysr
KystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvYml0YmFrZS9s
aWIvYmIvcnVucXVldWUucHkKaW5kZXggM2Q4YWUxZi4uYThjNWMwYiAxMDA2NDQKLS0tIGEvYml0
YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkK
QEAgLTM2LDYgKzM2LDggQEAgZnJvbSBiYiBpbXBvcnQgbXNnLCBkYXRhLCBldmVudAogZnJvbSBi
YiBpbXBvcnQgbW9uaXRvcmRpc2sKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcGlja2xlCitp
bXBvcnQgdGltZQorZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MKIAogYmJsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCiBsb2dnZXIgPSBsb2dnaW5nLmdldExv
Z2dlcigiQml0QmFrZS5SdW5RdWV1ZSIpCkBAIC0xMzAxLDE4ICsxMzAzLDI2IEBAIGNsYXNzIFJ1
blF1ZXVlOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5ycWV4ZS5maW5pc2goKQog
CisgICAgZGVmIHBhcnNlX3dvcmtlcihzZWxmLCBmbiwgb3B0aW9ucyk6CisgICAgICAgICBiYl9j
YWNoZSA9IGJiLmNhY2hlLk5vQ2FjaGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIpCisgICAgICAg
ICB0aGVfZGF0YSA9IGJiX2NhY2hlLmxvYWREYXRhRnVsbChmbiwgc2VsZi5jb29rZXIuY29sbGVj
dGlvbi5nZXRfZmlsZV9hcHBlbmRzKGZuKSkKKyAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5kdW1w
X3NpZ3Moc2VsZi5ycWRhdGEuZGF0YUNhY2hlcywgb3B0aW9ucykKKwogICAgIGRlZiBkdW1wX3Np
Z25hdHVyZXMoc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICBi
Yi5ub3RlKCJSZXBhcnNpbmcgZmlsZXMgdG8gY29sbGVjdCBkZXBlbmRlbmN5IGRhdGEiKQotICAg
ICAgICBiYl9jYWNoZSA9IGJiLmNhY2hlLk5vQ2FjaGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIp
CisgICAgICAgIGZucyA9IHt9CisKKyAgICAgICAgYmIubm90ZSgiUmVwYXJzaW5nIGZpbGVzIHRv
IGNvbGxlY3QgZGVwZW5kZW5jeSBkYXRhIHdpdGggbXVsdGlwbGUgcHJvY2Vzc2VzIikKKyAgICAg
ICAgbG9hZHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnJxZGF0
YS5ydW50YXNrZW50cmllczoKICAgICAgICAgICAgIGZuID0gZm5fZnJvbV90aWQodGlkKQotICAg
ICAgICAgICAgaWYgZm4gbm90IGluIGRvbmU6Ci0gICAgICAgICAgICAgICAgdGhlX2RhdGEgPSBi
Yl9jYWNoZS5sb2FkRGF0YUZ1bGwoZm4sIHNlbGYuY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVf
YXBwZW5kcyhmbikpCi0gICAgICAgICAgICAgICAgZG9uZS5hZGQoZm4pCi0KLSAgICAgICAgYmIu
cGFyc2Uuc2lnZ2VuLmR1bXBfc2lncyhzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzLCBvcHRpb25zKQot
CisgICAgICAgICAgICBpZiBmbiBub3QgaW4gZm5zOgorICAgICAgICAgICAgICAgICBwID0gUHJv
Y2Vzcyh0YXJnZXQ9c2VsZi5wYXJzZV93b3JrZXIsIGFyZ3M9KGZuLCBvcHRpb25zKSkKKyAgICAg
ICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICAgICAgIGZuc1tmbl0gPSBwCisgICAg
ICAgIGZvciBmIGluIGZuczoKKyAgICAgICAgICAgICBmbnNbZl0uam9pbigpCisKKyAgICAgICAg
YmIubm90ZSgibG9hZCBhbGwgZm4gdGFrZXMgIiArIHN0cih0aW1lLnRpbWUoKSAtIGxvYWRzdGFy
dCkpCiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHByaW50X2RpZmZzY2VuZXRhc2tzKHNlbGYp
OgotLSAKMi43LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3560</attachid>
            <date>2016-12-13 20:22:35 +0000</date>
            <delta_ts>2016-12-21 20:27:21 +0000</delta_ts>
            <desc>0001-WIP-V3-Try-to-use-multiple-processes-to-dump-signatu.patch</desc>
            <filename>0001-WIP-V3-Try-to-use-multiple-processes-to-dump-signatu.patch</filename>
            <type>application/octet-stream</type>
            <size>4005</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">RnJvbSA0NGNjNTQyN2JkMmIzNTA4NjQzMzFlN2U1YWE0MjhjZTI2MTIyM2ZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4Lmlu
dGVsLmNvbT4KRGF0ZTogTW9uLCAyOCBOb3YgMjAxNiAxNTo1NDowMiAtMDgwMApTdWJqZWN0OiBb
UEFUQ0hdIFdJUFtWM106IFRyeSB0byB1c2UgbXVsdGlwbGUgcHJvY2Vzc2VzIHRvIGR1bXAgc2ln
bmF0dXJlcy4KCldlIHVzZSBtdWx0aS1wcm9jZXNzaW5nIHRvIHJlcGFyc2UgZXZlcnkgZmlsZSBu
YW1lIGFuZCBkdW1wCnRhc2tzIGZvciB0aGUgZmlsZSBuYW1lLCB0aGVuIHdlIHN0aWxsIG5lZWQg
dG8gY2FsbCBzaWdnZW4ncwpkdW1wX3NpZ3MgYmVjYXVzZSBjbGllbnRzIGxpa2UgT0Ugc3RpbGwg
aGFzIGV4dHJhIGR1bXBpbmcKaW4gaXRzIG92ZXJyaWRpbmcgdmVyc2lvbiBvZiBkdW1wX3NpZ3Mu
IFRoZSBmaW5hbCBjYWxsIHRvCmR1bXBfc2lncygpIGRvZXNuJ3Qgc2VlbSB0byByZS1kdW1wIHN0
YW1wcyBlZmZlY3RpdmVseS4KClRvZG8gYmVzaWRlIGZyb20gd2hhdCB3ZSBoYXZlIGV4cGxhaW5l
ZDoKKCkgQ2hlY2sgaWYgZHVtcCBpcyBjb3JyZWN0CigpIHJlc3BlY3QgQkJfTlVNQkVSX1RIUkVB
RFMKClNpZ25lZC1vZmYtYnk6IEppYW54dW4gWmhhbmcgPGppYW54dW4uemhhbmdAbGludXguaW50
ZWwuY29tPgotLS0KIGJpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IHwgNDcgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM5IGlu
c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYml0YmFrZS9saWIvYmIv
cnVucXVldWUucHkgYi9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCAzZDhhZTFmLi5h
ZTgzNjg3IDEwMDY0NAotLS0gYS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQorKysgYi9iaXRi
YWtlL2xpYi9iYi9ydW5xdWV1ZS5weQpAQCAtMzYsNiArMzYsOCBAQCBmcm9tIGJiIGltcG9ydCBt
c2csIGRhdGEsIGV2ZW50CiBmcm9tIGJiIGltcG9ydCBtb25pdG9yZGlzawogaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCB0aW1lCitmcm9tIG11bHRpcHJvY2Vzc2luZyBp
bXBvcnQgUHJvY2VzcwogCiBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikK
IGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlJ1blF1ZXVlIikKQEAgLTEzMDEs
MTggKzEzMDMsNDcgQEAgY2xhc3MgUnVuUXVldWU6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBzZWxmLnJxZXhlLmZpbmlzaCgpCiAKKyAgICBkZWYgcGFyc2Vfd29ya2VyKHNlbGYsIGZuLCBv
cHRpb25zKToKKyAgICAgICAgIGJiX2NhY2hlID0gYmIuY2FjaGUuTm9DYWNoZShzZWxmLmNvb2tl
ci5kYXRhYnVpbGRlcikKKyAgICAgICAgIHRoZV9kYXRhID0gYmJfY2FjaGUubG9hZERhdGFGdWxs
KGZuLCBzZWxmLmNvb2tlci5jb2xsZWN0aW9uLmdldF9maWxlX2FwcGVuZHMoZm4pKQorICAgICAg
ICAgIyB3ZSBoYXZlIHRvIGNhbGwgZHVtcGluZyBmdW5jdGlvbnMgaGVyZS4gd2UgaGF2ZW4ndCBm
aWd1cmUgb3V0IHdoeSBzdGFtcHMgY2Fubm90CisgICAgICAgICAjIGJlIGdlbmVyYXRlZCBpbiBh
IGR1bXAgY2FsbCBhZnRlciBtdWx0aS1wcm9jZXNzaW5nIGxvYWREYXRhbGZ1bGwoKQorICAgICAg
ICAgIyBBY3R1YWxseSwgdGhpcyBwYXJ0IGlzIGZyb20gYmIncyBzaWdnZW4gZHVtcF9zaWdzLiBX
ZSB0YWtlIGl0cyBpbnNpZGVzIHRvCisgICAgICAgICAjIGhhbmRsZSBhIHNpbmdsZSBmbi4gTWF5
YmUgd2Ugc2hvdWxkIGhhdmUgYSBkdW1wX3NpZ2ZuKCkgaW4gc2lnZ2VuLi4uCisgICAgICAgICBz
aWdnZW4gPSBiYi5wYXJzZS5zaWdnZW4KKyAgICAgICAgIGRhdGFDYWNoZXMgPSBzZWxmLnJxZGF0
YS5kYXRhQ2FjaGVzCisgICAgICAgICBpZiBmbiBpbiBzaWdnZW4udGFza2RlcHM6CisgICAgICAg
ICAgICAgZm9yIHRhc2sgaW4gc2lnZ2VuLnRhc2tkZXBzW2ZuXToKKyAgICAgICAgICAgICAgICAg
dGlkID0gZm4gKyAiOiIgKyB0YXNrCisgICAgICAgICAgICAgICAgIChtYywgXywgXykgPSBiYi5y
dW5xdWV1ZS5zcGxpdF90aWQodGlkKQorICAgICAgICAgICAgICAgICBrID0gZm4gKyAiLiIgKyB0
YXNrCisgICAgICAgICAgICAgICAgIGlmIGsgbm90IGluIHNpZ2dlbi50YXNraGFzaDoKKyAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIGlmIGRhdGFDYWNoZXNb
bWNdLmJhc2V0YXNraGFzaFtrXSAhPSBzaWdnZW4uYmFzZWhhc2hba106CisgICAgICAgICAgICAg
ICAgICAgICBiYi5lcnJvcigiQml0YmFrZSdzIGNhY2hlZCBiYXNlaGFzaCBkb2VzIG5vdCBtYXRj
aCB0aGUgb25lIHdlIGp1c3QgZ2VuZXJhdGVkICglcykhIiAlIGspCisgICAgICAgICAgICAgICAg
ICAgICBiYi5lcnJvcigiVGhlIG1pc21hdGNoZWQgaGFzaGVzIHdlcmUgJXMgYW5kICVzIiAlIChk
YXRhQ2FjaGVzW21jXS5iYXNldGFza2hhc2hba10sIHNpZ2dlbi5iYXNlaGFzaFtrXSkpCisgICAg
ICAgICAgICAgICAgIHNpZ2dlbi5kdW1wX3NpZ3Rhc2soZm4sIHRhc2ssIGRhdGFDYWNoZXNbbWNd
LnN0YW1wW2ZuXSwgVHJ1ZSkKKwogICAgIGRlZiBkdW1wX3NpZ25hdHVyZXMoc2VsZiwgb3B0aW9u
cyk6Ci0gICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICBiYi5ub3RlKCJSZXBhcnNpbmcgZmls
ZXMgdG8gY29sbGVjdCBkZXBlbmRlbmN5IGRhdGEiKQotICAgICAgICBiYl9jYWNoZSA9IGJiLmNh
Y2hlLk5vQ2FjaGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIpCisgICAgICAgIGZucyA9IHt9CisK
KyAgICAgICAgYmIubm90ZSgiUmVwYXJzaW5nIGZpbGVzIHRvIGNvbGxlY3QgZGVwZW5kZW5jeSBk
YXRhIHdpdGggbXVsdGlwbGUgcHJvY2Vzc2VzIikKKyAgICAgICAgbG9hZHN0YXJ0ID0gdGltZS50
aW1lKCkKICAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllczoKICAg
ICAgICAgICAgIGZuID0gZm5fZnJvbV90aWQodGlkKQotICAgICAgICAgICAgaWYgZm4gbm90IGlu
IGRvbmU6Ci0gICAgICAgICAgICAgICAgdGhlX2RhdGEgPSBiYl9jYWNoZS5sb2FkRGF0YUZ1bGwo
Zm4sIHNlbGYuY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhmbikpCi0gICAgICAg
ICAgICAgICAgZG9uZS5hZGQoZm4pCi0KKyAgICAgICAgICAgIGlmIGZuIG5vdCBpbiBmbnM6Cisg
ICAgICAgICAgICAgICAgIHAgPSBQcm9jZXNzKHRhcmdldD1zZWxmLnBhcnNlX3dvcmtlciwgYXJn
cz0oZm4sIG9wdGlvbnMpKQorICAgICAgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAg
ICAgICAgZm5zW2ZuXSA9IHAKKyAgICAgICAgZm9yIGYgaW4gZm5zOgorICAgICAgICAgICAgIGZu
c1tmXS5qb2luKCkKKyAgICAgICAgIyBGaXggbWU6IFdlIGhhdmUgY2FsbGVkIGR1bXBfc2lndGFz
ayBpbiBwYXNyc2Vfd29ya2VyIGluIG11bHRpcGxlIHByb2Nlc3NlcworICAgICAgICAjIGJ1dCBo
ZXJlIHdlIGNhbGwgZHVtcF9zaWdzIGJlY2F1c2Ugc29tZSBjbGllbnRzIGxpa2UgT0UgaGFzIGV4
dHJhIGR1bXBpbmcKKyAgICAgICAgIyBpbiBpdHMgZHVtcF9zaWdzLiBXZSBoYXZlIHRvIGNvdmVy
IHRoaXMuCisgICAgICAgICMgaWRlYWx5LCB3ZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gYXZv
aWQgZHVtcGluZyBpbiBwYXJzZV93b3JrZXIgYW5kIGp1c3QKKyAgICAgICAgIyBjYWxsIHRoaXMg
YmFzZWQgb24gYSByZXR1cm5lZCBmdWxsIGRhdGEgc3RvcmUuCiAgICAgICAgIGJiLnBhcnNlLnNp
Z2dlbi5kdW1wX3NpZ3Moc2VsZi5ycWRhdGEuZGF0YUNhY2hlcywgb3B0aW9ucykKLQorICAgICAg
ICBiYi5ub3RlKCJsb2FkIGFsbCBmbiB0YWtlcyAiICsgc3RyKHRpbWUudGltZSgpIC0gbG9hZHN0
YXJ0KSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgcHJpbnRfZGlmZnNjZW5ldGFza3Moc2Vs
Zik6Ci0tIAoyLjcuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3569</attachid>
            <date>2016-12-21 20:27:21 +0000</date>
            <delta_ts>2016-12-21 20:27:21 +0000</delta_ts>
            <desc>Submitted: Patch for bz10352</desc>
            <filename>0001-use-multiple-processes-to-dump-signatures.patch</filename>
            <type>text/plain</type>
            <size>3650</size>
            <attacher name="Jianxun Zhang">jianxun.zhang</attacher>
            
              <data encoding="base64">RnJvbSBlMDUyYTMwZmIyYzY4YTlkMDRlODMwZTEyY2EwOWE4M2JmN2YxMWYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4Lmlu
dGVsLmNvbT4KRGF0ZTogTW9uLCAyOCBOb3YgMjAxNiAxNTo1NDowMiAtMDgwMApTdWJqZWN0OiBb
UEFUQ0hdIHVzZSBtdWx0aXBsZSBwcm9jZXNzZXMgdG8gZHVtcCBzaWduYXR1cmVzLgoKVGhpcyBj
aGFuZ2Ugc2lnbmlmaWNhbnRseSBzaG9ydGVucyB0aGUgdGltZSBvbiByZXBhcnNpbmcgc3RhZ2UK
b2YgJy1TJyBvcHRpb24uCgpFYWNoIGZpbGUgaXMgcmVwYXJzZWQgYW5kIHRoZW4gZHVtcGVkIHdp
dGhpbiBhIGRlZGljYXRlZApwcm9jZXNzLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhlIHJ1bm5p
bmcgcHJvY2Vzc2VzIGlzIG5vdApncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJCX05VTUJFUl9Q
QVJTRV9USFJFQURTIGlmIGl0IGlzIHNldC4KClRoZSBkdW1wX3NpZ3MoKSBpbiBjbGFzcyBTaWdu
YXR1cmVHZW5lcmF0b3JCYXNpYyBpcyBfcmVwbGFjZWRfCmJ5IGEgbmV3IGR1bXBfc2lnZm4oKSBp
bnRlcmZhY2UsIHNvIGNhbGxzIGZyb20gdGhlIG91dHNpZGUgYW5kCnN1YmNsYXNzZXMgYXJlIGRp
c3BhdGNoZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGluIHRoZSBiYXNlCmNsYXNzIG9mIFNpZ25h
dHVyZUdlbmVyYXRvckJhc2ljLgoKRml4ZXMgW1lPQ1RPICMxMDM1Ml0KClNpZ25lZC1vZmYtYnk6
IEppYW54dW4gWmhhbmcgPGppYW54dW4uemhhbmdAbGludXguaW50ZWwuY29tPgotLS0KIGJpdGJh
a2UvbGliL2JiL3J1bnF1ZXVlLnB5IHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t
LS0KIGJpdGJha2UvbGliL2JiL3NpZ2dlbi5weSAgIHwgIDQgKystLQogMiBmaWxlcyBjaGFuZ2Vk
LCAyOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2JpdGJha2Uv
bGliL2JiL3J1bnF1ZXVlLnB5IGIvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKaW5kZXggMmFk
OGFhZC4uYzdkOGQ1MyAxMDA2NDQKLS0tIGEvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysr
IGIvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTM2LDYgKzM2LDcgQEAgZnJvbSBiYiBp
bXBvcnQgbXNnLCBkYXRhLCBldmVudAogZnJvbSBiYiBpbXBvcnQgbW9uaXRvcmRpc2sKIGltcG9y
dCBzdWJwcm9jZXNzCiBpbXBvcnQgcGlja2xlCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQg
UHJvY2VzcwogCiBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlJ1blF1ZXVlIikKQEAgLTEzMDIsMTUgKzEz
MDMsMzYgQEAgY2xhc3MgUnVuUXVldWU6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxm
LnJxZXhlLmZpbmlzaCgpCiAKKyAgICBkZWYgcnFfZHVtcF9zaWdmbihzZWxmLCBmbiwgb3B0aW9u
cyk6CisgICAgICAgIGJiX2NhY2hlID0gYmIuY2FjaGUuTm9DYWNoZShzZWxmLmNvb2tlci5kYXRh
YnVpbGRlcikKKyAgICAgICAgdGhlX2RhdGEgPSBiYl9jYWNoZS5sb2FkRGF0YUZ1bGwoZm4sIHNl
bGYuY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhmbikpCisgICAgICAgIHNpZ2dl
biA9IGJiLnBhcnNlLnNpZ2dlbgorICAgICAgICBkYXRhQ2FjaGVzID0gc2VsZi5ycWRhdGEuZGF0
YUNhY2hlcworICAgICAgICBzaWdnZW4uZHVtcF9zaWdmbihmbiwgZGF0YUNhY2hlcywgb3B0aW9u
cykKKwogICAgIGRlZiBkdW1wX3NpZ25hdHVyZXMoc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIGRv
bmUgPSBzZXQoKQorICAgICAgICBmbnMgPSBzZXQoKQogICAgICAgICBiYi5ub3RlKCJSZXBhcnNp
bmcgZmlsZXMgdG8gY29sbGVjdCBkZXBlbmRlbmN5IGRhdGEiKQotICAgICAgICBiYl9jYWNoZSA9
IGJiLmNhY2hlLk5vQ2FjaGUoc2VsZi5jb29rZXIuZGF0YWJ1aWxkZXIpCisKICAgICAgICAgZm9y
IHRpZCBpbiBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllczoKICAgICAgICAgICAgIGZuID0gZm5f
ZnJvbV90aWQodGlkKQotICAgICAgICAgICAgaWYgZm4gbm90IGluIGRvbmU6Ci0gICAgICAgICAg
ICAgICAgdGhlX2RhdGEgPSBiYl9jYWNoZS5sb2FkRGF0YUZ1bGwoZm4sIHNlbGYuY29va2VyLmNv
bGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhmbikpCi0gICAgICAgICAgICAgICAgZG9uZS5hZGQo
Zm4pCisgICAgICAgICAgICBmbnMuYWRkKGZuKQorCisgICAgICAgIG1heF9wcm9jZXNzID0gaW50
KHNlbGYuY2ZnRGF0YS5nZXRWYXIoIkJCX05VTUJFUl9QQVJTRV9USFJFQURTIikgb3Igb3MuY3B1
X2NvdW50KCkgb3IgMSkKKyAgICAgICAgIyBXZSBjYW5ub3QgdXNlIHRoZSByZWFsIG11bHRpcHJv
Y2Vzc2luZy5Qb29sIGVhc2lseSBkdWUgdG8gc29tZSBsb2NhbCBkYXRhCisgICAgICAgICMgdGhh
dCBjYW4ndCBiZSBwaWNrbGVkLiBUaGlzIGlzIGEgY2hlYXAgbXVsdGktcHJvY2VzcyBzb2x1dGlv
bi4KKyAgICAgICAgbGF1bmNoZWQgPSBbXQorICAgICAgICB3aGlsZSBmbnM6CisgICAgICAgICAg
ICBpZiBsZW4obGF1bmNoZWQpIDwgbWF4X3Byb2Nlc3M6CisgICAgICAgICAgICAgICAgcCA9IFBy
b2Nlc3ModGFyZ2V0PXNlbGYucnFfZHVtcF9zaWdmbiwgYXJncz0oZm5zLnBvcCgpLCBvcHRpb25z
KSkKKyAgICAgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgICAgICBsYXVuY2hlZC5h
cHBlbmQocCkKKyAgICAgICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgorICAgICAgICAgICAgICAg
ICMgVGhlIGZpbmlzaGVkIHByb2Nlc3NlcyBhcmUgam9pbmVkIHdoZW4gY2FsbGluZyBpc19hbGl2
ZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHEuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAg
ICAgICAgbGF1bmNoZWQucmVtb3ZlKHEpCisgICAgICAgIGZvciBwIGluIGxhdW5jaGVkOgorICAg
ICAgICAgICAgICAgIHAuam9pbigpCiAKICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLmR1bXBfc2ln
cyhzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzLCBvcHRpb25zKQogCmRpZmYgLS1naXQgYS9iaXRiYWtl
L2xpYi9iYi9zaWdnZW4ucHkgYi9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKaW5kZXggYjIwYjlj
Zi4uYWU1MGExOCAxMDA2NDQKLS0tIGEvYml0YmFrZS9saWIvYmIvc2lnZ2VuLnB5CisrKyBiL2Jp
dGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtMzA3LDggKzMwNyw4IEBAIGNsYXNzIFNpZ25hdHVy
ZUdlbmVyYXRvckJhc2ljKFNpZ25hdHVyZUdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgcGFz
cwogICAgICAgICAgICAgcmFpc2UgZXJyCiAKLSAgICBkZWYgZHVtcF9zaWdzKHNlbGYsIGRhdGFD
YWNoZXMsIG9wdGlvbnMpOgotICAgICAgICBmb3IgZm4gaW4gc2VsZi50YXNrZGVwczoKKyAgICBk
ZWYgZHVtcF9zaWdmbihzZWxmLCBmbiwgZGF0YUNhY2hlcywgb3B0aW9ucyk6CisgICAgICAgIGlm
IGZuIGluIHNlbGYudGFza2RlcHM6CiAgICAgICAgICAgICBmb3IgdGFzayBpbiBzZWxmLnRhc2tk
ZXBzW2ZuXToKICAgICAgICAgICAgICAgICB0aWQgPSBmbiArICI6IiArIHRhc2sKICAgICAgICAg
ICAgICAgICAobWMsIF8sIF8pID0gYmIucnVucXVldWUuc3BsaXRfdGlkKHRpZCkKLS0gCjIuNy40
Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>