Mon, 05 Mar 2018 01:08:40 +0530 py3: use bytes() instead of str()
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 05 Mar 2018 01:08:40 +0530] rev 36745
py3: use bytes() instead of str() Differential Revision: https://phab.mercurial-scm.org/D2665
Mon, 05 Mar 2018 01:05:54 +0530 py3: use b"%d" instead of str() to convert integers to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 05 Mar 2018 01:05:54 +0530] rev 36744
py3: use b"%d" instead of str() to convert integers to bytes Differential Revision: https://phab.mercurial-scm.org/D2664
Mon, 05 Mar 2018 01:03:23 +0530 py3: use util.forcebytestr to convert testedwith value to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 05 Mar 2018 01:03:23 +0530] rev 36743
py3: use util.forcebytestr to convert testedwith value to bytes Bad extensions can put anything in testedwith so we should use util.forcebytestr here. Differential Revision: https://phab.mercurial-scm.org/D2663
Sun, 04 Mar 2018 22:33:59 +0530 py3: use pycompat.bytestr instead of str
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 22:33:59 +0530] rev 36742
py3: use pycompat.bytestr instead of str Differential Revision: https://phab.mercurial-scm.org/D2648
Sun, 04 Mar 2018 07:40:21 -0800 setdiscovery: avoid a Yoda condition
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 07:40:21 -0800] rev 36741
setdiscovery: avoid a Yoda condition Differential Revision: https://phab.mercurial-scm.org/D2646
Sun, 04 Mar 2018 07:40:11 -0800 setdiscovery: remove unnecessary sample size limiting
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 07:40:11 -0800] rev 36740
setdiscovery: remove unnecessary sample size limiting Both _takequicksample() and _takefullsample() already limit their result to the request size, so there's no need to let the caller do that again. Differential Revision: https://phab.mercurial-scm.org/D2645
Sun, 04 Mar 2018 07:39:46 -0800 setdiscovery: remove initialsamplesize from a condition
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 07:39:46 -0800] rev 36739
setdiscovery: remove initialsamplesize from a condition It seems more direct to compare the actual sample size. That way we can change the sample taken earlier in the code without breaking the condition. Differential Revision: https://phab.mercurial-scm.org/D2644
Sun, 04 Mar 2018 07:37:08 -0800 setdiscovery: back out changeset 5cfdf6137af8 (issue5809)
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 07:37:08 -0800] rev 36738
setdiscovery: back out changeset 5cfdf6137af8 (issue5809) As explained in the bug report, this commit caused a performance regression. The problem occurs when the local repo has very many heads. Before 5cfdf6137af8, we used to get the remote's list of heads and if these heads mostly overlapped with the local repo's heads, we would mark these common heads as common, which would greatly reduce the size of the set of undecided nodes. Note that a similar problem existed before 5cfdf6137af8: If the local repo had very many heads and the server just had a few (or many heads from a disjoint set), we would do the same kind of slow discovery as we would with 5cfdf6137af8 in the case where local and remote repos share a large set of common nodes. For now, we just back out 5cfdf6137af8. We should improve the discovery in the "local has many heads, remote has few heads" case, but let's do that after backing this out. Differential Revision: https://phab.mercurial-scm.org/D2643
Sun, 04 Mar 2018 13:04:12 -0500 hgweb: fix up trailing slash detection on Python 3
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 13:04:12 -0500] rev 36737
hgweb: fix up trailing slash detection on Python 3 Fixes a couple of hgweb tests. Differential Revision: https://phab.mercurial-scm.org/D2661
Sun, 04 Mar 2018 13:03:22 -0500 hgweb: convert req.form to bytes for all keys and values
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 13:03:22 -0500] rev 36736
hgweb: convert req.form to bytes for all keys and values This is just going to be a lot cleaner for our internals. Differential Revision: https://phab.mercurial-scm.org/D2660
Sun, 04 Mar 2018 12:33:15 -0500 templater: show repr of string we're rejecting
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:33:15 -0500] rev 36735
templater: show repr of string we're rejecting I feel like this should make it a little easier to hunt down problems. Differential Revision: https://phab.mercurial-scm.org/D2659
Sun, 04 Mar 2018 12:21:01 -0500 webutil: some %d instead of %s love on ints
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:21:01 -0500] rev 36734
webutil: some %d instead of %s love on ints Differential Revision: https://phab.mercurial-scm.org/D2658
Sun, 04 Mar 2018 12:17:02 -0500 py3: whitelist three more cases
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:17:02 -0500] rev 36733
py3: whitelist three more cases Differential Revision: https://phab.mercurial-scm.org/D2657
Sun, 04 Mar 2018 12:08:53 -0500 archival: our filenames are bytes, not strs
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:08:53 -0500] rev 36732
archival: our filenames are bytes, not strs Differential Revision: https://phab.mercurial-scm.org/D2656
Sun, 04 Mar 2018 12:08:37 -0500 archival: tar file modes need to be sysstrs
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:08:37 -0500] rev 36731
archival: tar file modes need to be sysstrs Differential Revision: https://phab.mercurial-scm.org/D2655
Sun, 04 Mar 2018 12:08:19 -0500 archival: fsdecode paths before passing to tar or zip objects
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 12:08:19 -0500] rev 36730
archival: fsdecode paths before passing to tar or zip objects Both of these traffic in unicodes for filenames on Python 3, and inspection of the tarfile module shows that it uses the filesystem encoding, so fsdecode is the right choice. Differential Revision: https://phab.mercurial-scm.org/D2654
Sun, 04 Mar 2018 05:15:24 +0530 py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 05:15:24 +0530] rev 36729
py3: add b'' prefixes in tests/test-minirst.py # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2653
Sun, 04 Mar 2018 22:40:33 +0530 py3: make sure __repr__ returns a str
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 22:40:33 +0530] rev 36728
py3: make sure __repr__ returns a str # skip-blame because just r'' prefix Differential Revision: https://phab.mercurial-scm.org/D2652
Sun, 04 Mar 2018 22:40:08 +0530 py3: make sure regular expressions are bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 22:40:08 +0530] rev 36727
py3: make sure regular expressions are bytes # skip-blame because just b'' prefix Differential Revision: https://phab.mercurial-scm.org/D2651
Sun, 04 Mar 2018 05:53:59 +0530 py3: use bytes instead of str to make sure we use bytes internally
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 05:53:59 +0530] rev 36726
py3: use bytes instead of str to make sure we use bytes internally Differential Revision: https://phab.mercurial-scm.org/D2650
Sun, 04 Mar 2018 22:37:41 +0530 py3: use util.forcebytestr instead of str to convert error messages
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 04 Mar 2018 22:37:41 +0530] rev 36725
py3: use util.forcebytestr instead of str to convert error messages Differential Revision: https://phab.mercurial-scm.org/D2649
Sat, 03 Mar 2018 23:49:39 -0500 lock: block signal interrupt while making a lock file
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 23:49:39 -0500] rev 36724
lock: block signal interrupt while making a lock file On Windows where symlink isn't supported, util.makelock() could leave an empty file if interrupted immediately after os.open(). This empty lock never dies as it has no process id recorded. ld = os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL) # an interrupt may occur here os.write(ld, info) os.close(ld) This was a long-standing bug of TortoiseHg which runs a command-server and kills it by CTRL_C_EVENT, reported by random Windows users. https://bitbucket.org/tortoisehg/thg/issues/4873/#comment-43591129 At first, I tried to fix makelock() to clean up a stale lock file, which turned out to be hard because any instructions may be interrupted by a signal. ld = None try: # CALL_FUNCTION # os.open(...) # an interrupt may occur here # STORE_FAST # ld = ... ld = os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL) os.write(ld, info) ... return True except: if ld: ... os.unlink(pathname) return False So I decided to block signals by temporarily replacing the signal handlers so makelcok() and held = 1 will never be interrupted. Many thanks to Fernando Najera for investigating the issue.
Sun, 04 Mar 2018 09:40:12 -0500 fuzz: add some more docs about building/running fuzzers
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 09:40:12 -0500] rev 36723
fuzz: add some more docs about building/running fuzzers Differential Revision: https://phab.mercurial-scm.org/D2635
Sun, 04 Mar 2018 11:49:33 -0500 util: also silence py3 warnings from codec module
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 11:49:33 -0500] rev 36722
util: also silence py3 warnings from codec module Fixes warnings like this: + mercurial/util.py:2446: DeprecationWarning: invalid escape sequence '\d' + return codecs.escape_decode(s)[0] Differential Revision: https://phab.mercurial-scm.org/D2642
Thu, 15 Feb 2018 18:05:58 -0800 docs: small fixes for profiling.nested and the overall description
Kyle Lippincott <spectral@google.com> [Thu, 15 Feb 2018 18:05:58 -0800] rev 36721
docs: small fixes for profiling.nested and the overall description - profiling.nested defaults to 0, not 5 - profiling is not always done with lsprof Differential Revision: https://phab.mercurial-scm.org/D2641
Sun, 04 Mar 2018 10:20:41 -0500 scmutil: fix oversight in b76248e51605c6 where I forgot to use msg
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 10:20:41 -0500] rev 36720
scmutil: fix oversight in b76248e51605c6 where I forgot to use msg Thanks to Yuya for spotting my mistake. Differential Revision: https://phab.mercurial-scm.org/D2636
Sun, 04 Mar 2018 10:23:07 -0500 hghave: remove unused "as ex" in exception block
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 10:23:07 -0500] rev 36719
hghave: remove unused "as ex" in exception block I overlooked this when removing a debug print in another change. Differential Revision: https://phab.mercurial-scm.org/D2637
Sat, 03 Mar 2018 18:33:10 -0500 tests: port test-log to Python 3
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 18:33:10 -0500] rev 36718
tests: port test-log to Python 3 Required some porting to >>> inline Python instead of using heredocs into $PYTHON. Differential Revision: https://phab.mercurial-scm.org/D2621
Sat, 03 Mar 2018 19:12:47 -0500 py3: make gettext domain a system string
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 19:12:47 -0500] rev 36717
py3: make gettext domain a system string
Sun, 04 Mar 2018 07:03:50 -0500 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org> [Sun, 04 Mar 2018 07:03:50 -0500] rev 36716
templater: fix position of terminator character in error message Since a template expression starts after the '{' character, the expression should be considered to end immediately before the terminator '{'.
Sun, 04 Mar 2018 10:42:51 -0500 merge with stable
Augie Fackler <augie@google.com> [Sun, 04 Mar 2018 10:42:51 -0500] rev 36715
merge with stable
Sat, 03 Mar 2018 15:31:37 -0800 revsetlang: add a hint for more useful parse errors
Ryan McElroy <rmcelroy@fb.com> [Sat, 03 Mar 2018 15:31:37 -0800] rev 36714
revsetlang: add a hint for more useful parse errors This logic is largely based on the similar logic added to template error messages in D2608 and D2609, but with a few tweaks based on how revsets actually work. Differential Revision: https://phab.mercurial-scm.org/D2619
Sat, 03 Mar 2018 11:07:46 -0800 setup: ignore extension load failures when finding working hg
Ryan McElroy <rmcelroy@fb.com> [Sat, 03 Mar 2018 11:07:46 -0800] rev 36713
setup: ignore extension load failures when finding working hg Previously, `make local` would fail if any extension was not properly loading. Differential Revision: https://phab.mercurial-scm.org/D2589
Sat, 03 Mar 2018 00:35:59 -0500 profile: colorize output on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 03 Mar 2018 00:35:59 -0500] rev 36712
profile: colorize output on Windows Previously, the ANSI codes were printed to the screen, throwing off the alignment. We could probably do this unconditionally, but it's kind of a hack, so I figured I'd limit the scope.
Sat, 03 Mar 2018 19:02:50 -0500 dispatch: don't clamp the range of the exit code twice
Kevin Bullock <kbullock+mercurial@ringworld.org> [Sat, 03 Mar 2018 19:02:50 -0500] rev 36711
dispatch: don't clamp the range of the exit code twice We already limit the range to (0, 255) in the call to sys.exit(). The duplicated operation can't possibly be hurting us, but let's clean it up to avoid confusion.
Sat, 03 Mar 2018 23:29:40 -0500 bdiff: avoid pointer arithmetic on void*
Matt Harbison <matt_harbison@yahoo.com> [Sat, 03 Mar 2018 23:29:40 -0500] rev 36710
bdiff: avoid pointer arithmetic on void* MSVC 2008 complains: mercurial/cext/bdiff.c(106) : error C2036: 'void *' : unknown size mercurial/cext/bdiff.c(107) : error C2036: 'void *' : unknown size Maybe it's a gcc extension? https://stackoverflow.com/questions/37460579/error-c2036-void-unknown-size
Sat, 03 Mar 2018 19:26:30 -0500 fuzz: add a quick README to try and document how to test new fuzzers
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 19:26:30 -0500] rev 36709
fuzz: add a quick README to try and document how to test new fuzzers Differential Revision: https://phab.mercurial-scm.org/D2633
Sat, 03 Mar 2018 18:58:13 -0500 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 18:58:13 -0500] rev 36708
fuzz: add a fuzzer for xdiff Based entirely on the fuzzer for bdiff. Differential Revision: https://phab.mercurial-scm.org/D2632
Sat, 03 Mar 2018 12:39:15 -0800 tests: add tests about diff quality
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:39:15 -0800] rev 36707
tests: add tests about diff quality These show the differences between bdiff and xdiff. Differential Revision: https://phab.mercurial-scm.org/D2604
Sat, 03 Mar 2018 12:39:14 -0800 run-tests: allow #require inside #if
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:39:14 -0800] rev 36706
run-tests: allow #require inside #if Used by the next patch. Differential Revision: https://phab.mercurial-scm.org/D2605
Sat, 03 Mar 2018 12:39:14 -0800 mdiff: add a config option to use xdiff algorithm
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:39:14 -0800] rev 36705
mdiff: add a config option to use xdiff algorithm The `experimental.xdiff` will affect the default diffopts and make mdiff use the xdiff algorithm for better diff quality. Differential Revision: https://phab.mercurial-scm.org/D2603
Sat, 03 Mar 2018 12:39:14 -0800 bdiff: add a xdiffblocks method
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:39:14 -0800] rev 36704
bdiff: add a xdiffblocks method This is similar to `bdiff.blocks`, but uses xdiff as the backend. The indent heuristic is turned on by default since it has little overhead and improves diff quality significantly. Differential Revision: https://phab.mercurial-scm.org/D2602
Sat, 03 Mar 2018 12:39:11 -0800 xdiff: reduce indent heuristic overhead
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:39:11 -0800] rev 36703
xdiff: reduce indent heuristic overhead Adds some threshold to avoid expensive cases, like: ``` #!python open('a', 'w').write(" \n" * 1000000) open('b', 'w').write(" \n" * 1000001) ``` The indent heuristic is O(N * 20) (N = 1000000) for the above case, and makes diff much slower. Before this patch (system git 2.14.2): ``` git diff --no-indent-heuristic a b 0.21s user 0.03s system 100% cpu 0.239 total git diff --indent-heuristic a b 0.77s user 0.02s system 99% cpu 0.785 total ``` After this patch (git 2fc74f41, with xdiffi.c patched): ``` # with the changed xdiffi.c git diff --indent-heuristic a b 0.16s user 0.01s system 90% cpu 0.188 total git diff --no-indent-heuristic a b 0.18s user 0.01s system 99% cpu 0.192 total ``` Now turning on indent-heuristic has no visible impact on performance. Differential Revision: https://phab.mercurial-scm.org/D2601
Sat, 03 Mar 2018 12:38:41 -0800 xdiff: add a bdiff hunk mode
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 12:38:41 -0800] rev 36702
xdiff: add a bdiff hunk mode xdiff generated hunks for the differences (ex. questionmarks in the `@@ -?,? +?,? @@` part from `diff --git` output). However, bdiff generates matched hunks instead. This patch adds a `XDL_EMIT_BDIFFHUNK` flag used by the output function `xdl_call_hunk_func`. Once set, xdiff will generate bdiff-like hunks instead. That makes it easier to use xdiff as a drop-in replacement of bdiff. Note that since `bdiff('', '')` returns `[(0, 0, 0, 0)]`, the shortcut path `if (xscr)` is removed. I have checked functions called with `xscr` argument (`xdl_mark_ignorable`, `xdl_call_hunk_func`, `xdl_emit_diff`, `xdl_free_script`) work just fine with `xscr = NULL`. Test Plan: Will be tested in a later patch. Differential Revision: https://phab.mercurial-scm.org/D2575
Sat, 03 Mar 2018 10:39:55 -0800 xdiff: remove patience and histogram diff algorithms
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 10:39:55 -0800] rev 36701
xdiff: remove patience and histogram diff algorithms Patience diff is the normal diff algorithm, plus some greediness that unconditionally matches common common unique lines. That means it is easy to construct cases to let it generate suboptimal result, like: ``` open('a', 'w').write('\n'.join(list('a' + 'x' * 300 + 'u' + 'x' * 700 + 'a\n'))) open('b', 'w').write('\n'.join(list('b' + 'x' * 700 + 'u' + 'x' * 300 + 'b\n'))) ``` Patience diff has been advertised as being able to generate better results for some C code changes. However, the more scientific way to do that is the indention heuristic [1]. Since patience diff could generate suboptimal result more easily and its "better" diff feature could be replaced by the new indention heuristic, let's just remove it and its variant histogram diff to simplify the code. [1]: https://github.com/git/git/commit/433860f3d0beb0c6f205290bd16cda413148f098 Test Plan: `gcc -fPIC *.c --shared -o xdiff.so` still builds. Differential Revision: https://phab.mercurial-scm.org/D2573
Sat, 03 Mar 2018 10:39:43 -0800 xdiff: vendor xdiff library from git
Jun Wu <quark@fb.com> [Sat, 03 Mar 2018 10:39:43 -0800] rev 36700
xdiff: vendor xdiff library from git Vendor git's xdiff library from git commit d7c6c2369d7c6c2369ac21141b7c6cceaebc6414ec3da14ad using GPL2+ license. There is another recent user report that hg diff generates suboptimal result. It seems the fix to issue4074 isn't good enough. I crafted some other interesting cases, and hg diff barely has any advantage compared with gnu diffutils or git diff. | testcase | gnu diffutils | hg diff | git diff | | | lines time | lines time | lines time | | patience | 6 0.00 | 602 0.08 | 6 0.00 | | random | 91772 0.90 | 109462 0.70 | 91772 0.24 | | json | 2 0.03 | 1264814 1.81 | 2 0.29 | "lines" means the size of the output, i.e. the count of "+/-" lines. "time" means seconds needed to do the calculation. Both are the smaller the better. "hg diff" counts Python startup overhead. Git and GNU diffutils generate optimal results. For the "json" case, git can have an optimization that does a scan for common prefix and suffix first, and match them if the length is greater than half of the text. See https://neil.fraser.name/news/2006/03/12/. That would make git the fastest for all above cases. About testcases: patience: Aiming for the weakness of the greedy "patience diff" algorithm. Using git's patience diff option would also get suboptimal result. Generated using the Python script: ``` open('a', 'w').write('\n'.join(list('a' + 'x' * 300 + 'u' + 'x' * 700 + 'a\n'))) open('b', 'w').write('\n'.join(list('b' + 'x' * 700 + 'u' + 'x' * 300 + 'b\n'))) ``` random: Generated using the script in `test-issue4074.t`. It practically makes the algorithm suffer. Impressively, git wins in both performance and diff quality. json: The recent user reported case. It's a single line movement near the end of a very large (800K lines) JSON file. Test Plan: Code taken as-is. Differential Revision: https://phab.mercurial-scm.org/D2572 # no-check-commit for vendored code
Sat, 03 Mar 2018 14:30:21 -0800 templater: provide hint for multi-line templates with parse errors
Ryan McElroy <rmcelroy@fb.com> [Sat, 03 Mar 2018 14:30:21 -0800] rev 36699
templater: provide hint for multi-line templates with parse errors Previously, we punted. Now we "rewrite" the template's newlines to r'\n' and offset the hint appropriately. Differential Revision: https://phab.mercurial-scm.org/D2609
Sat, 03 Mar 2018 14:23:40 -0800 templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com> [Sat, 03 Mar 2018 14:23:40 -0800] rev 36698
templater: add hint to template parse errors to help locate issues Previously, we would print the error name and location, but this isn't as helpful as we can be. Let's add a hint that shows the location where we encountered the parse error. Differential Revision: https://phab.mercurial-scm.org/D2608
Fri, 02 Mar 2018 07:17:06 +0530 py3: use b"%d" to covert integer to bytes instead of str
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:17:06 +0530] rev 36697
py3: use b"%d" to covert integer to bytes instead of str Differential Revision: https://phab.mercurial-scm.org/D2618
Fri, 02 Mar 2018 07:16:33 +0530 py3: use bytes() instead of str()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:16:33 +0530] rev 36696
py3: use bytes() instead of str() Differential Revision: https://phab.mercurial-scm.org/D2617
Fri, 02 Mar 2018 07:15:54 +0530 py3: replace __str__ to __bytes__ in hgext/journal.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:15:54 +0530] rev 36695
py3: replace __str__ to __bytes__ in hgext/journal.py Differential Revision: https://phab.mercurial-scm.org/D2616
Wed, 31 Jan 2018 22:21:33 -0800 testrunner: add option to sort tests by previous run time
Martin von Zweigbergk <martinvonz@google.com> [Wed, 31 Jan 2018 22:21:33 -0800] rev 36694
testrunner: add option to sort tests by previous run time We currently estimate the time a test file will take to run by taking its length and its extension into account (.py is assumed to be much faster). On top of that, we have set of multipliers saying e.g. that tests with "i18n" in the name are estimated to be 10 times slower than other tests. Since a1eff44c432b (tests: write recent run times to a file named tests/.testtimes, 2016-01-04), we have a simpler way of estimating the run time: simply read the previous time from .testtimes. Although we haven't needed to adjust the multipliers since b4d7743e174a (run-tests: add more scheduling weight hints, 2015-12-04), it's just much simpler not to have to. Perhaps more importantly than not having to maintain the multipliers for core is that non-core users of the test runner cannot update the multipliers. 0 1 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 2 c c o i c p p r p p p c r p p p p p l p p p p p p p p p c p p p p p p s p p c p p c c g c c o g h g 3 o o b m o u u u u u u h e u u u u u a u u u u u u u u u o u u u u u u u u u h u u h h e o o b e e l 4 n n s p n s s n s s s e b s s s s s r s s s s s s s s s p s s s s s s b s s e s s e e n n m s n l o 5 t t o o v h h - h h h c a h h h h h g h h h h h h h h h y h h h h h h r h h c h h c c d v m o d p g 6 r r l r e - - t - - - k s - - - - - e - - - - - - - - - t - - - - - - e - - k - - k k o = a = o . . 7 i = e t r r r e c c c - e c c c c c f c c c c c c c c c r c c c c c c p c c - c c - - c p n o c . . 8 b a t s t a a s h h h p - h h h h h i h h h h h h h = h a h h h h h h o h h c h h c m - a d b . . . 9 - b e - - c c t e e e y c e e e e e l e e e e e e e c e c e e e e e e - e e o e e o o j t - s . . . 10 p o - c s e e s c c c 3 h c c c c c e c c c = = c c h = e c c c = c c s c c d c c n d a c t o . . . 11 e r c h v . . . k k k - e k k k k k s k k k o c k = e c - k k k c k k v k k e k k f u . h e l . . . 12 r = h e n . . . h h = c c = h h h = - h h = b h h a c o h = = = o h h n h h . = = i l . b m e . . . 13 f c e = - . . . = e l o k e e e e c u e = c s e = c k n e h d o n e = . = e . c h g e . o p t . . . 14 . h c l s . . . h = o m - x = a a o p = h h m c b l - v u g i b v a c . c = . h g . - . m l e . . . 15 . e k a o . . . g s g p r t r = = n d c g e a k u . h e r w r s e = o . h h . e w . i . b a - . . . 16 . c h r u . . . w u . a = e e s g v a o w c r - n . e r i e s o r h n . e t . c e . m . . t b . . . 17 . k e g r . . . e b . t s n v h e e t n e k k s d . l t s b t l t g v . c t . k b . p . . e u . . . 18 . - a e c . . . b r . . u s s e n r e v b - e h l . p - t - a e - w = . k p . - - . o . . . n . . . 19 . c d f e . . . d e . . b i e l d t . - e r b e . . s i s t t s e b . - - . p c . r . . . d . . . 20 . o s i . . . . i p . . r o t v o - . = f x - a 2 . . v c y e e v b u . p b . y o . t . . . l . . . 21 . m . l . . . . r o . . e n . e c s . r i e t n - . . n s m - . n - n . y a . f m . s . . . e . . . 22 . m . e . . . . . . . . p . . . - v . e l c e g f . . - . r r . - j d . l d . l m . . . . . - = . . 23 . i . s . . . . . . . . o . . . r n . b e u m . o . . s . e a . m s l . i - . a a . . . . . s i . . 24 . t . . . . . . . . . . - . . . o - . a l t p . r . . i . v c . o o e . n s . k n . . = . . t m . . 25 . . . . . . . . . . . . d . . . . e . s o e l . m . . n . . e . v n 2 . t e . e d . . = . . r p . . 26 . . . . . . . . . . . . e . . . . n . e g . a . a . . k . . . . e . - . . r . s s . . s . . i o . . 27 . . . . . . . . . . . . e . . . . c . - . . t . t . . . . . . . . . e . . v . . . . . t . . p r . . 28 . = . . . . . . . . . . p . . . . o . o . . e = . . . . . . . . . . x . . e . . . . . r . . . t . . 29 . m . . . . . . . . . . - . . . . d . b . = . r . . . . . . . . . . c . . r . . . . . i . . . . . . 30 . e . . . . . . . . . . n . . . . i . s . c . e . . . . . . . . . . h . . . . . . . . p . . . . . . 31 . r . . . . . . . . . . e . . . . n . o . o . n . . . . . . . . . . a . . . . . . . . . . . . . . . 32 . g . . . . . . . . . . s . . . . g . l . m . a . . . . . . . . . . n . . . . . . . . . . . . . . . 33 . e . . . . . . . . . . t . . . . . . e . m . m . . . . . . . . . . g . . . . . . = . . . . . . . . 34 . - . . . . . . . . . . e . . . . . . t . i . e . . . . . . . . . . e . . . . . . l . . . . . . . . 35 . c . . . . . . . . . . d . . . . . . e . t . - . . . . . . . . . . . . . . . . . f . . . . . . . . 36 . h . . . . . . . . . . - . . . . . . . . - . m . . . . . . . . . . . . . . . . . s . . . . . . . . 37 . a . . . . . . . . . . c . . . = . . . . i . e . . . . . . . . . . . . . . . . . . . . . . . . . . 38 . n . . . . . . . . . . h . . . h = . . . n . r . . . . . . . . . . . . . . . . . . . . . . . . . . 39 . g . . . . . . . . . . a . . . t c . . . t . g . . . . . . . . . . . . . . . . . . . . . . . . . . 40 = e . . . . . . . . . = n . . . t o . . . e . e . . . . . . . . . . . . . . . . . . . . . . . . . . 41 b d = . . . . . . . . h g . . . p n . . . r . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 42 o e b . . . . . . . . i e . . . s v . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 o l o . . . . . . . . g . . . . . e . . = c . . . . = . . . . . . . . . . . . . . . . . . . . . . . 44 k e o . . . . . . . . h . . . . . r . . g t . . . . h . . . . . . . . . . . . . . . . . . . . . . . 45 m t k . . . . . . . . l . . . . . t . . r i . . . . o . . . . . . . . . . . . . . . . . . . . . . . 46 a e m . . . . . . . . i . . . . . - . . a v . . . . o . . . . . . . . . . . . . . . . . . . . . . . 47 r . a . . . . . . . . g . . . . . g . . f e . . = . k . . . . . . . . . . . . . . . . . . . . . . . 48 k . r . . . . . . . . h . . . . . i . . t . . . c . . . . . . . . . . . . . . . . . . . . . . . . . 49 s . k . . . . . . . . t . . . . . t . . . . . . h . . . . . . . . . . . . . . . . . . . . . . . . . 50 - . s . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . 51 p . - . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . 52 u . p . . . . . . . . . . . . . . . . . . . . . k . . . . . . . . . . . . . . . . . . . . . . . . . 53 s . u . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . 54 h . s . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . = . . . . . . . . . . . . . . . . 55 p . h . . . . . . . . . . . . . . . . . . . . . l . . . . . . . . = . . . . . . . . . . . . . . . . 56 u . p . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . r . . . . . . . . . . . . . . . . 57 l . u . . . . . . . . . . . . . . . . . . . . . n . . . . . . . . e . . . . . . . . . . . . . . . . 58 l . l . . . . . . . . . . . . . . . . . . . . . g . . . . . . . . v . . . . . . . . . . . . . . . . 59 . . l . . . . . . . . . . . . . . . . . . . . . = . . . . . . . . s . . . . . . . . . . . . . . . . 60 . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . e . . . . . . . . . . . . . . . . 61 . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . t . . . . . . . . . . . . . . . . 62 . . . . . . . . . . . . . . . . . . . . . . . . n . . . . = . . . 2 . . . . . . . . . . . . . . . . 63 . . . . . . . . . . . . . . . . . . . . . . . . v . . . . h . . . . . . . . . . . . . . . . . . . . 64 . . . . . . . . . . . . . . . . . . . . . . . . e . . . . g . = . . . . . . . . . = . . . . . . . 65 . . . . . . . . . . . . . . . . . . . . . . . . r . . . . w = . b . . . . . . . . . c . . . . . . . 66 . . . . . . . . . . . . . . . . . . . . . . . . t . . . . e l . o . . . . . . . . . l . . . . . . . 67 . . . . . . . . . . . = . . . . . . . . . . . . - . . . . b a . o . . . . . . . . . o . . . . . . . 68 . . . . . . . . . . . k . . . . . . . . . . . . h . . . . - r . k . . . . . . . . . n . . . . . . . 69 . . . . . . . . . . . e . . . . . . . . . . . . g . . . . d g . m . . . . . . . . . e . . . . . . . 70 . . . . . . . . . . . y . . . . . . . . . . . . - . . . . i e . a . . . . . . . = . . . . . . . . . 71 . . . . . . . . . . . w . . . . . . . . . . . . s . . . . f f . r . . . . . . . c . . . . . . . . . 72 . . . . . . . . . . . o . . . . . . . . . . . . v . . . . f i . k . . . . . . . o . . . . . . . . . 73 . . . . . . . . . . . r . . . . . . . . . . . . n . . . . s l . s . . . . . . . m . . . . . . . . . 74 . . . . . . . . . . . d . . . . . . . . . . . . . . . . . . e . . . . . . . . . m . . . . . . . . . 75 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . i . . . . . . . . . 76 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . t . . . = . . . = . 77 . . . . = . . . . . . . . . . . . . . . . . . . . . . . . . m . . . . . . = . . - . . . c . . . r . 78 . . . . b . . . . . . . . . . . . . . . . . . . . . . . . . i . . . . . . m . . a . . . o . . . e . 79 . . . . r . . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . e . . m . . . n . . . v . 80 . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . r . . e . . . v . . . e . 81 . . . . n . . . . . . . . . . . . . . . . . . . . = . . . . . . . . . . . g . . n . . . e . . . r . 82 . . . . c . . . . . . . . . . . . . . . . . . . = m . . . . . . . . . . . e . . d . . . r . . . t . 83 . . . . h . . . . . . . . . . . . . . . . . . . p q . . . . . . . . . . . - . = . . . . t . . . . . 84 . . . . e . . . . . . . . . . . . . . . . . . . h . . . . . . . . . . . . f . u . . . . - . . . . . 85 . . . . s . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . . o . p . . . . s . . . . . 86 . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . r . g . . . . v . . . . . 87 . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . c . r . . . . n . . . . . 88 . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . e . a . . . . - . . . . . 89 . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . d . . . . b . . . . . 90 . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . e . . . . r . . . . . 91 . . . . . . . . . . . . . . . . . . . . . . . . x . . . . . . . . . . . . . . - . . . . a . . . . . 92 . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . r . . . . n . . . . . 93 . . . . . . . . . . . . . . . . . . . . . . . . h . . . . . . . . . . . . . . e . . . . c . . . . . 94 . . . . . . . . = . . . . . . . . . . . . . . . a . . . . . . . . . . . . . . p . . . . h . . . . . 95 . . . . . . . . c . . . . . . . . . . . . . . . n . . . . = . . . . . . . . . o . . . . e . . . . . 96 . . . . . . . . o . . . . . . . . . . . . . . . g . . . . g . . . . . . . . . . . . . . s . . . . . 97 . . . . . . . . m . . . . . . . . . . . . . . . e . . . . e . . . . . . . . . . . . . . . . . . . . 98 . . . . . . . . m . . . . . . . . . . . . . . . . . . . . n . . . . . . . . . . . . . . . . . . . . 99 . . . . . . . . a . . . . . . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . . . . . . 100 . . . . . . . . n . . . . . . . . . . . . . . . . . . . . o . . . . . . . . = . . . . . . . . . . . 101 . . . . . . . . d . . . . = . . . . . . . . . . . . . . . c . . . . . . . . m . . . . . . . . . . . 102 . . . . . . . . s . . . . s . . . . . . . . . . . . . . . - . . . . . . . . e . . . . . . . . . . . 103 . . . . . . . . e . . . . u . . . . . . . . . . . . . . . d . . . . . . . . r . . . . . . . . . . . 104 . . . . . . . . r . . . . b . . . . . . . . . . . . . . . e . . . . . . . . g . . . . . . . . . . . 105 . . . . . . . . v . . . . r . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 106 . . . . . . . . e . . . . e . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . 107 . . . . . . . . r . . . . p . . . . . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . 108 . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . . . . 109 . . . . . . . . . . . . . - . . = . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . . . . 110 . . . . . . . . . . . . . g . . t . . . . . . . . . . . . . . . . . . . . . l . . . . . . . . . . . 111 . . . . . . . . . . . . . i . . r . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . 112 . . . . . . . . . . . . . t . . e . . . . . . . . . . . . = . . . . . . . . . . . . . . . . . . . . 113 . . . . . . . . . . . . . . . . e . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . 114 . . . . . . . . . . . . . . . . m . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . 115 . . . . . . . . . . . . . . . . a . . . . . . . . . . . . g . . . . . . . . . . . . . . . . . . . . 116 . . . . . . . . . . . . . . . . n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 . . . . . . . . . . . . . . . . f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 . . . . . . . = . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . = . . . . . . . . . . 120 . . . . . . . t . . . . . . . . s . . . . . . . . . . . . . . . . . . . . . . = . . . . . . . . . . 121 . . . . . . . a . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . t . . . . = . . . . . 122 . . . . . . . g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . . . . c . . . . . 123 . . . . . . . s . . . . . . . . . . . . . = . . . . . . . . . . . . . . . . . a . . . . o . . . . . 124 . . . . . . . . . . . . . . . . . . . . . h . . . . . . . . . . . . . . . . . n . . . . n . . . . . 125 . . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . s . . . . v . . . . . 126 . . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . p . . . . e . . . . . 127 . . . . . . . . . . . . . . . . . . . . . p . . . . . . . . . . . . . . . . . l . . . . r . . . . . 128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . . . . t . . . . . 129 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n . . . . . . . . . . 130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . 131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 . . . . . . . . . . . . = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 . . . . . . . . . . . . n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 . . . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 . . . . . . . . . . . . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 . . . . . . . . . . . . f . . . . . . . . . . . . . . = . . . . . . . . . . . . . . . . . . . . . . 144 . . . . . . . . . . . . i . . . . . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . . 145 . . . . . . . . . . . . l . . . . . . . . . . . . . . h . . . . . . . . . . . . . . . . . . . . . . 146 . . . . . . . . . . . . e . . . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . 147 . . . . . . . . . . . . m . . . . . . . . . . . . . = s . . . . . . . . . . . . . . . . . . . . . . 148 . . . . . . . . . . . . a . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . . = . . . . . 149 . . . . . . . . . . . . p . . . . . . . . . . . . . n s = . . . . . . . . . . . . . . . b . . . . . 150 . . . . . . . . . . . . . . . . . . . . . . . . . . c . h . . . . . . . . . . . . . . . u . . . . . 151 . . . . . . . . . . . . . . . . . . . . . . . . . . o . g . . . . . . . . . . . . . . . n . . . . . 152 . . . . . . . . . . . . . . . . . . . . . . . . . . d . w . . . . . . . . . . . . . . . d . . . . . 153 . . . . . . . . . . . . . . . . . . = . . . . . . . i . e . . . . . . . . . . . . . . . l . . . . . 154 . . . . . . . . = . . . . . . . . . w . . . . . . . = . b . . . . . . . . . . . . . . . e . . . . . 155 . . . . . . . . = . . . . . . . . . a . . . . . . . m . . . . . . . . . . . . . . . . . . . . . . . 156 . . . . . . . . r . . . . . . . . . l . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . 157 . . . . . . . . e . . . . . . . . . k . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . 158 . . . . . . . . b . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . 159 . . . . . . . . a . . . . . . . . . . . . . . . . . p . . . . . . . . . . . . . . . . . . . . . . . 160 . . . . . = . . s . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . 161 . . . . . b . . e . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . . . . . . . . . . . 162 . . . . = u . . - . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . 163 . . . . = n . . s . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . 164 . . . . c d . . c . . . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . . . . . . . . . . 165 . . . . o l . . e . . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . 166 . . . . m e . . n . . . . . . . . . . . . . . . . . f . . . . . . . . . . . . . . . . . . . . . . . 167 . . . . m 2 = . a . . . . . . . . . . . . . . . . . f . . . . . . . . . . . . . . = . . . . . . . . 168 . . . . i - i . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g . . . . . . . . 169 . . . . t r m . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . 170 . . . . . e p . o . . . . . . . . = . . . . . . . . . . . . . . . . . . . . . . . n . . . . . . . . 171 . . . . . m o . - . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . 172 . . . . . o r . g . . . . . . . . l . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . 173 . . . . . t t . l . . . . . . . . o . . . = . . . . . . . . . . . . . . . . . . . a . . . . . . . . 174 . . . . . e - . o . . . . . . . . n . . . m . . . . . . . . . . . . . . . . . . . l . . . . . . . . 175 . . . . . - g . b . . . . . . . . e . . . q . . . . . . . . . . . . . . . . . . . d . . . . . . . . 176 . = . . . c i . a . . . . . . . . b . . . - . . . . . . . . . . . . . . . . . . . e . . . . . . . . 177 . i . . . h t . l . . . . . . . . u . . . h . . . . . . = . . . . . . . . . . . . l . . . . . . . . 178 . 1 . . . a . . . . . . . . . . . n . . . e . . . . . . b . . . . . . . . . . . . t . . . . . . . . 179 . 8 . . . n . . . . . . . . . . . d . . . a . . . . . . i . . . . . . . . . . . . a . . . . . . . . 180 . n . . . g . . . . . . . . . . . l . . . d . . . . . . s . . . . . . . . . . . . . . . . . . . . . 181 . . . . . e . . . . . . . . . . . e . . . e . . . . . . e . . . . . . . . . . . . . . . . . . . . . 182 . . . . . g . . . . . . . . . . . s . . = r . . . . . . c . . . . . . . . . . . . . . . . . . . . . 183 . . . . . r . . . . . . . . . . . . . . o - . . . . . . t . . . . . . . . . . . . . . . . . . . . . 184 . . . . . o . . . . . . . . . . . . . . b f . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . 185 . . . . . u . . . . . . . . . . . . . . s r . . = . . . . . . . . . . . . . . . . . . . . . . . . . 186 . . . . . p . . . . . . . . . . . . . . o o . . s . . . . . . . . . . . . . . . . . . . . . . . . . 187 . . . . . . . . . . . . . . . . . . . . l m . . s . . . . . . . . . . . . . . . . . . . . . . . . . 188 . . . . . . . . . . . . . . . . . . . . e . . . h . . . . . . . . . . . . . . . . . . . . . . . . . 189 . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 . . . . . . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 . . . . . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . = . . . . . . . . . . . . . . 196 . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . t . . . . . . . . . . . . . . 197 . . . . . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . r . . . . . . . . . . . . . . 198 . . . . . . . . . . . . . . . . . . . . b . . . . . . . . . . . . . . e . . . . . . . . . . . . . . 199 . . . . . . . . . . . . . . . . . . . . u . . . . . . . . . . . . . . e . . . . . . . . . . . . . . 200 . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . d . . . . . . . . . . . . . . 201 . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . i . . . . . . . = . . . . . . 202 . . . . . . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . s . . . . . . . a . . . . . . 203 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . = n . . . . . . 204 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . b n . . . . . . 205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = v . . . . . . i o . . . . . . 206 . = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h e . . . . . . s t . . . . . . 207 . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g r . . . . . . e a . . . . . . 208 . u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . w y . . . . . = c t . . . . . . 209 . b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . n t e . . . . . . 210 . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b . . . . . . o . . . . . . = . 211 . e . . . . . . . . . . . . . . = . . . . . . . . . . . . . . . . . - . . . . . . t . . . . . . m . 212 . p . . . = . . . . . . . . . . p . = . . . . . . . . . . . . . . . a . . . . . . i . . . . . . q . 213 . o . . . r . . . . . . . . . . u p . . . . . . . . . . . . . . . n . . . . . . f . . . . . . - . 214 . - . . . e . . . . . . . . . . s = u . . . . = . . . . . . . . = = n . . . . . . y . . . . . . h . 215 . r . . . m . . . . . . . . . . h c l . . . . d . . . . . . . . s o o . . . . . . . . . . . . . e . 216 . e . . . o . . . . . . . . . . - o l . . . . e . . . . . . . . s b t . . . . . . . . . . . . . a . 217 . c . . . v . . . . . . . . . . w n - . . . = v . . . = . . . . h s a . . . . . . . . . . . . . d . 218 . u . . . e . . . . . . . . . . a v p . . . h e . . . b . . . . - o t . . . . . . . . . . . . . e . 219 . r . . . . . . . . . . . . . . r e u = . . t l . . . a . . . . b l = . . . . . . . . . . . . . r . 220 . s . . . . . . . . . . . . . . n r l r . . t - . . . c . . . . u e h . . . . . . . . . . . . . - . 221 . i . . . . . . . . . . . . . . . t l e . . p w . . . k . . . . n t g . . . . . . . . . . . . . d . 222 . o . . . . . . . . . . . . . . . - - b . . - a . . . o . . . . d e w . . = . . . . . . . . . . a . 223 . n . . . . . . . . . . . . . . . s c a . . b r . . . u . . . . l - e . . s . . . . . . . . . . t . 224 . . . . . . . . . . . . . . . . . v o s . . u n . . . t . . . . e d b . . e . . . . . . . . . . e . 225 . . . . . . . . . . . . . . . . . n r e . . n i . . . . . . . . 1 i = . . t . . . . . . . . . . . . 226 . . . . . . . . . . . . . . . . . - r - . . d n . . . . . . . . . v c . . d . . . . . . . . . . . . 227 . . . . . . . . . . . . . . . . . s u c . . l g . . . . . . . . . e l . . i . . . . . . . . . . . . 228 . . . . . . . . . . . . . . . . . t p o . . e s . . . . . = . . . r o . . s . . . . . . . . . . . . 229 . . . . . . . . . . . . . . . . . a t l . . 1 = . . . . . c . . . g n . . c . . . . . . . . . . . . 230 . . . . . . . . . . . . . . . . . r i l . . . h . . . . . l . . . e e . . o . . . . . . . . . . . . 231 . . . . . . . = . . . = . . . . . t o a . . . i . . . . . o . . . n - . . v . . . . . . . . . . . . 232 . . . . . . . m . . . w . . . . . r n p . . . s . . . . . n . . . t u . . e . . . . . . . . . . . . 233 . . . . . . . q . . . i . . . . . e . s . . . t . . . . . e . . . . n . . r . . . . . . . . . . . . 234 . . . . . . . - . . . r . . . . . v . e . . . e . . . . . - . . . . c . . y . . . . . . = . . . . = 235 . . . . . . = s . . . e . . . . . . = . . . . d . . . . . u . . . . o . . . . . . = . . o . . . . u 236 . . . . . . l u . . . p . . . . . . p . . . . i . . . . . n . . . . m . . . . . . h . . b . . . . p 237 . . . . . . a b . . . r . . . . . . r . . . . t . . . . . c . . . . p . . . . . . i . . s . . = . d 238 . . . . . . r r . . . o . . . . . . o . . . . - . . . . . o . . . . r . . . . . . s . . h . . a . a 239 . . . . . . g e . . . t . . . . . . g . . . . o . . . . . m . . . . e . . . . . . t . . i . . l . t 240 . . . . . . e p . . . o . . . . . = r . . . . b . . . . . p . . . . s . . . . . . e . . s . . i . e 241 . . . . . . f o . . . . . . . . . a e . . . . s . . . . . r . . . . s . . . . . . d . . t . . a . - 242 . . . . . . i . . . . . . . . . . r s . . . . o . . . . . e . . . . e . . . . . . i . . o . . s . b 243 . . . . . . l . . . . . . . . . . c s . = . . l . . . . . s . . . . d . . . . . . t . . r . . . . r 244 . . . . . . e . . . . . . . . . . h . . g . . e . . . . . s . . . . . . . . . . . - . . y . . . . a 245 . . . . . . s . . . . . . . . . . i . . e . . t . . . . . e . . . . . . . . . . . a . . . . . . . n 246 . . . . . . - . . . . . . . . . . v . . t . . e . . . . . d . . . . . . . . . . . r . . . . . . . c 247 . . . . . . w . . . . . . . . . . e . . b . . . . . . . . . . . . . . . . . . . = g . . . . . . . h 248 . . . . . . i . . . . . . . . . . . = . u . . . . . . . . . . . . . . . . . . . g u . . . . . . . e 249 . . . . . . r . . . . . . . . . . . s . n . . . . . . . . . . . . . . . . . . . l m . . . . . . . s 250 . . . . = . e . . . . . . . . . . . t . d . . . . . . . . . . . . . . . . . . . o e . . . . . . . . 251 . . . . m . p . . . . . . . . . . . a . l . . . . . . . . . . . . . . . . . . . b n . . . . . . . . 252 . . . . e . r . . . . . . . . . . . t . e . . . . . . . . . . . . . . . . . . . a t . . . . . . . . 253 . = . . r . o . . . . . . . . . . . u . . . . . . . . . . . . . . . . . . . . . l s . . . . . . . . 254 . r . . g . t . . . . . . . . . . . s . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . . 255 . e . . e . o . . . . = . . . . . . - . . . . . . . . . . . . . . . . . = . . = p . . . . . . . . . 256 . n . . - . . . . . . b . . . . . . c . . . . . . . . . . . . . . . . . l . = c t . . . . . . . . . 257 . a . . c . . . . . . l . . . . . . o . . . . . . . . . . . . . . . . . o . c e s . . . . . . . . . 258 . m . . r . . . . . . a . . . . . . l . . . . . . . . . . . . . . . . . g . o n . . . . . . . . . . 259 . e . . i . . . . . . c . . . . . . o . = . . . . . . . . . . . . . . . - . n s . . . . . . . . . . 260 . . . . s . . . . . . k . . . . . . r . l . . . . . . . . . . . . . . . l . v o . . . . . . . . . . 261 . . . . s . . . . . . b . . . . . . . . f . . . . . . . . . . . . . . . i . e r . . . . . . . . . . 262 . . . . - . . . . . . o . . . . . . . . c . = . . . . . . . . . . . . . n . r . . . . . . . . . . . 263 . . . . c . . . . . . x . . . . . . . . o . m . . . . . . . . . . . . . e . t . . . . . . . . . . . 264 . . . . r . . . . . . . . . . . . . . . n . e . . . . . . . . . . . . . r . - . . . . . . . . . . . 265 . . . . o . . . . . . . . . . . . . . . v . r . . . . . . . . . . . . . a . h . . . . . . . . . . . 266 . . . . s . . . . . . . . . . . . . . . e . g . . . . . = . . . . . . . n . g . . . . . . . . . . . 267 . . . . s . . . . . . . . . . . . . . . r . e . . . . . f . . . . . . . g . - . . . . . . . . . . . 268 . . . . . . . . . . . . = . . . . . . . t . - . . . . e . . . . . . . e . s . . . . . . . . . . . 269 . . . . . . . . . . . . h . . . . . . . . . t . = . . . t . . . . . . . . . i . . . . . . . . . . . 270 . . . . . = . . . . . . i . . . . . . . . . y . i . . . c . . . . . . . . . n . . . . . . . . . . . 271 . . . . . c . . = . . . s . . . . . . . . . p . n . . . h . . . . . . . . . k . . . . . . . . . . . 272 . . . . . l . . f . . . t . . . . . . . . . e . c . . . . . . . . . . . . . . . . . . . . . . . . . 273 . . . . . o . . i . . . e . . . . . . . . . s . o . . . . . . . . . . . . . . . . . . . . . . . . . 274 . . . . . n . . l . . . d . . . . . . . . . . . m . . . . . . . . . . . . . . . . . . . . . . . . . 275 . . . . . e . . e . = . i . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . 276 . . . . . - . . s . e . t . . . . . . . . . . . n . . . . . . . . . . = . . . . . . . . . . . . . . 277 . . . . . p . . e . o . - . . . . . . . . . . . g . . . . . . . . . . r . . . . = . . . . . . . . . 278 . . . . . u . . t . l . c . . . . . . . . . . . - . . . . . . . . . . o . . . . m . . . . . . . . . 279 . . . . . l . . . . . . o . . . . . . . . . . . o . . . . . . . . . . l . . . . q . . . . . . . . . 280 . . . . . l . . . . . . m . . . . . . . . . . . u . . . . . . . . . . l . . . . - . . . . . . . . . 281 . . . . . = . . . . . . m . . . . . . . . . . . t . . . . . . . . . . b . . . . s . . . . . . . . . 282 . . . . . e . . . . . . u . . . . . . . . . . . g . . . . . . . . . . a . . . . u . . . . . . . . . 283 . . . = . x . . . . . . t . . . . . . . . . . . o . . . . . . . . . = c . . . . b . . . . . . . . . 284 . . . h . t . . . . . . e . . . . . . . . . . . i . . . . . . . . . n k = . . . r . . . . . . . . . 285 . . . i . d . . . . . . . . . . . . . . . . . . n . . . . . . . . . e . f . . . e . . . . . . . . . 286 . . . s . i . . . . . . . . . . . . . . . . . . g . . . . . . . . . w . n . . . p . . . . . . . . . 287 . . . t . f . . . . . = . . . . . . . . . . . . . . . . . . . . . . b . c . . . = . . . . . . . . . 288 . . . e = f . . . . . h . . . . . . . . . . . . . . . . . . . . . . r . a . . . g . . . . . . . . . 289 . . . d h . . . . . . i . . . . . . . . . . . . . . . . . = . . . . a . c . . . i . . . . . . . . . 290 . . . i g . . . . . . s . . . . . . . . . . . . . . = . . l . = . . n . h . . . t . . . . . . . . . 291 . . . t w . . . . . . t . . . . . . . . . . . . . . s . . f . m . . c . e . . . - . . . . . . . . . 292 . . . - e . . . . . . e . . = . . . . . . . . . . . h . . s . e . . h . . . . . e . . . . . . . . . 293 . . . f b . . . . . . d . . b . . . . . . . . . . . a . . - . r . . . . . . . . x . . . . . . . . . 294 . . . o = . . . . . . i . . u . . . . . . . . . . . r . . l . g = . . . . . . . p . . . . . . . . . 295 . . . l r . . . . . . t . . n . . . . . . . . . . . e . . a . e s . . . . . . . o . . . . . . . . . 296 . . . d e . . . . . . - . . d . . . . . . . . . . . . . . r . 1 t . . . . . . . r . . . . . . . . . 297 . . . . b . . . . . . e . . l . . . . . . . . . . . . . . g = . a . . . . . . . t . . . . . . . . . 298 . . . . a . . . . . . d . . e . . . = . . . . . . . . . . e = . t . . . . . . . . . . . . . . . . . 299 . . . . s . . . . . . i . . 2 . . . r . . . . . . . . . . f s . u . . . . . . . . . . . . . . . . . 300 . . . . e . . . . . . t . . - . . . e . . . . . . . . . . i p . s . . . . . . . . . . . . . . . . . 301 . . . . - . . . . . . . . . m . . . b . . . . . . . . . . l l . . . . . . = . . . . . . . . . . . . 302 . . . . c . . . . . . . . . u . . . a . . . = . . . . . . e i . . . . . . s . . . . . . . . . . . . 303 . . . . o . . . . . . . . . l . . . s . . . m . . . . . . s t . . . . . . p . . . . . . . . . . . . 304 . . . . n . . . . . . . . . t . . . e . . . q . . . . . . . . . . . . . . l . . . . . . . . . . . . 305 . . . . f . . . . . . . . . i . . . - . . . - . . . . . . . . . . . . . . i . . . . . . . . . . . . 306 . . . . l . . . . . . . . . p . . . n . . . g . . . . . . . . . . . . . . t . . . . . . . . . . . . 307 . . . . i . . . . = . . . . l . . . e . . . u . = . . . . . . . . . . . . . . . . . . . . . . = . . 308 . . . . c . . . . d . . . . e . . . w . . . a . c . . . . . . . . . . . . . . . . = . . . . . r . . 309 . . . . t . . . . i . . . . - . . . a . = = r . o . . . . . . . . . . . . . . . . u . . . . = e . . 310 = . . . s . . . . f . . . . c . . . n . v i d . n . . . . . . . . . . . = . . . . n . . . . r b . . 311 r . . . . . . . . f . . . . h . . . c . e s s . v . . . . . . . . . . . r . . . . c . . . . e a . . 312 e . . . . . . . . - . . = . a . . = e . r s . . e . . . . . . . . . . . e . . . . o . . = . b s . . 313 b . . . . . = . . c . . h . n . . h s . i u . . r . . . . . . . . . . . s . . . . m . . m . a e . . 314 a . . . . . d . . o . . g . g . . a t . f e . = t . . . . . . . . . . . o . . . . m . . q . s - . . 315 s . . . . . e . . l . . h . = . . r o . y 3 . r - . . . . . . . . . . . l . . . . i . . - . e a . . 316 e . = . . . b . . o . . a . r . . d r . . 0 . e s . . . . . . . . . . . v . . . . t . . q . - b . . 317 - . e . . . u . . r . . v . e . . l . . . 8 . b v . . . . . . . . . . . e . . . . . . . p . p o . . 318 i . x . . . g . . . . . e . b . . i . . . 4 . a n . . . . . . . . . . . . . . . . . . . u . a r . . 319 n . c . . . c . . . . . . . a . . n . . . . . s - . . . . . . . . . . . . . . . . . . . s . r t . . 320 t . h . . . o . . . . . . . s . . k . . . . . e t . . . . . . . . . . . . . = . . . . . h . a . . . 321 e . a . . . m . . . . . . . e . . s . . . . . - a . . . . . . . . . . . . . q . . . . . - . m . . . 322 r . n . . . m . . . . . . . - . . . . . . . . p g . . . . . . . . . . . . . r . . . . . f . e . . . 323 r . g . . . a . . . . . . . d . . . . . . . . u s . . = . . . . . . . . . . e . . . = . a . t . . . 324 u . e . . . n . . . . . . . e . . . . . . . . l . . . s . . . . . . . . . . c . . . b . i . e . . . 325 p . - . . . d . . . . . . . s . . . . . . . . l . . . p . . . . . . . . . . o . . . u = l . r . . . 326 t . o . . . s . . . . . . . t . . . . . . . . . . . . a . . . . . . . . . . r . . . n c . . s . . . 327 i . b . . . . . . = . . . . . . . . . . . . . . . = . r . . . . . . . . . . d . . . d o . . . . . . 328 o . s . . . . . . i . . . . . . . . . . . . . . . p . s . = . . . . . . . . . . . . l m . . . . . . 329 n . m . . . . . . m . . . . . = . . . . . . . . . a . e . l . . . . . . . . . . . . e p . . . . . . 330 s . a . . . . . . p . . . . . l . . . . . . . . . g . . . f . . . . . . . . . . . . - l . . . . . . 331 . . r . . . . . . o . . . . . f . . . . . . . . = e . . . s . . . . . . . . . . . . r e . . . . . . 332 . . k . = . . . . r . . . . . s . . . . . . . . t r . . . - = . . . . . . . . . . . . t . . . . . . 333 . . e . r . . . . t . . . . . - . . . . . . . . r . . . . s p . . . . . . . . . . . . i . . . . . . 334 . . r . e . . . . - . . . . . s . . . . . . . . e . . . . e u . . . . = . . . . . . . o . . . . . . 335 . . s . b . . . . b . = . . . e . . . = = . . . e . . . . r s . . . . a . . = . . . . n . . . . . . 336 . . - . a . . . . y . i . . . r . . . r a . . . d . . . . v h . . . . m . . p . . . . . . . . . . . 337 . . c . s . . . . p . n . . . v . . . e m . . . i . . . . e . . . . . e . . a . . . . . . . . . . . 338 . . a . e . . . . a . s . . . e . . . b e . . . s . . . . . . . . . . n . . r . . . . . . . . . . . 339 . . s . - . . . . s . t . . . . . . . a n . . . c . . . . . . . . . . d . . s . . . . . . . . . . . 340 . . e . n . . . . s . a . . . . . . . s d . . . o . . . . . . . . . . . . . e . . . . . . . . . . . 341 . . - . a . . . . . . l . . . . . . . e . . . . v . . . . . . . . = . . . = - . . . . . . . . . . . 342 . . A . m . . . . . . l . . . . . . . - . . . . e . . . . . . . . m . . . h d . . . . . . . . . . . 343 . . 1 . e . . . . . . . . . . . . . . c . . . . r . = . . . . . . q . . . i a . . . . = . . . . . . 344 . . . . d . . . . . . . . . . . . . . a . . . . y . g . . . . . . - . . . s t . . . . g . . . . . . 345 . = . . - . . . . . . . . . . . . . . c . . . . - . e . = . . . . q . . . t e . . . . e . . . . . . 346 . g . . b . . . . . . . . . . . . . . h . . . . l . n . h = . . . r . . . e . . . . . n . . . . . . 347 . e . . r . . . . . . . . . . . . . . e . . . . e . d . i c . . . e . . . d . . . . . d . . . . . . 348 . n . . a . . . . . . . . . . . = . . . . . . . g . o . s o . . . f . . . i . . . . . o . . . . = . 349 . d . . n . . . . . . . . . . . w . . . . . . . a . c . t m . . . r . . . t . . . . . c . . . . e . 350 . o . . c . . . . . . . . . . . i . . . . . . . c . - . e m . . . e . . . - . . . . . - . . . . x . 351 . c . . h . . . . . . . . . . . n . . . . . . . y . z . d i . . . s . . . f . . . . . p . . . . c . 352 . - . . e . . . . . . . . . . . 3 . . . . . . . . . h . i t . . . h . . . o . . . . . t . . . . h . 353 . z . . s . . . . . . . . . . . 2 . . . . . . . . . _ . t - . . . . . . . l . . . . . _ . . . . a . 354 . h . . . = . . . . . = . . . . t . . . . . . . . . C . - i . . . . . . . d . . = . . B . . . . n . 355 . _ . . . g . . . . = g . . . . e . . . . . . . . . N . n n . . . . . . . - . . g . . R . . . . g . 356 . T . . . e . . . . g e . . . . x . . . . . . . . . . . o t . . . . . . . n . . e . . . . . . . e . 357 . W . . . n . . . . e n . . . . t . . . . . . . . . . . n e . . . . . . = o . . n . . . . . . . - . 358 . . . . . d . . . . n d . . . . . . . . . . . . . . . . - r . = . . . . g n . . d . . . . . . . o . 359 . . . . . o . . . . d o . . . . . . . . . . . . . . . . c a . g . . . . e - . . o . . . . . . . b . 360 . . . . . c . . . . o c . . . . . . . . . . . . . . . . o c . e . . . . n c . = c . . . . . . . s . 361 . . . . . - = . . . c - . . . . . . . . . . . . . . . . m t . n . . . . d o . g - . . . . . . . m . 362 . . . . . r m . . . - d . . . . . = = . . . . . . . . . m i . d . . . . o m . r e . . . . . . . a . 363 . . . . . u q . . . s a . . . . . e = . . . . . . . = . u v . o . . . . c m . e l . . . . . . . r . 364 . . = . . . - . . . v . . . . . . x m . . . . . . = b . t e . c . . . . - u . p . . . . . . . . k . 365 . . d . . . q . . . . . . . . . . c q . . . . . . g h . e - . - . . . . f t . . . . . . . . . . e . 366 = . i . . . r . . . . . . . . . . h - . . . . . . i e . . c . i . . . . r e . . . . . . . . . . r . 367 l . f . . . e . . . . . . . . . . a q . . . . . . t a . . u . t . . . . . . . . . . . . . . . . s . 368 a . f = . . f . . . . . . . . . . n n . . . . . . h d . . r . . . . . . . . . . . . . = . . . . - . 369 r . - r . . r . . . . . . . . . . g e . . . . . . e s . . s . . . . = . . . . . . . . c . . . . c . 370 g = i e . . e . . . . . . . . . . e w . . . . = . l . . . e . . . . e . . . . . . . . l . . . . a . 371 e u g b . . s . . . . . . . . . . - . . . . . s . p . . . s . . . . n . . . . . . . . o . . . . s . 372 f r n a . . h . . . . . . . . . . o . . . . . t . . . . . . . . . . c . . . . . . . . n . . . . e . 373 i l o s . . - . . . . . . . . . . b . . . . . a . . . . . . . . . . o . . . . . . . . e . . . . - . 374 l - r e . . = . . . . . . . . . . s . . . . . t . . . . . . . . . . d . . . . . . . . - . . . . A . 375 e r e - . . m . . . . . . . . . . m . . . . . i . . . . . . . . . . i . . . . . . . . r . . = . 3 . 376 s e - r . . q . . . . . . . . . . a . . . . . c . . . . . . . . . . n . . . . . . . . . . . m . . . 377 - v w e . . - . . . . . . . . = . r . . . . . - . . . . . . . . . . g . . . . . . . . . . . q . . . 378 c . h n . . q . . . . = . . . b . k . . . . . h . . . . . . . . . . . . . . . . = . . . . . - . . . 379 a . i a . = r . . . = r . . . r . e . . . . . t . . . . . . . . = . . . . . . . p = . . . . q . . . 380 c . t m . r e . . = h e . . . a . r . . . . . t . . . . . . . . l . . . . . . . a r . . . . i . . . 381 h . e e . e f . . h i b . . . n . s . . . . . p . . . . . . . = = . . . = . . . g e . . . . m . . . 382 e . s . . b r = . g s a . . . c = - . . = . . . . . . . . . . e h . . . e . . . e v . . . . p . . . 383 . . p . . a e a . w t s . . . h u c . . e . . . . . . . . . . o t . . . x . . . r e . . . . o . . . 384 . . a . . s s u . e e e . . . - n a . . x . . . . . . . . . = l t . . = c . . . - r . . . . r . . . 385 . . c . . e h t = b d - . . = c a s . . c . . . . . . . . . = - p . . h h . . . l t . . . . t . . . 386 . . e . . - - o h - i b . . f h m e . . h . . . . . . . . = s p - . . g a . . . e - = . . . . . . . 387 . . . . . m r m t = t a . . l a e - . . a . . . . . . . . j s a p . = i n . = . g i r . . . . . . . 388 . . . . = q e v t h - s . . a n n C . . n . . . . . . . . o h t r . i g g . h . a n e . . . . . . . 389 . . . . c . p . p i b e . . g g d 3 . . g . . . = . . . . u - c o . n n e = t . c t n . . . . = . . 390 . . . . o . l . - s a - . . p e . . . . e . . . f . . . . r c h t . i o - = t . y e a . . . . h . . 391 . . . . n . a . c t s f . . r . . . . . - . . . i . . . . n l . o . t r o e p . . r m . . . . g . . 392 . . . . v . c . l e e l . . o . . . . . o . . l . . . . a o . c . . e b x - . . a e . . . . r . . 393 . . . . e . e . o d . a . . c . . . . . b = . . e . . . . l n . o . . . s c p . . c - . . . . c . . 394 . . . . r . - . n i . g . . e . . . . . s s . . s . . = = . e . l . . . m h r . . t d . . . . . . . 395 . . . . t . l . e t . . . . s . . . . . m t . . e . . p d . - . . . . . a a o . . i i . . . . . . . 396 . . . . - . o . - - . . . . s . . = . . a a . . t . . y i . r . . . . . r n x . . v r . . . . . . . 397 . . . . s . g . r n . . . . o . . u . . r t . . - . . 3 f . . . . . . . k g y . . e - . . . . . . . 398 . . . . p . - . . o . . . . r . . p . . k u . . g . . - f . . . . . . . e e . . . . m . . . . . . . 399 . . . . l . m . . - . . . . . . . - . . e s . . e . . c - . . . . . . . r - . = . . e . . . . . . . 400 . . . . i . e . . c . . . . . . . l . . r - . . n . . o u . . . . = . . s o = p . . r . = . . . . . 401 . . . . c . s . . h . . . . . . . o . . s r . . e . . m p . . . . b . . - b c u . . g . e . . . . . 402 . . . . e . s . . a . . . . . . . c . . - e . . r . . m g . . . . i . . c s o s . . e . o . . . . . 403 . . . . m . a . . n = . . . . . . a . . c v . . a . . a r . . . = s . . a m p h . . . . l . . . . . 404 . . . . a . g . . g c . . . . . . l . . a . . . t . . = a = . . c e . . s a y - . . . - . . = . . 405 . . . . p . e . . e o . . . . . . - . . s . . = e = . b d d . = o c . . e r . h . . . = h . . p = . 406 . . = . . . . . . . n . . . . . . c . . e . = e d c . u e i . m n t . . - k . t . . . e o . . u d . 407 . . p . . . . . . . f . . . . . . h . . - . e x . h . n . s . e t 3 . . D e . t . . x o . . l i . 408 . . u . . . . . . . l . . . . . . a . . C . x p . u . d . p . r r . . . 1 r . p = . . c k . . l f . 409 = = s . . . . . . . i . . . . . . n . . 2 . c o . r . l = a . g i . . . . s . . p = . h . . . - f . 410 p o h . . . . . . . c . . . . . . g . = . . h r . n . e r t . e b . . . . - . . u s . a . . . u - . 411 a b - . . . . . . . t . . . . . . e . s . . a t = . . - e c . - . . . . . c . . l i . n . . . p u . 412 r s h . . . . . . . . . . . . . . . . p . = n . m . . p b h . c . . . . . a . . l n . g . . . d n = 413 s o t . . . . . . . . . . . . . . . . a . d g . q . . h a . . o . . . . = s . . - g . e . . . a i r 414 e l t . . . . . . . . . . . . . . . . r . e e . - . . a s . . m . . . = n e . . b l . - . . . t f e 415 i e p . . . . . . . . . . . . . . . . s = b - . q . . s e . . m . . . s o - . . r e . o . . . e i b 416 n t - . . . . . = . . . . . . . . . . e = u o . p . . e - . . i . . . t t C . . a - . b . . . . e a 417 d e b . . . = . = . . . . . . . . . . - e g b . u . . s d . . t . . . r i 1 . . n h . s . . . . d s 418 e - u . . . s . c . . . . . . . . . . p n b s . s . . . e . . . . . . i f . . . c e . m . . . . . e 419 x c n = . . h . o . . . . . . . . . . r c u m . h . . . t . . . . . . p y = . . h a . a . . . . . - 420 = h d a . . o . n . . . . . . . . . . o o i a . - . . . a . . . = . . - - d . . . d . r . = . . . b 421 b a l d . . w . v . . . . . . . . . . f d l r . e . . . c . . . b . . c c i . . . . . k . e . . . o 422 o n e d . . - . e . . . . . . . . . . i i d k . x . . . h . = . u . . r h f . . . . . e . x . . . o 423 o g 1 . . . w . r . . . . . . . . . . l n d e . a . . . . . s . n . . o a f . . . . . r . c . . . k 424 k e . . = . o . t . . . . . . . . . . e g a r . c . . . . . y . d . = s n s . . . . . s . h . . . m 425 m s . . e . r . - = = . . . . = . . . s - g s . t . . . . . m . l . p s g t . . . . . - . a . . . a 426 a e . . x . k . h a e . . . . m . . . . a . - . . . . . . . l = e . u . e a . . . . . c . n . . . r 427 r t . . c . . . g u x . . . . q . . . . l . c . . . . . . . i h - . r . t . . . . = a . g . . . k 428 k - . . h . . . - d c . . . . - . . . . i a . . . . . . . n i t . g . = . . . . . e s = e . . = s 429 s e . . a . . . s i h = . . = s . . . . g = s . . . . . . . k s y . e . d . . . . . x e m - . . c . 430 - x . . n . . . t t a p . . = a . . . . n m e = . . . . . . s t p . . . i . . . . . c - q o . . o . 431 c c . . g . . . a - n a . . o f . . . . . q - p . . . . . . . e e = . . f . . . . . h D - b . . n . 432 u h . . e . . . r p g t . . b e . . . . = - B a . . . . . = . d . h . . f . . . . . a = g s . . v . 433 r = . . - = . . t a e c . . s t . = . . j q 5 t . . . . . h . i . i . . - . . . . . n d i m . . e . 434 r p . . o d . . r t - h . . o y . h . . o f . h . . . . . g . t . s . . b . . . . . g i t a . . r . 435 e a . . b r . . e h o b . = l . . g . . u o . s . . . . . w . - . t . . i . . . . . e r . r . . t . 436 n t . . s a . . v . b o . i e . . w = . r l . . . = . . . e . b . e . . n . . = . . - e . k = . - . 437 t c . . m w . . . . s m . m t . = = c . n d = . . e . . . b . o . d . . a . . s . . o c . e r . h . 438 . h . . a d . . . . m b . p e . e o = . a . m . . x = . . - . o . i . . r . . h . . b t . r e . g . 439 . b . . r a . . . . a - . o - . x b p . l . e . . c h . . c . k . t . . y . . o . = s a . s n . - . 440 . o . . k g . . . . r b . r t . c s a . - . r . . h i . . s . m . - . . - . = w . m m c . - a . s . 441 . m . . e . . . . . k = . t a . h m t . s . g . . a s . . p . a . n . . f . l - . q a c . c m . o . 442 . b = . r . . . . . e h . - g . a a h . h . e . . n t . . . . r . o . . i . o s . - r e . a e = u . 443 . - e . s . . . . . r i . m - . n r c = a . 7 . . g e . . . . k . n . . l . c t . e k s . s - b r . 444 . t x . - . . . . . s s . e c . g k o f r . . . . e d . . . . - . - . . e . k a = o e s . e m o c . 445 . l c . c . . . . . - t . r = . e e n i e . . . . - i . . . . m . c . . . . - c m l r . . - e o e . 446 . s h . a . . . . . c e . g c . - r f l . . . . . o t . . . . o . o . . . . b k q . s . . B r k . . 447 . . a . s . . . . . a d . e o . o s l e . . . . . b - . . . . t . m . . . . a . - . - . . 4 g m . . 448 . = n . e . . . = . s i . . p . b - i b . . . . . s d . . = . i . m . . = . d . q . c . . . e a . . 449 . c g . - . . . m . e t . . y . s e c r . . . . . m r . . e . = . u . . = . n . c . a . . . 1 r . . 450 . o e . C . . . e . - - . . - . m f t a . . = . . a o . . x . i . t . = e . e . l . s . = . . k . . 451 . n - . = . . . r . A o . . m . a f s n = . r . . r p . = c . n . = . f x = s . o . e . r . . s . . 452 . f o . p . . . g . 6 u . . o . r e - c p . e . . k . . s h . h . s . l c a s . n . = . e = . - . . 453 . i b . r . . . e . . t . . v . k c m h a . b . . e . = u a . e . h . a h d . . e . r . p h . m . . 454 . g s . o . . . - . = g . . e . e t e . t . a . . r . d b n . r . o g a d . . - . e . a g . e . . 455 . . m . f . . . d . p o . . - . r f r . h . s . . s . e r g . i . w = s n r . . h . b = i w . r . . 456 . . a . i . . . e . u i . . m . s l g . c . e . . - . b e e . . . u . g e . . t . a s r = . g . . 457 . . r . l . . . f . l n . . e . - a e = o . - . . c . u p - . = . . n . e m = . t . s p - c . e . . 458 . . k . e . . . a . l g . . r . c g . m n . m . . a . g o o . d . . i . - o c . p . e a s o . . . . 459 . . e . . = . . u . . . . . g . a . . q f . q . . s = b - b . e . . o . o v o . . . - r t m . . . . 460 . . r . . m . . l . . . . . e . s . . - l . - = . e p u m s = f . . n . b e n . . . e s r m . . . . 461 . . s . . q . . t . . . . . . . = . . q i = s b . = e = i m p a = . r . s - v . . = m e i i . . . = 462 = . - . . - . . . . . . . . . . m . . d c o k a . c n c s a u u e . e . m s e . . m p - p t . . . m 463 m . c . . m . . . . . . . . . . e . . e t r i d . l d o s r l l x . p . a i r . . q t i . - . . . e 464 e = a . e . . . . . . . . . . r . . l s i p - . o i m i k l t c . o . r m t . . - y m . m . . . r 465 r i s = . r . . . = . . . . . . g . . e - g . = . n n m n e - - h . . . k i - . . m c p . u . . = g 466 g d e b . g . . . p . . . . . . e . . t u b . e . e g i g r r p a . . . e l d . . i o o . l . . = e 467 e e = r . e . . . a . = . . . . - . . e p a . m . - . t . s . u n . . . r a a . . s m r . t . . w - 468 - n s a . . . . . r . e . . . . l . . . d c . p . u . - . - . s g . . s r t . . s m t . i . . o s 469 h t u n . . . . . e . x . . . = o . . . a k . t . p . u . c . h e . . = = . e . . i i . = p . . r u 470 a i b c . . . . . n . c . . . b c . . . t u . y . d . n . a . . - = . h d . s . . n t . i l . . k b 471 l f r h . . . = . t . e . . . u a . . . e p . - . a . r . = . . o r . t i . o . = g . . s e . . e r 472 t y e - . . . r . s . s . . g l . = . . - . g . t . e . e . . b e . t f . r . m f . s = . . = e 473 = = = = = = = = = = = = . = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 474 i e s m m c o = b p h a . e c a r e e r e a m b a c s p e i i l u m d b r l i p c r m t e c i h p c 475 m o i q q a l i u u y u . x o m e x x e o m e u r a t a x m s a p a e o e o s a o e e o x o s = u o 476 p l m - - t d m n s b d = t n e l c t v l e r n b c a t c p s r d n b o q g s t m n r o c n s i l n 477 o - p q q . c p d h = i u d v n i h e s - n g d i h t h h o u g a i u k u t u c m a g l h v u s l v 478 r a l d q . g e = = h t n a = d n a n e u d e l t e u c a r e e t f g m i o e h i m e s a e e s - e 479 t d e i u . i x d r g - i t r - k n = t = - - e r - s o n = 6 f e e e a r p 1 . t e - . n r 1 u h r 480 - d - f e . . p i e w s f a e s . g r - s s r - a a - n g l 6 i - s = r e r 3 . t - c . g t 1 e t t 481 e . u f u . . - r p e u i . b u . e e o y u e v r b t f e o 0 = n t m k s o 0 . e a l . e - 7 5 t - 482 o = p . e . . b s o b b e . a b . - b u m b m s y u e l - c . u a = e s = c 6 . = f o . - c 5 8 p t 483 l s d . . . . r t - - r d . s r . o a t l r o - f s r i o a . r m m r - v e . = m t s . o l . 6 . a 484 . e a . . . = a a c r e - . = e = b s = i e v = i e s c b t . l e e g r = s = d q e e . b o . . . g 485 . r t . . . b n t o a p t . m p s s e t n p e m l . e t s e . - s r e e c s r o - r d . s n . . . = 486 . v e . . . a c e m w o e . q o p m - e k o . e = . . = m . . d . g 6 = o . e u q - h . m e . . . m 487 = e . = . . s h . p = . s . - . a = i m - . . r p . . n a . . o . e . i = . b b r m e . = b . . . a 488 u . . h . . i . . = h = t . s . r c s p p . . g u . = e = . . w . - . s i . a l e e a . p r . . n 489 p . . g . . c . . m i s . . y . s o s = l . . e s . a w b . . n . r . s s . s e n r d . a a . . = i 490 d . . w . . . = . e s p . . m . e n u c a . = 9 h . d c r . . l . e . u s . e = a g s = = n . . i f 491 a . = e . . . s . r t a . = l . - t e u = . l . v . d g a . . o . v . e u = - d m = . e r = = . s e 492 t . s b . . . t = g e r . m i . v e - s n . o . a . r i n . . a . e = 1 e i p i e g . o e u u = s s 493 e . p d . . . r e e d s = q n . e x n t e . g . r . e . c . = = . r r 8 5 m = f . l . l v n r s = t 494 - . a i = = . i o - i e r - k . = t o o w . - . s . m = h . m e . t e 0 2 p m f . o = f l b = c c . 495 = . r r s p . c l = = - e q s = n = = m e . = . = . o u = . e d = 2 b 2 = o e d . g k i o u c h a . 496 c . s s = e . = - c s = v g . d o r i = r . s = s . v p r . r i c . a . i r r i . - n l g n o e s . 497 h = e y g r . r c o = i = o . e - e s e c . p m u . e d e = g t l . s . s t g r . = o e = d n m e 498 a m - m p m . e = n s s d t . b s b s m = . a e b . . a v m e = o . e = s - e . . h w n e l v e c = 499 n a m = g i . v d f p s o o . i = a u p l . r r r . . t l a 1 c n . - d u u - . . g n = n = e s o b 500 g n e c . s . = i u a u c . . a a s e t o . s g = . . = o c 0 o e = = i e n r . . k . u c w = . l o 501 e i r o . s = e f s r e k . . = n e 1 y = . e e m . = p g t = n - u r f = k e = . . . n o e d = l o 502 l f = n . i m m f e s 1 e . . r c - = - j . = 2 e . m a - e c v c p e f t n v d . . . r d b i h i k 503 o e i v . o q p - d = 8 = . . e e = m f o . l . r . a m = o = = d v - r = e i . . . e e s f g s m 504 g s s = . n - t = - m 7 a . = b = p e = u . i . g . n = m i n p r a s = = p r f = = . l . u f w i a 505 = = s e . = q n = e = r . m a c a r b r = = . e = i f a s v r e t e e i u t f r b . = b - e o r 506 i d u x . a = = e u r d c = i = o t g d n d u . 5 e f i p s = o v e t o s l . - e = = d = . = b = = 507 s i = e . t i e s s g i h h = b = = e = a i i = = x = l i u r = = - - l s l . c v d i e d = i - r a 508 s f w c . = s m t e e f i g e a d x = w = r = l d t m = n = e s r i d - u - = o = e s b e b s b e n 509 u = i u . s s p e = = f v = x d i d f a m s c r o q f d l v e = = = p u s s u b a s = v 510 e m t s u h e e d - g i o c - u e f e v d u h i y u c s e 511 4 - p . x u m e r 512 . 513 . 514 . 515 . 516 . 0 1 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 2 c s s o s o r l l m c g l i o r s b r h u c s k r m l m b c m m g m c p m m t c l c r c o a b r s t 3 o u h b u b e a o q h l a m b e u u e g p o t e e e a q o o e e r q l u q v r o f o e o b n i u u a 4 m b e s b s v r g . e o r p s b b n n h d m r y v r r - o p r r a - o s - - a n s n v n s n s n b g 5 m r l o r o s g . . c g g o m a r d a a a m i w s g g s k y g g f h n h h c n v . v e v o o e - r . 6 a e v l e l e e . . k . e r a s e l m v t i p o e e e u m t e e t e e - e p s e . e r e l t c t e . 7 n p e e p e t f . . - . f t r e p e e e e t . r t - f b a r - - . a . w a - p r . r t r e a t e p . 8 d o . t o t . i . . p . i . k - o 2 - . - - . d 2 t i r r a c f . d . a d s l t . t . t t t . s o . 9 - - . e . e . l . . y . l . e o - - m . b a . . . o l e k c h o . e . r e t a - . - . - e e . t - . 10 t g . - . . . e . . l . e . r b s e e . r m . . . o e p s e a r . r . n r - n f . s . g - . . s d . 11 e i . b . . . s . . i . s . - s v x r . a e . . . l s o . - n c . - . . - d t i . v . i d . . . e . 12 m t . u . . . . . . n . - . t o n c g . n n . . . s - . . h g e . d . . f i . l . n . t i . . . e . 13 p . . n . . . . . . t . m . e l . h e . c d . . . . u . . e e . . a . . r f . e . - . . v . . . p . 14 l . . d . . . . . . . . i . m e . a 2 . h . . . . . p . . u d . . t . . o f . m . s . . e . . . - . 15 a . . l . . . . . . . . s . p t . n . . e . . . . . d . . r e . . e . . m . . a . i . . r . . . n . 16 t . . e . . . . . . . . c . l e . g . . s . . . . . a . . i l . . . . . . . . p . n . . g . . . e . 17 e . . - . . . . . . . . . . a . . e . . . . . . . . t . . s e . . . . . . . . . . k . . e . . . s . 18 . . . s . . . . . . . . . . t . . . . . . . . . . . e . . t t . . . . . . . . . . . . . n . . . t . 19 . . . t . . . . . . . . . . e . . . . . . . . . . . . . . i e . . . . . . . . . . . . . t . . . e . 20 . . . r . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . d . 21 . . . i . . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . . . . . . - . 22 . . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h . 24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . 25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n . 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g . 27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 114 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r 115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 116 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b 117 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 118 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . = s 119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . f e 120 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . i - 121 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b . l c 122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . e o 123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = s . s l 124 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t e . e l 125 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a - . t a 126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . . . . g s . . p 127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b . . . . s c . . s 128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . . a . . . . . e . . e 129 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . . c . . . . . n . . . 130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . k . . . = . a . . . 131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n . . o = . . m . r . . . 132 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = s . = u h . . q . i . . . 133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p o . t t o = . - . o . . . 134 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h r . r . o c . g . - . . . 135 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . . . a . . e . k h . u . g . . . 136 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . c . . s . . e . . e . a . l . . . 137 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . o = . = e . . m . . c . r . o . . . 138 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . m a . e s . . a . . k . d . b . . . 139 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n = m u . x - . . n . . - . s . a . . . 140 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a b i t . t e . . i . . c = . . l . . . 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m i t o . e x . f . . o m . . . . . . 142 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e s - m . n c . = e . . d q . . . . . . 143 . . . . . . . . . . . . . . . . . . . . . . . . . . . = . . . e i v . s h . c s . . e - . . . . . . 144 . . . . . . . . . . . . . . . . . . . . . . . . . . . b . . . c n . . i a . o t . . . q . . . . . . 145 . . . . . . . . . . . . . . . . . . . . . . . . . . . u . . . t t . . o n . m . . . . p . . . . . . 146 . . . . . . . . . . . . . . . . . . . . . . . . . . . n . . . 2 e . . n g . m . . . . u . . . . . . 147 . . . . . . . . . . . . . . . . . . . . . . . . . . . d . . . . r . = . e . i . . . . s . . . . . . 148 . . . . . . . . . . . . . . . . . . . . . . . . . . . l = . . . a . n . . . t . . . . h . . . . . . 149 . . . . . . . . . . . . . . . . . . . . . . . . . . . e h = . . c . e . . . . . . . . - . . . . . . 150 . . . . . . . . . . . . . . . . . . . . . . . . . . . . i b . . t . w . . . . . . . . f . . . . . . 151 . . . . . . . . . . . . . . . . . . . . . . . . . . . . s r . . i . b . . . . . . . . a . . . . . . 152 . . . . . . . . . . . . . . . . . . . . . . . . . . . . t a . . v . r . . . . . . . . i . . . . . . 153 . . . . . . . . . . . . . . . . . . . . . . . . . . . . e n . . e . a . . . . . . . . l . . . . . . 154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . d c . . . . n . . . . . . . . . . . . . . . 155 . . . . . . . . . . . . . . . . . . . . . . . . . . . . i h . . . . c . . . . . . . . . . . . . . . 156 . . . . . . . . . . . . . . . . . . . . . . . . . . = . t e . . . . h . . . . . . . . . . . . . . . 157 . . . . . . . . . . . . . . . . . . . . . . . . . . h . - s . . . . . . . . . . . . . . . . . . . . 158 . . . . . . . . . . . . . . . . . . . . . . . . . . i . f . . . . . . . . . . . . . . . . . . . . . 159 . . . . . . . . . . . . . . . . . . . . . . . . = . s . o . . . . . . . . . . . . . . . . . . = . . 160 . . . . . . . . . . . . . . . . . . . . . . . . i . t . l . . . . . . . . . . . . . . . . . . s . . 161 . . . . . . . . . . . . . . . . . . . . . . . . s . e . d . . . . . . . . . . . . . . . . . . t . . 162 . . . . . . . . . . . . . . . . . . . . . . . . s . d . . . . . . . . . . . . . . . . . . . . a . . 163 . . . . . . . . . . . . . . . . . . . . . . . . u . i . . . . . . . . . . . . . . . . . . . . t . . 164 . . . . . . . . . . . . . . . . . . . . . . . . e . t . . . . . . . . . . . . . . . . . . . . u . . 165 . . . . . . . . . . . . . . . . . . . . . . . . 3 = - . . . . . . . . . . . . . . . . . . . . s . . 166 . . . . . . . . . . . . . . . . . . . . . . . . 0 s o . . . . . . . . . . . . . . . . . . . . . . . 167 . . . . . . . . . . . . . . . . . . . . = . . . 8 s b . . . . . . . . . . . . . . . . . . . . . . . 168 . . . . . . . . . . . . . . . . . . . . r . . = 4 h s . . . . . . . . . . . . . . . . . . . . . . . 169 . . . . . . . . . . . . . . . . . . . . e . . t . . o . . . . . . . . . . . . . . . . . . . . . . . 170 . . . . . . . . . . . . . . . . . . . . b . . r . . l . . . . . . . . . . . . . . . . . . . . . . . 171 . . . . . . . . . . . . . . . . . . . . a . . e . . e . . . . . . . . . . . . . . . . . . . . . . . 172 . . . . . . . . . . . . . . . . . . . . s . . e . . t . . . . . . . . . . . . . . . . . . . . . . . 173 . . . . . . . . . . . . . . . . . . . . e . . d . . e . . . . . . . . . . . . . . . . . . . . . . . 174 . . . . . . . . . . . . . . . . . . . . - . = i . . . . . . . . . . . . . . . . . . . . . . . . . . 175 . . . . . . . . . . . . . . . . . . . . a . h s . . . . . . . . . . . . . . . . . . . . . . . . . . 176 . . . . . . . . . . . . . . . . . . = . b g c . . . . . . . . . . . . . . . . . . . . . . . . . . 177 . . . . . . . . . . . . . . . . . . s . o = w o . . . . . . . . . . . . . . . . . . . . . . . . . . 178 . . . . . . . . . . . . . . . . . . s . r f e v . . . . . . . . . . . . . . . . . . . . . . . . . . 179 . . . . . . . . . . . . . . . . . . h . t e b e . . . . . . . . . . . . . . . . . . . . . . . . . . 180 . . . . . . . . . . . . . . . . . . - . . t d r . . . . . . . . . . . . . . . . . . . . . . . . . . 181 . . . . . . . . . . . . . . . . . . b . . c i y . . . . . . . . . . . . . . . . . . . . . . . . . . 182 . . . . . . . . . . . . . . . . . . u . . h r . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 . . . . . . . . . . . . . . . . . . n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 . . . . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 . . . . . . . . . . . . . . . . = . l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 . . . . . . . . . . . . . . . . e . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 . . . . . . . . . . . . . . . . o = 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 . . . . . . . . . . . . . . . . l s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 . . . . . . . . . . . . . . . = . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 . . . . . . . . . . . . . . . l . d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 . . . . . . . . . . . . . . . a . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 . . . . . . . . . . . . . . . r . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 . . . . . . . . . . . . . . . g . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 . . . . . . . . . . . . . . . e . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 . . . . . . . . . . . . . . . f . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 . . . . . . . . . . . . . . . i . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 . . . . . . . . . . . . . . . l . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 . . . . . . . . . . . . . . . e . y . = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 . . . . . . . . . . . . . . . s . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 . . . . . . . . . . . . . . = - . . . b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 . . . . . . . . . . . . . . m w . . . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 . . . . . . . . . . . . . . q i . . . h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 . . . . . . . . . . . . . . - r . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 . . . . . . . . . . . . . . q e . . . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 . . . . . . . . . . . . . . p p . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 . . . . . . . . . . . . . . u r . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 . . . . . . . . . . . . . . s o . . . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . . . . . . . . . . . . . . h t . . . y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 . . . . . . . . . . . . . = - o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 . . . . . . . . . . . . . h e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 . . . . . . . . . . . . . e x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 . . . . . . . . . . . . . l a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 . . . . . . . . . . . . . p c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 . . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . = . . . . . . . . . . . . . . 216 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . 217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . 218 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . n . . . . . . . . . . . . . . 219 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . v . . . . . . . . . . . . . . 220 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . e . . . . . . . . . . . . . . 221 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b . r . . . . . . . . . . . . . . 222 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . t . . . . . . . . . . . . . . 223 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s . - . . . . . . . = . . . . . . 224 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = . . e . s . . . . . . . b = . . . . . 225 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m . . - . v . . . . . . . h p . . . . . 226 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . q . = c . n . . . . . . . e h . . . = . 227 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . e a = - . . . . . . . a a . . . h . 228 . . . . . . . . . . . = . . . . . . . . . . . . . . . . . . q = x c a s . . . . . . . d s . . . i . 229 . . . . . . . . . . . h . . . . . . . . . . . . . . . . = . n u t h r o . = . . . . . s e . . . s . 230 . . . . . . . . . . . t . . . . . . . . . . . . . . . = p . e n d e c u . c = . = . . . s . . . t = 231 . . . . . . . . . . . t . . . . . . . . . . . . . . . s a . w c i . h r . h a . s . . . . = . . e r 232 . . . . . . . . . . . p . . . . . . . . . . . . . . . p t . . o f . i c . e l . h = . . . a . . d e 233 . . . . . . . . . . . s . . . . . . . . . . . . . . . a c . . m f . v e . c i = o i . . . c . . i b 234 . . . . . . . . . . . . . . . . . . . . . . . . . . . r h . . m . . e . = k a m w m . . . l . . t a 235 . . . . . . . . . . . . . . . . . . . . . . . . . . . s b = . i . . . . g - s e - p . . . . = . - s 236 . . . . . . . . . . . . = . . . . . . . . . . . . . . e o h . t . . . . i p . r w o . . . . r . a e 237 . . . . . . . . . . . . c . . . . . . . . . . . . . . . m t . . . . . . t y . g o r . . . . e . r - 238 . . . . . . . . . . . . o . . . . . . . . . . . = . . . b t . . . . . . - f . e r t . . . . b . g d 239 . . . . . . . . . . . . n . . . . . . . . . . . c . . . . p . . . . . . e l . 1 k - . . . . a . u e 240 . . . . . . . . . . . . v . . . . . . . . . . . h . = . . - . . . . . . x a . . . g . . . . s . m s 241 . . . . . . . . . . . . e . . . . . . . . . . . e . r . . b . . . . . . p k . . . i . . . . e = e t 242 . . . . . . . . . . . . r . . . . . . . . . . . c . e . . a . . . . . . o e . . . t . . . . - b n . 243 . . . . . . . . . . . . t . . . . . . . . . . . k . b . . d . . . . . . r s . . . . . . . . p u t . 244 . . . . . . . . . . . . - . . . . . . . . . . . - . a . . - . . . . . . t . . . . . . . . . a n s . 245 . . . . . . . . . . . . h . . . . . . . . . . . m . s . . s . . . . . . . . . . . . . . . . r d . . 246 . . . . . . . . . . . . g . . . . . . . . . . . o . e . . e . . . . . . . . . . . . . . . . a l . . 247 . . . . . . . . . = . . - . . . . . . . . . . . d . - . . r . . . . . . . . . . . . = . . . m e . . 248 . . . . . . . . . o . . s . . . . . . . = . . = u = n . . v . . . . . . . . . . . . m . . . e - . . 249 . . . . . . . . . b . . i . . . . . . . w . = m l c e . . e . . . . . . . . . . . . q . . . t r . . 250 . . . . . . . . . s . . n . . . . . . . a . t q e o w . . r . . . . . . . . . . . . - . . . e . . . 251 . . . . . . . . = o . . k . . . . . . . l . r - - m a . . . . . . . . . . . . . . . q . . . r . . . 252 . . . . . . . . h l . . . . . . . . . . k . e q i m n . . . . . . . . . . . . . . . i . . . s . . . 253 . . . . . . . . g e . . . . . . . . = . . . e r m a c . . . . . . . . . . . . . . . m . . . . . . . 254 . . . . . . . . w t . . . . . . . . r . . . d e p n e . . . . . . . . . . . . . . . p . . . . . . . 255 . . . . . . . . e e . . . . . . . . e . . = i f o d s . . . . . . . . . . . . . . . o . . . . . . . 256 . . . . . . . . b - . . . . . . . . m . . r s r r s t . . . . . . . . . . . . . . . r . . . . . . . 257 . . . . . . . . - d . . . . . . . . o . . o c e t e o . . . . . . . . . . . . . . . t . . . . . . . 258 . . . . . . . . c i . . . . . . . . v . . l o s s r r . . . . . . . . . . . . . . . . . . . . . . . 259 . . . . . . . . o s . . . . . . . . e . . l v h . v . . . . . . . . . . . . . . . . . . . . . . . . 260 . . . . . . . . m t . . . . . . . . . . . b e . . e . . . . . . . . . . . . . . . . . . . . . . . . 261 . . . . . . . . m r . . . . . . . . . . . a r . . r . . . . . . . . . . . . . . . . . . . . . . . . 262 . . . . . . . . a i = . . . . . = . . . . c y . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 . . . . . . . . n b e . . . . . r . . . . k - . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 . . . . . . . . d u x . . . . . e . . . . . l . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 . . . . . . . . s t c . . . . . b . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 . . . . . . . = . e h . . . . . a = . . . . g . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 . . . . . . . r . d a . . . = . s u . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 . . . . . . . e . . n . . . r = e n . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 . . . . . . . b . . g . . . e r - a . . . . y . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 . . . . . . . a . . e . . . b e n m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 . . . . . . . s . . - . . . a b a e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 . . . . . = . e . . o . . . s a m n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 . . . . . c . - . . b . . . e s e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 . . . . . o . i . . s . . . - e d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 . . . . . n . n . . m . . . p - - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 . . . . . v . t . . a . . . u m b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 . . . . . e . e . . r . . . l q r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 . . . . . r . r . . k . . . l . a . . = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 . . . . . t . r . . e . . . . . n . . s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 . . . . = - . u . . r . . . . . c . . h . . . . . . . . . . . . . . . = . . . . . . . . . . . . . . 281 . . . . i s . p . . s . . . . . h . . a . . . . . . . . . . . . . . . d . . . . . . . . . . . . . . 282 . . . . m v . t . . - . . . . . e . . r . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . 283 . . . . p n . i . . c . . . . . s . . e . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . 284 . . . . o - . o . . a . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . . 285 . . . . r m = n . . s . . . . . . . . . . . . . . . . . . . . . . . . t . . . . . . . . . . . . . . 286 . . . . t o p s . . e . . . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . . . . 287 . . . . - v u . . . - . . = . . . . . . . . . . . . . . . . . . . = . t . . . . . . . . . . . . . . 288 . . . . b e s . . . A . . i . . . . . . . . . . . . . . . . . . . b . e . . . . . . . . . . . . . . 289 . . . . y . h . . . 3 . . m . . . . . . . . . . . . . . . . = . . u . - . . . . . . . . . . . . . . 290 . . . . p . . . . . . . . p . . . . . . . . . . . . . . . = r . . n . r . . . . = . . . . . . . . . 291 . . . . a . . . . . . . . o . . . . . . . . . . . . . . . r e . . d . a . . . . p . . . . . . . . . 292 . . . . s . . . . . . . . r . . . . . . . . . . . . . . . e n . . l . c . . . . a . . . . . . . . . 293 . . . . s . . . . . . . . t . . . . . . . . . . . . . . . b a . . e . e . . . . r . . = . . . . . . 294 . . . . . . . . . . . . . - . . . . . . . . . . . . . . . a m . = 2 . . . . . . s . . s . . . . . . 295 . . . = . . . . . . . . . m . . . . . . . . . . . . . = . s e . r - . . . . . . e . . h = . . . . . 296 . . . l . . . . . . . . . e . . . . . . . . . . . . . h . e - = e r . . . . . . - . . o h . . . . . 297 . . . f . . . . . . . . . r . . . . . . . . . . . . . t . - m o b e . . . . . . d . . w g . . . = = 298 . . . c . . . . . . . . . g . . . . . . . . . . . . . t . r e b a m . . . . . . a = . - w . . . r s 299 . . . o . . . . . . . . = e . . . . . . . . . . . . . p . e r s s o . . . . = . t b . s e . . . e t 300 . . . n . . . . . . . . h . . . . . . . . . . . = . . . . n g m e t . . . . h . e u . t b . = . b a 301 . . . v . . . . . . . = i . . . . . . . . . = = h . . . . a e a - e . . = . a = . n . a - . h = a t 302 . . . e . . . . . . . e s . . . . . . . . . b s i . = . . m 1 r b - = . r . r b . d . c s . i d s u 303 . . . r . . . . . . . x t . . . . . . . . . o u s . a . . e . k a c h . e . d r . l = k y = s e e s 304 . . . t . . . . . . . c e . . . . . . . . . o b t . d . = . . e s h t . s . l a . e c . m f t b - - 305 . . . . . . . . . . . h d . . . . . . . = . k r e . d . m . . r e a t . o . i n . - o . r l e u b c 306 . . . . . . . . . . . a i . . . . . . . h . m e d . . . q . . s - n p . l = n c . p n . e a d g o o 307 . . . . . . . . . = . n t . . . . . . . i . a p i = . . - . . - f g - . v c k h . h v . v g i c o l 308 . . . . . . . . . l . g - . . . . . . . s . r o t m . . s . . e l e b . e l s - . a e . . p t o k o 309 . . . . . . . . . a . e n . . . . . = . t . k - - q . . a . . f a g u . . o . c . s r . . r - m m r 310 . . . . . . . . = r . - o . . . . . r . e . s r f - . . f . . f g r n . . n . h . e t . . o e m a . 311 . . = . . . . . d g . o n . . . . . e . d . - e o q . . e . . e . o d . . e . a . s - . . c d a r . 312 . . b . . . . . i e . b - . . . . . b . i = m c l r . . t . . c . u l . . b . n . . s . . e i n k . 313 . . u . . . . . f f = s c . . . = . a . t b e u d e . . y . . t . p e . . u . g . . v . . s t d s . 314 . . n . . . . . f i g m o . . . r . s . - o r r - f . . . . . f . . 1 . . n . e . . n . . s . s . . 315 . . d . . . . . - l i a m . . . e . e . c o g s n r . . . . . l . . . . . d . . . . - . . o . . . . 316 . . l . . . . . i e t r m . . . n = - . o k e i o e . . . . . a . . . . . l . . . . b . . r . . . . 317 . . e . . . . . g s h k u . . . a c d . m m . o n s . . . . . g . . . . . e . . . . r . . . . . . . 318 . . - . . . . = n - e e t . . . m o e . m a . n - h . . . . . . . . . . . s . . . . a . . . . . . . 319 . . t . . . . a o c l r e . . = e p t . u r . . c - . . . . . . . . . . . . . . . . n . . . . . . . 320 . . y . . . . u r a p s . . . g - y a . t k . . o r . . . . . . . . . . . . . . . . c . . . . . . . 321 . . p . . = . d e c . - . . = e d . c . e s . . m e . . . . . . . . . . . . . . . . h . . . . . . . 322 . . e . . m . i - h . c . . c n i . h . . - . . m p . . . . . . . . . . . . . . . . e . . . . . . . 323 . . . . . e . t w e . a . = o e r . . . . c . . u l . . . . . . . . . . . . . . . . s . . . . . . . 324 . . . . . r . - h . . s . o m r - . . . . u . . t a . . . . . . . . . . . . . . . . . . . . . . . . 325 . . . . . g . p i . . e . b m a m . . . . r . . e c . . . . . . . . . . . . . . . . . . . . . . . . 326 . . . . . e . a t . . - . s i l e . . . . r . . . e . . . . . . . . . . . . . . . . . . . . . . . . 327 . . . . = - . t e . . A . o t d r . . . . e . . . - . . . . . . . . . . . . . . . . . . . . . . . . 328 . = . . c t . h s . . 1 . l - e g . . . . n . . . l . . . . . . . . . = . . . . . . . . . . . . . . 329 . c . . o y . . p . . . . e i l e . . . . t . . . o . . . . = . . . . g . . . . . . . . . . . . . . 330 . h . . n p . . a . . . . t n t . . . = . . . . . g . . . . u . . . . r . . . . . . . . . . . . . . 331 . e . . t e . . c . . . . e t a . . . m . . = . . - . . . . r . . . . e . . . . . . . = . . . . . . 332 . c . . r s = . e . . . . - e . . . . e . . h . . m . . . . l . . . . p . . . . . . . l . . . . . . 333 . k . . i . i . . . . . . c r . . . . r . . g . . e . . . . - . . . . . . . . . . . . f . . . . . . 334 . - . . b . n . . . . . . h a . . . . g . . w . . s . . . . r = . . . . . . . . . . . s . . . . . . 335 . p . . - . c . . . . . . e c . . . . e . . e . . s . . . . e m . . . . . . . . . . . - . . . . . . 336 . y . . p . o . . . . . . c t . . . . - . . b . . a . . . . v e . . . . . . . . = . . l . . . . . . 337 . 3 . . e . m . . . . . . k i . . . . d . . - . . g . . . . . r . . . . . . . . r . . a . . . . . . 338 . - . . r . i . . . . . . h v . . . . e . . j . . e . . . = . g . . . . . . . . e . . r . . . . . . 339 . c . . f . n . . . . . . e e . . . . f . . s . . . . . . h . e . . . . . . . . b . . g . . . . . . 340 . o . . . . g . . . . . . a - . . . . a . . o . . . = . . i . - . . . . . . . . a . . e . . . . . . 341 . m . . . . - . . . . . . d c . . . . u . . n . . . p . . s . c . = . . . . = . s . . f . . . . . . 342 . p . . . . o . . . . . . s u . . . . l . . . . . . u . . t . r . p . . . . r . e . . i . . . . . . 343 . a . . . . u . . . . . . . r . . . . t . . . . . . l . = e . i = a . . . . e . - . = l . . . = . . 344 . t . . . . t . . . . . = . s . . . . . . . . . . . l . s d . s u g . . . . b = c . p e . = . s . . 345 . . . . . . g . . . . . p . e . . . . . . . . . . . - . y i . s p e . . . . a p o = u s . c . s = . 346 . . . = . . o . = . . = u . s . . . . . . . . . = . u = m t . - - r = . = . s a n s s . . l . h p = 347 . . . p . . i . i . . u s . . . . . = . . . . . c = p a l - . c l . c . s . e t f u h . . o . - u r 348 . . . r . . n . n = . p h . . . . . s . . . . . o e d d i n . r o . o . t . - h l b - . . n . c l e 349 . . = o . . g . i c = g - . . . . . t . = . . . n x a d n o . o c . n . r . m c i r h . = e . l l b 350 . . p f . . . . t h p r h . . . = . a . w . = v c t r k - . s a . v . i = q o c e t . b - = o - a 351 . . u i . . . . . e a a t . . . s . t . i = . u e h e e s c . s l . e . p h - n t p t . u r e n b s 352 . . l l . . . . . c t d t . . . p . i = n m . n r a . m . h . . - . r . - g s f s o p . n . x e r e 353 . . l e . . . . . k h e p . . . a . c c 3 q . i t n . o . a . . c . t . c w k l . - . . d . c - a - 354 . . . . . . . = . - c - - . . . r = - h 2 - . o - g . v . n . . h . - . r e i i . m . . l . h r n e 355 . . . . . . . c . h o r b . . . s e h e t q . n s e . e . g . . a . h . o b p c . i . . e . a . c m 356 . . . . . . . a . e n e u . . . e x t c e f . r p - . - . e . . n . g . s - . t . s . . 2 . n . h p 357 . . . . . . . c . l f p n . = . - c t k x o . e l o . s . . . . g . - . s d . s . s . . - . g . . t 358 . . . . . . . h . p l o d . e = p h p - t l . p i b . i . . . . e . s . . i . - . i . . f . e . . y 359 . . . . . . . e . . i . l . x d r a . c . d . o c s . m . . . . . . o . . f . u . n . . o . - . . c 360 . . . . . . . - . . c . e . c i o n . o . . . . e m . i . . . . . . u . . f . p . g . . r . o . . o 361 . = . . . = . a . . t . 1 . h f f g . n . . . . m a . l . . . . . . r . . s . d . . . . m . b . . m 362 . b . . . t . b . . s . . . a f i e . f . . . . a r . a . . . . . . c . . . . a . . . . a . s . . m 363 . l . . . o . u . . - . . . n s l - . i . . . . p k . r . . . . . . e . . . . t . . . . t . m . . i 364 . a . . . o . s . . m . . . g t e o . g . . = . . e . . . . . . . . . . . . . e . . . . . . a . . t 365 . c . . . l . e . . e . . . e a s b . . . . h . . r . . . . . . . . . = . . . . . . . . . . r . . . 366 . k . . . s . . . . r . . . - t . s . . . . t . . s . . . . . . . . . d . . . . . . . . . . k . . . 367 . b . . . . . . . . g . . . o . . m . . . . t . . - . . . . . . . . . e . . . . . . . . . . e . . . 368 = o = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 369 c x h c b p e h m m g g i c e r e f e c e p c m m o l d e m h p c s m c d e c e h p c n p g v h e m 370 o . g o i u x g e q l e 1 l x e o n x o x a o e e r o i x q g u o i q o r x o x i e h o a e e i x q 371 n . i n s r c w r - o n 8 o p v l c c n c t n r r i g s c - w l p n - m a c n c g n u t g n r s c - 372 v . g v e g h e g q b d n n o e - a h v h h v g g g - p h m e l y g q m w h v h h d r i e d i t h m 373 e . n e c e a b e d a o . e r r h c a e a s e e e b l a a e b - - l c i d a e a l i n f r o f e a i 374 r . o r t . n - - e l c . - t t o h n r n . r - - a i t n r . r m e l t a n r n i n . y - c y d n s 375 t . r t 3 . g f h l o - . u . - o e g t g . t s l c n c g g . . o - o - g g t g g g . . l - . i g s 376 - e - . . e i a e p r . p . i k . e - e . - u o k e h e e . . v h n u . e . e h . . . e z . t e i 377 s = . h . . - l l t t u . d . n . . - d - . s b c u r . - . . . e e e n . - . - t . . . g h . - - n 378 v e . g . . o e t e s . . a . t . . o a o . v r a p a . o . . . - a - r . o . o . . . . a _ . o o g 379 n x . - . . b l . . . . . t . e . . b t b . n e l - n . b . . . m d h e . b . b . . . . c T . u b f 380 - c . s . . s o . . . . . e . r . . s e s . - p . c g . s . . . e . t s . s . s . = . . y W . t s i 381 s h . t . . m g . . . . . - . a . . m s m . e o . o e . m . . . r . t o . m . m . g . . . . . g m l 382 t a . a . . a . . . . . . o . c . . a o a . n s . n . . a . . . g . p l . a . a . e . . . . . o a e 383 a n . r . . r . . . . . . = . t . . r r r . c . . f . . r . . . e . . v . r . r . n . . . . . i r s 384 r g . t . . k . . . . . . e . i . . k = k . o . . l . . k . . . . . . e . k . k . d . . . . . n k . 385 t e . r . . e . . . . . . x . v . . e o e . d . . i . . e . . . . . . d . e . e . o . . . . . g e . 386 r - . e . . r . . . . . . c . e . . r b r . i . . c . . r . . . . . . . . r . r . c . . . . . . r . 387 e o . v . . s . . . . . . h . . . . s s s . n . = t . . s . . = . . . . . s . s . - = . . . . . s . 388 v b . . . . - . . . . . . a . . . . - o - . g . h . . . - . . g . . . . . - . - . p g . . . . . = . 389 . s . . . . c . . . . . . n . . . . c l c . . . i . . . c . . e . . . . . . = . t e . . . . . g . 390 . m . = . . a . = . . . . g . = = . a e a . . . s . = . a . . n . = . . . = . w . _ n . . . . . e . 391 . a . g = . s = d . . . . e . i e . s t = . . . t = c . = = . d . p . . . e . i . B d . . . . . n . 392 . r . e b = = h i . . . . - . d x . e e h = . = e c o . d g . o . u . . . o . r . R o . = . . . d = 393 . k . n u e c i f . . = . o = e c . - - t b = f d o n . i e . c = l . . . l . e . . c . g . . . o e 394 . e . d n x o s f . . r . b p n h . A c t r g i i n v . r n . - u l . = = - . p . . - = e = . . c m 395 . r . o d c n t - . . e . s a t a . 5 h p a e l t v e . e d . d p - . m m p . r . . e g n m = = - p 396 . s . c l h f e u . . v . m r i n . = a - n n e - e r . c o = a d p . q q a . o . . l e d e m e s t 397 . = . - e a l d n . . l . a e f g = m n p c d s b r t . t c m . a u = - - t . t . . . n o r q x v y 398 . m . j 2 n i i i . . o . r n y e c q g r h o e a t - . a - q . t l h g q c = o . . . d c g - c . - 399 . e = a - g c t f = . g . k t . - a - e o - c t s - h = c f - . e l i i r h e . = . . o - e e h . g 400 = r h . m e t - i d = - . e s . o t q s t o - - e s g s c r s . - - s t e . x . s = . c i - o a . r 401 g g i . u - . b e i i m . r . . b . q e o p r g . v - u e . y . n c t . n . c . t d . . t c l n . o 402 e e s . l o . o d f s m . s . . s . u t c t o e . n s b s . m . a o e . a . e . a i . . . o . g . u 403 n - t . t b . o . f s a = - . . m . e - o i . n . - v r s . l . m r d . m . s . t f . . . m . e . p 404 d c e . i s . k . - u p r c . . a . u = l o . e . t n e . . i . e r i . e . s . u f . . . m . - . . 405 o l d . p m . m . b e i e = . . r . e i . n . r . a . p . . n . s u t . . . i . s - . . . i . o . = 406 c o i . l a . a . i 6 n p h . . k . . n . . . a . g . o . . k = . p - . . . v . - c . . . t . b . j 407 - s t . e r . r . n 6 d a t . . e . . s . . . t . s . - . . s e . t d . . . e . r o . . . . . s = o 408 z e - . - k . k . a 0 e i t . . r . . t . . . e = . . r . . . n . i r . . . - . e l = . . . . m s u 409 h d n . c e . - . r . x r p . . s . . a . . . d j . . e . . . c . o o . . . m . v o b . . . . a h r 410 _ h o . h r . m . y . . - - = . = . . l . . . . o . . l . . . o . n p . . = e . . r u . . . . r o n 411 C e n = a s . o = - . . s b f . l . . l . . . . u . . a . . . d . . . . . i r . . . g . . . . k w a 412 N a - d n - . = c f . . t r l . o . . . . . . = r = . t = . . i . = . . . s = = . . z . . . . e . l 413 . d c i = = . l o i . . r a a . c . . . = . . c n s . i m = . n . i . = . s r r . . i . . . . r . - 414 . s o f b i = o m l . . i n g . a . . . e . . o a i = v e s . g . s . c . u e e . . l . . . . s . s 415 . . m f a s u g p e . . p c s . t . . . x . = n l m m = r p . . = s = h . e b n . . = = . . = = . h 416 . . m - s s n t l . . . . = . . e . . . t . e v . p e e g a . . d u l e . 6 a a = . c r = = g c . a 417 . . = c i u i o e = = . . h . . . . . . d = x e . l r n e r . . e e o c . 7 s m l . o e c i e h . r 418 . . c h c e f p t m c . = g . . . = . . a m c r . e g c - s . . b 1 c k . 2 e e o . n b h m n e . e 419 . = o a . 5 i r i e o . r w . . . g . . t q h t . - e o r e . . u 1 k - . . - - g = t u e p d c . . 420 . r n n . 8 e o o r m . e e . = . e . . a - a - . u - d e - . . g 7 - s . = i a e a r i c e o k . . 421 . = f g . 6 d c n g m . b b . p . t . = . p n c . p r i v i . . b 5 b h = r n f x u i l k x c - . = 422 = q i e . . - = . e i . a - . u . b . m . u g l . d e n e m = . u . a b o e m t c d b d - p - e = h 423 d r g . . . t m . - t . s c . l . u = q . l e o . a m g r p c = i . d a b b e e h i . s c - d x n g 424 e e . . . . e e . i - . e s . l . n d - . l - n = = o - t o h s l . n n s a m r a t . t o b e e o r 425 v c . . . . = r = n m . - p = - . d i q . - o e p p v a 2 r i t d . e g o s o - n - . a m r . c t c 426 e o . . . . e g e t u . i . p h . l f g . f b b a u e l . t l a d . s . l e r m g s . t m a . u i . 427 l r . . = . x e x e l . s . u t . e f o . r s r t s . i . . d t a . s . e - y e e u . e i n . t f . 428 - d . . s = c - c r t . s . s t . . - t . o m = c h . g . . r u g = . . t c . r . b . . t c . e y . 429 w . . . e m h r h n i . u . h p = . u o . m a p h - . n . = e s . g . . e h . = . r = . . h . . - . 430 a . . = r q a e a a p . e . - . a . p . = - r u b c . = . p n - . p . = - e . f . e i . . = . . c . 431 r . . p v - n v n l l . - . c . d . g . e b k s o h = p . u . t . g = h t c . i = p m . . m . = h . 432 n . = a e q g e g = = . n = h = d . r . x u e h m e d r = s . e = . h g a k . l p o p = . q . p a . 433 i . c t . d e r e m p . o b e a r . a . c n r - b c i o m h . r p . t w g - . e u . o i . - . u n . 434 n . a h . i - t - e u . = o c r e . d . h d = c - k r g a - . s u . t e - r = b s = r m = q . s g = 435 g = s c . f o . o r s . p o k b m = e . a l p h t h s r n c . e s . p b = e u r h p t p p r . h e p 436 s c e o . f b . b g h . u k h i o i = . n e a e l e t e i h . . h . - - p s r a - u - o u e . - = u 437 = h c n . . s . s e - . s m e t v m m . g . t c s a a s f e . . - = p a u t l n c s e r s f . c k s 438 p e o f . . m . m 7 c . h a a r e p e . e = c k = = t s e c = . c m r n s o - c h h o t h r = h n h 439 u c l l = . a . a . h . - r d a . o r . - i h h p h e . s k p = h e o n h r d h e - l s - e p e o - 440 s k l i p . = . r . e . c k s r . r g = o s b e u g . . t h e c e r x o - = o . c c . - c s u c w c 441 h - i c u . m . k . c . h s - = . t e p b s o a s w . . . e r o c g y t c p w = k h . c h s k n h 442 - c s t s . e . e . k . e - p p . - 6 u s u m d h e . . . a m n k e . a h u n s h e . h e = h h . e 443 c l i s h . r . r = h . c r r a . u . s m e b s - b = = . d i v h 2 . t e s l y e c . e c p - = . c 444 h a o - - . g = = d e . k e u r = n . h a 1 - - c d c p . s s e e . = = c h o m a k . = k u c o . k 445 e n n b c . e r i i a . h b n s b k . - r 8 = u h i l u . = s r a . r p k - a l d h . s h s h l . h 446 c g . a h = 9 e s f d . e a = e u n . c k 0 s = e r o s . p = t d . e u h c d i s e . p e h e d . e 447 k = . s e m . l s f s . a s h i n o . h e 2 p c c s n h . y p = s . v s e h = n - a = a = - c c . = 448 h i = = c q . i u d - . d = g n d w . e r . a o k = e - . 3 a u - . s h a e p k s d p r r c k = = c 449 e s e c = - . n e i u . s p w d l n = c = = r n h p - c = - t p u . e - d c u - u = u s e h h e r h 450 a s o o m s . k 1 r n . = u e e e . r k m r s f e u p h s c c d n . t c s k s p = u s e p e e o e a 451 d u l m a u . . 3 . p . e s b x - = e h a e e u a s u e c o h a = . - h - h h = a p h - o c a l b n 452 s e - m n b = = 0 . u . n h = = v p v e n q - s = h l = h m . t u = o e s e - m r d - m - = d f a g 453 - 1 a i i r e r = . = . c - b d s u s a i u v e b - l c e = . e n d u c u a c e c a c e c i s i s e 454 u 8 d t f e m e r . c . o c r i - s e d f i = d o c - o m p . - b e t k = d h r h t h r = s - l e l 455 n 7 d t e p p b e . l . d h a f o h t = e r e - o h = n e u = i u b g = h = e g i e e g l s = e - o 456 = 7 . e s = t a b = o . e e n f u v - s s e n r k e h t s s s s n u = w i n c e v - c = a u i n p g 457 n = . r t c y s a m n . . c c - = a d p t s c e m c g e . h p = d g h e s e k 1 = r k i r e s a a = 458 e m . . . o - e s e = . . k h c i r i a = = o = a k w x . - a j = b g b t w h 0 e e h n g 1 s = = d 459 w e = . = n f - e r d . = h = o s = r r p u d e r = e t = c r o c u w s e = e . x = e h = 5 u h d o 460 e r i = r t = = - g e . u = h p s r s s u p = o = e b = i h s u u = e = = e = = e s = e d = e g i u 461 = s b e r i w = e = . n t g y u e = = l d b l i o = d s e = r s r b m m x e g c p s r i i = k f = 462 e = s a b = s o s = m = r e w = e v o n l a u - m l c i s c h n = e = a a t d l u a t i f s l = f m 463 m x u d = a s r u m e i e m e b 4 = b e - = n = = - o f = g = d v p n c e i o = r t f s o r = e 464 p d e - i n u k b q r s = p b a = d s s = r d r e u n = = d w r e e u i n t = = d = = u g e a r 465 = g 1 p s c = e - g s e = - d i e = t e e l e o = v h r i e e b r s = = s = f h i r = i = - b b g 466 p . = = s e s r = = e u m p d - s b d e x v e v l u = g e f b v u t h u d = m i g r e b s h = a o e 467 a . p l = = y . l p = = p a = = s u i = t e 2 l - r r w v f - l = = - s o d q l w s v a s y a = = = 468 t = r i b d m = o a t f t t b c = f w r r = = = l e e = e = a m c e c e - = = t l c u = n u u h 469 = m = = = = = s = = = i = = = = = d = = = = d l h = = = w = = s t = g = = = = e h = = = = l = i = = 470 c = c c m c c = c a = c l c r = = c c l = = = = = d = = = s = = c = c a c c = = = c c = = f l 471 h p o a o o a a m n f o e s a l o f c s p c r o c c r r b a b l m o o c c d c u f 472 u m e s p m o s p u o o o e 473 s e n - l e n - l s o o n n 474 h n d s i n e s i h k k e d 475 - . e t d - e t - m m - . 476 r . r . u r . r a a u . 477 a . . n v . a r r n . 478 c . . c e . c k k c . 479 e . . o . . e s s o . 480 . m . . . - - m . 481 . p . . p p p 482 . r . . u u r 483 . e . . s s e 484 . s . . h h s 485 . s . p p s 486 . e . u u e 487 . d . l l d 488 . . . l l 489 . . . . . 490 . . . . 491 . . . . 492 . . . . 493 . . . . 494 . . . . 495 . . . . 496 . . . . 497 . . . . 498 . . . . 499 . . 500 . . 501 . . 502 . . 503 . . 504 . . 505 . . 506 . . 507 . . 508 . . 509 . . 510 . . 511 . . 512 . . 513 . . 514 . . 515 . Differential Revision: https://phab.mercurial-scm.org/D2615
Sat, 03 Mar 2018 17:53:32 -0500 py3: whitelist another 15 passing tests
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:53:32 -0500] rev 36693
py3: whitelist another 15 passing tests Differential Revision: https://phab.mercurial-scm.org/D2614
Sat, 03 Mar 2018 17:09:26 -0500 cmdutil: ensure PatchError messages are coerded to bytes, not str
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:09:26 -0500] rev 36692
cmdutil: ensure PatchError messages are coerded to bytes, not str Differential Revision: https://phab.mercurial-scm.org/D2613
Sat, 03 Mar 2018 17:08:41 -0500 tests: fix bytes literals in test-fncache.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:08:41 -0500] rev 36691
tests: fix bytes literals in test-fncache.t # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D2612
Sat, 03 Mar 2018 17:08:05 -0500 scmutil: avoid using basestring and add explicit handling of unicodes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:08:05 -0500] rev 36690
scmutil: avoid using basestring and add explicit handling of unicodes This resolves some Python 3 defects, and I don't think it is a meaningful behavior change in Python 2. Differential Revision: https://phab.mercurial-scm.org/D2611
Sat, 03 Mar 2018 17:07:18 -0500 tests: fix inline extension bytes in test-ssh-proto-unbundle.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:07:18 -0500] rev 36689
tests: fix inline extension bytes in test-ssh-proto-unbundle.t # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D2610
Sat, 03 Mar 2018 16:38:17 -0500 hghave: fix up clang-libfuzzer regex to be bytes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 16:38:17 -0500] rev 36688
hghave: fix up clang-libfuzzer regex to be bytes Fixes this check on Python 3. # skip-blame just a b prefix Differential Revision: https://phab.mercurial-scm.org/D2607
Sat, 03 Mar 2018 15:41:12 -0500 py3: accept both unicode and byte strings as filename carried by IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:41:12 -0500] rev 36687
py3: accept both unicode and byte strings as filename carried by IOError Follows up 77f98867538f. We could assume there's no bytes filename in our codebase, but it's probably better to not raise UnicodeError because of a unicode filename.
Sat, 03 Mar 2018 15:33:52 -0500 py3: back out c77c925987d7 to store bytes filename in IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:33:52 -0500] rev 36686
py3: back out c77c925987d7 to store bytes filename in IOError Appears that this is how Python 3 works.
Sat, 03 Mar 2018 14:57:23 -0500 largefiles: headers and values need to be sysstrs, add r prefixes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:57:23 -0500] rev 36685
largefiles: headers and values need to be sysstrs, add r prefixes # skip-blame just some r prefixes Differential Revision: https://phab.mercurial-scm.org/D2606
Sat, 03 Mar 2018 11:26:30 -0500 cext: accept arguments as Py_buffer
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:26:30 -0500] rev 36684
cext: accept arguments as Py_buffer The s*/y* value formatters receive a Py_buffer instead of a char *. This value format is more flexible in the types that it allows. We change bdiff() to accept any object that conforms to the buffer protocol. We validate the buffers are contiguous and have a single dimension. This allows memoryview instances to be handled by the function, so we revert a recent change to cast arguments to bytes before calling this function. Differential Revision: https://phab.mercurial-scm.org/D2587
Sat, 03 Mar 2018 11:19:43 -0500 cext: refactor cleanup code in bdiff()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:19:43 -0500] rev 36683
cext: refactor cleanup code in bdiff() A future commit will need to introduce additional cleanup code. We refactor the cleanup code to check NULL before calling free(). We also initialize these variables as NULL. We set the out of memory exception explicitly, so we can just return result. Differential Revision: https://phab.mercurial-scm.org/D2586
Fri, 02 Mar 2018 07:13:33 +0530 py3: use pycompat.bytestr() to convert error messages to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:13:33 +0530] rev 36682
py3: use pycompat.bytestr() to convert error messages to bytes Differential Revision: https://phab.mercurial-scm.org/D2535
Sat, 03 Mar 2018 14:28:51 -0500 url: more bytes/unicodes fussing in url.py around auth handling
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:28:51 -0500] rev 36681
url: more bytes/unicodes fussing in url.py around auth handling Once again, these methods are a little annoying to handle because they can get unicodes or bytes depending on who's calling. I think we can probably clean this up a TON once we can run something like pytype and do typechecking of our Python, but until then this is going to be the easy way out. This fixes test-http-bundle1.t. Differential Revision: https://phab.mercurial-scm.org/D2599
Sat, 03 Mar 2018 14:24:21 -0500 httpconnection: convert url to bytes in readauthforuri
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:24:21 -0500] rev 36680
httpconnection: convert url to bytes in readauthforuri This method is sometimes called by the stdlib, so we just need to accept both bytes and unicodes here. Awesome. Differential Revision: https://phab.mercurial-scm.org/D2598
Sat, 03 Mar 2018 14:44:41 -0500 tests: prevent enormous output spew in test-lfs-largefiles.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:44:41 -0500] rev 36679
tests: prevent enormous output spew in test-lfs-largefiles.t This test currently fails on Python 3, but in a super-slow way. Adding this `head` invocation costs us nothing, but will prevent failures in this area from being super expensive. Differential Revision: https://phab.mercurial-scm.org/D2600
Sat, 03 Mar 2018 12:23:03 -0500 py3: fix formatting of path-auditing errors
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:23:03 -0500] rev 36678
py3: fix formatting of path-auditing errors
Sat, 03 Mar 2018 12:36:05 -0500 py3: make os.curdir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:36:05 -0500] rev 36677
py3: make os.curdir a bytes
Sat, 03 Mar 2018 12:34:35 -0500 py3: make os.pardir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:34:35 -0500] rev 36676
py3: make os.pardir a bytes
Sat, 03 Mar 2018 14:21:47 -0500 py3: fix slicing of bytes in patch.iterhunks()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 14:21:47 -0500] rev 36675
py3: fix slicing of bytes in patch.iterhunks()
Sat, 03 Mar 2018 09:35:59 -0500 tests: fix various test-check-module-imports.t violations
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 09:35:59 -0500] rev 36674
tests: fix various test-check-module-imports.t violations Somehow these are only caught when running the test under Python 3. Differential Revision: https://phab.mercurial-scm.org/D2580
Tue, 27 Feb 2018 00:33:46 +0530 pycompat: prevent encoding or decoding values if not required
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 00:33:46 +0530] rev 36673
pycompat: prevent encoding or decoding values if not required pycompat.py has functions strurl and bytesurl which decodes and encodes the url passed on Python 3 respectively. In some cases, strurl gets a url which is already str and bytesurl gets a url which is already bytes. Let's prevent encoding or decoding the values again if not required. Differential Revision: https://phab.mercurial-scm.org/D2472
Sat, 03 Mar 2018 10:39:48 -0500 py3: add some b'' to make test-lock-badness.t happy
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:39:48 -0500] rev 36672
py3: add some b'' to make test-lock-badness.t happy
Sat, 03 Mar 2018 10:32:06 -0500 py3: fix formatting of lock error message
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:32:06 -0500] rev 36671
py3: fix formatting of lock error message
Sat, 03 Mar 2018 10:02:36 -0500 py3: fix some unicode madness in global exception catcher
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:02:36 -0500] rev 36670
py3: fix some unicode madness in global exception catcher
Sat, 03 Mar 2018 10:08:13 -0500 py3: pass a system-string filename to sub-classes of IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:08:13 -0500] rev 36669
py3: pass a system-string filename to sub-classes of IOError
Sat, 03 Mar 2018 09:19:34 -0500 py3: fix some membership tests on linkrev adjustment
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 09:19:34 -0500] rev 36668
py3: fix some membership tests on linkrev adjustment
Fri, 02 Mar 2018 22:38:09 -0500 py3: make test-basic.t pass on Python 3
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:38:09 -0500] rev 36667
py3: make test-basic.t pass on Python 3
Fri, 02 Mar 2018 22:35:20 -0500 py3: silence the final IOError by closing stdout/err slightly early
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:35:20 -0500] rev 36666
py3: silence the final IOError by closing stdout/err slightly early Fixes the following test failure: $ hg status >/dev/full abort: No space left on device Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' ... OSError: [Errno 28] No space left on device [120]
Fri, 02 Mar 2018 22:10:36 -0500 py3: conditionalize initialization of stdio flags
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:10:36 -0500] rev 36665
py3: conditionalize initialization of stdio flags Since Python 3 doesn't depend on the stdio of libc, there should be no need to set O_BINARY flag on Windows.
Thu, 01 Mar 2018 18:25:19 -0500 test-command-template: glob out detailed "invalid escape" message
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:25:19 -0500] rev 36664
test-command-template: glob out detailed "invalid escape" message Python 3 also reports the position where an invalid escape found.
Thu, 01 Mar 2018 08:14:54 -0500 templater: byte-stringify dict/list values before passing to default format
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:14:54 -0500] rev 36663
templater: byte-stringify dict/list values before passing to default format bytestr() is applied only when no custom format string like '%d' is specified.
Thu, 01 Mar 2018 08:07:22 -0500 templater: allow dynamically switching the default dict/list formatting
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:07:22 -0500] rev 36662
templater: allow dynamically switching the default dict/list formatting '%s' doesn't work nicely on Python 3 because many Python types don't implement __bytes__().
Sat, 03 Mar 2018 21:01:07 +0530 py3: use util.forcevytestr to convert error to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 03 Mar 2018 21:01:07 +0530] rev 36661
py3: use util.forcevytestr to convert error to bytes Differential Revision: https://phab.mercurial-scm.org/D2585
Sat, 03 Mar 2018 09:50:07 -0500 util: report integer result from write()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:50:07 -0500] rev 36660
util: report integer result from write() Python 2 sometimes returns None from write() calls. Python 3 doesn't. This will make test output inconsistent between Python 2 and 3. So let's paper over the differences by converting None to the length of the result string. Differential Revision: https://phab.mercurial-scm.org/D2584
Sat, 03 Mar 2018 09:34:06 -0500 util: log readinto() I/O
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:34:06 -0500] rev 36659
util: log readinto() I/O Differential Revision: https://phab.mercurial-scm.org/D2583
Fri, 02 Mar 2018 22:47:18 -0500 util: teach escapedata() about bytearray
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 22:47:18 -0500] rev 36658
util: teach escapedata() about bytearray re.map doesn't seem to know about bytearray (at least in Python 2). Cast bytearray to a bytes to work around this inconvenience. Differential Revision: https://phab.mercurial-scm.org/D2582
Fri, 02 Mar 2018 22:59:12 -0500 sshpeer: don't read(0)
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 22:59:12 -0500] rev 36657
sshpeer: don't read(0) read(0) is essentially a no-op. Let's avoid the function call, overhead, and extra test output by not performing it. Differential Revision: https://phab.mercurial-scm.org/D2581
Sat, 03 Mar 2018 05:51:34 -0500 py3: unblock C extensions on Python 3
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:51:34 -0500] rev 36656
py3: unblock C extensions on Python 3 Please make sure to build C extensions before running tests with -l: $ make local PYTHON=python3
Sat, 03 Mar 2018 07:59:20 -0500 py3: make test-ancestors.py pass on Python 3 with C extensions
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:59:20 -0500] rev 36655
py3: make test-ancestors.py pass on Python 3 with C extensions # skip-blame just some b prefixes
Sat, 03 Mar 2018 07:24:25 -0500 py3: do not pass a memoryview to bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:24:25 -0500] rev 36654
py3: do not pass a memoryview to bdiff.bdiff() This doesn't look nice, but I don't know how to make a zero-copy slice of bytes which is compatible with the buffer protocol.
Sat, 03 Mar 2018 07:00:37 -0500 py3: do not pass a list of iterators to computephasesmapsets()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:00:37 -0500] rev 36653
py3: do not pass a list of iterators to computephasesmapsets()
Sat, 03 Mar 2018 06:57:02 -0500 cext: fix computephasesmapsets() not to return without setting an exception
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:57:02 -0500] rev 36652
cext: fix computephasesmapsets() not to return without setting an exception Spotted by map() of Python 3.
Sat, 03 Mar 2018 06:44:47 -0500 py3: do not pass a float to dict_new_presized()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:44:47 -0500] rev 36651
py3: do not pass a float to dict_new_presized() I really don't like the division operator of Python 3 since I'm not doing a math.
Sat, 03 Mar 2018 06:41:52 -0500 cext: mark tuple_format as a constant
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:41:52 -0500] rev 36650
cext: mark tuple_format as a constant Just for clarity.
Sat, 03 Mar 2018 06:18:47 -0500 py3: bulk-replace 'const char*' format specifier passed to PyArg_ParseTuple*()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:18:47 -0500] rev 36649
py3: bulk-replace 'const char*' format specifier passed to PyArg_ParseTuple*() Perhaps we need this because 's' accepts a unicode string. https://docs.python.org/3/c-api/arg.html#strings-and-buffers Substituted using the following pattern with some manual fixes: '\b(PyArg_ParseTuple)\((\s*\w+,\s*)"([^"]+)"' '\b(PyArg_ParseTupleAndKeywords)\((\s*\w+,\s*\w+,\s*)"([^"]+)"'
Sat, 03 Mar 2018 06:08:22 -0500 py3: bulk-replace bytes format specifier passed to Py_BuildValue()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:08:22 -0500] rev 36648
py3: bulk-replace bytes format specifier passed to Py_BuildValue() On Python 3, "s" means a utf-8 string. We have to use "y" for bytes, sigh. https://docs.python.org/3/c-api/arg.html#c.Py_BuildValue Substituted using the following pattern with some manual fixes: '\b(Py_BuildValue)\((\s*)"([^"]+)"'
Sat, 03 Mar 2018 05:58:41 -0500 py3: add PY23() macro to switch string literal depending on python version
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:58:41 -0500] rev 36647
py3: add PY23() macro to switch string literal depending on python version I have no better idea to work around the bytes-unicode divergence of Py_BuildValue(). Maybe we can write a code transformer for C extensions? :)
Sat, 03 Mar 2018 05:50:45 -0500 py3: don't try to mangle C extension blob by code transformer
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:50:45 -0500] rev 36646
py3: don't try to mangle C extension blob by code transformer
Fri, 02 Mar 2018 18:47:27 -0500 tests: add missing b prefixes in test-atomictempfile.py
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 18:47:27 -0500] rev 36645
tests: add missing b prefixes in test-atomictempfile.py # skip-blame just some b prefixes Differential Revision: https://phab.mercurial-scm.org/D2570
Tue, 27 Feb 2018 16:31:44 -0800 wireproto: only expose "between" to version 1 of wire protocols
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 16:31:44 -0800] rev 36644
wireproto: only expose "between" to version 1 of wire protocols We recently marked other legacy commands as only available to version 1 of the wire protocols. We held off marking "between" because it is used as part of the SSH handshake. Since SSH servers assume they are version 1 by default and the "between" request that is issued as part of the version 2 handshake is swallowed and not operated on, everything should "just work" if "between" is not available to version 2. Differential Revision: https://phab.mercurial-scm.org/D2513
Fri, 02 Mar 2018 18:55:18 -0500 tests: add more tests around hook output and getbundle
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 18:55:18 -0500] rev 36643
tests: add more tests around hook output and getbundle The previous tests around hook output only tested Python hooks. Let's add some shell hooks in for additional test coverage. Differential Revision: https://phab.mercurial-scm.org/D2550
Tue, 27 Feb 2018 16:24:02 -0800 wireproto: add transport specific capabilities in the transport
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 16:24:02 -0800] rev 36642
wireproto: add transport specific capabilities in the transport We add a method to the protocol handler interface that allows specific implementations to add their own capabilities. The SSH implementation is a no-op. The HTTP implementation adds the HTTP-specific capabilities. The end result is transport specific capabilities now live in the transport code instead of in some generic function in the wireproto module. Differential Revision: https://phab.mercurial-scm.org/D2512
Tue, 27 Feb 2018 15:23:04 -0800 wireproto: don't expose changegroupsubset capability if not available
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 15:23:04 -0800] rev 36641
wireproto: don't expose changegroupsubset capability if not available We just marked the changegroupsubset command as only available to version 1 of the wire transports. There is a capability of the same name of the command that indicates if the command is supported. This commit teaches the capabilities code to conditionally emit that capability depending on whether the command is available for the current transport. Most test output is reordering of capabilities. But the limited tests for version 2 of the SSH protocol do show the capability disappearing. Differential Revision: https://phab.mercurial-scm.org/D2486
Tue, 27 Feb 2018 15:06:10 -0800 wireproto: don't expose legacy commands to version 2 of wire protocol
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 15:06:10 -0800] rev 36640
wireproto: don't expose legacy commands to version 2 of wire protocol Now that we have the ability to control which transports a wire protocol command is exposed on, let's put it to use. We flag the "branches," "changegroup," and "changegroupsubset" commands as only available on version 1. "branches" was used by the legacy discovery mechanism and was replaced by the "known" and "heads" commands. "changegroup" and "changegroupsubset" were replaced by "getbundle." "between" is also legacy. However, since it is used by the SSH handshake protocol, marking it as legacy is a bit more complicated and will be done in a later commit. Another nuanced issue with this change is that the server-advertised capabilities still list "changegroupsubset" despite the command not being available. This will be addressed in a subsequent commit. Differential Revision: https://phab.mercurial-scm.org/D2485
Tue, 27 Feb 2018 14:56:03 -0800 wireprotoserver: identify requests via version 2 of SSH protocol as such
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 14:56:03 -0800] rev 36639
wireprotoserver: identify requests via version 2 of SSH protocol as such The protocol handler needs to advertise itself as version 2 in order for a future feature to work. Differential Revision: https://phab.mercurial-scm.org/D2484
Fri, 02 Mar 2018 09:47:37 -0500 wireproto: allow wire protocol commands to declare transport support
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 09:47:37 -0500] rev 36638
wireproto: allow wire protocol commands to declare transport support Currently, wire protocol commands are exposed on all transports. Some wire protocol commands are only supported or sensical on some transports. In the future, new wire protocol commands may only be available on new transports and legacy wire protocol commands may not be available to newer transports. This commit introduces a mechanism to allow @wireprotocommand to declare transports for which they should not be available. The mechanism for determining if a wire protocol command is available for a given transport instance has been taught to take this knowledge into account. To help implement this feature, we add a dict to wireprototypes declaring all wire transports and their metadata. There's probably room to refactor the constants used to identify the wire protocols. But that can be in another commit. Differential Revision: https://phab.mercurial-scm.org/D2483
Fri, 02 Mar 2018 18:50:49 -0500 sshpeer: don't read from stderr when that behavior is disabled
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 18:50:49 -0500] rev 36637
sshpeer: don't read from stderr when that behavior is disabled We previously prevented the creation of doublepipe instances when we're not supposed to automatically read from stderr. However, there were other automatic calls to read from stderr that were undermining this effort. This commit prevents all automatic reads from stderr from occurring when they are supposed to be disabled. Because stderr is no longer being read, we need to call "readavailable" from tests so stderr is read from. Test output changes because stderr is now always (manually) read after stdout. And, since sshpeer no longer automatically tends to stderr, no "remote: " messages are printed. This should fix non-deterministic test output. FWIW, doublepipe automatically reads from stderr when reading from stdout, so I'm not sure some of these calls to self._readerr() are even needed. Differential Revision: https://phab.mercurial-scm.org/D2571
Thu, 15 Feb 2018 17:18:26 +0100 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net> [Thu, 15 Feb 2018 17:18:26 +0100] rev 36636
util: extract all date-related utils in utils/dateutil module With this commit, util.py lose 262 lines Note for extensions author, if this commit breaks your extension, you can pull the step-by-step split here to help you more easily pinpoint the renaming that broke your extension: hg pull https://bitbucket.org/octobus/mercurial-devel/ -r ac1f6453010d Differential Revision: https://phab.mercurial-scm.org/D2282
Thu, 08 Feb 2018 23:27:24 +0530 clone: updates the help text for hg clone -{r,b} (issue5654)
Sangeet Kumar Mishra <mail2sangeetmishra@gmail.com> [Thu, 08 Feb 2018 23:27:24 +0530] rev 36635
clone: updates the help text for hg clone -{r,b} (issue5654) Differential Revision: https://phab.mercurial-scm.org/D2095
Fri, 02 Mar 2018 15:48:31 -0500 py3: whitelist more passing tests
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 15:48:31 -0500] rev 36634
py3: whitelist more passing tests Differential Revision: https://phab.mercurial-scm.org/D2569
Fri, 02 Mar 2018 11:07:42 -0500 lfs: convert hexdigest to bytes using sysbytes
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:42 -0500] rev 36633
lfs: convert hexdigest to bytes using sysbytes Differential Revision: https://phab.mercurial-scm.org/D2568
Fri, 02 Mar 2018 11:07:25 -0500 lfs: use %d to encode int, not str()
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:25 -0500] rev 36632
lfs: use %d to encode int, not str() Differential Revision: https://phab.mercurial-scm.org/D2567
Fri, 02 Mar 2018 11:07:07 -0500 lfs: use byteskwargs() on some **kwargs for python 3 compat
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:07 -0500] rev 36631
lfs: use byteskwargs() on some **kwargs for python 3 compat Differential Revision: https://phab.mercurial-scm.org/D2566
Fri, 02 Mar 2018 11:06:37 -0500 lfs: add some bytestring wrappers in blobstore.py
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:06:37 -0500] rev 36630
lfs: add some bytestring wrappers in blobstore.py Differential Revision: https://phab.mercurial-scm.org/D2565
Fri, 02 Mar 2018 11:05:53 -0500 lfs: add missing b prefixes on some regular expressions
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:05:53 -0500] rev 36629
lfs: add missing b prefixes on some regular expressions # skip-blame just some b prefixes Differential Revision: https://phab.mercurial-scm.org/D2564
Sun, 25 Feb 2018 19:34:35 +0900 templatekw: deprecate showdict() and showlist() (API)
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:34:35 +0900] rev 36628
templatekw: deprecate showdict() and showlist() (API) .. api:: templatekw.showdict() and showlist() are deprecated in favor of new (context, mapping) API. Switch the keyword function to new API and use templatekw.compatdict() and compatlist() instead.
Sun, 25 Feb 2018 19:25:14 +0900 templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:25:14 +0900] rev 36627
templatekw: switch remainder of _showlist template keywords to new API
Sun, 25 Feb 2018 20:55:53 +0900 templatekw: switch manifest template keyword to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 20:55:53 +0900] rev 36626
templatekw: switch manifest template keyword to new API
Sun, 25 Feb 2018 19:23:06 +0900 templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:23:06 +0900] rev 36625
templatekw: switch latesttags template keywords to new API
Sun, 25 Feb 2018 19:08:02 +0900 templatekw: switch revset() to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:08:02 +0900] rev 36624
templatekw: switch revset() to new API
Sun, 25 Feb 2018 19:05:57 +0900 templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:05:57 +0900] rev 36623
templatekw: switch obsfate-related template keywords to new API
Sun, 25 Feb 2018 18:52:51 +0900 templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 18:52:51 +0900] rev 36622
templatekw: switch namespace template keywords to new API
Sun, 25 Feb 2018 18:56:06 +0900 namespace: use registrar to add template keyword
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 18:56:06 +0900] rev 36621
namespace: use registrar to add template keyword Prepares for switching to the new API.
Sun, 25 Feb 2018 16:45:44 +0900 templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:45:44 +0900] rev 36620
templatekw: switch most of showlist template keywords to new API (issue5779) Non-trivial changes will follow.
Sun, 25 Feb 2018 16:22:55 +0900 templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:22:55 +0900] rev 36619
templatekw: switch showdict template keywords to new API
Fri, 02 Mar 2018 15:37:57 -0500 py3: bail on ratcheting tests forward on 3.6.0 and 3.6.1
Kevin Bullock <kbullock+mercurial@ringworld.org> [Fri, 02 Mar 2018 15:37:57 -0500] rev 36618
py3: bail on ratcheting tests forward on 3.6.0 and 3.6.1
Thu, 01 Mar 2018 18:22:36 -0500 py3: silence "bad escape" warning emitted by re.sub()
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:22:36 -0500] rev 36617
py3: silence "bad escape" warning emitted by re.sub() Since we pass user strings directly to re.sub(), we can't avoid this warning without a BC.
Fri, 02 Mar 2018 14:12:17 -0500 debugcommands: add some strkwargs love to some **args calls
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:12:17 -0500] rev 36616
debugcommands: add some strkwargs love to some **args calls Differential Revision: https://phab.mercurial-scm.org/D2563
Fri, 02 Mar 2018 14:10:34 -0500 debugcommands: add an r prefix to make file mode for fdopen a sysstr
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:10:34 -0500] rev 36615
debugcommands: add an r prefix to make file mode for fdopen a sysstr # skip-blame just an r prefix Differential Revision: https://phab.mercurial-scm.org/D2562
Fri, 02 Mar 2018 14:09:50 -0500 util: work around Python 3 returning None at EOF instead of ''
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:09:50 -0500] rev 36614
util: work around Python 3 returning None at EOF instead of '' Differential Revision: https://phab.mercurial-scm.org/D2561
Fri, 02 Mar 2018 14:09:20 -0500 util: add missing r prefix on some __setattr__ calls
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:09:20 -0500] rev 36613
util: add missing r prefix on some __setattr__ calls # skip-blame just a pair of r prefixes Differential Revision: https://phab.mercurial-scm.org/D2560
Fri, 02 Mar 2018 13:47:49 -0500 tests: add some re and globs for test-revset on python3
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 13:47:49 -0500] rev 36612
tests: add some re and globs for test-revset on python3 At this point we're down to two deprecation warnings (which I suspect are showing a bug in the test?) and one weird-looking failure. Progress! Differential Revision: https://phab.mercurial-scm.org/D2559
Fri, 02 Mar 2018 11:38:16 -0500 tests: add missing b prefixes and fix a %s to %d in test-revset.t
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:38:16 -0500] rev 36611
tests: add missing b prefixes and fix a %s to %d in test-revset.t # skip-blame just b prefixes and a %d instead of %s Differential Revision: https://phab.mercurial-scm.org/D2558
Fri, 02 Mar 2018 11:37:41 -0500 revset: use %d to turn an int into a bytestr
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:37:41 -0500] rev 36610
revset: use %d to turn an int into a bytestr Differential Revision: https://phab.mercurial-scm.org/D2557
Fri, 02 Mar 2018 11:37:21 -0500 revset: use {force,}bytestr to fix some %r formatting issues
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:37:21 -0500] rev 36609
revset: use {force,}bytestr to fix some %r formatting issues Differential Revision: https://phab.mercurial-scm.org/D2556
Fri, 02 Mar 2018 01:17:42 -0500 py3: sixteen more passing tests
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 01:17:42 -0500] rev 36608
py3: sixteen more passing tests Differential Revision: https://phab.mercurial-scm.org/D2552
Fri, 02 Mar 2018 00:37:33 -0500 debugcommands: fix repr in debugignore print with pycompat.bytestr
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:33 -0500] rev 36607
debugcommands: fix repr in debugignore print with pycompat.bytestr Differential Revision: https://phab.mercurial-scm.org/D2549
Thu, 01 Mar 2018 23:58:28 -0500 verify: fix exception formatting bug in Python 3
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:58:28 -0500] rev 36606
verify: fix exception formatting bug in Python 3 Differential Revision: https://phab.mercurial-scm.org/D2541
Fri, 02 Mar 2018 13:50:31 -0500 get-with-headers: use bytes stdout thoroughly
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 13:50:31 -0500] rev 36605
get-with-headers: use bytes stdout thoroughly On Python 3, sys.stdout.buffer is backed by a separate buffer from sys.stdout. We should choose one.
Thu, 01 Mar 2018 17:16:36 -0800 exchange: remove dead assignment or forcebundle1
Martin von Zweigbergk <martinvonz@google.com> [Thu, 01 Mar 2018 17:16:36 -0800] rev 36604
exchange: remove dead assignment or forcebundle1 Differential Revision: https://phab.mercurial-scm.org/D2548
Fri, 02 Mar 2018 09:09:38 -0500 templatekw: fix dict construction in _showlist to not mix bytes and strs
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 09:09:38 -0500] rev 36603
templatekw: fix dict construction in _showlist to not mix bytes and strs What we had was fine on Python 2, but was slightly wrong on Python 3. This works on both. Differential Revision: https://phab.mercurial-scm.org/D2554
Fri, 02 Mar 2018 09:08:11 -0500 templatefilters: avoid infinite recursion bug in stringify
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 09:08:11 -0500] rev 36602
templatefilters: avoid infinite recursion bug in stringify This doesn't ever happen on Python 2, but it's been a persistent pain on Python 3. Adding this helped produce some of my upcoming Python 3 fixes. Differential Revision: https://phab.mercurial-scm.org/D2553
Fri, 02 Mar 2018 00:37:55 -0500 match: some minimal pycompat fixes guided by test-hgignore.t
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:55 -0500] rev 36601
match: some minimal pycompat fixes guided by test-hgignore.t Differential Revision: https://phab.mercurial-scm.org/D2551
Fri, 02 Mar 2018 00:37:07 -0500 purge: apply byteskwargs to opts, fixing all python3 issues here
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:07 -0500] rev 36600
purge: apply byteskwargs to opts, fixing all python3 issues here Differential Revision: https://phab.mercurial-scm.org/D2547
Fri, 02 Mar 2018 00:19:51 -0500 tests: port test-bookmarks.t extension to Python 3
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:51 -0500] rev 36599
tests: port test-bookmarks.t extension to Python 3 # skip-blame it's just b prefixes Differential Revision: https://phab.mercurial-scm.org/D2546
Fri, 02 Mar 2018 00:19:30 -0500 scmutil: fix a repr in an error message on Python 3
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:30 -0500] rev 36598
scmutil: fix a repr in an error message on Python 3 Differential Revision: https://phab.mercurial-scm.org/D2545
Fri, 02 Mar 2018 00:19:16 -0500 bookmarks: fix a repr in a message on Python 3
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:16 -0500] rev 36597
bookmarks: fix a repr in a message on Python 3 Differential Revision: https://phab.mercurial-scm.org/D2544
Fri, 02 Mar 2018 00:11:19 -0500 py3: add missing b prefixes in test-debugextensions.t
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:11:19 -0500] rev 36596
py3: add missing b prefixes in test-debugextensions.t # skip-blame just some b prefixes Differential Revision: https://phab.mercurial-scm.org/D2543
Thu, 01 Mar 2018 23:59:44 -0500 tests: help dummysmtpd work on python 3
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:59:44 -0500] rev 36595
tests: help dummysmtpd work on python 3 Differential Revision: https://phab.mercurial-scm.org/D2542
Thu, 01 Mar 2018 23:58:04 -0500 tests: port helper script revlog-formatv0.py to python 3
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:58:04 -0500] rev 36594
tests: port helper script revlog-formatv0.py to python 3 Differential Revision: https://phab.mercurial-scm.org/D2540
Thu, 01 Mar 2018 21:17:58 -0500 tests: add missing b prefix in test python in test-issue2137.t
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 21:17:58 -0500] rev 36593
tests: add missing b prefix in test python in test-issue2137.t # skip-blame just a b prefix Differential Revision: https://phab.mercurial-scm.org/D2539
Thu, 01 Mar 2018 20:44:38 -0500 templatefilters: convert arguments to sysstrs for unicode() ctor
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 20:44:38 -0500] rev 36592
templatefilters: convert arguments to sysstrs for unicode() ctor Differential Revision: https://phab.mercurial-scm.org/D2538
Fri, 02 Mar 2018 07:14:59 +0530 py3: use util.forcebytestr() to convert IOErrors to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:14:59 +0530] rev 36591
py3: use util.forcebytestr() to convert IOErrors to bytes Differential Revision: https://phab.mercurial-scm.org/D2536
Thu, 01 Mar 2018 18:20:49 -0500 py3: whitelist three more passing tests
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:20:49 -0500] rev 36590
py3: whitelist three more passing tests Differential Revision: https://phab.mercurial-scm.org/D2530
Thu, 01 Mar 2018 18:13:50 -0500 convert: fix two %r output formats with pycompat.bytestr() wrapping
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:13:50 -0500] rev 36589
convert: fix two %r output formats with pycompat.bytestr() wrapping Differential Revision: https://phab.mercurial-scm.org/D2529
Thu, 01 Mar 2018 17:48:06 -0500 convert: use our shlex wrapper in filemap to avoid Python 3 tracebacks
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:48:06 -0500] rev 36588
convert: use our shlex wrapper in filemap to avoid Python 3 tracebacks Differential Revision: https://phab.mercurial-scm.org/D2527
Thu, 01 Mar 2018 17:47:49 -0500 convcmd: use our shlex wrapper to avoid Python 3 tracebacks
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:47:49 -0500] rev 36587
convcmd: use our shlex wrapper to avoid Python 3 tracebacks Differential Revision: https://phab.mercurial-scm.org/D2526
Thu, 01 Mar 2018 17:47:35 -0500 convert: add some utility code for working with shlex on Python 3
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:47:35 -0500] rev 36586
convert: add some utility code for working with shlex on Python 3 This could have gone in pycompat, but it's only needed in convert, so I figured it made more sense here. It's got py3 in the name and checks pycompat.ispy3, so we'll find it whenever we decide to drop Python 2 support in 20x6. # no-check-commit because of required foo_bar naming on the proxy class Differential Revision: https://phab.mercurial-scm.org/D2525
Thu, 01 Mar 2018 17:46:34 -0500 pycompat: add support for encoding argument to our wrapper
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:46:34 -0500] rev 36585
pycompat: add support for encoding argument to our wrapper This only works on Python 3, but I'm about to need it for a regrettable hack in the convert code. Differential Revision: https://phab.mercurial-scm.org/D2524
Fri, 02 Mar 2018 04:49:08 +0530 py3: port tests/test-wireproto.py to Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 04:49:08 +0530] rev 36584
py3: port tests/test-wireproto.py to Python 3 Differential Revision: https://phab.mercurial-scm.org/D2534
Fri, 02 Mar 2018 04:47:56 +0530 py3: use pycompat.bytestr() to convert None to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 04:47:56 +0530] rev 36583
py3: use pycompat.bytestr() to convert None to bytes Differential Revision: https://phab.mercurial-scm.org/D2533
Thu, 01 Mar 2018 18:39:21 -0500 webcommands: use explicit integer division for Python 3 compat
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:39:21 -0500] rev 36582
webcommands: use explicit integer division for Python 3 compat Differential Revision: https://phab.mercurial-scm.org/D2532
Fri, 02 Mar 2018 04:59:27 +0530 templatefilters: stop using str as a variable name
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 04:59:27 +0530] rev 36581
templatefilters: stop using str as a variable name str() is an inbuilt function. Differential Revision: https://phab.mercurial-scm.org/D2531
Thu, 01 Mar 2018 18:15:58 -0500 py3: fix string slicing in util.parsetimezone()
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:15:58 -0500] rev 36580
py3: fix string slicing in util.parsetimezone()
Thu, 01 Mar 2018 18:06:25 -0500 py3: replace type 'str' by 'bytes' in templater.py
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:06:25 -0500] rev 36579
py3: replace type 'str' by 'bytes' in templater.py
Thu, 01 Mar 2018 17:56:32 -0500 py3: don't crash when re-raising encoding error
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 17:56:32 -0500] rev 36578
py3: don't crash when re-raising encoding error
Thu, 01 Mar 2018 17:43:25 -0500 py3: mark all string literals in test-command-template.t as bytes
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 17:43:25 -0500] rev 36577
py3: mark all string literals in test-command-template.t as bytes # skip-blame because just b'' prefixes
Thu, 01 Mar 2018 17:03:40 -0500 py3: byte-stringify ValueError of unescapestr() to reraise as ParseError
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 17:03:40 -0500] rev 36576
py3: byte-stringify ValueError of unescapestr() to reraise as ParseError
Thu, 01 Mar 2018 16:56:38 -0500 py3: fix type of string literals in templater.tokenize()
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 16:56:38 -0500] rev 36575
py3: fix type of string literals in templater.tokenize() # skip-blame because just b'' prefixes
Thu, 01 Mar 2018 16:52:17 -0500 py3: drop b'' from error message generated by templater.runmember()
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 16:52:17 -0500] rev 36574
py3: drop b'' from error message generated by templater.runmember()
Thu, 01 Mar 2018 16:42:24 -0500 py3: fix join(), min(), and max() template functions over string
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 16:42:24 -0500] rev 36573
py3: fix join(), min(), and max() template functions over string It's silly to split a string into characters and concatenate them, but that should work and test-command-template.t has one. min() and max() had the same issue on Python 3, so fixed too.
Thu, 01 Mar 2018 16:32:45 -0500 py3: use startswith() to check existence of trailing '\n' in .hgtags file
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 16:32:45 -0500] rev 36572
py3: use startswith() to check existence of trailing '\n' in .hgtags file
Thu, 01 Mar 2018 15:57:27 -0500 py3: silence return value of file.write() in test-command-template.t
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 15:57:27 -0500] rev 36571
py3: silence return value of file.write() in test-command-template.t
Thu, 01 Mar 2018 18:05:47 -0500 error: fix isinstnace check to use bytes instead of str
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:05:47 -0500] rev 36570
error: fix isinstnace check to use bytes instead of str Differential Revision: https://phab.mercurial-scm.org/D2528
Sun, 25 Feb 2018 22:43:50 -0500 py3: whitelist another nine passing tests
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:43:50 -0500] rev 36569
py3: whitelist another nine passing tests I now see 347 tests passing[0] and 336 failing, so we're past halfway there. Hooray! 0: A few tests appear to regress in small ways (doctest output changes, for example) on Python 3.7.0a1, which is what I'm now using to test. That said, I'm pleased to report no major regressions. Differential Revision: https://phab.mercurial-scm.org/D2439
Sun, 25 Feb 2018 22:31:13 -0500 util: use pycompat.bytestr() on repr() in date parse abort
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:31:13 -0500] rev 36568
util: use pycompat.bytestr() on repr() in date parse abort Avoids the b'' prefix. Differential Revision: https://phab.mercurial-scm.org/D2438
Fri, 02 Mar 2018 03:06:43 +0530 py3: whitelist 14 new tests passing
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 03:06:43 +0530] rev 36567
py3: whitelist 14 new tests passing 12 new tests passed because of parent changeset and 2 were passing before that too. Differential Revision: https://phab.mercurial-scm.org/D2523
Fri, 02 Mar 2018 02:44:49 +0530 py3: slice over bytes to prevent getting ascii values
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 02:44:49 +0530] rev 36566
py3: slice over bytes to prevent getting ascii values This fixed reading of mergestate files and fixes 14 tests on Python 3. Differential Revision: https://phab.mercurial-scm.org/D2522
Tue, 27 Feb 2018 14:26:00 -0800 wireprotoserver: move SSHV1 and SSHV2 constants to wireprototypes
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 14:26:00 -0800] rev 36565
wireprotoserver: move SSHV1 and SSHV2 constants to wireprototypes To avoid a cycle between modules in an upcoming commit. Differential Revision: https://phab.mercurial-scm.org/D2482
Tue, 27 Feb 2018 14:21:29 -0800 wireproto: use named arguments for commandentry
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 14:21:29 -0800] rev 36564
wireproto: use named arguments for commandentry We'll be adding more arguments in upcoming commits. Using named arguments will make the code easier to read. Differential Revision: https://phab.mercurial-scm.org/D2481
Mon, 26 Feb 2018 18:01:13 -0800 debugcommands: support for triggering push protocol
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Feb 2018 18:01:13 -0800] rev 36563
debugcommands: support for triggering push protocol The mechanism for pushing to a remote is a bit more complicated than other commands. On SSH, we wait for a positive reply from the server before we start sending the bundle payload. This commit adds a mechanism to the "command" action in `hg debugwireproto` to trigger the "push protocol" and to specify a file whose contents should be submitted as the command payload. With this new feature, we implement a handful of tests for the "unbundle" command. We try to cover various server failures and hook/output scenarios so protocol behavior is as comprehensively tested as possible. Even with so much test output, we only cover bundle1 with Python hooks. There's still a lot of test coverage that needs to be implemented. But this is certainly a good start. Because there are so many new tests, we split these tests into their own test file. In order to make output deterministic, we need to disable the doublepipe primitive. We add an option to `hg debugwireproto` to do that. Because something in the bowels of the peer does a read of stderr, we still capture read I/O from stderr. So there is test coverage of what the server emits. The tests around I/O capture some wonkiness. For example, interleaved ui.write() and ui.write_err() calls are emitted in order. However, (presumably due to buffering), print() to sys.stdout and sys.stderr aren't in order. We currently only test bundle1 because bundle2 is substantially harder to test because it is more complicated (the server responds with a stream containing a bundle2 instead of a frame). Differential Revision: https://phab.mercurial-scm.org/D2471
Mon, 26 Feb 2018 13:12:03 -0800 sshpeer: support not reading and forwarding stderr
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Feb 2018 13:12:03 -0800] rev 36562
sshpeer: support not reading and forwarding stderr The "doublepipe" primitive as used by sshpeer will automatically read from stderr and forward output to the local ui. This poses problems for deterministic testing because reads may not be consistent. For example, the server may not be done sending all output to stderr and the client will perform different numbers of read operations or will read from stderr and stdout at different times. To make tests deterministic, we'll need to disable the "doublepipe" primitive and perform stderr I/O explicitly. We add an argument to the sshpeer constructor to disable the use of the doublepipe. Differential Revision: https://phab.mercurial-scm.org/D2467
Fri, 23 Feb 2018 16:03:27 -0800 tests: add wire protocol tests for pushkey
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 23 Feb 2018 16:03:27 -0800] rev 36561
tests: add wire protocol tests for pushkey Let's get the wire format of some pushkey requests in test-ssh-proto.t. Differential Revision: https://phab.mercurial-scm.org/D2466
Fri, 23 Feb 2018 12:50:59 -0800 debugcommands: support for sending "batch" requests
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 23 Feb 2018 12:50:59 -0800] rev 36560
debugcommands: support for sending "batch" requests Let's teach `hg debugwireproto` to send "batch" requests. The easiest way to implement this was as a pair of instructions to begin and end a batched operation. Otherwise, we would have to reinvent the parsing wheel or factor out the parsing code. To prove it works, we add a batched request to test-ssh-proto.t. Differential Revision: https://phab.mercurial-scm.org/D2408
Thu, 01 Mar 2018 08:27:30 -0800 debugcommands: allow sending of simple commands with debugwireproto
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Mar 2018 08:27:30 -0800] rev 36559
debugcommands: allow sending of simple commands with debugwireproto Previously, we only had support for low-level "raw" operations. A goal of `hg debugwireproto` is to allow easily performing higher-level primitives, such as sending a wire protocol command and reading its response. We implement a "command" action that does just this. Currently, we only support simple commands (those without payloads). We have basic support for sending command arguments. We don't yet support sending dictionary arguments. This will be implemented later. To prove it works, we add tests to test-ssh-proto.t that send some "listkeys" commands. Note: we don't observe/report os.read() events because these may not be deterministic. We instead observe/report the read() and readline() operations on the bufferedinputpipe. These *should* be deterministic. Differential Revision: https://phab.mercurial-scm.org/D2406
Fri, 23 Feb 2018 09:40:12 -0800 wireproto: sort response to listkeys
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 23 Feb 2018 09:40:12 -0800] rev 36558
wireproto: sort response to listkeys The listkeys protocol is defined to produce a dictionary. pushkey.decodekeys() uses a plain dict to hold the decoded results of the wire protocol response. So order should not matter. Upcoming tests will verify low-level output of wire protocol commands and the non-deterministic emitting of listkeys was causing intermittent failures. So we make the output of listkeys deterministic. Differential Revision: https://phab.mercurial-scm.org/D2405
Thu, 01 Mar 2018 08:24:54 -0800 debugcommands: add debugwireproto command
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Mar 2018 08:24:54 -0800] rev 36557
debugcommands: add debugwireproto command We currently don't have a low-level mechanism for sending arbitrary wire protocol commands. Having a generic and robust mechanism for sending wire protocol commands, examining wire data, etc would make it vastly easier to test the wire protocol and debug server operation. This is a problem I've wanted a solution for numerous times, especially recently as I've been hacking on a new version of the wire protocol. This commit establishes a `hg debugwireproto` command for sending data to a peer. The command invents a mini language for specifying actions to take. This will enable a lot of flexibility for issuing commands and testing variations for how commands are sent. Right now, we only support low-level raw sends and receives. These are probably the least valuable commands to intended users of this command. But they are the most useful commands to implement to bootstrap the feature (I've chosen to reimplement test-ssh-proto.t using this command to prove its usefulness). My eventual goal of `hg debugwireproto` is to allow calling wire protocol commands with a human-friendly interface. Essentially, people can type in a command name and arguments and `hg debugwireproto` will figure out how to send that on the wire. I'd love to eventually be able to save the server's raw response to a file. This would allow us to e.g. call "getbundle" wire protocol commands easily. test-ssh-proto.t has been updated to use the new command in lieu of piping directly to a server process. As part of the transition, test behavior improved. Before, we piped all request data to the server at once. Now, we have explicit control over the ordering of operations. e.g. we can send one command, receive its response, then send another command. This will allow us to more robustly test race conditions, buffering behavior, etc. There were some subtle changes in test behavior. For example, previous behavior would often send trailing newlines to the server. The new mechanism doesn't treat literal newlines specially and requires newlines be escaped in the payload. Because the new logging code is very low level, it is easy to introduce race conditions in tests. For example, the number of bytes returned by a read() may vary depending on load. This is why tests make heavy use of "readline" for consuming data: the result of that operation should be deterministic and not subject to race conditions. There are still some uses of "readavailable." However, those are only for reading from stderr. I was able to reproduce timing issues with my system under load when using "readavailable" globally. But if I "readline" to grab stdout, "readavailable" appears to work deterministically for stderr. I think this is because the server writes to stderr first. As long as the OS delivers writes to pipes in the same order they were made, this should work. If there are timing issues, we can introduce a mechanism to readline from stderr. Differential Revision: https://phab.mercurial-scm.org/D2392
Tue, 27 Feb 2018 15:47:44 -0800 debugcommands: add debugserve command
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 15:47:44 -0800] rev 36556
debugcommands: add debugserve command `hg serve --stdio` requires the exact command argument form `hg -R <path> serve --stdio` for security reasons. An upcoming commit will need to start an SSH protocol server process with custom settings. This commit creates a `hg debugserve` command for starting servers with custom options. There are no security restrictions and we can add options here that aren't appropriate for built-in commands. We currently only support starting an SSH protocol server using the process's stdio file descriptors. The server supports logging its I/O activity to a file descriptor number passed as a command argument. Differential Revision: https://phab.mercurial-scm.org/D2464
Sun, 25 Feb 2018 11:16:09 -0800 wireprotoserver: support logging SSH server I/O to a file descriptor
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Feb 2018 11:16:09 -0800] rev 36555
wireprotoserver: support logging SSH server I/O to a file descriptor We will soon introduce a debug command and tests for low-level I/O behavior of the SSH wire protocol. To facilitate this, we need to instrument the SSH server so it can log its I/O as events occur. We teach the SSH server to convert its stdout and stderr file objects into file object proxies. We configure these proxies to log to a file descriptor whose file number is specified via a config option. The idea is to have a future debug command start the SSH server process with access to an extra file descriptor that can be used by the server process to log I/O. Monitoring only the write I/O will be more robust than monitoring both writes and reads from the client process because read operations are not deterministic. This will matter for tests that capture raw I/O activity. Differential Revision: https://phab.mercurial-scm.org/D2463
Sat, 24 Feb 2018 12:24:03 -0800 util: enable observing of util.bufferedinputpipe
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 12:24:03 -0800] rev 36554
util: enable observing of util.bufferedinputpipe Our file object proxy is useful. But it doesn't capture all I/O. The "os" module offers low-level interfaces to various system calls. For example, os.read() exposes read(2) to read from a file descriptor. bufferedinputpipe is special in a few ways. First, it acts as a proxy of sorts around our [potentially proxied] file object. In addition, it uses os.read() to satisfy all I/O. This means that our observer doesn't see notifications for reads on this type. This is preventing us from properly instrumenting reads on ssh peers. This commit teaches bufferedinputpipe to be aware of our observed file objects. We do this by introducing a class variation that notifies our observer of os.read() events. Since read() and readline() bypass os.read(), we also teach this instance to notify the observer for buffered variations of these reads as well. We don't report them as actual read() and readline() calls because these methods are never called on the actual file object but rather a buffered version of it. We introduce bufferedinputpipe.__new__ to swap in the new class if the passed file object is a fileobjectproxy. This makes hooking up the observer automatic. And it is a zero cost abstraction for I/O operations on non-proxied file objects. Differential Revision: https://phab.mercurial-scm.org/D2404
Sat, 24 Feb 2018 12:22:20 -0800 util: add a file object proxy that can notify observers
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 12:22:20 -0800] rev 36553
util: add a file object proxy that can notify observers There are various places in Mercurial where we may want to instrument low-level I/O. The use cases I can think of all involve development-type activities like monitoring the raw bytes passing through a file (for testing and debugging), counting the number of I/O function calls (for performance monitoring), and changing the behavior of I/O function calls (e.g. simulating a failure) (to facilitate testing). This commit invents a mechanism to wrap a file object so we can observe activity on it. We have similar functionality in badserverext.py. But that's a test-only extension and is pretty specific to the HTTP server. I would like a mechanism in core that is sufficiently generic so it can be used by multiple consumers, including `hg debug*` commands. The added code consists of a proxy type for file objects. It is bound to an "observer," which receives callbacks whenever I/O methods are called. We also add an implementation of an observer that logs specific I/O events. This observer will be used in an upcoming commit to record low-level wire protocol activity. A helper function to convert a file object into an observed file object has also been implemented. I don't anticipate any critical functionality in core using these types. So I don't think explicit test coverage is worth implementing. Differential Revision: https://phab.mercurial-scm.org/D2462
Sat, 24 Feb 2018 12:07:21 -0800 wireprotoserver: ability to run an SSH server until an event is set
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 12:07:21 -0800] rev 36552
wireprotoserver: ability to run an SSH server until an event is set It seems useful to be able to start an SSH protocol server that won't run forever and won't call sys.exit() when it stops. This could be used to facilitate intra-process testing of the SSH protocol, for example. We teach the server function to loop until a threading.Event is set and invent a new API to run the server until an event is set. It also won't sys.exit() afterwards. There aren't many callers of serve_forever(). So we could refactor them relatively easily. But I was lazy. threading.Event might be a bit heavyweight. An alternative would be a list whose only elements is changed. We can't use a simple scalar value like a bool or int because those types are immutable. Events are what you use in systems programming for this use case, so the use of threading.Event seems justified. Differential Revision: https://phab.mercurial-scm.org/D2461
Thu, 01 Mar 2018 15:46:21 -0500 tests: fix run-tests environment cleanup on Python 3
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 15:46:21 -0500] rev 36551
tests: fix run-tests environment cleanup on Python 3 Differential Revision: https://phab.mercurial-scm.org/D2521
Sun, 25 Feb 2018 16:14:37 +0900 templatekw: add compatlist() as a replacement for showlist()
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:14:37 +0900] rev 36550
templatekw: add compatlist() as a replacement for showlist() Just like compatdict(), this is mostly a copy of showlist(). showchildren() is ported to the new API as an example.
Sun, 25 Feb 2018 16:03:19 +0900 templatekw: add compatdict() as a replacement for showdict()
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:03:19 +0900] rev 36549
templatekw: add compatdict() as a replacement for showdict() This is mostly a copy of showdict(), which will be deprecated later. See the docstring for why it's called a "compat" dict. showenvvars() is ported to the new API as an example.
Sun, 25 Feb 2018 15:43:35 +0900 templatekw: pass templater to _showlist() by an explicit argument
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 15:43:35 +0900] rev 36548
templatekw: pass templater to _showlist() by an explicit argument Prepares for switching to the (context, mapping) API.
Fri, 22 Dec 2017 21:59:38 +0900 hgweb: make templater mostly compatible with log templates
Yuya Nishihara <yuya@tcha.org> [Fri, 22 Dec 2017 21:59:38 +0900] rev 36547
hgweb: make templater mostly compatible with log templates Prepares for gradually switching templatekw.showsuccsandmarkers() to new API. This was a PoC showing how to reuse templatekw functions in hgweb. We could remove rev, node, author, etc. from the commonentry() table, but we'll have to carefully remove all corresponding symbols from webcommands.*(). Otherwise, we would face the issue5612. Still templatekw.keywords aren't exported. Otherwise some tests would fail because the atom template expects {files} to be empty in filelog, but templatekw.showfiles() provides the {files} implementation.
Sun, 25 Feb 2018 14:42:18 +0900 log: do not invoke templatekw.showobsfate() as a function
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 14:42:18 +0900] rev 36546
log: do not invoke templatekw.showobsfate() as a function Prepares for switching to the (context, mapping) API. I tried, but it appeared not an one-off change to extract a non-template function from showobsfate(), which deeply depends on the templater internals.
Sun, 25 Feb 2018 16:36:38 +0900 templatekw: inline getfiles()
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:36:38 +0900] rev 36545
templatekw: inline getfiles() It's just three lines. We don't need a separate function for that.
Sun, 25 Feb 2018 16:35:34 +0900 templatekw: factor out function to build a list of files per status
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:35:34 +0900] rev 36544
templatekw: factor out function to build a list of files per status Removes copy-paste code before switching to the (context, mapping) API.
Sun, 25 Feb 2018 13:40:46 +0900 templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 13:40:46 +0900] rev 36543
templatekw: switch non-showlist template keywords to new API
Sun, 25 Feb 2018 14:28:32 +0900 templatekw: extract non-templatekw function as getgraphnode()
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 14:28:32 +0900] rev 36542
templatekw: extract non-templatekw function as getgraphnode() Prepares for switching to the (context, mapping) API. We still need (repo, ctx) function for the fast path.
Wed, 28 Feb 2018 16:24:39 +0100 convert: avoid closing ui.fout in subversion code (issue5807)
Sascha Nemecek <nemecek@wienfluss.net> [Wed, 28 Feb 2018 16:24:39 +0100] rev 36541
convert: avoid closing ui.fout in subversion code (issue5807) Don't close 'fp' (= 'ui.fout') stream to prevent 'ValueError: I/O operation on closed file' (Bug #5807). Regression of changeset 30261:6bed17ba00a1 (https://www.mercurial-scm.org/repo/hg/rev/6bed17ba00a1)
Sun, 07 Jan 2018 11:53:07 +0900 cmdutil: expand filename format string by templater (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Jan 2018 11:53:07 +0900] rev 36540
cmdutil: expand filename format string by templater (BC) This is BC because '{}' could be a valid filename before, but I believe good programmers wouldn't use such catastrophic output filenames. On the other hand, '\' has to be escaped since it is a directory separator on Windows. Thanks to Matt Harbison for spotting this weird issue. This patch also adds cmdutil.rendertemplate(ctx, tmpl, props) as a simpler way of expanding template against single changeset. .. bc:: '{' in output filename passed to archive/cat/export is taken as a start of a template expression.
Sun, 18 Feb 2018 11:53:26 +0900 templater: add option to parse template string just like raw string literal
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Feb 2018 11:53:26 +0900] rev 36539
templater: add option to parse template string just like raw string literal This seems a bit odd because the template syntax has no raw string literal containing template fragments, but is necessary to port filename format string to templater. See the next patch.
Sun, 18 Feb 2018 10:58:15 +0900 cmdutil: reorder optional arguments passed to makefileobj()
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Feb 2018 10:58:15 +0900] rev 36538
cmdutil: reorder optional arguments passed to makefileobj() **props will be passed directly to templater.
Sun, 18 Feb 2018 10:54:24 +0900 cmdutil: strip "%m" pattern (first line of commit message) from both ends
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Feb 2018 10:54:24 +0900] rev 36537
cmdutil: strip "%m" pattern (first line of commit message) from both ends This matches the behavior of the template keyword {desc}.
Tue, 27 Feb 2018 22:37:57 +0900 test-acl: mock up util.getuser() to trust $LOGNAME on Windows
Yuya Nishihara <yuya@tcha.org> [Tue, 27 Feb 2018 22:37:57 +0900] rev 36536
test-acl: mock up util.getuser() to trust $LOGNAME on Windows The test relies on POSIX-like getuser() behavior, so we can't use windows.getuser().
Thu, 01 Mar 2018 04:50:22 -0500 fileset: drop bad "elif:" trying to check invalid size expression
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 04:50:22 -0500] rev 36535
fileset: drop bad "elif:" trying to check invalid size expression Since str.isdigit is a function, the last "elif" was always true. An invalid expression is rejected by util.sizetoint(), so we don't need "elif".
Thu, 01 Mar 2018 08:55:39 -0500 py3: fix test-command-template.t to write files in binary mode
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:55:39 -0500] rev 36534
py3: fix test-command-template.t to write files in binary mode
Thu, 01 Mar 2018 08:45:34 -0500 py3: use bytestr() to coerce position carried by ParseError to string
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:45:34 -0500] rev 36533
py3: use bytestr() to coerce position carried by ParseError to string The position value is either int or byte string.
Thu, 01 Mar 2018 08:38:39 -0500 py3: use bytes.endswith('\n') to strip off '\n' from debug color output
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:38:39 -0500] rev 36532
py3: use bytes.endswith('\n') to strip off '\n' from debug color output
Thu, 01 Mar 2018 08:19:47 -0500 py3: fix type of attribute names forwarded by templatekw._hybrid
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:19:47 -0500] rev 36531
py3: fix type of attribute names forwarded by templatekw._hybrid # skip-blame because just r'' prefixes
Thu, 01 Mar 2018 06:47:06 -0500 py3: move between bytes and unicode when re-raising IOError
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 06:47:06 -0500] rev 36530
py3: move between bytes and unicode when re-raising IOError IOError is a Python exception, which argument must be a system string.
Thu, 01 Mar 2018 06:43:13 -0500 py3: use '%d' to format diffstat sum
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 06:43:13 -0500] rev 36529
py3: use '%d' to format diffstat sum
Thu, 01 Mar 2018 06:40:09 -0500 py3: make regexp literal bytes in templatefilters.py
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 06:40:09 -0500] rev 36528
py3: make regexp literal bytes in templatefilters.py # skip-blame because just b'' prefixes
Thu, 01 Mar 2018 06:38:37 -0500 templatefilters: use encoding.unifromlocal/unitolocal() for py3 compatibility
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 06:38:37 -0500] rev 36527
templatefilters: use encoding.unifromlocal/unitolocal() for py3 compatibility
Fri, 02 Mar 2018 00:00:41 +0530 py3: replace str() with it's bytes equivalent in hgext/shelve.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 00:00:41 +0530] rev 36526
py3: replace str() with it's bytes equivalent in hgext/shelve.py Internally we are dealing with bytes everywhere, so anything returning a unicode results in an error or some change in behaviour. Differential Revision: https://phab.mercurial-scm.org/D2520
Thu, 01 Mar 2018 23:59:20 +0530 py3: make sure we write bytes in a file open in bytes mode
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:59:20 +0530] rev 36525
py3: make sure we write bytes in a file open in bytes mode # skip-blame just b'' prefix Differential Revision: https://phab.mercurial-scm.org/D2519
Thu, 01 Mar 2018 23:58:21 +0530 py3: add b'' prefixes in tests/test-obsolete.t
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:58:21 +0530] rev 36524
py3: add b'' prefixes in tests/test-obsolete.t # skip-blame because it's just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2518
Thu, 01 Mar 2018 23:57:16 +0530 py3: add a b'' prefix in tests/test-fncache.t
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:57:16 +0530] rev 36523
py3: add a b'' prefix in tests/test-fncache.t # skip-blame because it's just b'' prefix Differential Revision: https://phab.mercurial-scm.org/D2517
Thu, 01 Mar 2018 23:54:52 +0530 py3: use pycompat.bytestr() to convert error instances to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:54:52 +0530] rev 36522
py3: use pycompat.bytestr() to convert error instances to bytes Differential Revision: https://phab.mercurial-scm.org/D2516
Thu, 01 Mar 2018 23:52:30 +0530 py3: listify the return value of filter()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:52:30 +0530] rev 36521
py3: listify the return value of filter() filter() on Python 3 returns a filter object. Differential Revision: https://phab.mercurial-scm.org/D2515
Thu, 01 Mar 2018 23:51:32 +0530 py3: use '%d' instead of '%s' for ints
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 23:51:32 +0530] rev 36520
py3: use '%d' instead of '%s' for ints Differential Revision: https://phab.mercurial-scm.org/D2514
Thu, 01 Mar 2018 03:56:41 +0530 py3: add 14 new passing tests to whitelist
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Mar 2018 03:56:41 +0530] rev 36519
py3: add 14 new passing tests to whitelist Differential Revision: https://phab.mercurial-scm.org/D2511
Wed, 28 Feb 2018 19:55:25 +0530 py3: use util.forcebytestr to convert str to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 19:55:25 +0530] rev 36518
py3: use util.forcebytestr to convert str to bytes Differential Revision: https://phab.mercurial-scm.org/D2498
Sun, 25 Feb 2018 11:00:53 -0800 sshpeer: factor out code for creating peers from pipes
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Feb 2018 11:00:53 -0800] rev 36517
sshpeer: factor out code for creating peers from pipes An upcoming commit will want to instantiate an SSH peer via an alternate mechanism that doesn't require running a new `ssh` command. To facilitate that, we extract the code for creating a peer from pipes to its own function. Differential Revision: https://phab.mercurial-scm.org/D2391
Wed, 28 Feb 2018 22:25:41 +0530 py3: add b'' prefixes in tests/test-rollback.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:25:41 +0530] rev 36516
py3: add b'' prefixes in tests/test-rollback.t This makes the test run succesfully on Python 3. There is just a b'' prefix extra in the output. # skip-blame because we added just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2510
Wed, 28 Feb 2018 22:14:36 +0530 py3: add b'' prefix in tests/test-revlog-v2.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:14:36 +0530] rev 36515
py3: add b'' prefix in tests/test-revlog-v2.t After this, the test works on Python 3. There is some extra return value by open().write() I think which needs to be handled. # skip-blame because just b'' prefix Differential Revision: https://phab.mercurial-scm.org/D2509
Wed, 28 Feb 2018 22:10:59 +0530 py3: add b'' prefixes in tests/test-revlog.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:10:59 +0530] rev 36514
py3: add b'' prefixes in tests/test-revlog.t # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2508
Wed, 28 Feb 2018 22:03:47 +0530 py3: make sure we open the file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:03:47 +0530] rev 36513
py3: make sure we open the file in bytes mode This makes the test pass on Python 3. Differential Revision: https://phab.mercurial-scm.org/D2507
Wed, 28 Feb 2018 22:03:29 +0530 py3: add b'' prefixes in tests/test-revlog-ancestry.py
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:03:29 +0530] rev 36512
py3: add b'' prefixes in tests/test-revlog-ancestry.py # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2506
Wed, 28 Feb 2018 21:57:22 +0530 py3: port the markdirver extension in tests/test-resolve.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:57:22 +0530] rev 36511
py3: port the markdirver extension in tests/test-resolve.t Differential Revision: https://phab.mercurial-scm.org/D2505
Wed, 28 Feb 2018 21:48:30 +0530 py3: backout changeset 56635c506608 which wrongly added couple of b''
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:48:30 +0530] rev 36510
py3: backout changeset 56635c506608 which wrongly added couple of b'' I am not sure what I was thinking when I added that but while fixing rebase tests, I revisited the file and found that I did wrong. I am sorry for this. Differential Revision: https://phab.mercurial-scm.org/D2504
Wed, 28 Feb 2018 21:45:42 +0530 py3: add a missing b'' in tests/bruterebase.py
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:45:42 +0530] rev 36509
py3: add a missing b'' in tests/bruterebase.py Differential Revision: https://phab.mercurial-scm.org/D2503
Wed, 28 Feb 2018 21:45:15 +0530 py3: use '%d' for integers instead of b'%s'
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:45:15 +0530] rev 36508
py3: use '%d' for integers instead of b'%s' Differential Revision: https://phab.mercurial-scm.org/D2502
Wed, 28 Feb 2018 21:44:28 +0530 py3: make sure we write in mergestate in bytes mode
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:44:28 +0530] rev 36507
py3: make sure we write in mergestate in bytes mode Differential Revision: https://phab.mercurial-scm.org/D2501
Wed, 28 Feb 2018 21:43:35 +0530 py3: add b'' prefixes in tests/test-rebase-scenario-global.t
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:43:35 +0530] rev 36506
py3: add b'' prefixes in tests/test-rebase-scenario-global.t # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2500
(0) -30000 -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 tip