[MERGE 2/3] Towards XML log output: Refactor LogFormatter
James Westby
jw+debian at jameswestby.net
Sat Nov 4 17:45:52 GMT 2006
Hi,
The xml log format requires a little more context than the others as it
needs to know when it has started and finished. The attached bundle
refactors the LogFormatter class to make show_log and instance of it,
and to store the interesting things in variables. This is more than is
needed, but allows more flexibility.
It deprecates show_log in it's original location and updates bzrlib to
the new version.
James
--
James Westby -- GPG Key ID: B577FE13 -- http://jameswestby.net/
seccure key - (3+)k7|M*edCX/.A:n*N!>|&7U.L#9E)Tu)T0>AM - secp256r1/nistp256
-------------- next part --------------
# Bazaar revision bundle v0.8
#
# message:
# Update another reference to the old function in the tests.
# committer: James Westby <jw+debian at jameswestby.net>
# date: Sat 2006-11-04 00:14:37.890000105 +0000
=== modified file bzrlib/benchmarks/bench_log.py // last-changed:jw+debian at jame
... swestby.net-20061102233505-dcb9bc4438a05ac9
--- bzrlib/benchmarks/bench_log.py
+++ bzrlib/benchmarks/bench_log.py
@@ -20,7 +20,7 @@
import sys
from bzrlib.benchmarks import Benchmark
-from bzrlib.log import log_formatter, show_log
+from bzrlib.log import log_formatter
from bzrlib.osutils import pathjoin
from cStringIO import StringIO
from bzrlib.transform import TreeTransform
@@ -46,13 +46,13 @@
"""Run log in a many-commit tree."""
tree = self.make_many_commit_tree(hardlink=True)
lf = log_formatter('long', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse')
+ self.time(lf.show_log, tree.branch, direction='reverse')
def test_merge_log(self):
"""Run log in a tree with many merges"""
tree = self.make_heavily_merged_tree(hardlink=True)
lf = log_formatter('short', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse')
+ self.time(lf.show_log, tree.branch, direction='reverse')
def test_log_screenful(self):
"""Simulate log --long|less"""
@@ -67,12 +67,12 @@
self.screenful_tester('short')
def screenful_tester(self, formatter):
- """Run show_log, but stop after 25 lines are generated"""
+ """Run lf.show_log, but stop after 25 lines are generated"""
tree = self.make_many_commit_tree(hardlink=True)
def log_screenful():
lf = log_formatter(formatter, to_file=LineConsumer(25))
try:
- show_log(tree.branch, lf, direction='reverse')
+ lf.show_log(tree.branch, direction='reverse')
except LinesDone:
pass
else:
@@ -93,4 +93,4 @@
"""'verbose' log -- shows file changes"""
tree = self.make_many_commit_tree(hardlink=True)
lf = log_formatter('long', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse', verbose=True)
+ self.time(lf.show_log, tree.branch, direction='reverse', verbose=True)
=== modified file bzrlib/builtins.py // last-changed:jw+debian at jameswestby.net-
... 20061103201256-29456053953cc4ed
--- bzrlib/builtins.py
+++ bzrlib/builtins.py
@@ -1362,7 +1362,7 @@
long=False,
short=False,
line=False):
- from bzrlib.log import log_formatter, show_log
+ from bzrlib.log import log_formatter
assert message is None or isinstance(message, basestring), \
"invalid message argument %r" % message
direction = (forward and 'forward') or 'reverse'
@@ -1438,14 +1438,13 @@
to_file=self.outf,
show_timezone=timezone)
- show_log(b,
- lf,
- file_id,
- verbose=verbose,
- direction=direction,
- start_revision=rev1,
- end_revision=rev2,
- search=message)
+ lf.show_log(b,
+ file_id,
+ verbose=verbose,
+ direction=direction,
+ start_revision=rev1,
+ end_revision=rev2,
+ search=message)
def get_log_format(long=False, short=False, line=False, default='long'):
@@ -2801,7 +2800,7 @@
def run(self, location=None,
dry_run=False, verbose=False,
revision=None, force=False):
- from bzrlib.log import log_formatter, show_log
+ from bzrlib.log import log_formatter
import sys
from bzrlib.uncommit import uncommit
@@ -2836,12 +2835,11 @@
to_file=self.outf,
show_timezone='original')
- show_log(b,
- lf,
- verbose=False,
- direction='forward',
- start_revision=revno,
- end_revision=b.revno())
+ lf.show_log(b,
+ verbose=False,
+ direction='forward',
+ start_revision=revno,
+ end_revision=b.revno())
if dry_run:
print 'Dry-run, pretending to remove the above revisions.'
=== modified file bzrlib/log.py // last-changed:jw+debian at jameswestby.net-20061
... 104001043-9207522cb0f639dd
--- bzrlib/log.py
+++ bzrlib/log.py
@@ -56,7 +56,10 @@
from bzrlib import symbol_versioning
import bzrlib.errors as errors
-from bzrlib.symbol_versioning import deprecated_method, zero_eleven
+from bzrlib.symbol_versioning import (deprecated_method,
+ deprecated_function,
+ zero_eleven,
+ zero_thirteen)
from bzrlib.trace import mutter
from bzrlib.tsort import merge_sort
@@ -106,15 +109,7 @@
-def _enumerate_history(branch):
- rh = []
- revno = 1
- for rev_id in branch.revision_history():
- rh.append((revno, rev_id))
- revno += 1
- return rh
-
-
+ at deprecated_function(zero_thirteen)
def show_log(branch,
lf,
specific_fileid=None,
@@ -125,150 +120,16 @@
search=None):
"""Write out human-readable log of commits to this branch.
- lf
- LogFormatter object to show the output.
-
- specific_fileid
- If true, list only the commits affecting the specified
- file, rather than all commits.
-
- verbose
- If true show added/changed/deleted/renamed files.
-
- direction
- 'reverse' (default) is latest to earliest;
- 'forward' is earliest to latest.
-
- start_revision
- If not None, only show revisions >= start_revision
-
- end_revision
- If not None, only show revisions <= end_revision
+ DEPRECATED: use lf.show_log() instead.
"""
- branch.lock_read()
- try:
- _show_log(branch, lf, specific_fileid, verbose, direction,
- start_revision, end_revision, search)
- finally:
- branch.unlock()
-
-def _show_log(branch,
- lf,
- specific_fileid=None,
- verbose=False,
- direction='reverse',
- start_revision=None,
- end_revision=None,
- search=None):
- """Worker function for show_log - see show_log."""
- from bzrlib.osutils import format_date
- from bzrlib.errors import BzrCheckError
-
- from warnings import warn
-
- if not isinstance(lf, LogFormatter):
- warn("not a LogFormatter instance: %r" % lf)
-
- if specific_fileid:
- mutter('get log for file_id %r', specific_fileid)
-
- if search is not None:
- import re
- searchRE = re.compile(search, re.IGNORECASE)
- else:
- searchRE = None
-
- which_revs = _enumerate_history(branch)
-
- if start_revision is None:
- start_revision = 1
- else:
- branch.check_real_revno(start_revision)
-
- if end_revision is None:
- end_revision = len(which_revs)
- else:
- branch.check_real_revno(end_revision)
-
- # list indexes are 0-based; revisions are 1-based
- cut_revs = which_revs[(start_revision-1):(end_revision)]
- if not cut_revs:
- return
-
- # convert the revision history to a dictionary:
- rev_nos = dict((k, v) for v, k in cut_revs)
-
- # override the mainline to look like the revision history.
- mainline_revs = [revision_id for index, revision_id in cut_revs]
- if cut_revs[0][0] == 1:
- mainline_revs.insert(0, None)
- else:
- mainline_revs.insert(0, which_revs[start_revision-2][1])
- # how should we show merged revisions ?
- # old api: show_merge. New api: show_merge_revno
- show_merge_revno = getattr(lf, 'show_merge_revno', None)
- show_merge = getattr(lf, 'show_merge', None)
- if show_merge is None and show_merge_revno is None:
- # no merged-revno support
- include_merges = False
- else:
- include_merges = True
- if show_merge is not None and show_merge_revno is None:
- # tell developers to update their code
- symbol_versioning.warn('LogFormatters should provide show_merge_revno '
- 'instead of show_merge since bzr 0.11.',
- DeprecationWarning, stacklevel=3)
- view_revisions = list(get_view_revisions(mainline_revs, rev_nos, branch,
- direction, include_merges=include_merges))
-
- def iter_revisions():
- # r = revision, n = revno, d = merge depth
- revision_ids = [r for r, n, d in view_revisions]
- zeros = set(r for r, n, d in view_revisions if d == 0)
- num = 9
- repository = branch.repository
- while revision_ids:
- cur_deltas = {}
- revisions = repository.get_revisions(revision_ids[:num])
- if verbose or specific_fileid:
- delta_revisions = [r for r in revisions if
- r.revision_id in zeros]
- deltas = repository.get_deltas_for_revisions(delta_revisions)
- cur_deltas = dict(izip((r.revision_id for r in
- delta_revisions), deltas))
- for revision in revisions:
- # The delta value will be None unless
- # 1. verbose or specific_fileid is specified, and
- # 2. the revision is a mainline revision
- yield revision, cur_deltas.get(revision.revision_id)
- revision_ids = revision_ids[num:]
- num = int(num * 1.5)
-
- # now we just print all the revisions
- for ((rev_id, revno, merge_depth), (rev, delta)) in \
- izip(view_revisions, iter_revisions()):
-
- if searchRE:
- if not searchRE.search(rev.message):
- continue
-
- if merge_depth == 0:
- # a mainline revision.
-
- if specific_fileid:
- if not delta.touches_file_id(specific_fileid):
- continue
-
- if not verbose:
- # although we calculated it, throw it away without display
- delta = None
-
- lf.show(revno, rev, delta)
- else:
- if show_merge_revno is None:
- lf.show_merge(rev, merge_depth)
- else:
- lf.show_merge_revno(rev, merge_depth, revno)
+ lf.show_log(branch,
+ specific_fileid=specific_fileid,
+ verbose=verbose,
+ direction=direction,
+ start_revision=start_revision,
+ end_revision=end_revision,
+ search=search)
+
def get_view_revisions(mainline_revs, rev_nos, branch, direction,
@@ -339,8 +200,165 @@
def short_committer(self, rev):
return re.sub('<.*@.*>', '', rev.committer).strip(' ')
-
-
+
+
+ def show_log(self,
+ branch,
+ specific_fileid=None,
+ verbose=False,
+ direction='reverse',
+ start_revision=None,
+ end_revision=None,
+ search=None):
+ """Write out human-readable log of commits to this branch.
+
+ specific_fileid
+ If true, list only the commits affecting the specified
+ file, rather than all commits.
+
+ verbose
+ If true show added/changed/deleted/renamed files.
+
+ direction
+ 'reverse' (default) is latest to earliest;
+ 'forward' is earliest to latest.
+
+ start_revision
+ If not None, only show revisions >= start_revision
+
+ end_revision
+ If not None, only show revisions <= end_revision
+ """
+ self.branch = branch
+ self.specific_fileid = specific_fileid
+ self.verbose = verbose
+ self.direction = direction
+ self.start_revision = start_revision
+ self.end_revision = end_revision
+ self.search = search
+ branch.lock_read()
+ try:
+ self._show_log()
+ finally:
+ branch.unlock()
+
+ def _show_log(self):
+ """Worker function for show_log - see show_log."""
+ from bzrlib.osutils import format_date
+ from bzrlib.errors import BzrCheckError
+
+ from warnings import warn
+
+ if self.specific_fileid:
+ mutter('get log for file_id %r', self.specific_fileid)
+
+ if self.search is not None:
+ import re
+ searchRE = re.compile(self.search, re.IGNORECASE)
+ else:
+ searchRE = None
+
+ which_revs = self._enumerate_history()
+
+ if self.start_revision is None:
+ self.start_revision = 1
+ else:
+ self.branch.check_real_revno(self.start_revision)
+
+ if self.end_revision is None:
+ self.end_revision = len(which_revs)
+ else:
+ self.branch.check_real_revno(self.end_revision)
+
+ # list indexes are 0-based; revisions are 1-based
+ cut_revs = which_revs[(self.start_revision-1):(self.end_revision)]
+ if not cut_revs:
+ return
+
+ # convert the revision history to a dictionary:
+ rev_nos = dict((k, v) for v, k in cut_revs)
+
+ # override the mainline to look like the revision history.
+ mainline_revs = [revision_id for index, revision_id in cut_revs]
+ if cut_revs[0][0] == 1:
+ mainline_revs.insert(0, None)
+ else:
+ mainline_revs.insert(0, which_revs[self.start_revision-2][1])
+ # how should we show merged revisions ?
+ # old api: show_merge. New api: show_merge_revno
+ show_merge_revno = getattr(self, 'show_merge_revno', None)
+ show_merge = getattr(self, 'show_merge', None)
+ if show_merge is None and show_merge_revno is None:
+ # no merged-revno support
+ include_merges = False
+ else:
+ include_merges = True
+ if show_merge is not None and show_merge_revno is None:
+ # tell developers to update their code
+ symbol_versioning.warn('LogFormatters should provide '
+ 'show_merge_revno instead of show_merge since bzr 0.11.',
+ DeprecationWarning, stacklevel=3)
+ view_revisions = list(get_view_revisions(mainline_revs, rev_nos,
+ self.branch, self.direction,
+ include_merges=include_merges))
+
+ def iter_revisions():
+ # r = revision, n = revno, d = merge depth
+ revision_ids = [r for r, n, d in view_revisions]
+ zeros = set(r for r, n, d in view_revisions if d == 0)
+ num = 9
+ repository = self.branch.repository
+ while revision_ids:
+ cur_deltas = {}
+ revisions = repository.get_revisions(revision_ids[:num])
+ if self.verbose or self.specific_fileid:
+ delta_revisions = [r for r in revisions if
+ r.revision_id in zeros]
+ deltas = repository.get_deltas_for_revisions(delta_revisions)
+ cur_deltas = dict(izip((r.revision_id for r in
+ delta_revisions), deltas))
+ for revision in revisions:
+ # The delta value will be None unless
+ # 1. verbose or specific_fileid is specified, and
+ # 2. the revision is a mainline revision
+ yield revision, cur_deltas.get(revision.revision_id)
+ revision_ids = revision_ids[num:]
+ num = int(num * 1.5)
+
+ # now we just print all the revisions
+ for ((rev_id, revno, merge_depth), (rev, delta)) in \
+ izip(view_revisions, iter_revisions()):
+
+ if searchRE:
+ if not searchRE.search(rev.message):
+ continue
+
+ if merge_depth == 0:
+ # a mainline revision.
+
+ if self.specific_fileid:
+ if not delta.touches_file_id(self.specific_fileid):
+ continue
+
+ if not self.verbose:
+ # although we calculated it, throw it away without display
+ delta = None
+
+ self.show(revno, rev, delta)
+ else:
+ if show_merge_revno is None:
+ self.show_merge(rev, merge_depth)
+ else:
+ self.show_merge_revno(rev, merge_depth, revno)
+
+ def _enumerate_history(self):
+ rh = []
+ revno = 1
+ for rev_id in self.branch.revision_history():
+ rh.append((revno, rev_id))
+ revno += 1
+ return rh
+
class LongLogFormatter(LogFormatter):
def show(self, revno, rev, delta):
return self._show_helper(revno=revno, rev=rev, delta=delta)
=== modified file bzrlib/tests/test_log.py
--- bzrlib/tests/test_log.py
+++ bzrlib/tests/test_log.py
@@ -28,6 +28,7 @@
LineLogFormatter)
from bzrlib.branch import Branch
from bzrlib.errors import InvalidRevisionNumber
+from bzrlib.symbol_versioning import zero_thirteen
class _LogEntry(object):
@@ -77,18 +78,18 @@
lf = LogCatcher()
wt.commit('empty commit')
- show_log(b, lf, verbose=True, start_revision=1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ lf.show_log(b, verbose=True, start_revision=1, end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=2, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=0, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=0)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=-1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=-1)
def test_simple_log(self):
@@ -98,13 +99,13 @@
b = wt.branch
lf = LogCatcher()
- show_log(b, lf)
+ lf.show_log(b)
# no entries yet
eq(lf.logs, [])
wt.commit('empty commit')
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
eq(len(lf.logs), 1)
eq(lf.logs[0].revno, '1')
eq(lf.logs[0].rev.message, 'empty commit')
@@ -118,14 +119,15 @@
lf = StringIO()
# log using regular thing
- show_log(b, LongLogFormatter(lf))
+ formatter = LongLogFormatter(lf)
+ formatter.show_log(b)
lf.seek(0)
for l in lf.readlines():
self.log(l)
# get log as data structure
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
eq(len(lf.logs), 2)
self.log('log entries:')
for logentry in lf.logs:
@@ -144,7 +146,7 @@
self.log("original commit message: %r", msg)
wt.commit(msg)
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
committed_msg = lf.logs[0].rev.message
self.log("escaped commit message: %r", committed_msg)
self.assert_(msg != committed_msg)
@@ -159,7 +161,7 @@
self.log("original commit message: %r", msg)
wt.commit(msg)
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
committed_msg = lf.logs[0].rev.message
self.log("escaped commit message: %r", committed_msg)
self.assert_(msg == committed_msg)
@@ -187,7 +189,7 @@
sio = StringIO()
lf = ShortLogFormatter(to_file=sio)
- show_log(b, lf)
+ lf.show_log(b)
self.assertEquals(sio.getvalue(), """\
3 Joe Foo\t2005-11-21
single line with trailing newline
@@ -204,7 +206,7 @@
sio = StringIO()
lf = LongLogFormatter(to_file=sio)
- show_log(b, lf)
+ lf.show_log(b)
self.assertEquals(sio.getvalue(), """\
------------------------------------------------------------
revno: 3
@@ -248,7 +250,7 @@
committer='Lorem Ipsum <test at example.com>')
logfile = file('out.tmp', 'w+')
formatter = LongLogFormatter(to_file=logfile)
- show_log(b, formatter, verbose=True)
+ formatter.show_log(b, verbose=True)
logfile.flush()
logfile.seek(0)
log_contents = logfile.read()
@@ -280,7 +282,230 @@
committer='Line-Log-Formatter Tester <test at line.log>')
logfile = file('out.tmp', 'w+')
formatter = LineLogFormatter(to_file=logfile)
- show_log(b, formatter)
+ formatter.show_log(b)
+ logfile.flush()
+ logfile.seek(0)
+ log_contents = logfile.read()
+ self.assertEqualDiff(log_contents, '1: Line-Log-Formatte... 2005-11-23 add a\n')
+
+ def test_cur_revno_deprecated(self):
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+
+ lf = LogCatcher()
+ wt.commit('empty commit')
+ self.applyDeprecated(zero_thirteen, show_log, b, lf, verbose=True,
+ start_revision=1, end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=2,
+ end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=1,
+ end_revision=2)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=0,
+ end_revision=2)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=1,
+ end_revision=0)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=-1,
+ end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, self.applyDeprecated,
+ zero_thirteen, show_log, b, lf, start_revision=1,
+ end_revision=-1)
+
+ def test_simple_log_deprecated(self):
+ eq = self.assertEquals
+
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+
+ lf = LogCatcher()
+ self.applyDeprecated(zero_thirteen, show_log, b, lf)
+ # no entries yet
+ eq(lf.logs, [])
+
+ wt.commit('empty commit')
+ lf = LogCatcher()
+ self.applyDeprecated(zero_thirteen, show_log, b, lf, verbose=True)
+ eq(len(lf.logs), 1)
+ eq(lf.logs[0].revno, '1')
+ eq(lf.logs[0].rev.message, 'empty commit')
+ d = lf.logs[0].delta
+ self.log('log delta: %r' % d)
+ self.checkDelta(d)
+
+ self.build_tree(['hello'])
+ wt.add('hello')
+ wt.commit('add one file')
+
+ lf = StringIO()
+ # log using regular thing
+ self.applyDeprecated(zero_thirteen, show_log, b, LongLogFormatter(lf))
+ lf.seek(0)
+ for l in lf.readlines():
+ self.log(l)
+
+ # get log as data structure
+ lf = LogCatcher()
+ self.applyDeprecated(zero_thirteen, show_log, b, lf, verbose=True)
+ eq(len(lf.logs), 2)
+ self.log('log entries:')
+ for logentry in lf.logs:
+ self.log('%4s %s' % (logentry.revno, logentry.rev.message))
+
+ # first one is most recent
+ logentry = lf.logs[0]
+ eq(logentry.revno, '2')
+ eq(logentry.rev.message, 'add one file')
+ d = logentry.delta
+ self.log('log 2 delta: %r' % d)
+ # self.checkDelta(d, added=['hello'])
+
+ # commit a log message with control characters
+ msg = "All 8-bit chars: " + ''.join([unichr(x) for x in range(256)])
+ self.log("original commit message: %r", msg)
+ wt.commit(msg)
+ lf = LogCatcher()
+ self.applyDeprecated(zero_thirteen, show_log, b, lf, verbose=True)
+ committed_msg = lf.logs[0].rev.message
+ self.log("escaped commit message: %r", committed_msg)
+ self.assert_(msg != committed_msg)
+ self.assert_(len(committed_msg) > len(msg))
+
+ # Check that log message with only XML-valid characters isn't
+ # escaped. As ElementTree apparently does some kind of
+ # newline conversion, neither LF (\x0A) nor CR (\x0D) are
+ # included in the test commit message, even though they are
+ # valid XML 1.0 characters.
+ msg = "\x09" + ''.join([unichr(x) for x in range(0x20, 256)])
+ self.log("original commit message: %r", msg)
+ wt.commit(msg)
+ lf = LogCatcher()
+ self.applyDeprecated(zero_thirteen, show_log, b, lf, verbose=True)
+ committed_msg = lf.logs[0].rev.message
+ self.log("escaped commit message: %r", committed_msg)
+ self.assert_(msg == committed_msg)
+
+ def test_trailing_newlines_deprecated(self):
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+ b.nick='test'
+ open('a', 'wb').write('hello moto\n')
+ wt.add('a')
+ wt.commit('simple log message', rev_id='a1'
+ , timestamp=1132586655.459960938, timezone=-6*3600
+ , committer='Joe Foo <joe at foo.com>')
+ open('b', 'wb').write('goodbye\n')
+ wt.add('b')
+ wt.commit('multiline\nlog\nmessage\n', rev_id='a2'
+ , timestamp=1132586842.411175966, timezone=-6*3600
+ , committer='Joe Foo <joe at foo.com>')
+
+ open('c', 'wb').write('just another manic monday\n')
+ wt.add('c')
+ wt.commit('single line with trailing newline\n', rev_id='a3'
+ , timestamp=1132587176.835228920, timezone=-6*3600
+ , committer = 'Joe Foo <joe at foo.com>')
+
+ sio = StringIO()
+ lf = ShortLogFormatter(to_file=sio)
+ self.applyDeprecated(zero_thirteen, show_log, b, lf)
+ self.assertEquals(sio.getvalue(), """\
+ 3 Joe Foo\t2005-11-21
+ single line with trailing newline
+
+ 2 Joe Foo\t2005-11-21
+ multiline
+ log
+ message
+
+ 1 Joe Foo\t2005-11-21
+ simple log message
+
+""")
+
+ sio = StringIO()
+ lf = LongLogFormatter(to_file=sio)
+ self.applyDeprecated(zero_thirteen, show_log, b, lf)
+ self.assertEquals(sio.getvalue(), """\
+------------------------------------------------------------
+revno: 3
+committer: Joe Foo <joe at foo.com>
+branch nick: test
+timestamp: Mon 2005-11-21 09:32:56 -0600
+message:
+ single line with trailing newline
+------------------------------------------------------------
+revno: 2
+committer: Joe Foo <joe at foo.com>
+branch nick: test
+timestamp: Mon 2005-11-21 09:27:22 -0600
+message:
+ multiline
+ log
+ message
+------------------------------------------------------------
+revno: 1
+committer: Joe Foo <joe at foo.com>
+branch nick: test
+timestamp: Mon 2005-11-21 09:24:15 -0600
+message:
+ simple log message
+""")
+
+ def test_verbose_log_deprecated(self):
+ """Verbose log includes changed files
+
+ bug #4676
+ """
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+ self.build_tree(['a'])
+ wt.add('a')
+ # XXX: why does a longer nick show up?
+ b.nick = 'test_verbose_log'
+ wt.commit(message='add a',
+ timestamp=1132711707,
+ timezone=36000,
+ committer='Lorem Ipsum <test at example.com>')
+ logfile = file('out.tmp', 'w+')
+ formatter = LongLogFormatter(to_file=logfile)
+ self.applyDeprecated(zero_thirteen, show_log, b, formatter,
+ verbose=True)
+ logfile.flush()
+ logfile.seek(0)
+ log_contents = logfile.read()
+ self.assertEqualDiff(log_contents, '''\
+------------------------------------------------------------
+revno: 1
+committer: Lorem Ipsum <test at example.com>
+branch nick: test_verbose_log
+timestamp: Wed 2005-11-23 12:08:27 +1000
+message:
+ add a
+added:
+ a
+''')
+
+ def test_line_log_deprecated(self):
+ """Line log should show revno
+
+ bug #5162
+ """
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+ self.build_tree(['a'])
+ wt.add('a')
+ b.nick = 'test-line-log'
+ wt.commit(message='add a',
+ timestamp=1132711707,
+ timezone=36000,
+ committer='Line-Log-Formatter Tester <test at line.log>')
+ logfile = file('out.tmp', 'w+')
+ formatter = LineLogFormatter(to_file=logfile)
+ self.applyDeprecated(zero_thirteen, show_log, b, formatter)
logfile.flush()
logfile.seek(0)
log_contents = logfile.read()
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110400143
... 7-c8e675ff315f35c5
# revision id: jw+debian at jameswestby.net-20061104001437-c8e675ff315f35c5
# sha1: 7a08586d78dbb4d12fe1f1cfc87c6f30be159ca2
# inventory sha1: dcdd6ca00eb112a8777c2e5902133084662e1f07
# parent ids:
# jw+debian at jameswestby.net-20061104001043-9207522cb0f639dd
# base id: jw+debian at jameswestby.net-20061103183529-be47e5c89dac325b
# properties:
# branch-nick: bzr.dev.logformat2
# message:
# Move _enumerate history to a method
# committer: James Westby <jw+debian at jameswestby.net>
# date: Sat 2006-11-04 00:10:43.160000086 +0000
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTEwOSwxNCArMTA5LDYgQEAK
IAogCiAKLWRlZiBfZW51bWVyYXRlX2hpc3RvcnkoYnJhbmNoKToKLSAgICByaCA9IFtdCi0gICAg
cmV2bm8gPSAxCi0gICAgZm9yIHJldl9pZCBpbiBicmFuY2gucmV2aXNpb25faGlzdG9yeSgpOgot
ICAgICAgICByaC5hcHBlbmQoKHJldm5vLCByZXZfaWQpKQotICAgICAgICByZXZubyArPSAxCi0g
ICAgcmV0dXJuIHJoCi0KIEBkZXByZWNhdGVkX2Z1bmN0aW9uKHplcm9fdGhpcnRlZW4pCiBkZWYg
c2hvd19sb2coYnJhbmNoLAogICAgICAgICAgICAgIGxmLApAQCAtMjY2LDcgKzI1OCw3IEBACiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWFyY2hSRSA9IE5vbmUKIAotICAgICAgICB3aGlj
aF9yZXZzID0gX2VudW1lcmF0ZV9oaXN0b3J5KHNlbGYuYnJhbmNoKQorICAgICAgICB3aGljaF9y
ZXZzID0gc2VsZi5fZW51bWVyYXRlX2hpc3RvcnkoKQogICAgICAgICAKICAgICAgICAgaWYgc2Vs
Zi5zdGFydF9yZXZpc2lvbiBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5zdGFydF9yZXZpc2lv
biA9IDEKQEAgLTM1OSw2ICszNTEsMTQgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgICAgICBzZWxmLnNob3dfbWVyZ2VfcmV2bm8ocmV2LCBtZXJnZV9kZXB0aCwgcmV2
bm8pCiAKKyAgICBkZWYgX2VudW1lcmF0ZV9oaXN0b3J5KHNlbGYpOgorICAgICAgICByaCA9IFtd
CisgICAgICAgIHJldm5vID0gMQorICAgICAgICBmb3IgcmV2X2lkIGluIHNlbGYuYnJhbmNoLnJl
dmlzaW9uX2hpc3RvcnkoKToKKyAgICAgICAgICAgIHJoLmFwcGVuZCgocmV2bm8sIHJldl9pZCkp
CisgICAgICAgICAgICByZXZubyArPSAxCisgICAgICAgIHJldHVybiByaAorCiBjbGFzcyBMb25n
TG9nRm9ybWF0dGVyKExvZ0Zvcm1hdHRlcik6CiAgICAgZGVmIHNob3coc2VsZiwgcmV2bm8sIHJl
diwgZGVsdGEpOgogICAgICAgICByZXR1cm4gc2VsZi5fc2hvd19oZWxwZXIocmV2bm89cmV2bm8s
IHJldj1yZXYsIGRlbHRhPWRlbHRhKQoK
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110400104
... 3-9207522cb0f639dd
# revision id: jw+debian at jameswestby.net-20061104001043-9207522cb0f639dd
# sha1: 3d2b01a15ee0392db694d9c17a2b2bb6e26a99cf
# inventory sha1: 6acbe17031498c0a667a3194fda2ed26c7c38d5d
# parent ids:
# jw+debian at jameswestby.net-20061103201444-98764b30501164ce
# properties:
# branch-nick: bzr.dev.logformat2
# message:
# Remove the copied duplicate test
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-11-03 20:14:44.737999916 +0000
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC0zMTUsMzMgKzMxNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9fdGhp
cnRlZW4sIHNob3dfbG9nLCBiLCBsZiwgc3RhcnRfcmV2aXNpb249MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kX3JldmlzaW9uPS0xKQogCi0gICAgZGVmIHRlc3RfY3VyX3Jldm5vX2Rl
cHJlY2F0ZWQoc2VsZik6Ci0gICAgICAgIHd0ID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgn
LicpCi0gICAgICAgIGIgPSB3dC5icmFuY2gKLQotICAgICAgICBsZiA9IExvZ0NhdGNoZXIoKQot
ICAgICAgICB3dC5jb21taXQoJ2VtcHR5IGNvbW1pdCcpCi0gICAgICAgIHNlbGYuYXBwbHlEZXBy
ZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwgdmVyYm9zZT1UcnVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzZWxm
LmFwcGx5RGVwcmVjYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb190aGlydGVl
biwgc2hvd19sb2csIGIsIGxmLCBzdGFydF9yZXZpc2lvbj0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmRfcmV2aXNpb249MSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxp
ZFJldmlzaW9uTnVtYmVyLCBzZWxmLmFwcGx5RGVwcmVjYXRlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCBzdGFydF9yZXZpc2lvbj0x
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzZWxmLmFwcGx5RGVwcmVjYXRl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb190aGlydGVlbiwgc2hvd19sb2csIGIs
IGxmLCBzdGFydF9yZXZpc2lvbj0wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2
aXNpb249MikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVy
LCBzZWxmLmFwcGx5RGVwcmVjYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb190
aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCBzdGFydF9yZXZpc2lvbj0xLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFJldmlzaW9uTnVtYmVyLCBzZWxmLmFwcGx5RGVwcmVjYXRlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCBzdGFydF9yZXZp
c2lvbj0tMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2VsZi5hcHBseURl
cHJlY2F0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9fdGhpcnRlZW4sIHNob3df
bG9nLCBiLCBsZiwgc3RhcnRfcmV2aXNpb249MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kX3JldmlzaW9uPS0xKQotCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2xvZ19kZXByZWNhdGVkKHNl
bGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWxzCiAgICAgICAgIAoK
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110320144
... 4-98764b30501164ce
# revision id: jw+debian at jameswestby.net-20061103201444-98764b30501164ce
# sha1: 11ba745fd80942c2448b2edaa8be44c99b812344
# inventory sha1: 0fcf08301d54fc8927183c0c3337748a838e95e4
# parent ids:
# jw+debian at jameswestby.net-20061103201256-29456053953cc4ed
# properties:
# branch-nick: bzr.dev.logformat2
# message:
# Merge the work refactoring LogFormatter
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-11-03 20:12:56.417000055 +0000
=== modified file HACKING // last-changed:mbp at sourcefrog.net-20061103015212-1e5
... f881c2152d79f // encoding:base64
LS0tIEhBQ0tJTkcKKysrIEhBQ0tJTkcKQEAgLTQzNywxMCArNDM3LDM5IEBACiBFcnJvcnMgYW5k
IGV4Y2VwdGlvbnMKID09PT09PT09PT09PT09PT09PT09PQogCi1FcnJvcnMgYXJlIGhhbmRsZWQg
dGhyb3VnaCBQeXRob24gZXhjZXB0aW9ucy4gIFRoZXkgY2FuIHJlcHJlc2VudCB1c2VyCi1lcnJv
cnMsIGVudmlyb25tZW50YWwgZXJyb3JzIG9yIHByb2dyYW0gYnVncy4gIFNvbWV0aW1lcyB3ZSBj
YW4ndCBiZSBzdXJlCi1hdCB0aGUgdGltZSBpdCdzIHJhaXNlZCB3aGljaCBjYXNlIGFwcGxpZXMu
ICBTZWUgYnpybGliL2Vycm9ycy5weSBmb3IgCi1kZXRhaWxzIG9uIHRoZSBlcnJvci1oYW5kbGlu
ZyBwcmFjdGljZXMuCitFcnJvcnMgYXJlIGhhbmRsZWQgdGhyb3VnaCBQeXRob24gZXhjZXB0aW9u
cy4KKworV2UgYnJvYWRseSBjbGFzc2lmeSBlcnJvcnMgYXMgZWl0aGVyIGJlaW5nIGVpdGhlciBp
bnRlcm5hbCBvciBub3QsCitkZXBlbmRpbmcgb24gd2hldGhlciBgYHVzZXJfZXJyb3JgYCBpcyBz
ZXQgb3Igbm90LiAgSWYgd2UgdGhpbmsgaXQncyBvdXIKK2ZhdWx0LCB3ZSBzaG93IGEgYmFja3Ry
YWNlLCBhbiBpbnZpdGF0aW9uIHRvIHJlcG9ydCB0aGUgYnVnLCBhbmQgcG9zc2libHkKK290aGVy
IGRldGFpbHMuICBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBlcnJvcnMgdGhhdCBhcmVuJ3Qgc3Bl
Y2lmaWNhbGx5CityZWNvZ25pemVkIGFzIGJlaW5nIGNhdXNlZCBieSBhIHVzZXIgZXJyb3IuICBP
dGhlcndpc2Ugd2Ugc2hvdyBhIGJyaWVmZXIKK21lc3NhZ2UsIHVubGVzcyAtRGVycm9yIHdhcyBn
aXZlbi4KKworTWFueSBlcnJvcnMgb3JpZ2luYXRlIGFzICJlbnZpcm9ubWVudGFsIGVycm9ycyIg
d2hpY2ggYXJlIHJhaXNlZCBieSBQeXRob24KK29yIGJ1aWx0aW4gbGlicmFyaWVzIC0tIGZvciBl
eGFtcGxlIElPRXJyb3IuICBUaGVzZSBhcmUgdHJlYXRlZCBhcyBiZWluZworb3VyIGZhdWx0LCB1
bmxlc3MgdGhleSdyZSBjYXVnaHQgaW4gYSBwYXJ0aWN1bGFyIHRpZ2h0IHNjb3BlIHdoZXJlIHdl
IGtub3cKK3RoYXQgdGhleSBpbmRpY2F0ZSBhIHVzZXIgZXJyb3JzLiAgRm9yIGV4YW1wbGUgaWYg
dGhlIHJlcG9zaXRvcnkgZm9ybWF0CitpcyBub3QgZm91bmQsIHRoZSB1c2VyIHByb2JhYmx5IGdh
dmUgdGhlIHdyb25nIHBhdGggb3IgVVJMLiAgQnV0IGlmIG9uZSBvZgordGhlIGZpbGVzIGluc2lk
ZSB0aGUgcmVwb3NpdG9yeSBpcyBub3QgZm91bmQsIHRoZW4gaXQncyBvdXIgZmF1bHQgLS0KK2Vp
dGhlciB0aGVyZSdzIGEgYnVnIGluIGJ6ciwgb3Igc29tZXRoaW5nIGNvbXBsaWNhdGVkIGhhcyBn
b25lIHdyb25nIGluCit0aGUgZW52aXJvbm1lbnQgdGhhdCBtZWFucyBvbmUgaW50ZXJuYWwgZmls
ZSB3YXMgZGVsZXRlZC4KKworTWFueSBlcnJvcnMgYXJlIGRlZmluZWQgaW4gYGBienJsaWIvZXJy
b3JzLnB5YGAgYnV0IGl0J3MgT0sgZm9yIG5ldyBlcnJvcnMKK3RvIGJlIGFkZGVkIG5lYXIgdGhl
IHBsYWNlIHdoZXJlIHRoZXkgYXJlIHVzZWQuCisKK0V4Y2VwdGlvbnMgYXJlIGZvcm1hdHRlZCBm
b3IgdGhlIHVzZXIgYnkgY29udmVyc2lvbiB0byBhIHN0cmluZworKGV2ZW50dWFsbHkgY2FsbGlu
ZyB0aGVpciBgYF9fc3RyX19gYCBtZXRob2QuKSAgQXMgYSBjb252ZW5pZW5jZSB0aGUKK2BgLl9m
bXRgYCBtZW1iZXIgY2FuIGJlIHVzZWQgYXMgYSB0ZW1wbGF0ZSB3aGljaCB3aWxsIGJlIG1hcHBl
ZCB0byB0aGUKK2Vycm9yJ3MgaW5zdGFuY2UgZGljdC4KKworTmV3IGV4Y2VwdGlvbiBjbGFzc2Vz
IHNob3VsZCBiZSBkZWZpbmVkIHdoZW4gY2FsbGVycyBtaWdodCB3YW50IHRvIGNhdGNoCit0aGF0
IGV4Y2VwdGlvbiBzcGVjaWZpY2FsbHksIG9yIHdoZW4gaXQgbmVlZHMgYSBzdWJzdGFudGlhbGx5
IGRpZmZlcmVudAorZm9ybWF0IHN0cmluZy4KKworRXhjZXB0aW9uIHN0cmluZ3Mgc2hvdWxkIHN0
YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlciBhbmQgc2hvdWxkIG5vdCBoYXZlIGEKK2ZpbmFsIGZ1
bGxzdG9wLiAgSWYgbG9uZywgdGhleSBtYXkgY29udGFpbiBuZXdsaW5lcyB0byBicmVhayB0aGUg
dGV4dC4KKwogCiAKIEphcmdvbgoK
=== modified file NEWS // last-changed:pqm at pqm.ubuntu.com-20061102234014-be7b4e
... 5b6dac2996 // encoding:base64
LS0tIE5FV1MKKysrIE5FV1MKQEAgLTE5LDYgKzE5LDExIEBACiAgIAogICBCVUcgRklYRVM6CiAK
KyAgICAqIF9Lbml0SW5kZXguYWRkX3ZlcnNpb25zKCkgZGljdGlvbmFyeSBjb21wcmVzc2VzIHJl
dmlzaW9uIGlkcyBhcyB0aGV5CisgICAgICBhcmUgYWRkZWQuIFRoaXMgZml4ZXMgYnVnIHdoZXJl
IGZldGNoaW5nIHJlbW90ZSByZXZpc2lvbnMgcmVjb3JkcworICAgICAgdGhlbSBhcyBmdWxsIHJl
ZmVyZW5jZXMgcmF0aGVyIHRoYW4gaW50ZWdlcnMuIChKb2huIEFyYmFzaCBNZWluZWwsCisgICAg
ICAjNjQ3ODkpCisKICAgICAqIGBgYnpyIGlnbm9yZWBgIHN0cmlwcyB0cmFpbGluZyBzbGFzaGVz
IGluIHBhdHRlcm5zLgogICAgICAgQWxzbyBgYGJ6ciBpZ25vcmVgYCByZWplY3RzIGFic29sdXRl
IHBhdGhzLiAoS2VudCBHaWJzb24sICM0NTU5KQogCgo=
=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC05NDYsNyAr
OTQ2LDcgQEAKICAgICAgICAgdHJlZSwgcmVscGF0aCA9IFdvcmtpbmdUcmVlLm9wZW5fY29udGFp
bmluZyhmaWxlbmFtZSkKICAgICAgICAgaSA9IHRyZWUuaW52ZW50b3J5LnBhdGgyaWQocmVscGF0
aCkKICAgICAgICAgaWYgaSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkJ6ckVy
cm9yKCIlciBpcyBub3QgYSB2ZXJzaW9uZWQgZmlsZSIgJSBmaWxlbmFtZSkKKyAgICAgICAgICAg
IHJhaXNlIGVycm9ycy5Ob3RWZXJzaW9uZWRFcnJvcihmaWxlbmFtZSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHNlbGYub3V0Zi53cml0ZShpICsgJ1xuJykKIApAQCAtOTY3LDcgKzk2Nyw3
IEBACiAgICAgICAgIGludiA9IHRyZWUuaW52ZW50b3J5CiAgICAgICAgIGZpZCA9IGludi5wYXRo
MmlkKHJlbHBhdGgpCiAgICAgICAgIGlmIGZpZCBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2Ug
ZXJyb3JzLkJ6ckVycm9yKCIlciBpcyBub3QgYSB2ZXJzaW9uZWQgZmlsZSIgJSBmaWxlbmFtZSkK
KyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Ob3RWZXJzaW9uZWRFcnJvcihmaWxlbmFtZSkKICAg
ICAgICAgZm9yIGZpcCBpbiBpbnYuZ2V0X2lkcGF0aChmaWQpOgogICAgICAgICAgICAgc2VsZi5v
dXRmLndyaXRlKGZpcCArICdcbicpCiAKQEAgLTExOTgsOCArMTE5OCw4IEBACiAgICAgICAgICAg
ICBuZXdfbGFiZWwgPSAnbmV3LycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIG5vdCAn
OicgaW4gcHJlZml4OgotICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuQnpyRXJyb3IoIi0t
ZGlmZi1wcmVmaXggZXhwZWN0cyB0d28gdmFsdWVzIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiIpCisgICAgICAgICAgICAgICAg
IHJhaXNlIEJ6ckNvbW1hbmRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICItLWRpZmYtcHJl
Zml4IGV4cGVjdHMgdHdvIHZhbHVlcyBzZXBhcmF0ZWQgYnkgYSBjb2xvbiIpCiAgICAgICAgICAg
ICBvbGRfbGFiZWwsIG5ld19sYWJlbCA9IHByZWZpeC5zcGxpdCgiOiIpCiAgICAgICAgIAogICAg
ICAgICB0cnk6CkBAIC0xNjg4LDggKzE2ODgsNyBAQAogICAgICAgICAgICAgcmV2X2lkID0gYi5s
YXN0X3JldmlzaW9uKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIGxlbihyZXZpc2lv
bikgIT0gMToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuQnpyRXJyb3IoJ2J6ciBleHBv
cnQgLS1yZXZpc2lvbiB0YWtlcyBleGFjdGx5JwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIDEgYXJndW1lbnQnKQorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5C
enJDb21tYW5kRXJyb3IoJ2J6ciBleHBvcnQgLS1yZXZpc2lvbiB0YWtlcyBleGFjdGx5IDEgYXJn
dW1lbnQnKQogICAgICAgICAgICAgcmV2X2lkID0gcmV2aXNpb25bMF0uaW5faGlzdG9yeShiKS5y
ZXZfaWQKICAgICAgICAgdCA9IGIucmVwb3NpdG9yeS5yZXZpc2lvbl90cmVlKHJldl9pZCkKICAg
ICAgICAgdHJ5OgoK
=== modified file bzrlib/bundle/serializer/v08.py // last-changed:mbp at sourcefro
... g.net-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi9idW5kbGUvc2VyaWFsaXplci92MDgucHkKKysrIGJ6cmxpYi9idW5kbGUvc2Vy
aWFsaXplci92MDgucHkKQEAgLTk2LDcgKzk2LDcgQEAKIAogICAgIGRlZiBjaGVja19jb21wYXRp
YmxlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnNvdXJjZS5zdXBwb3J0c19yaWNoX3Jvb3QoKToK
LSAgICAgICAgICAgIHJhaXNlIGVycm9ycy5JbmNvbXBhdGlibGVGb3JtYXQoJzAuOCcsIHJlcHIo
c2VsZi5zb3VyY2UpKQorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkluY29tcGF0aWJsZUJ1bmRs
ZUZvcm1hdCgnMC44JywgcmVwcihzZWxmLnNvdXJjZSkpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwg
c291cmNlLCByZXZpc2lvbl9pZHMsIGZvcmNlZF9iYXNlcywgZik6CiAgICAgICAgICIiIldyaXRl
IHRoZSBidW5kbGVzcyB0byB0aGUgc3VwcGxpZWQgZmlsZXMuCgo=
=== modified file bzrlib/errors.py // last-changed:mbp at sourcefrog.net-200611030
... 15126-427cb97a48404f42 // encoding:base64
LS0tIGJ6cmxpYi9lcnJvcnMucHkKKysrIGJ6cmxpYi9lcnJvcnMucHkKQEAgLTE1LDU5ICsxNSwx
MCBAQAogIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z
dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAKICIiIkV4Y2VwdGlvbnMgZm9yIGJ6ciwgYW5kIHJl
cG9ydGluZyBvZiB0aGVtLgotCi1UaGVyZSBhcmUgMyBkaWZmZXJlbnQgY2xhc3NlcyBvZiBlcnJv
cjoKLQotICogS2V5Ym9hcmRJbnRlcnJ1cHQsIGFuZCBPU0Vycm9yIHdpdGggRVBJUEUgLSB0aGUg
cHJvZ3JhbSB0ZXJtaW5hdGVzIAotICAgd2l0aCBhbiBhcHByb3ByaWF0ZSBzaG9ydCBtZXNzYWdl
Ci0KLSAqIFVzZXIgZXJyb3JzLCBpbmRpY2F0aW5nIGEgcHJvYmxlbSBjYXVzZWQgYnkgdGhlIHVz
ZXIgc3VjaCBhcyBhIGJhZCBVUkwuCi0gICBUaGVzZSBhcmUgcHJpbnRlZCBpbiBhIHNob3J0IGZv
cm0uCi0gCi0gKiBJbnRlcm5hbCB1bmV4cGVjdGVkIGVycm9ycywgaW5jbHVkaW5nIG1vc3QgUHl0
aG9uIGJ1aWx0aW4gZXJyb3JzCi0gICBhbmQgc29tZSByYWlzZWQgZnJvbSBpbnNpZGUgYnpyLiAg
VGhlc2UgYXJlIHByaW50ZWQgd2l0aCBhIGZ1bGwgCi0gICB0cmFjZWJhY2sgYW5kIGFuIGludml0
YXRpb24gdG8gcmVwb3J0IHRoZSBidWcuCi0KLUV4Y2VwdGlvbnMgYXJlIGNhdWdodCBhdCBhIGhp
Z2ggbGV2ZWwgdG8gcmVwb3J0IGVycm9ycyB0byB0aGUgdXNlciwgYW5kCi1taWdodCBhbHNvIGJl
IGNhdWdodCBpbnNpZGUgdGhlIHByb2dyYW0uICBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUKLXBv
c3NpYmxlIHRvIGNvbnZlcnQgdGhlbSB0byBhIG1lYW5pbmdmdWwgc3RyaW5nLCBhbmQgYWxzbyBm
b3IgdGhlbSB0byBiZQotaW50ZXJyb2dhdGVkIGJ5IHRoZSBwcm9ncmFtLgotCi1FeGNlcHRpb25z
IGFyZSBkZWZpbmVkIHN1Y2ggdGhhdCB0aGUgYXJndW1lbnRzIGdpdmVuIHRvIHRoZSBjb25zdHJ1
Y3RvcgotYXJlIHN0b3JlZCBpbiB0aGUgb2JqZWN0IGFzIHByb3BlcnRpZXMgb2YgdGhlIHNhbWUg
bmFtZS4gIFdoZW4gdGhlCi1vYmplY3QgaXMgcHJpbnRlZCBhcyBhIHN0cmluZywgdGhlIGRvYyBz
dHJpbmcgb2YgdGhlIGNsYXNzIGlzIHVzZWQgYXMKLWEgZm9ybWF0IHN0cmluZyB3aXRoIHRoZSBw
cm9wZXJ0eSBkaWN0aW9uYXJ5IGF2YWlsYWJsZSB0byBpdC4KLQotVGhpcyBtZWFucyB0aGF0IGV4
Y2VwdGlvbnMgY2FuIHVzZWQgbGlrZSB0aGlzOgotCi0+Pj4gaW1wb3J0IHN5cwotPj4+IHRyeToK
LS4uLiAgIHJhaXNlIE5vdEJyYW5jaEVycm9yKHBhdGg9Jy9mb28vYmFyJykKLS4uLiBleGNlcHQ6
Ci0uLi4gICBwcmludCAnJXMuJXMnICUgKHN5cy5leGNfdHlwZS5fX21vZHVsZV9fLCBzeXMuZXhj
X3R5cGUuX19uYW1lX18pCi0uLi4gICBwcmludCBzeXMuZXhjX3ZhbHVlCi0uLi4gICBwYXRoID0g
Z2V0YXR0cihzeXMuZXhjX3ZhbHVlLCAncGF0aCcsIE5vbmUpCi0uLi4gICBpZiBwYXRoIGlzIG5v
dCBOb25lOgotLi4uICAgICBwcmludCBwYXRoCi1ienJsaWIuZXJyb3JzLk5vdEJyYW5jaEVycm9y
Ci1Ob3QgYSBicmFuY2g6IC9mb28vYmFyCi0vZm9vL2JhcgotCi1UaGVyZWZvcmU6Ci0KLSAqIGNy
ZWF0ZSBhIG5ldyBleGNlcHRpb24gY2xhc3MgZm9yIGFueSBjbGFzcyBvZiBlcnJvciB0aGF0IGNh
biBiZQotICAgdXNlZnVsbHkgZGlzdGluZ3Vpc2hlZC4gIElmIG5vIGNhbGxlcnMgYXJlIGxpa2Vs
eSB0byB3YW50IHRvIGNhdGNoCi0gICBvbmUgYnV0IG5vdCBhbm90aGVyLCBkb24ndCB3b3JyeSBh
Ym91dCB0aGVtLgotCi0gKiB0aGUgX19zdHJfXyBtZXRob2Qgc2hvdWxkIGdlbmVyYXRlIHNvbWV0
aGluZyB1c2VmdWw7IEJ6ckVycm9yIHByb3ZpZGVzCi0gICBhIGdvb2QgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbgotCi1FeGNlcHRpb24gc3RyaW5ncyBzaG91bGQgc3RhcnQgd2l0aCBhIGNhcGl0YWwg
bGV0dGVyIGFuZCBzaG91bGQgbm90IGhhdmUgYQotZmluYWwgZnVsbHN0b3AuCiAiIiIKIAotZnJv
bSB3YXJuaW5ncyBpbXBvcnQgd2FybgogCitmcm9tIGJ6cmxpYiBpbXBvcnQgc3ltYm9sX3ZlcnNp
b25pbmcKIGZyb20gYnpybGliLnBhdGNoZXMgaW1wb3J0IChQYXRjaFN5bnRheCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGF0Y2hDb25mbGljdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWFsZm9ybWVkUGF0Y2hIZWFkZXIsCkBAIC03NSw4ICsyNiw2IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWFsZm9ybWVkTGluZSwpCiAKIAotIyBiYXNlZCBvbiBTY290
dCBKYW1lcyBSZW1uYW50J3MgaGN0IGVycm9yIGNsYXNzZXMKLQogIyBUT0RPOiBpcyB0aGVyZSBh
bnkgdmFsdWUgaW4gcHJvdmlkaW5nIHRoZSAuYXJncyBmaWVsZCB1c2VkIGJ5IHN0YW5kYXJkCiAj
IHB5dGhvbiBleGNlcHRpb25zPyAgIEEgbGlzdCBvZiB2YWx1ZXMgd2l0aCBubyBuYW1lcyBzZWVt
cyBsZXNzIHVzZWZ1bCAKICMgdG8gbWUuCkBAIC04NSwzOCArMzQsOTUgQEAKICMgY29uc3RydWN0
ZWQgdG8gbWFrZSBzdXJlIGl0IHdpbGwgc3VjY2VlZC4gIEJ1dCB0aGF0IHNheXMgbm90aGluZyBh
Ym91dAogIyBleGNlcHRpb25zIHRoYXQgYXJlIG5ldmVyIHJhaXNlZC4KIAotIyBUT0RPOiBDb252
ZXJ0IGFsbCB0aGUgb3RoZXIgZXJyb3IgY2xhc3NlcyBoZXJlIHRvIEJ6ck5ld0Vycm9yLCBhbmQg
ZWxpbWluYXRlCi0jIHRoZSBvbGQgb25lLgotCi0jIFRPRE86IFRoZSBwYXR0ZXJuIChmcm9tIGhj
dCkgb2YgdXNpbmcgY2xhc3NlcyBkb2NzdHJpbmdzIGFzIG1lc3NhZ2UKLSMgdGVtcGxhdGVzIGlz
IGN1dGUgYnV0IG1heWJlIG5vdCBzdWNoIGEgZ3JlYXQgaWRlYSAtIHBlcmhhcHMgc2hvdWxkIGhh
dmUgYQotIyBzZXBhcmF0ZSBzdGF0aWMgbWVzc2FnZV90ZW1wbGF0ZS4KKyMgVE9ETzogc2VsZnRl
c3QgYXNzZXJ0UmFpc2VzIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIHRoYXQgZXZlcnkgZXJy
b3IKKyMgcmFpc2VkIGNhbiBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcgc3VjY2Vzc2Z1bGx5LCBh
bmQgd2l0aG91dCBnaXZpbmcKKyMgJ3VucHJpbnRhYmxlJy4KIAogCiBjbGFzcyBCenJFcnJvcihT
dGFuZGFyZEVycm9yKToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBlcnJvcnMgcmFpc2Vk
IGJ5IGJ6cmxpYi4KKworICAgIDpjdmFyIGludGVybmFsX2Vycm9yOiBpZiB0cnVlIChvciBhYnNl
bnQpIHRoaXMgd2FzIHByb2JhYmx5IGNhdXNlZCBieSBhCisgICAgYnpyIGJ1ZyBhbmQgc2hvdWxk
IGJlIGRpc3BsYXllZCB3aXRoIGEgdHJhY2ViYWNrOyBpZiBGYWxzZSB0aGlzIHdhcworICAgIHBy
b2JhYmx5IGEgdXNlciBvciBlbnZpcm9ubWVudCBlcnJvciBhbmQgdGhleSBkb24ndCBuZWVkIHRo
ZSBnb3J5IGRldGFpbHMuCisgICAgKFRoYXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgLURlcnJvciBv
biB0aGUgY29tbWFuZCBsaW5lLikKKworICAgIDpjdmFyIF9mbXQ6IEZvcm1hdCBzdHJpbmcgdG8g
ZGlzcGxheSB0aGUgZXJyb3I7IHRoaXMgaXMgZXhwYW5kZWQKKyAgICBieSB0aGUgaW5zdGFuY2Un
cyBkaWN0LgorICAgICIiIgogICAgIAotICAgIGlzX3VzZXJfZXJyb3IgPSBUcnVlCisgICAgaW50
ZXJuYWxfZXJyb3IgPSBGYWxzZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz1Ob25lLCAq
Kmt3ZHMpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBuZXcgQnpyRXJyb3IuCisKKyAgICAgICAg
VGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZSBmb3JtcyBmb3IgY29uc3RydWN0aW5nIHRoZXNlIG9i
amVjdHMuCisgICAgICAgIEVpdGhlciBhIHByZWZvcm1hdHRlZCBzdHJpbmcgbWF5IGJlIHBhc3Nl
ZCwgb3IgYSBzZXQgb2YgbmFtZWQKKyAgICAgICAgYXJndW1lbnRzIGNhbiBiZSBnaXZlbi4gIFRo
ZSBmaXJzdCBpcyBmb3IgZ2VuZXJpYyAidXNlciIgZXJyb3JzIHdoaWNoCisgICAgICAgIGFyZSBu
b3QgaW50ZW5kZWQgdG8gYmUgY2F1Z2h0IGFuZCBzbyBkbyBub3QgbmVlZCBhIHNwZWNpZmljIHN1
YmNsYXNzLgorICAgICAgICBUaGUgc2Vjb25kIGNhc2UgaXMgZm9yIHVzZSB3aXRoIHN1YmNsYXNz
ZXMgdGhhdCBwcm92aWRlIGEgX2ZtdCBmb3JtYXQKKyAgICAgICAgc3RyaW5nIHRvIHByaW50IHRo
ZSBhcmd1bWVudHMuICAKKworICAgICAgICBLZXl3b3JkIGFyZ3VtZW50cyBhcmUgdGFrZW4gYXMg
cGFyYW1ldGVycyB0byB0aGUgZXJyb3IsIHdoaWNoIGNhbiAKKyAgICAgICAgYmUgaW5zZXJ0ZWQg
aW50byB0aGUgZm9ybWF0IHN0cmluZyB0ZW1wbGF0ZS4gIEl0J3MgcmVjb21tZW5kZWQgCisgICAg
ICAgIHRoYXQgc3ViY2xhc3NlcyBvdmVycmlkZSB0aGUgX19pbml0X18gbWV0aG9kIHRvIHJlcXVp
cmUgc3BlY2lmaWMgCisgICAgICAgIHBhcmFtZXRlcnMuCisKKyAgICAgICAgOnBhcmFtIG1zZzog
SWYgZ2l2ZW4sIHRoaXMgaXMgdGhlIGxpdGVyYWwgY29tcGxldGUgdGV4dCBmb3IgdGhlIGVycm9y
LAorICAgICAgICBub3Qgc3ViamVjdCB0byBleHBhbnNpb24uCisgICAgICAgICIiIgorICAgICAg
ICBTdGFuZGFyZEVycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIGlmIG1zZyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICMgSSB3YXMgZ29pbmcgdG8gZGVwcmVjYXRlIHRoaXMsIGJ1dCBpdCBh
Y3R1YWxseSB0dXJucyBvdXQgdG8gYmUKKyAgICAgICAgICAgICMgcXVpdGUgaGFuZHkgLSBtYnAg
MjAwNjExMDMuCisgICAgICAgICAgICBzZWxmLl9wcmVmb3JtYXR0ZWRfc3RyaW5nID0gbXNnCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVmb3JtYXR0ZWRfc3RyaW5nID0gTm9u
ZQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dkcy5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgotICAgICAgICAjIFhYWDogU2hvdWxkIHdlIHNob3cgdGhlIGV4Y2VwdGlvbiBjbGFzcyBpbiAK
LSAgICAgICAgIyBleGNlcHRpb25zIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd24gbWVzc2Fn
ZT8gIAotICAgICAgICAjIG1heWJlIGl0IHNob3VsZCBiZSBkb25lIGF0IGEgaGlnaGVyIGxldmVs
Ci0gICAgICAgICMjIG4gPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArICc6ICcKLSAgICAgICAg
biA9ICcnCi0gICAgICAgIGlmIGxlbihzZWxmLmFyZ3MpID09IDE6Ci0gICAgICAgICAgICByZXR1
cm4gc3RyKHNlbGYuYXJnc1swXSkKLSAgICAgICAgZWxpZiBsZW4oc2VsZi5hcmdzKSA9PSAyOgot
ICAgICAgICAgICAgIyBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9yIHN1Z2dlc3Rpb25zCi0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG4gKyAnXG4gICcuam9pbihbc2VsZi5h
cmdzWzBdXSArIHNlbGYuYXJnc1sxXSkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG4gKyAiJXIiICUgc2VsZgotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcmV0dXJuIG4gKyBgc2VsZi5hcmdzYAorICAgICAgICBzID0gZ2V0YXR0cihzZWxm
LCAnX3ByZWZvcm1hdHRlZF9zdHJpbmcnLCBOb25lKQorICAgICAgICBpZiBzIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgIyBjb250YWlucyBhIHByZWZvcm1hdHRlZCBtZXNzYWdlOyBtdXN0IGJl
IGNhc3QgdG8gcGxhaW4gc3RyCisgICAgICAgICAgICByZXR1cm4gc3RyKHMpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGZtdCA9IHNlbGYuX2dldF9mb3JtYXRfc3RyaW5nKCkKKyAgICAgICAg
ICAgIGlmIGZtdDoKKyAgICAgICAgICAgICAgICBzID0gZm10ICUgc2VsZi5fX2RpY3RfXworICAg
ICAgICAgICAgICAgICMgX19zdHJfXygpIHNob3VsZCBhbHdheXMgcmV0dXJuIGEgJ3N0cicgb2Jq
ZWN0CisgICAgICAgICAgICAgICAgIyBuZXZlciBhICd1bmljb2RlJyBvYmplY3QuCisgICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCB1bmljb2RlKToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHMuZW5jb2RlKCd1dGY4JykKKyAgICAgICAgICAgICAgICByZXR1cm4gcworICAgICAg
ICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIE5hbWVFcnJvciwgVmFsdWVFcnJv
ciwgS2V5RXJyb3IpLCBlOgorICAgICAgICAgICAgcmV0dXJuICdVbnByaW50YWJsZSBleGNlcHRp
b24gJXM6IGRpY3Q9JXIsIGZtdD0lciwgZXJyb3I9JXMnIFwKKyAgICAgICAgICAgICAgICAlIChz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9f
LAorICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgJ19mbXQnLCBOb25lKSwKKyAgICAg
ICAgICAgICAgICAgICBzdHIoZSkpCisKKyAgICBkZWYgX2dldF9mb3JtYXRfc3RyaW5nKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gZm9ybWF0IHN0cmluZyBmb3IgdGhpcyBleGNlcHRpb24gb3Ig
Tm9uZSIiIgorICAgICAgICBmbXQgPSBnZXRhdHRyKHNlbGYsICdfZm10JywgTm9uZSkKKyAgICAg
ICAgaWYgZm10IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGZtdAorICAgICAgICBm
bXQgPSBnZXRhdHRyKHNlbGYsICdfX2RvY19fJywgTm9uZSkKKyAgICAgICAgaWYgZm10IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgc3ltYm9sX3ZlcnNpb25pbmcud2FybigiJXMgdXNlcyBpdHMg
ZG9jc3RyaW5nIGFzIGEgZm9ybWF0LCAiCisgICAgICAgICAgICAgICAgICAgICJpdCBzaG91bGQg
dXNlIF9mbXQgaW5zdGVhZCIgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAg
ICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZtdAorICAg
ICAgICByZXR1cm4gJ1VucHJpbnRhYmxlIGV4Y2VwdGlvbiAlczogZGljdD0lciwgZm10PSVyJyBc
CisgICAgICAgICAgICAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAg
IHNlbGYuX19kaWN0X18sCisgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsICdfZm10JywgTm9u
ZSksCisgICAgICAgICAgICAgICApCiAKIAogY2xhc3MgQnpyTmV3RXJyb3IoQnpyRXJyb3IpOgot
ICAgICIiImJ6ciBlcnJvciIiIgorICAgICIiIkRlcHJlY2F0ZWQgZXJyb3IgYmFzZSBjbGFzcy4i
IiIKICAgICAjIGJhc2UgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhlIGRvY3N0cmluZyB3aXRo
IHRoZWlyIGh1bWFuLQogICAgICMgcmVhZGFibGUgZXhwbGFuYXRpb24KIApAQCAtMTI0LDYgKzEz
MCwxMSBAQAogICAgICAgICAjIFhYWDogVXNlIHRoZSB1bmRlcmx5aW5nIEJ6ckVycm9yIHRvIGFs
d2F5cyBnZW5lcmF0ZSB0aGUgYXJncyBhdHRyaWJ1dGUKICAgICAgICAgIyBpZiBpdCBkb2Vzbid0
IGV4aXN0LiAgV2UgY2FuJ3QgdXNlIHN1cGVyIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBhcmUK
ICAgICAgICAgIyBvbGQtc3R5bGUgY2xhc3NlcyBpbiBweXRob24yLjQgKGJ1dCBuZXcgaW4gMi41
KS4gIC0tYm1jLCAyMDA2MDQyNgorICAgICAgICBzeW1ib2xfdmVyc2lvbmluZy53YXJuKCdCenJO
ZXdFcnJvciB3YXMgZGVwcmVjYXRlZCBpbiBienIgMC4xMzsgJworICAgICAgICAgICAgICdwbGVh
c2UgY29udmVydCAlcyB0byB1c2UgQnpyRXJyb3IgaW5zdGVhZCcgCisgICAgICAgICAgICAgJSBz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcs
CisgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQogICAgICAgICBCenJFcnJvci5fX2luaXRfXyhz
ZWxmLCAqYXJncykKICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dkcy5pdGVtcygpOgogICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQpAQCAtMTQyLDEwMiArMTUzLDEwOSBA
QAogICAgICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18sIHN0cihlKSkKIAogCi1jbGFzcyBB
bHJlYWR5QnVpbGRpbmcoQnpyTmV3RXJyb3IpOgotICAgICIiIlRoZSB0cmVlIGJ1aWxkZXIgaXMg
YWxyZWFkeSBidWlsZGluZyBhIHRyZWUuIiIiCi0KLQotY2xhc3MgQnpyQ2hlY2tFcnJvcihCenJO
ZXdFcnJvcik6Ci0gICAgIiIiSW50ZXJuYWwgY2hlY2sgZmFpbGVkOiAlKG1lc3NhZ2UpcyIiIgot
Ci0gICAgaXNfdXNlcl9lcnJvciA9IEZhbHNlCitjbGFzcyBBbHJlYWR5QnVpbGRpbmcoQnpyRXJy
b3IpOgorICAgIAorICAgIF9mbXQgPSAiVGhlIHRyZWUgYnVpbGRlciBpcyBhbHJlYWR5IGJ1aWxk
aW5nIGEgdHJlZS4iCisKKworY2xhc3MgQnpyQ2hlY2tFcnJvcihCenJFcnJvcik6CisgICAgCisg
ICAgX2ZtdCA9ICJJbnRlcm5hbCBjaGVjayBmYWlsZWQ6ICUobWVzc2FnZSlzIgorCisgICAgaW50
ZXJuYWxfZXJyb3IgPSBUcnVlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0g
ICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5p
dF9fKHNlbGYpCiAgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKIAogCi1jbGFzcyBJbnZh
bGlkRW50cnlOYW1lKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJJbnZhbGlkIGVudHJ5IG5hbWU6ICUo
bmFtZSlzIiIiCitjbGFzcyBJbnZhbGlkRW50cnlOYW1lKEJ6ckVycm9yKToKKyAgICAKKyAgICBf
Zm10ID0gIkludmFsaWQgZW50cnkgbmFtZTogJShuYW1lKXMiCiAKLSAgICBpc191c2VyX2Vycm9y
ID0gRmFsc2UKKyAgICBpbnRlcm5hbF9lcnJvciA9IFRydWUKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAg
QnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogCiAKLWNs
YXNzIEludmFsaWRSZXZpc2lvbk51bWJlcihCenJOZXdFcnJvcik6Ci0gICAgIiIiSW52YWxpZCBy
ZXZpc2lvbiBudW1iZXIgJShyZXZubylkIiIiCitjbGFzcyBJbnZhbGlkUmV2aXNpb25OdW1iZXIo
QnpyRXJyb3IpOgorICAgIAorICAgIF9mbXQgPSAiSW52YWxpZCByZXZpc2lvbiBudW1iZXIgJShy
ZXZubylzIgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldm5vKToKLSAgICAgICAgQnpyTmV3
RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAg
ICAgICAgc2VsZi5yZXZubyA9IHJldm5vCiAKIAotY2xhc3MgSW52YWxpZFJldmlzaW9uSWQoQnpy
TmV3RXJyb3IpOgotICAgICIiIkludmFsaWQgcmV2aXNpb24taWQgeyUocmV2aXNpb25faWQpc30g
aW4gJShicmFuY2gpcyIiIgorY2xhc3MgSW52YWxpZFJldmlzaW9uSWQoQnpyRXJyb3IpOgorCisg
ICAgX2ZtdCA9ICJJbnZhbGlkIHJldmlzaW9uLWlkIHslKHJldmlzaW9uX2lkKXN9IGluICUoYnJh
bmNoKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmV2aXNpb25faWQsIGJyYW5jaCk6CiAg
ICAgICAgICMgYnJhbmNoIGNhbiBiZSBhbnkgc3RyaW5nIG9yIG9iamVjdCB3aXRoIF9fc3RyX18g
ZGVmaW5lZAotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJF
cnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLnJldmlzaW9uX2lkID0gcmV2aXNpb25f
aWQKICAgICAgICAgc2VsZi5icmFuY2ggPSBicmFuY2gKIAogCi1jbGFzcyBJbnZlbnRvcnlNb2Rp
ZmllZChCenJOZXdFcnJvcik6Ci0gICAgIiIiVGhlIGN1cnJlbnQgaW52ZW50b3J5IGZvciB0aGUg
dHJlZSAlKHRyZWUpciBoYXMgYmVlbiBtb2RpZmllZCwgc28gYSBjbGVhbiBpbnZlbnRvcnkgY2Fu
bm90IGJlIHJlYWQgd2l0aG91dCBkYXRhIGxvc3MuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdHJlZSk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNl
bGYudHJlZSA9IHRyZWUKLQotCi1jbGFzcyBOb1N1Y2hJZChCenJOZXdFcnJvcik6Ci0gICAgIiIi
VGhlIGZpbGUgaWQgJShmaWxlX2lkKXMgaXMgbm90IHByZXNlbnQgaW4gdGhlIHRyZWUgJSh0cmVl
KXMuIiIiCitjbGFzcyBOb1N1Y2hJZChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlRoZSBmaWxl
IGlkICUoZmlsZV9pZClzIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0cmVlICUodHJlZSlzLiIKICAg
ICAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHJlZSwgZmlsZV9pZCk6Ci0gICAgICAgIEJ6ck5l
d0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCiAg
ICAgICAgIHNlbGYuZmlsZV9pZCA9IGZpbGVfaWQKICAgICAgICAgc2VsZi50cmVlID0gdHJlZQog
CiAKLWNsYXNzIE5vV29ya2luZ1RyZWUoQnpyTmV3RXJyb3IpOgotICAgICIiIk5vIFdvcmtpbmdU
cmVlIGV4aXN0cyBmb3IgJShiYXNlKXMuIiIiCitjbGFzcyBJbnZlbnRvcnlNb2RpZmllZChCenJF
cnJvcik6CisKKyAgICBfZm10ID0gKCJUaGUgY3VycmVudCBpbnZlbnRvcnkgZm9yIHRoZSB0cmVl
ICUodHJlZSlyIGhhcyBiZWVuIG1vZGlmaWVkLCAiCisgICAgICAgICAgICAic28gYSBjbGVhbiBp
bnZlbnRvcnkgY2Fubm90IGJlIHJlYWQgd2l0aG91dCBkYXRhIGxvc3MuIikKKworICAgIGludGVy
bmFsX2Vycm9yID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyZWUpOgorICAgICAg
ICBzZWxmLnRyZWUgPSB0cmVlCisKKworY2xhc3MgTm9Xb3JraW5nVHJlZShCenJFcnJvcik6CisK
KyAgICBfZm10ID0gIk5vIFdvcmtpbmdUcmVlIGV4aXN0cyBmb3IgJShiYXNlKXMuIgogICAgIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0
X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5i
YXNlID0gYmFzZQogCiAKLWNsYXNzIFdvcmtpbmdUcmVlQWxyZWFkeVBvcHVsYXRlZChCenJOZXdF
cnJvcik6Ci0gICAgIiIiV29ya2luZyB0cmVlIGFscmVhZHkgcG9wdWxhdGVkIGluICUoYmFzZSlz
IiIiCi0KLSAgICBpc191c2VyX2Vycm9yID0gRmFsc2UKLQotCi1jbGFzcyBOb3RCdWlsZGluZyhC
enJOZXdFcnJvcik6Ci0gICAgIiIiTm90IGN1cnJlbnRseSBidWlsZGluZyBhIHRyZWUuIiIiCi0K
LQotY2xhc3MgTm90TG9jYWxVcmwoQnpyTmV3RXJyb3IpOgotICAgICIiIiUodXJsKXMgaXMgbm90
IGEgbG9jYWwgcGF0aC4iIiIKLSAgICAKK2NsYXNzIE5vdEJ1aWxkaW5nKEJ6ckVycm9yKToKKwor
ICAgIF9mbXQgPSAiTm90IGN1cnJlbnRseSBidWlsZGluZyBhIHRyZWUuIgorCisKK2NsYXNzIE5v
dExvY2FsVXJsKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiJSh1cmwpcyBpcyBub3QgYSBsb2Nh
bCBwYXRoLiIKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLnVybCA9IHVybAogCiAKLWNsYXNzIE5v
dFdyaXRlTG9ja2VkKEJ6ck5ld0Vycm9yKToKLSAgICAiIiIlKG5vdF9sb2NrZWQpciBpcyBub3Qg
d3JpdGUgbG9ja2VkIGJ1dCBuZWVkcyB0byBiZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBub3RfbG9ja2VkKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKLSAgICAg
ICAgc2VsZi5ub3RfbG9ja2VkID0gbm90X2xvY2tlZAotCi0KLWNsYXNzIEJ6ckNvbW1hbmRFcnJv
cihCenJOZXdFcnJvcik6CitjbGFzcyBXb3JraW5nVHJlZUFscmVhZHlQb3B1bGF0ZWQoQnpyRXJy
b3IpOgorCisgICAgX2ZtdCA9ICIiIldvcmtpbmcgdHJlZSBhbHJlYWR5IHBvcHVsYXRlZCBpbiAl
KGJhc2UpcyIiIgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBUcnVlCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYmFzZSk6CisgICAgICAgIHNlbGYuYmFzZSA9IGJhc2UKKworY2xhc3MgQnpyQ29t
bWFuZEVycm9yKEJ6ckVycm9yKToKICAgICAiIiJFcnJvciBmcm9tIHVzZXIgY29tbWFuZCIiIgog
Ci0gICAgaXNfdXNlcl9lcnJvciA9IFRydWUKKyAgICBpbnRlcm5hbF9lcnJvciA9IEZhbHNlCiAK
ICAgICAjIEVycm9yIGZyb20gbWFsZm9ybWVkIHVzZXIgY29tbWFuZDsgcGxlYXNlIGF2b2lkIHJh
aXNpbmcgdGhpcyBhcyBhCiAgICAgIyBnZW5lcmljIGV4Y2VwdGlvbiBub3QgY2F1c2VkIGJ5IHVz
ZXIgaW5wdXQuCkBAIC0yNTgsMjEgKzI3NiwzMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5tc2cK
IAogCitjbGFzcyBOb3RXcml0ZUxvY2tlZChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIiIiJShu
b3RfbG9ja2VkKXIgaXMgbm90IHdyaXRlIGxvY2tlZCBidXQgbmVlZHMgdG8gYmUuIiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbm90X2xvY2tlZCk6CisgICAgICAgIHNlbGYubm90X2xvY2tl
ZCA9IG5vdF9sb2NrZWQKKworCiBjbGFzcyBCenJPcHRpb25FcnJvcihCenJDb21tYW5kRXJyb3Ip
OgotICAgICIiIkVycm9yIGluIGNvbW1hbmQgbGluZSBvcHRpb25zIiIiCisKKyAgICBfZm10ID0g
IkVycm9yIGluIGNvbW1hbmQgbGluZSBvcHRpb25zIgogCiAgICAgCi1jbGFzcyBTdHJpY3RDb21t
aXRGYWlsZWQoQnpyTmV3RXJyb3IpOgotICAgICIiIkNvbW1pdCByZWZ1c2VkIGJlY2F1c2UgdGhl
cmUgYXJlIHVua25vd24gZmlsZXMgaW4gdGhlIHRyZWUiIiIKK2NsYXNzIFN0cmljdENvbW1pdEZh
aWxlZChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIkNvbW1pdCByZWZ1c2VkIGJlY2F1c2UgdGhl
cmUgYXJlIHVua25vd24gZmlsZXMgaW4gdGhlIHRyZWUiCiAKIAogIyBYWFg6IFNob3VsZCBiZSB1
bmlmaWVkIHdpdGggVHJhbnNwb3J0RXJyb3I7IHRoZXkgc2VlbSB0byByZXByZXNlbnQgdGhlCiAj
IHNhbWUgdGhpbmcKLWNsYXNzIFBhdGhFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiR2VuZXJp
YyBwYXRoIGVycm9yOiAlKHBhdGgpciUoZXh0cmEpcykiIiIKK2NsYXNzIFBhdGhFcnJvcihCenJF
cnJvcik6CisgICAgCisgICAgX2ZtdCA9ICJHZW5lcmljIHBhdGggZXJyb3I6ICUocGF0aClyJShl
eHRyYSlzKSIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBleHRyYT1Ob25lKToKLSAg
ICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0
X18oc2VsZikKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICAgICBpZiBleHRyYToKICAg
ICAgICAgICAgIHNlbGYuZXh0cmEgPSAnOiAnICsgc3RyKGV4dHJhKQpAQCAtMjgxLDQxICszMTAs
NTAgQEAKIAogCiBjbGFzcyBOb1N1Y2hGaWxlKFBhdGhFcnJvcik6Ci0gICAgIiIiTm8gc3VjaCBm
aWxlOiAlKHBhdGgpciUoZXh0cmEpcyIiIgorCisgICAgX2ZtdCA9ICJObyBzdWNoIGZpbGU6ICUo
cGF0aClyJShleHRyYSlzIgogCiAKIGNsYXNzIEZpbGVFeGlzdHMoUGF0aEVycm9yKToKLSAgICAi
IiJGaWxlIGV4aXN0czogJShwYXRoKXIlKGV4dHJhKXMiIiIKKworICAgIF9mbXQgPSAiRmlsZSBl
eGlzdHM6ICUocGF0aClyJShleHRyYSlzIgogCiAKIGNsYXNzIERpcmVjdG9yeU5vdEVtcHR5KFBh
dGhFcnJvcik6Ci0gICAgIiIiRGlyZWN0b3J5IG5vdCBlbXB0eTogJShwYXRoKXIlKGV4dHJhKXMi
IiIKLQotCi1jbGFzcyBSZWFkaW5nQ29tcGxldGVkKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJUaGUg
TWVkaXVtUmVxdWVzdCAnJShyZXF1ZXN0KXMnIGhhcyBhbHJlYWR5IGhhZCBmaW5pc2hfcmVhZGlu
ZyBjYWxsZWQgdXBvbiBpdCAtIHRoZSByZXF1ZXN0IGhhcyBiZWVuIGNvbXBsZXRlZCBhbmQgbm8g
bW9yZSBkYXRhIG1heSBiZSByZWFkLiIiIgotCi0gICAgaXNfdXNlcl9lcnJvciA9IEZhbHNlCisK
KyAgICBfZm10ID0gIkRpcmVjdG9yeSBub3QgZW1wdHk6ICUocGF0aClyJShleHRyYSlzIgorCisK
K2NsYXNzIFJlYWRpbmdDb21wbGV0ZWQoQnpyRXJyb3IpOgorICAgIAorICAgIF9mbXQgPSAoIlRo
ZSBNZWRpdW1SZXF1ZXN0ICclKHJlcXVlc3QpcycgaGFzIGFscmVhZHkgaGFkIGZpbmlzaF9yZWFk
aW5nICIKKyAgICAgICAgICAgICJjYWxsZWQgdXBvbiBpdCAtIHRoZSByZXF1ZXN0IGhhcyBiZWVu
IGNvbXBsZXRlZCBhbmQgbm8gbW9yZSAiCisgICAgICAgICAgICAiZGF0YSBtYXkgYmUgcmVhZC4i
KQorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBUcnVlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cmVxdWVzdCk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNl
bGYucmVxdWVzdCA9IHJlcXVlc3QKIAogCiBjbGFzcyBSZXNvdXJjZUJ1c3koUGF0aEVycm9yKToK
LSAgICAiIiJEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeTogJShwYXRoKXIlKGV4dHJhKXMiIiIKKwor
ICAgIF9mbXQgPSAiRGV2aWNlIG9yIHJlc291cmNlIGJ1c3k6ICUocGF0aClyJShleHRyYSlzIgog
CiAKIGNsYXNzIFBlcm1pc3Npb25EZW5pZWQoUGF0aEVycm9yKToKLSAgICAiIiJQZXJtaXNzaW9u
IGRlbmllZDogJShwYXRoKXIlKGV4dHJhKXMiIiIKKworICAgIF9mbXQgPSAiUGVybWlzc2lvbiBk
ZW5pZWQ6ICUocGF0aClyJShleHRyYSlzIgogCiAKIGNsYXNzIEludmFsaWRVUkwoUGF0aEVycm9y
KToKLSAgICAiIiJJbnZhbGlkIHVybCBzdXBwbGllZCB0byB0cmFuc3BvcnQ6ICUocGF0aClyJShl
eHRyYSlzIiIiCisKKyAgICBfZm10ID0gIkludmFsaWQgdXJsIHN1cHBsaWVkIHRvIHRyYW5zcG9y
dDogJShwYXRoKXIlKGV4dHJhKXMiCiAKIAogY2xhc3MgSW52YWxpZFVSTEpvaW4oUGF0aEVycm9y
KToKLSAgICAiIiJJbnZhbGlkIFVSTCBqb2luIHJlcXVlc3Q6ICUoYXJncylzJShleHRyYSlzIiIi
CisKKyAgICBfZm10ID0gIkludmFsaWQgVVJMIGpvaW4gcmVxdWVzdDogJShhcmdzKXMlKGV4dHJh
KXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBiYXNlLCBhcmdzKToKICAgICAgICAg
UGF0aEVycm9yLl9faW5pdF9fKHNlbGYsIGJhc2UsIG1zZykKQEAgLTMyMywxNiArMzYxLDE4IEBA
CiAKIAogY2xhc3MgVW5zdXBwb3J0ZWRQcm90b2NvbChQYXRoRXJyb3IpOgotICAgICIiIlVuc3Vw
cG9ydGVkIHByb3RvY29sIGZvciB1cmwgIiUocGF0aClzIiUoZXh0cmEpcyIiIgorCisgICAgX2Zt
dCA9ICdVbnN1cHBvcnRlZCBwcm90b2NvbCBmb3IgdXJsICIlKHBhdGgpcyIlKGV4dHJhKXMnCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBleHRyYSk6CiAgICAgICAgIFBhdGhFcnJvci5f
X2luaXRfXyhzZWxmLCB1cmwsIGV4dHJhPWV4dHJhKQogCiAKIGNsYXNzIFNob3J0UmVhZHZFcnJv
cihQYXRoRXJyb3IpOgotICAgICIiInJlYWR2KCkgcmVhZCAlKGFjdHVhbClzIGJ5dGVzIHJhdGhl
ciB0aGFuICUobGVuZ3RoKXMgYnl0ZXMgYXQgJShvZmZzZXQpcyBmb3IgJShwYXRoKXMlKGV4dHJh
KXMiIiIKLQotICAgIGlzX3VzZXJfZXJyb3IgPSBGYWxzZQorCisgICAgX2ZtdCA9ICJyZWFkdigp
IHJlYWQgJShhY3R1YWwpcyBieXRlcyByYXRoZXIgdGhhbiAlKGxlbmd0aClzIGJ5dGVzIGF0ICUo
b2Zmc2V0KXMgZm9yICUocGF0aClzJShleHRyYSlzIgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBU
cnVlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgb2Zmc2V0LCBsZW5ndGgsIGFjdHVh
bCwgZXh0cmE9Tm9uZSk6CiAgICAgICAgIFBhdGhFcnJvci5fX2luaXRfXyhzZWxmLCBwYXRoLCBl
eHRyYT1leHRyYSkKQEAgLTM0MSwxMyArMzgxLDE0IEBACiAgICAgICAgIHNlbGYuYWN0dWFsID0g
YWN0dWFsCiAKIAotY2xhc3MgUGF0aE5vdENoaWxkKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJQYXRo
ICUocGF0aClyIGlzIG5vdCBhIGNoaWxkIG9mIHBhdGggJShiYXNlKXIlKGV4dHJhKXMiIiIKLQot
ICAgIGlzX3VzZXJfZXJyb3IgPSBGYWxzZQorY2xhc3MgUGF0aE5vdENoaWxkKEJ6ckVycm9yKToK
KworICAgIF9mbXQgPSAiUGF0aCAlKHBhdGgpciBpcyBub3QgYSBjaGlsZCBvZiBwYXRoICUoYmFz
ZSlyJShleHRyYSlzIgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBUcnVlCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcGF0aCwgYmFzZSwgZXh0cmE9Tm9uZSk6Ci0gICAgICAgIEJ6ck5ld0Vycm9y
Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAg
IHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5iYXNlID0gYmFzZQogICAgICAgICBpZiBl
eHRyYToKQEAgLTM1NywxNCArMzk4LDE2IEBACiAKIAogY2xhc3MgSW52YWxpZE5vcm1hbGl6YXRp
b24oUGF0aEVycm9yKToKLSAgICAiIiJQYXRoICUocGF0aClyIGlzIG5vdCB1bmljb2RlIG5vcm1h
bGl6ZWQiIiIKKworICAgIF9mbXQgPSAiUGF0aCAlKHBhdGgpciBpcyBub3QgdW5pY29kZSBub3Jt
YWxpemVkIgogCiAKICMgVE9ETzogVGhpcyBpcyBnaXZlbiBhIFVSTDsgd2UgdHJ5IHRvIHVuZXNj
YXBlIGl0IGJ1dCBkb2luZyB0aGF0IGZyb20gaW5zaWRlCiAjIHRoZSBleGNlcHRpb24gb2JqZWN0
IGlzIGEgYml0IHVuZGVzaXJhYmxlLgogIyBUT0RPOiBQcm9iYWJseSB0aGlzIGJlaGF2aW9yIG9m
IHNob3VsZCBiZSBhIGNvbW1vbiBzdXBlcmNsYXNzIAogY2xhc3MgTm90QnJhbmNoRXJyb3IoUGF0
aEVycm9yKToKLSAgICAiIiJOb3QgYSBicmFuY2g6ICUocGF0aClzIiIiCisKKyAgICBfZm10ID0g
Ik5vdCBhIGJyYW5jaDogJShwYXRoKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6
CiAgICAgICAgaW1wb3J0IGJ6cmxpYi51cmx1dGlscyBhcyB1cmx1dGlscwpAQCAtMzcyLDE2ICs0
MTUsMTkgQEAKIAogCiBjbGFzcyBBbHJlYWR5QnJhbmNoRXJyb3IoUGF0aEVycm9yKToKLSAgICAi
IiJBbHJlYWR5IGEgYnJhbmNoOiAlKHBhdGgpcy4iIiIKKworICAgIF9mbXQgPSAiQWxyZWFkeSBh
IGJyYW5jaDogJShwYXRoKXMuIgogCiAKIGNsYXNzIEJyYW5jaEV4aXN0c1dpdGhvdXRXb3JraW5n
VHJlZShQYXRoRXJyb3IpOgotICAgICIiIkRpcmVjdG9yeSBjb250YWlucyBhIGJyYW5jaCwgYnV0
IG5vIHdvcmtpbmcgdHJlZSBcCi0odXNlIGJ6ciBjaGVja291dCBpZiB5b3Ugd2lzaCB0byBidWls
ZCBhIHdvcmtpbmcgdHJlZSk6ICUocGF0aClzIiIiCisKKyAgICBfZm10ID0gIkRpcmVjdG9yeSBj
b250YWlucyBhIGJyYW5jaCwgYnV0IG5vIHdvcmtpbmcgdHJlZSBcCisodXNlIGJ6ciBjaGVja291
dCBpZiB5b3Ugd2lzaCB0byBidWlsZCBhIHdvcmtpbmcgdHJlZSk6ICUocGF0aClzIgogCiAKIGNs
YXNzIEF0b21pY0ZpbGVBbHJlYWR5Q2xvc2VkKFBhdGhFcnJvcik6Ci0gICAgIiIiJyUoZnVuY3Rp
b24pcycgY2FsbGVkIG9uIGFuIEF0b21pY0ZpbGUgYWZ0ZXIgaXQgd2FzIGNsb3NlZDogJShwYXRo
KXMiIiIKKworICAgIF9mbXQgPSAiJyUoZnVuY3Rpb24pcycgY2FsbGVkIG9uIGFuIEF0b21pY0Zp
bGUgYWZ0ZXIgaXQgd2FzIGNsb3NlZDogJShwYXRoKXMiCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGF0aCwgZnVuY3Rpb24pOgogICAgICAgICBQYXRoRXJyb3IuX19pbml0X18oc2VsZiwgcGF0
aD1wYXRoLCBleHRyYT1Ob25lKQpAQCAtMzg5LDc1ICs0MzUsODYgQEAKIAogCiBjbGFzcyBJbmFj
Y2Vzc2libGVQYXJlbnQoUGF0aEVycm9yKToKLSAgICAiIiJQYXJlbnQgbm90IGFjY2Vzc2libGUg
Z2l2ZW4gYmFzZSAlKGJhc2UpcyBhbmQgcmVsYXRpdmUgcGF0aCAlKHBhdGgpcyIiIgorCisgICAg
X2ZtdCA9ICJQYXJlbnQgbm90IGFjY2Vzc2libGUgZ2l2ZW4gYmFzZSAlKGJhc2UpcyBhbmQgcmVs
YXRpdmUgcGF0aCAlKHBhdGgpcyIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBiYXNl
KToKICAgICAgICAgUGF0aEVycm9yLl9faW5pdF9fKHNlbGYsIHBhdGgpCiAgICAgICAgIHNlbGYu
YmFzZSA9IGJhc2UKIAogCi1jbGFzcyBOb1JlcG9zaXRvcnlQcmVzZW50KEJ6ck5ld0Vycm9yKToK
LSAgICAiIiJObyByZXBvc2l0b3J5IHByZXNlbnQ6ICUocGF0aClyIiIiCitjbGFzcyBOb1JlcG9z
aXRvcnlQcmVzZW50KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiTm8gcmVwb3NpdG9yeSBwcmVz
ZW50OiAlKHBhdGgpciIKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnpyZGlyKToKLSAgICAgICAg
QnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2Vs
ZikKICAgICAgICAgc2VsZi5wYXRoID0gYnpyZGlyLnRyYW5zcG9ydC5jbG9uZSgnLi4nKS5iYXNl
CiAKIAotY2xhc3MgRmlsZUluV3JvbmdCcmFuY2goQnpyTmV3RXJyb3IpOgotICAgICIiIkZpbGUg
JShwYXRoKXMgaW4gbm90IGluIGJyYW5jaCAlKGJyYW5jaF9iYXNlKXMuIiIiCitjbGFzcyBGaWxl
SW5Xcm9uZ0JyYW5jaChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIkZpbGUgJShwYXRoKXMgaW4g
bm90IGluIGJyYW5jaCAlKGJyYW5jaF9iYXNlKXMuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyYW5jaCwgcGF0aCk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAg
ICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYuYnJhbmNoID0gYnJhbmNo
CiAgICAgICAgIHNlbGYuYnJhbmNoX2Jhc2UgPSBicmFuY2guYmFzZQogICAgICAgICBzZWxmLnBh
dGggPSBwYXRoCiAKIAotY2xhc3MgVW5zdXBwb3J0ZWRGb3JtYXRFcnJvcihCenJOZXdFcnJvcik6
Ci0gICAgIiIiVW5zdXBwb3J0ZWQgYnJhbmNoIGZvcm1hdDogJShmb3JtYXQpcyIiIgotCi0KLWNs
YXNzIFVua25vd25Gb3JtYXRFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiVW5rbm93biBicmFu
Y2ggZm9ybWF0OiAlKGZvcm1hdClyIiIiCi0KLQotY2xhc3MgSW5jb21wYXRpYmxlRm9ybWF0KEJ6
ck5ld0Vycm9yKToKLSAgICAiIiJGb3JtYXQgJShmb3JtYXQpcyBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIC5ienIgdmVyc2lvbiAlKGJ6cmRpcilzLiIiIgorY2xhc3MgVW5zdXBwb3J0ZWRGb3JtYXRF
cnJvcihCenJFcnJvcik6CisgICAgCisgICAgX2ZtdCA9ICJVbnN1cHBvcnRlZCBicmFuY2ggZm9y
bWF0OiAlKGZvcm1hdClzIgorCisKK2NsYXNzIFVua25vd25Gb3JtYXRFcnJvcihCenJFcnJvcik6
CisgICAgCisgICAgX2ZtdCA9ICJVbmtub3duIGJyYW5jaCBmb3JtYXQ6ICUoZm9ybWF0KXIiCisK
KworY2xhc3MgSW5jb21wYXRpYmxlRm9ybWF0KEJ6ckVycm9yKToKKyAgICAKKyAgICBfZm10ID0g
IkZvcm1hdCAlKGZvcm1hdClzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggLmJ6ciB2ZXJzaW9uICUo
YnpyZGlyKXMuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvcm1hdCwgYnpyZGlyX2Zvcm1h
dCk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9y
Ll9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYuZm9ybWF0ID0gZm9ybWF0CiAgICAgICAgIHNl
bGYuYnpyZGlyID0gYnpyZGlyX2Zvcm1hdAogCiAKLWNsYXNzIEluY29tcGF0aWJsZVJldmlzaW9u
KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJSZXZpc2lvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoICUo
cmVwb19mb3JtYXQpcyIiIgorY2xhc3MgSW5jb21wYXRpYmxlUmV2aXNpb24oQnpyRXJyb3IpOgor
ICAgIAorICAgIF9mbXQgPSAiUmV2aXNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCAlKHJlcG9f
Zm9ybWF0KXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwb19mb3JtYXQpOgotICAgICAg
ICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhz
ZWxmKQogICAgICAgICBzZWxmLnJlcG9fZm9ybWF0ID0gcmVwb19mb3JtYXQKIAogCi1jbGFzcyBO
b3RWZXJzaW9uZWRFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiJShwYXRoKXMgaXMgbm90IHZl
cnNpb25lZCIiIgorY2xhc3MgTm90VmVyc2lvbmVkRXJyb3IoQnpyRXJyb3IpOgorCisgICAgX2Zt
dCA9ICIlKHBhdGgpcyBpcyBub3QgdmVyc2lvbmVkIgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBhdGgpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJF
cnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAKIAotY2xhc3Mg
UGF0aHNOb3RWZXJzaW9uZWRFcnJvcihCenJOZXdFcnJvcik6CitjbGFzcyBQYXRoc05vdFZlcnNp
b25lZEVycm9yKEJ6ckVycm9yKToKICAgICAjIHVzZWQgd2hlbiByZXBvcnRpbmcgc2V2ZXJhbCBw
YXRocyBhcmUgbm90IHZlcnNpb25lZAotICAgICIiIlBhdGgocykgYXJlIG5vdCB2ZXJzaW9uZWQ6
ICUocGF0aHNfYXNfc3RyaW5nKXMiIiIKKworICAgIF9mbXQgPSAiUGF0aChzKSBhcmUgbm90IHZl
cnNpb25lZDogJShwYXRoc19hc19zdHJpbmcpcyIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
YXRocyk6CiAgICAgICAgIGZyb20gYnpybGliLm9zdXRpbHMgaW1wb3J0IHF1b3RlZm4KLSAgICAg
ICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18o
c2VsZikKICAgICAgICAgc2VsZi5wYXRocyA9IHBhdGhzCiAgICAgICAgIHNlbGYucGF0aHNfYXNf
c3RyaW5nID0gJyAnLmpvaW4oW3F1b3RlZm4ocCkgZm9yIHAgaW4gcGF0aHNdKQogCiAKLWNsYXNz
IFBhdGhzRG9Ob3RFeGlzdChCenJOZXdFcnJvcik6Ci0gICAgIiIiUGF0aChzKSBkbyBub3QgZXhp
c3Q6ICUocGF0aHNfYXNfc3RyaW5nKXMiIiIKK2NsYXNzIFBhdGhzRG9Ob3RFeGlzdChCenJFcnJv
cik6CisKKyAgICBfZm10ID0gIlBhdGgocykgZG8gbm90IGV4aXN0OiAlKHBhdGhzX2FzX3N0cmlu
ZylzIgogCiAgICAgIyB1c2VkIHdoZW4gcmVwb3J0aW5nIHRoYXQgcGF0aHMgYXJlIG5laXRoZXIg
dmVyc2lvbmVkIG5vciBpbiB0aGUgd29ya2luZwogICAgICMgdHJlZQpAQCAtNDY1LDIxICs1MjIs
MjUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aHMpOgogICAgICAgICAjIGNpcmN1bGFy
IGltcG9ydAogICAgICAgICBmcm9tIGJ6cmxpYi5vc3V0aWxzIGltcG9ydCBxdW90ZWZuCi0gICAg
ICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9f
KHNlbGYpCiAgICAgICAgIHNlbGYucGF0aHMgPSBwYXRocwogICAgICAgICBzZWxmLnBhdGhzX2Fz
X3N0cmluZyA9ICcgJy5qb2luKFtxdW90ZWZuKHApIGZvciBwIGluIHBhdGhzXSkKIAogCi1jbGFz
cyBCYWRGaWxlS2luZEVycm9yKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJDYW5ub3Qgb3BlcmF0ZSBv
biAlKGZpbGVuYW1lKXMgb2YgdW5zdXBwb3J0ZWQga2luZCAlKGtpbmQpcyIiIgotCi0KLWNsYXNz
IEZvcmJpZGRlbkNvbnRyb2xGaWxlRXJyb3IoQnpyTmV3RXJyb3IpOgotICAgICIiIkNhbm5vdCBv
cGVyYXRlIG9uICUoZmlsZW5hbWUpcyBiZWNhdXNlIGl0IGlzIGEgY29udHJvbCBmaWxlIiIiCi0K
LQotY2xhc3MgTG9ja0Vycm9yKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJMb2NrIGVycm9yOiAlKG1l
c3NhZ2UpcyIiIgorY2xhc3MgQmFkRmlsZUtpbmRFcnJvcihCenJFcnJvcik6CisKKyAgICBfZm10
ID0gIkNhbm5vdCBvcGVyYXRlIG9uICUoZmlsZW5hbWUpcyBvZiB1bnN1cHBvcnRlZCBraW5kICUo
a2luZClzIgorCisKK2NsYXNzIEZvcmJpZGRlbkNvbnRyb2xGaWxlRXJyb3IoQnpyRXJyb3IpOgor
CisgICAgX2ZtdCA9ICJDYW5ub3Qgb3BlcmF0ZSBvbiAlKGZpbGVuYW1lKXMgYmVjYXVzZSBpdCBp
cyBhIGNvbnRyb2wgZmlsZSIKKworCitjbGFzcyBMb2NrRXJyb3IoQnpyRXJyb3IpOgorCisgICAg
X2ZtdCA9ICJMb2NrIGVycm9yOiAlKG1lc3NhZ2UpcyIKKwogICAgICMgQWxsIGV4Y2VwdGlvbnMg
ZnJvbSB0aGUgbG9jay91bmxvY2sgZnVuY3Rpb25zIHNob3VsZCBiZSBmcm9tCiAgICAgIyB0aGlz
IGV4Y2VwdGlvbiBjbGFzcy4gIFRoZXkgd2lsbCBiZSB0cmFuc2xhdGVkIGFzIG5lY2Vzc2FyeS4g
VGhlCiAgICAgIyBvcmlnaW5hbCBleGNlcHRpb24gaXMgYXZhaWxhYmxlIGFzIGUub3JpZ2luYWxf
ZXJyb3IKQEAgLTQ5MCwzMSArNTUxLDM5IEBACiAKIAogY2xhc3MgQ29tbWl0Tm90UG9zc2libGUo
TG9ja0Vycm9yKToKLSAgICAiIiJBIGNvbW1pdCB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkbyBub3Qg
aGF2ZSBhIHdyaXRlIGxvY2sgb3Blbi4iIiIKKworICAgIF9mbXQgPSAiQSBjb21taXQgd2FzIGF0
dGVtcHRlZCBidXQgd2UgZG8gbm90IGhhdmUgYSB3cml0ZSBsb2NrIG9wZW4uIgorCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICBwYXNzCiAKIAogY2xhc3MgQWxyZWFkeUNvbW1pdHRl
ZChMb2NrRXJyb3IpOgotICAgICIiIkEgcm9sbGJhY2sgd2FzIHJlcXVlc3RlZCwgYnV0IGlzIG5v
dCBhYmxlIHRvIGJlIGFjY29tcGxpc2hlZC4iIiIKKworICAgIF9mbXQgPSAiQSByb2xsYmFjayB3
YXMgcmVxdWVzdGVkLCBidXQgaXMgbm90IGFibGUgdG8gYmUgYWNjb21wbGlzaGVkLiIKKwogICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCiAKIGNsYXNzIFJlYWRPbmx5RXJy
b3IoTG9ja0Vycm9yKToKLSAgICAiIiJBIHdyaXRlIGF0dGVtcHQgd2FzIG1hZGUgaW4gYSByZWFk
IG9ubHkgdHJhbnNhY3Rpb24gb24gJShvYmopcyIiIgorCisgICAgX2ZtdCA9ICJBIHdyaXRlIGF0
dGVtcHQgd2FzIG1hZGUgaW4gYSByZWFkIG9ubHkgdHJhbnNhY3Rpb24gb24gJShvYmopcyIKKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgogICAgICAgICBzZWxmLm9iaiA9IG9iagogCiAK
LWNsYXNzIE91dFNpZGVUcmFuc2FjdGlvbihCenJOZXdFcnJvcik6Ci0gICAgIiIiQSB0cmFuc2Fj
dGlvbiByZWxhdGVkIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIGFmdGVyIHRoZSB0cmFuc2FjdGlv
biBmaW5pc2hlZC4iIiIKK2NsYXNzIE91dFNpZGVUcmFuc2FjdGlvbihCenJFcnJvcik6CisKKyAg
ICBfZm10ID0gIkEgdHJhbnNhY3Rpb24gcmVsYXRlZCBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZCBh
ZnRlciB0aGUgdHJhbnNhY3Rpb24gZmluaXNoZWQuIgogCiAKIGNsYXNzIE9iamVjdE5vdExvY2tl
ZChMb2NrRXJyb3IpOgotICAgICIiIiUob2JqKXIgaXMgbm90IGxvY2tlZCIiIgotCi0gICAgaXNf
dXNlcl9lcnJvciA9IEZhbHNlCisKKyAgICBfZm10ID0gIiUob2JqKXIgaXMgbm90IGxvY2tlZCIK
KworICAgIGludGVybmFsX2Vycm9yID0gVHJ1ZQogCiAgICAgIyB0aGlzIGNhbiBpbmRpY2F0ZSB0
aGF0IGFueSBwYXJ0aWN1bGFyIG9iamVjdCBpcyBub3QgbG9ja2VkOyBzZWUgYWxzbwogICAgICMg
TG9ja05vdEhlbGQgd2hpY2ggbWVhbnMgdGhhdCBhIHBhcnRpY3VsYXIgKmxvY2sqIG9iamVjdCBp
cyBub3QgaGVsZCBieQpAQCAtNTI0LDMyICs1OTMsNDIgQEAKIAogCiBjbGFzcyBSZWFkT25seU9i
amVjdERpcnRpZWRFcnJvcihSZWFkT25seUVycm9yKToKLSAgICAiIiJDYW5ub3QgY2hhbmdlIG9i
amVjdCAlKG9iailyIGluIHJlYWQgb25seSB0cmFuc2FjdGlvbiIiIgorCisgICAgX2ZtdCA9ICJD
YW5ub3QgY2hhbmdlIG9iamVjdCAlKG9iailyIGluIHJlYWQgb25seSB0cmFuc2FjdGlvbiIKKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgogICAgICAgICBzZWxmLm9iaiA9IG9iagogCiAK
IGNsYXNzIFVubG9ja2FibGVUcmFuc3BvcnQoTG9ja0Vycm9yKToKLSAgICAiIiJDYW5ub3QgbG9j
azogdHJhbnNwb3J0IGlzIHJlYWQgb25seTogJSh0cmFuc3BvcnQpcyIiIgorCisgICAgX2ZtdCA9
ICJDYW5ub3QgbG9jazogdHJhbnNwb3J0IGlzIHJlYWQgb25seTogJSh0cmFuc3BvcnQpcyIKKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc3BvcnQpOgogICAgICAgICBzZWxmLnRyYW5zcG9y
dCA9IHRyYW5zcG9ydAogCiAKIGNsYXNzIExvY2tDb250ZW50aW9uKExvY2tFcnJvcik6Ci0gICAg
IiIiQ291bGQgbm90IGFjcXVpcmUgbG9jayAlKGxvY2spcyIiIgorCisgICAgX2ZtdCA9ICJDb3Vs
ZCBub3QgYWNxdWlyZSBsb2NrICUobG9jaylzIgogICAgICMgVE9ETzogc2hvdyBmdWxsIHVybCBm
b3IgbG9jaywgY29tYmluaW5nIHRoZSB0cmFuc3BvcnQgYW5kIHJlbGF0aXZlIGJpdHM/CisgICAg
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2spOgogICAgICAgICBzZWxmLmxvY2sgPSBsb2Nr
CiAKIAogY2xhc3MgTG9ja0Jyb2tlbihMb2NrRXJyb3IpOgotICAgICIiIkxvY2sgd2FzIGJyb2tl
biB3aGlsZSBzdGlsbCBvcGVuOiAlKGxvY2spcyAtIGNoZWNrIHN0b3JhZ2UgY29uc2lzdGVuY3kh
IiIiCisKKyAgICBfZm10ID0gIkxvY2sgd2FzIGJyb2tlbiB3aGlsZSBzdGlsbCBvcGVuOiAlKGxv
Y2spcyAtIGNoZWNrIHN0b3JhZ2UgY29uc2lzdGVuY3khIgorCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvY2spOgogICAgICAgICBzZWxmLmxvY2sgPSBsb2NrCiAKIAogY2xhc3MgTG9ja0JyZWFr
TWlzbWF0Y2goTG9ja0Vycm9yKToKLSAgICAiIiJMb2NrIHdhcyByZWxlYXNlZCBhbmQgcmUtYWNx
dWlyZWQgYmVmb3JlIGJlaW5nIGJyb2tlbjogJShsb2NrKXM6IGhlbGQgYnkgJShob2xkZXIpciwg
d2FudGVkIHRvIGJyZWFrICUodGFyZ2V0KXIiIiIKKworICAgIF9mbXQgPSAiTG9jayB3YXMgcmVs
ZWFzZWQgYW5kIHJlLWFjcXVpcmVkIGJlZm9yZSBiZWluZyBicm9rZW46ICUobG9jaylzOiBoZWxk
IGJ5ICUoaG9sZGVyKXIsIHdhbnRlZCB0byBicmVhayAlKHRhcmdldClyIgorCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvY2ssIGhvbGRlciwgdGFyZ2V0KToKICAgICAgICAgc2VsZi5sb2NrID0g
bG9jawogICAgICAgICBzZWxmLmhvbGRlciA9IGhvbGRlcgpAQCAtNTU3LDUzICs2MzYsNjEgQEAK
IAogCiBjbGFzcyBMb2NrTm90SGVsZChMb2NrRXJyb3IpOgotICAgICIiIkxvY2sgbm90IGhlbGQ6
ICUobG9jaylzIiIiCisKKyAgICBfZm10ID0gIkxvY2sgbm90IGhlbGQ6ICUobG9jaylzIgorCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2spOgogICAgICAgICBzZWxmLmxvY2sgPSBsb2NrCiAK
IAotY2xhc3MgUG9pbnRsZXNzQ29tbWl0KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJObyBjaGFuZ2Vz
IHRvIGNvbW1pdCIiIgotCi0KLWNsYXNzIFVwZ3JhZGVSZWFkb25seShCenJOZXdFcnJvcik6Ci0g
ICAgIiIiVXBncmFkZSBVUkwgY2Fubm90IHdvcmsgd2l0aCByZWFkb25seSBVUkwncy4iIiIKLQot
Ci1jbGFzcyBVcFRvRGF0ZUZvcm1hdChCenJOZXdFcnJvcik6Ci0gICAgIiIiVGhlIGJyYW5jaCBm
b3JtYXQgJShmb3JtYXQpcyBpcyBhbHJlYWR5IGF0IHRoZSBtb3N0IHJlY2VudCBmb3JtYXQuIiIi
CitjbGFzcyBQb2ludGxlc3NDb21taXQoQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJObyBjaGFu
Z2VzIHRvIGNvbW1pdCIKKworCitjbGFzcyBVcGdyYWRlUmVhZG9ubHkoQnpyRXJyb3IpOgorCisg
ICAgX2ZtdCA9ICJVcGdyYWRlIFVSTCBjYW5ub3Qgd29yayB3aXRoIHJlYWRvbmx5IFVSTHMuIgor
CisKK2NsYXNzIFVwVG9EYXRlRm9ybWF0KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiVGhlIGJy
YW5jaCBmb3JtYXQgJShmb3JtYXQpcyBpcyBhbHJlYWR5IGF0IHRoZSBtb3N0IHJlY2VudCBmb3Jt
YXQuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvcm1hdCk6Ci0gICAgICAgIEJ6ck5ld0Vy
cm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCiAgICAg
ICAgIHNlbGYuZm9ybWF0ID0gZm9ybWF0CiAKIAogY2xhc3MgU3RyaWN0Q29tbWl0RmFpbGVkKEV4
Y2VwdGlvbik6Ci0gICAgIiIiQ29tbWl0IHJlZnVzZWQgYmVjYXVzZSB0aGVyZSBhcmUgdW5rbm93
bnMgaW4gdGhlIHRyZWUuIiIiCi0KLQotY2xhc3MgTm9TdWNoUmV2aXNpb24oQnpyTmV3RXJyb3Ip
OgotICAgICIiIkJyYW5jaCAlKGJyYW5jaClzIGhhcyBubyByZXZpc2lvbiAlKHJldmlzaW9uKXMi
IiIKLQotICAgIGlzX3VzZXJfZXJyb3IgPSBGYWxzZQorCisgICAgX2ZtdCA9ICJDb21taXQgcmVm
dXNlZCBiZWNhdXNlIHRoZXJlIGFyZSB1bmtub3ducyBpbiB0aGUgdHJlZS4iCisKKworY2xhc3Mg
Tm9TdWNoUmV2aXNpb24oQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJCcmFuY2ggJShicmFuY2gp
cyBoYXMgbm8gcmV2aXNpb24gJShyZXZpc2lvbilzIgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBU
cnVlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJhbmNoLCByZXZpc2lvbik6Ci0gICAgICAg
IEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYsIGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlz
aW9uKQotCi0KLWNsYXNzIE5vU3VjaFJldmlzaW9uU3BlYyhCenJOZXdFcnJvcik6Ci0gICAgIiIi
Tm8gbmFtZXNwYWNlIHJlZ2lzdGVyZWQgZm9yIHN0cmluZzogJShzcGVjKXIiIiIKKyAgICAgICAg
QnpyRXJyb3IuX19pbml0X18oc2VsZiwgYnJhbmNoPWJyYW5jaCwgcmV2aXNpb249cmV2aXNpb24p
CisKKworY2xhc3MgTm9TdWNoUmV2aXNpb25TcGVjKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAi
Tm8gbmFtZXNwYWNlIHJlZ2lzdGVyZWQgZm9yIHN0cmluZzogJShzcGVjKXIiCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgc3BlYyk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYs
IHNwZWM9c3BlYykKLQotCi1jbGFzcyBJbnZhbGlkUmV2aXNpb25TcGVjKEJ6ck5ld0Vycm9yKToK
LSAgICAiIiJSZXF1ZXN0ZWQgcmV2aXNpb246ICclKHNwZWMpcycgZG9lcyBub3QgZXhpc3QgaW4g
YnJhbmNoOgotJShicmFuY2gpcyUoZXh0cmEpcyIiIgorICAgICAgICBCenJFcnJvci5fX2luaXRf
XyhzZWxmLCBzcGVjPXNwZWMpCisKKworY2xhc3MgSW52YWxpZFJldmlzaW9uU3BlYyhCenJFcnJv
cik6CisKKyAgICBfZm10ID0gIlJlcXVlc3RlZCByZXZpc2lvbjogJShzcGVjKXIgZG9lcyBub3Qg
ZXhpc3QgaW4gYnJhbmNoOiAlKGJyYW5jaClzJShleHRyYSlzIgogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNwZWMsIGJyYW5jaCwgZXh0cmE9Tm9uZSk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9f
aW5pdF9fKHNlbGYsIGJyYW5jaD1icmFuY2gsIHNwZWM9c3BlYykKKyAgICAgICAgQnpyRXJyb3Iu
X19pbml0X18oc2VsZiwgYnJhbmNoPWJyYW5jaCwgc3BlYz1zcGVjKQogICAgICAgICBpZiBleHRy
YToKICAgICAgICAgICAgIHNlbGYuZXh0cmEgPSAnXG4nICsgc3RyKGV4dHJhKQogICAgICAgICBl
bHNlOgpAQCAtNjExLDMxICs2OTgsMzEgQEAKIAogCiBjbGFzcyBIaXN0b3J5TWlzc2luZyhCenJF
cnJvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyYW5jaCwgb2JqZWN0X3R5cGUsIG9iamVj
dF9pZCk6Ci0gICAgICAgIHNlbGYuYnJhbmNoID0gYnJhbmNoCi0gICAgICAgIEJ6ckVycm9yLl9f
aW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICclcyBpcyBtaXNzaW5nICVz
IHslc30nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICUgKGJyYW5jaCwgb2JqZWN0X3R5cGUs
IG9iamVjdF9pZCkpCi0KLQotY2xhc3MgRGl2ZXJnZWRCcmFuY2hlcyhCenJOZXdFcnJvcik6Ci0g
ICAgIlRoZXNlIGJyYW5jaGVzIGhhdmUgZGl2ZXJnZWQuICBVc2UgdGhlIG1lcmdlIGNvbW1hbmQg
dG8gcmVjb25jaWxlIHRoZW0uIiIiCi0KLSAgICBpc191c2VyX2Vycm9yID0gVHJ1ZQorCisgICAg
X2ZtdCA9ICIlKGJyYW5jaClzIGlzIG1pc3NpbmcgJShvYmplY3RfdHlwZSlzIHslKG9iamVjdF9p
ZClzfSIKKworCitjbGFzcyBEaXZlcmdlZEJyYW5jaGVzKEJ6ckVycm9yKToKKyAgICAKKyAgICBf
Zm10ID0gIlRoZXNlIGJyYW5jaGVzIGhhdmUgZGl2ZXJnZWQuICBVc2UgdGhlIG1lcmdlIGNvbW1h
bmQgdG8gcmVjb25jaWxlIHRoZW0uIiIiCisKKyAgICBpbnRlcm5hbF9lcnJvciA9IEZhbHNlCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJhbmNoMSwgYnJhbmNoMik6CiAgICAgICAgIHNlbGYu
YnJhbmNoMSA9IGJyYW5jaDEKICAgICAgICAgc2VsZi5icmFuY2gyID0gYnJhbmNoMgogCiAKLWNs
YXNzIFVucmVsYXRlZEJyYW5jaGVzKEJ6ck5ld0Vycm9yKToKLSAgICAiQnJhbmNoZXMgaGF2ZSBu
byBjb21tb24gYW5jZXN0b3IsIGFuZCBubyBtZXJnZSBiYXNlIHJldmlzaW9uIHdhcyBzcGVjaWZp
ZWQuIgotCi0gICAgaXNfdXNlcl9lcnJvciA9IFRydWUKLQotCi1jbGFzcyBOb0NvbW1vbkFuY2Vz
dG9yKEJ6ck5ld0Vycm9yKToKLSAgICAiUmV2aXNpb25zIGhhdmUgbm8gY29tbW9uIGFuY2VzdG9y
OiAlKHJldmlzaW9uX2EpcyAlKHJldmlzaW9uX2IpcyIKK2NsYXNzIFVucmVsYXRlZEJyYW5jaGVz
KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiQnJhbmNoZXMgaGF2ZSBubyBjb21tb24gYW5jZXN0
b3IsIGFuZCBubyBtZXJnZSBiYXNlIHJldmlzaW9uIHdhcyBzcGVjaWZpZWQuIgorCisgICAgaW50
ZXJuYWxfZXJyb3IgPSBGYWxzZQorCisKK2NsYXNzIE5vQ29tbW9uQW5jZXN0b3IoQnpyRXJyb3Ip
OgorICAgIAorICAgIF9mbXQgPSAiUmV2aXNpb25zIGhhdmUgbm8gY29tbW9uIGFuY2VzdG9yOiAl
KHJldmlzaW9uX2EpcyAlKHJldmlzaW9uX2IpcyIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXZpc2lvbl9hLCByZXZpc2lvbl9iKToKICAgICAgICAgc2VsZi5yZXZpc2lvbl9hID0gcmV2aXNp
b25fYQpAQCAtNjQzLDIzICs3MzAsMjUgQEAKIAogCiBjbGFzcyBOb0NvbW1vblJvb3QoQnpyRXJy
b3IpOgorCisgICAgX2ZtdCA9ICJSZXZpc2lvbnMgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIHNh
bWUgcm9vdDogIiBcCisgICAgICAgICAgICIlKHJldmlzaW9uX2EpcyAlKHJldmlzaW9uX2Ipcy4i
CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmV2aXNpb25fYSwgcmV2aXNpb25fYik6Ci0gICAg
ICAgIG1zZyA9ICJSZXZpc2lvbnMgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIHNhbWUgcm9vdDog
JXMgJXMuIiBcCi0gICAgICAgICAgICAlIChyZXZpc2lvbl9hLCByZXZpc2lvbl9iKSAKLSAgICAg
ICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgbXNnKQotCisgICAgICAgIEJ6ckVycm9yLl9faW5p
dF9fKHNlbGYsIHJldmlzaW9uX2E9cmV2aXNpb25fYSwgcmV2aXNpb25fYj1yZXZpc2lvbl9iKQog
CiAKIGNsYXNzIE5vdEFuY2VzdG9yKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiUmV2aXNpb24g
JShyZXZfaWQpcyBpcyBub3QgYW4gYW5jZXN0b3Igb2YgJShub3RfYW5jZXN0b3JfaWQpcyIKKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXZfaWQsIG5vdF9hbmNlc3Rvcl9pZCk6Ci0gICAgICAg
IG1zZyA9ICJSZXZpc2lvbiAlcyBpcyBub3QgYW4gYW5jZXN0b3Igb2YgJXMiICUgKG5vdF9hbmNl
c3Rvcl9pZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldl9pZCkKLSAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgbXNnKQot
ICAgICAgICBzZWxmLnJldl9pZCA9IHJldl9pZAotICAgICAgICBzZWxmLm5vdF9hbmNlc3Rvcl9p
ZCA9IG5vdF9hbmNlc3Rvcl9pZAorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmLCByZXZf
aWQ9cmV2X2lkLAorICAgICAgICAgICAgbm90X2FuY2VzdG9yX2lkPW5vdF9hbmNlc3Rvcl9pZCkK
IAogCiBjbGFzcyBJbnN0YWxsRmFpbGVkKEJ6ckVycm9yKToKKwogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXZpc2lvbnMpOgogICAgICAgICBtc2cgPSAiQ291bGQgbm90IGluc3RhbGwgcmV2aXNp
b25zOlxuJXMiICUgIiAsIi5qb2luKHJldmlzaW9ucykKICAgICAgICAgQnpyRXJyb3IuX19pbml0
X18oc2VsZiwgbXNnKQpAQCAtNjY3LDYgKzc1Niw3IEBACiAKIAogY2xhc3MgQW1iaWd1b3VzQmFz
ZShCenJFcnJvcik6CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYmFzZXMpOgogICAgICAgICB3
YXJuKCJCenJFcnJvciBBbWJpZ3VvdXNCYXNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgb2YgYnpy
bGliIDAuOC4iLAogICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKQEAgLTY3Niw2
NyArNzY2LDgxIEBACiAgICAgICAgIHNlbGYuYmFzZXMgPSBiYXNlcwogCiAKLWNsYXNzIE5vQ29t
bWl0cyhCenJOZXdFcnJvcik6Ci0gICAgIiIiQnJhbmNoICUoYnJhbmNoKXMgaGFzIG5vIGNvbW1p
dHMuIiIiCitjbGFzcyBOb0NvbW1pdHMoQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJCcmFuY2gg
JShicmFuY2gpcyBoYXMgbm8gY29tbWl0cy4iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJh
bmNoKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZiwgYnJhbmNoPWJyYW5jaCkK
KyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgYnJhbmNoPWJyYW5jaCkKIAogCiBjbGFz
cyBVbmxpc3RhYmxlU3RvcmUoQnpyRXJyb3IpOgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0
b3JlKToKICAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgIlN0b3JlICVzIGlzIG5vdCBs
aXN0YWJsZSIgJSBzdG9yZSkKIAogCiAKIGNsYXNzIFVubGlzdGFibGVCcmFuY2goQnpyRXJyb3Ip
OgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyKToKICAgICAgICAgQnpyRXJyb3IuX19pbml0
X18oc2VsZiwgIlN0b3JlcyBmb3IgYnJhbmNoICVzIGFyZSBub3QgbGlzdGFibGUiICUgYnIpCiAK
IAotY2xhc3MgQm91bmRCcmFuY2hPdXRPZkRhdGUoQnpyTmV3RXJyb3IpOgotICAgICIiIkJvdW5k
IGJyYW5jaCAlKGJyYW5jaClzIGlzIG91dCBvZiBkYXRlIHdpdGggbWFzdGVyIGJyYW5jaCAlKG1h
c3RlcilzLiIiIgorY2xhc3MgQm91bmRCcmFuY2hPdXRPZkRhdGUoQnpyRXJyb3IpOgorCisgICAg
X2ZtdCA9ICJCb3VuZCBicmFuY2ggJShicmFuY2gpcyBpcyBvdXQgb2YgZGF0ZSB3aXRoIG1hc3Rl
ciBicmFuY2ggJShtYXN0ZXIpcy4iCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJhbmNoLCBt
YXN0ZXIpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJF
cnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAogICAgICAg
ICBzZWxmLm1hc3RlciA9IG1hc3RlcgogCiAgICAgICAgIAotY2xhc3MgQ29tbWl0VG9Eb3VibGVC
b3VuZEJyYW5jaChCenJOZXdFcnJvcik6Ci0gICAgIiIiQ2Fubm90IGNvbW1pdCB0byBicmFuY2gg
JShicmFuY2gpcy4gSXQgaXMgYm91bmQgdG8gJShtYXN0ZXIpcywgd2hpY2ggaXMgYm91bmQgdG8g
JShyZW1vdGUpcy4iIiIKK2NsYXNzIENvbW1pdFRvRG91YmxlQm91bmRCcmFuY2goQnpyRXJyb3Ip
OgorCisgICAgX2ZtdCA9ICJDYW5ub3QgY29tbWl0IHRvIGJyYW5jaCAlKGJyYW5jaClzLiBJdCBp
cyBib3VuZCB0byAlKG1hc3RlcilzLCB3aGljaCBpcyBib3VuZCB0byAlKHJlbW90ZSlzLiIKKwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicmFuY2gsIG1hc3RlciwgcmVtb3RlKToKLSAgICAgICAg
QnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2Vs
ZikKICAgICAgICAgc2VsZi5icmFuY2ggPSBicmFuY2gKICAgICAgICAgc2VsZi5tYXN0ZXIgPSBt
YXN0ZXIKICAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUKIAogCi1jbGFzcyBPdmVyd3JpdGVC
b3VuZEJyYW5jaChCenJOZXdFcnJvcik6Ci0gICAgIiIiQ2Fubm90IHB1bGwgLS1vdmVyd3JpdGUg
dG8gYSBicmFuY2ggd2hpY2ggaXMgYm91bmQgJShicmFuY2gpcyIiIgorY2xhc3MgT3ZlcndyaXRl
Qm91bmRCcmFuY2goQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJDYW5ub3QgcHVsbCAtLW92ZXJ3
cml0ZSB0byBhIGJyYW5jaCB3aGljaCBpcyBib3VuZCAlKGJyYW5jaClzIgorCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJyYW5jaCk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYp
CisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYuYnJhbmNoID0g
YnJhbmNoCiAKIAotY2xhc3MgQm91bmRCcmFuY2hDb25uZWN0aW9uRmFpbHVyZShCenJOZXdFcnJv
cik6Ci0gICAgIiIiVW5hYmxlIHRvIGNvbm5lY3QgdG8gdGFyZ2V0IG9mIGJvdW5kIGJyYW5jaCAl
KGJyYW5jaClzID0+ICUodGFyZ2V0KXM6ICUoZXJyb3IpcyIiIgorY2xhc3MgQm91bmRCcmFuY2hD
b25uZWN0aW9uRmFpbHVyZShCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlVuYWJsZSB0byBjb25u
ZWN0IHRvIHRhcmdldCBvZiBib3VuZCBicmFuY2ggJShicmFuY2gpcyA9PiAlKHRhcmdldClzOiAl
KGVycm9yKXMiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJhbmNoLCB0YXJnZXQsIGVycm9y
KToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3Iu
X19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5icmFuY2ggPSBicmFuY2gKICAgICAgICAgc2Vs
Zi50YXJnZXQgPSB0YXJnZXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yCiAKIAotY2xhc3Mg
V2VhdmVFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiRXJyb3IgaW4gcHJvY2Vzc2luZyB3ZWF2
ZTogJShtZXNzYWdlKXMiIiIKK2NsYXNzIFdlYXZlRXJyb3IoQnpyRXJyb3IpOgorCisgICAgX2Zt
dCA9ICJFcnJvciBpbiBwcm9jZXNzaW5nIHdlYXZlOiAlKG1lc3NhZ2UpcyIKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRf
XyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLm1l
c3NhZ2UgPSBtZXNzYWdlCiAKIAogY2xhc3MgV2VhdmVSZXZpc2lvbkFscmVhZHlQcmVzZW50KFdl
YXZlRXJyb3IpOgotICAgICIiIlJldmlzaW9uIHslKHJldmlzaW9uX2lkKXN9IGFscmVhZHkgcHJl
c2VudCBpbiAlKHdlYXZlKXMiIiIKKworICAgIF9mbXQgPSAiUmV2aXNpb24geyUocmV2aXNpb25f
aWQpc30gYWxyZWFkeSBwcmVzZW50IGluICUod2VhdmUpcyIKKwogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXZpc2lvbl9pZCwgd2VhdmUpOgogCiAgICAgICAgIFdlYXZlRXJyb3IuX19pbml0X18o
c2VsZikKQEAgLTc0NSw3ICs4NDksOCBAQAogCiAKIGNsYXNzIFdlYXZlUmV2aXNpb25Ob3RQcmVz
ZW50KFdlYXZlRXJyb3IpOgotICAgICIiIlJldmlzaW9uIHslKHJldmlzaW9uX2lkKXN9IG5vdCBw
cmVzZW50IGluICUod2VhdmUpcyIiIgorCisgICAgX2ZtdCA9ICJSZXZpc2lvbiB7JShyZXZpc2lv
bl9pZClzfSBub3QgcHJlc2VudCBpbiAlKHdlYXZlKXMiCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmV2aXNpb25faWQsIHdlYXZlKToKICAgICAgICAgV2VhdmVFcnJvci5fX2luaXRfXyhzZWxm
KQpAQCAtNzU0LDcgKzg1OSw4IEBACiAKIAogY2xhc3MgV2VhdmVGb3JtYXRFcnJvcihXZWF2ZUVy
cm9yKToKLSAgICAiIiJXZWF2ZSBpbnZhcmlhbnQgdmlvbGF0ZWQ6ICUod2hhdClzIiIiCisKKyAg
ICBfZm10ID0gIldlYXZlIGludmFyaWFudCB2aW9sYXRlZDogJSh3aGF0KXMiCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgd2hhdCk6CiAgICAgICAgIFdlYXZlRXJyb3IuX19pbml0X18oc2VsZikK
QEAgLTc2MiwzOSArODY4LDQ1IEBACiAKIAogY2xhc3MgV2VhdmVQYXJlbnRNaXNtYXRjaChXZWF2
ZUVycm9yKToKLSAgICAiIiJQYXJlbnRzIGFyZSBtaXNtYXRjaGVkIGJldHdlZW4gdHdvIHJldmlz
aW9ucy4iIiIKKworICAgIF9mbXQgPSAiUGFyZW50cyBhcmUgbWlzbWF0Y2hlZCBiZXR3ZWVuIHR3
byByZXZpc2lvbnMuIgogICAgIAogCiBjbGFzcyBXZWF2ZUludmFsaWRDaGVja3N1bShXZWF2ZUVy
cm9yKToKLSAgICAiIiJUZXh0IGRpZCBub3QgbWF0Y2ggaXQncyBjaGVja3N1bTogJShtZXNzYWdl
KXMiIiIKLQotCi1jbGFzcyBXZWF2ZVRleHREaWZmZXJzKFdlYXZlRXJyb3IpOgotICAgICIiIldl
YXZlcyBkaWZmZXIgb24gdGV4dCBjb250ZW50LiBSZXZpc2lvbjogeyUocmV2aXNpb25faWQpc30s
ICUod2VhdmVfYSlzLCAlKHdlYXZlX2IpcyIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
dmlzaW9uX2lkLCB3ZWF2ZV9hLCB3ZWF2ZV9iKToKLSAgICAgICAgV2VhdmVFcnJvci5fX2luaXRf
XyhzZWxmKQotICAgICAgICBzZWxmLnJldmlzaW9uX2lkID0gcmV2aXNpb25faWQKLSAgICAgICAg
c2VsZi53ZWF2ZV9hID0gd2VhdmVfYQotICAgICAgICBzZWxmLndlYXZlX2IgPSB3ZWF2ZV9iCi0K
LQotY2xhc3MgV2VhdmVUZXh0RGlmZmVycyhXZWF2ZUVycm9yKToKLSAgICAiIiJXZWF2ZXMgZGlm
ZmVyIG9uIHRleHQgY29udGVudC4gUmV2aXNpb246IHslKHJldmlzaW9uX2lkKXN9LCAlKHdlYXZl
X2EpcywgJSh3ZWF2ZV9iKXMiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXZpc2lvbl9p
ZCwgd2VhdmVfYSwgd2VhdmVfYik6Ci0gICAgICAgIFdlYXZlRXJyb3IuX19pbml0X18oc2VsZikK
LSAgICAgICAgc2VsZi5yZXZpc2lvbl9pZCA9IHJldmlzaW9uX2lkCi0gICAgICAgIHNlbGYud2Vh
dmVfYSA9IHdlYXZlX2EKLSAgICAgICAgc2VsZi53ZWF2ZV9iID0gd2VhdmVfYgotCi0KLWNsYXNz
IFZlcnNpb25lZEZpbGVFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiVmVyc2lvbmVkIGZpbGUg
ZXJyb3IuIiIiCisKKyAgICBfZm10ID0gIlRleHQgZGlkIG5vdCBtYXRjaCBpdCdzIGNoZWNrc3Vt
OiAlKG1lc3NhZ2UpcyIKKworCitjbGFzcyBXZWF2ZVRleHREaWZmZXJzKFdlYXZlRXJyb3IpOgor
CisgICAgX2ZtdCA9ICJXZWF2ZXMgZGlmZmVyIG9uIHRleHQgY29udGVudC4gUmV2aXNpb246IHsl
KHJldmlzaW9uX2lkKXN9LCAlKHdlYXZlX2EpcywgJSh3ZWF2ZV9iKXMiCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmV2aXNpb25faWQsIHdlYXZlX2EsIHdlYXZlX2IpOgorICAgICAgICBXZWF2
ZUVycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYucmV2aXNpb25faWQgPSByZXZpc2lv
bl9pZAorICAgICAgICBzZWxmLndlYXZlX2EgPSB3ZWF2ZV9hCisgICAgICAgIHNlbGYud2VhdmVf
YiA9IHdlYXZlX2IKKworCitjbGFzcyBXZWF2ZVRleHREaWZmZXJzKFdlYXZlRXJyb3IpOgorCisg
ICAgX2ZtdCA9ICJXZWF2ZXMgZGlmZmVyIG9uIHRleHQgY29udGVudC4gUmV2aXNpb246IHslKHJl
dmlzaW9uX2lkKXN9LCAlKHdlYXZlX2EpcywgJSh3ZWF2ZV9iKXMiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcmV2aXNpb25faWQsIHdlYXZlX2EsIHdlYXZlX2IpOgorICAgICAgICBXZWF2ZUVy
cm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYucmV2aXNpb25faWQgPSByZXZpc2lvbl9p
ZAorICAgICAgICBzZWxmLndlYXZlX2EgPSB3ZWF2ZV9hCisgICAgICAgIHNlbGYud2VhdmVfYiA9
IHdlYXZlX2IKKworCitjbGFzcyBWZXJzaW9uZWRGaWxlRXJyb3IoQnpyRXJyb3IpOgorICAgIAor
ICAgIF9mbXQgPSAiVmVyc2lvbmVkIGZpbGUgZXJyb3IiCiAKIAogY2xhc3MgUmV2aXNpb25Ob3RQ
cmVzZW50KFZlcnNpb25lZEZpbGVFcnJvcik6Ci0gICAgIiIiUmV2aXNpb24geyUocmV2aXNpb25f
aWQpc30gbm90IHByZXNlbnQgaW4gJShmaWxlX2lkKXMuIiIiCisgICAgCisgICAgX2ZtdCA9ICJS
ZXZpc2lvbiB7JShyZXZpc2lvbl9pZClzfSBub3QgcHJlc2VudCBpbiAlKGZpbGVfaWQpcy4iCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcmV2aXNpb25faWQsIGZpbGVfaWQpOgogICAgICAgICBW
ZXJzaW9uZWRGaWxlRXJyb3IuX19pbml0X18oc2VsZikKQEAgLTgwMyw3ICs5MTUsOCBAQAogCiAK
IGNsYXNzIFJldmlzaW9uQWxyZWFkeVByZXNlbnQoVmVyc2lvbmVkRmlsZUVycm9yKToKLSAgICAi
IiJSZXZpc2lvbiB7JShyZXZpc2lvbl9pZClzfSBhbHJlYWR5IHByZXNlbnQgaW4gJShmaWxlX2lk
KXMuIiIiCisgICAgCisgICAgX2ZtdCA9ICJSZXZpc2lvbiB7JShyZXZpc2lvbl9pZClzfSBhbHJl
YWR5IHByZXNlbnQgaW4gJShmaWxlX2lkKXMuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
dmlzaW9uX2lkLCBmaWxlX2lkKToKICAgICAgICAgVmVyc2lvbmVkRmlsZUVycm9yLl9faW5pdF9f
KHNlbGYpCkBAIC04MTEsMTIgKzkyNCwxNCBAQAogICAgICAgICBzZWxmLmZpbGVfaWQgPSBmaWxl
X2lkCiAKIAotY2xhc3MgS25pdEVycm9yKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJLbml0IGVycm9y
IiIiCitjbGFzcyBLbml0RXJyb3IoQnpyRXJyb3IpOgorICAgIAorICAgIF9mbXQgPSAiS25pdCBl
cnJvciIKIAogCiBjbGFzcyBLbml0SGVhZGVyRXJyb3IoS25pdEVycm9yKToKLSAgICAiIiJLbml0
IGhlYWRlciBlcnJvcjogJShiYWRsaW5lKXIgdW5leHBlY3RlZCIiIgorCisgICAgX2ZtdCA9ICJL
bml0IGhlYWRlciBlcnJvcjogJShiYWRsaW5lKXIgdW5leHBlY3RlZCIKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBiYWRsaW5lKToKICAgICAgICAgS25pdEVycm9yLl9faW5pdF9fKHNlbGYpCkBA
IC04MjQsNyArOTM5LDggQEAKIAogCiBjbGFzcyBLbml0Q29ycnVwdChLbml0RXJyb3IpOgotICAg
ICIiIktuaXQgJShmaWxlbmFtZSlzIGNvcnJ1cHQ6ICUoaG93KXMiIiIKKworICAgIF9mbXQgPSAi
S25pdCAlKGZpbGVuYW1lKXMgY29ycnVwdDogJShob3cpcyIKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmaWxlbmFtZSwgaG93KToKICAgICAgICAgS25pdEVycm9yLl9faW5pdF9fKHNlbGYpCkBA
IC04MzIsMjUgKzk0OCwxOCBAQAogICAgICAgICBzZWxmLmhvdyA9IGhvdwogCiAKLWNsYXNzIE5v
U3VjaEV4cG9ydEZvcm1hdChCenJOZXdFcnJvcik6Ci0gICAgIiIiRXhwb3J0IGZvcm1hdCAlKGZv
cm1hdClyIG5vdCBzdXBwb3J0ZWQiIiIKK2NsYXNzIE5vU3VjaEV4cG9ydEZvcm1hdChCenJFcnJv
cik6CisgICAgCisgICAgX2ZtdCA9ICJFeHBvcnQgZm9ybWF0ICUoZm9ybWF0KXIgbm90IHN1cHBv
cnRlZCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb3JtYXQpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAg
ICAgICBzZWxmLmZvcm1hdCA9IGZvcm1hdAogCiAKLQotY2xhc3MgVG9vTWFueUNvbmN1cnJlbnRS
ZXF1ZXN0cyhCenJOZXdFcnJvcik6Ci0gICAgIiIiVGhlIG1lZGl1bSAnJShtZWRpdW0pcycgaGFz
IHJlYWNoZWQgaXRzIGNvbmN1cnJlbnQgcmVxdWVzdCBsaW1pdC4gQmUgc3VyZSB0byBmaW5pc2hf
d3JpdGluZyBhbmQgZmluaXNoX3JlYWRpbmcgb24gdGhlIGN1cnJlbnQgcmVxdWVzdCB0aGF0IGlz
IG9wZW4uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWVkaXVtKToKLSAgICAgICAgQnpy
TmV3RXJyb3IuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5tZWRpdW0gPSBtZWRpdW0KLQot
Ci1jbGFzcyBUcmFuc3BvcnRFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiVHJhbnNwb3J0IGVy
cm9yOiAlKG1zZylzICUob3JpZ19lcnJvcilzIiIiCitjbGFzcyBUcmFuc3BvcnRFcnJvcihCenJF
cnJvcik6CisgICAgCisgICAgX2ZtdCA9ICJUcmFuc3BvcnQgZXJyb3I6ICUobXNnKXMgJShvcmln
X2Vycm9yKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnPU5vbmUsIG9yaWdfZXJyb3I9
Tm9uZSk6CiAgICAgICAgIGlmIG1zZyBpcyBOb25lIGFuZCBvcmlnX2Vycm9yIGlzIG5vdCBOb25l
OgpAQCAtODYxLDExICs5NzAsMjQgQEAKICAgICAgICAgICAgIG1zZyA9ICAnJwogICAgICAgICBz
ZWxmLm1zZyA9IG1zZwogICAgICAgICBzZWxmLm9yaWdfZXJyb3IgPSBvcmlnX2Vycm9yCi0gICAg
ICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9f
KHNlbGYpCisKKworY2xhc3MgVG9vTWFueUNvbmN1cnJlbnRSZXF1ZXN0cyhCenJFcnJvcik6CisK
KyAgICBfZm10ID0gKCJUaGUgbWVkaXVtICclKG1lZGl1bSlzJyBoYXMgcmVhY2hlZCBpdHMgY29u
Y3VycmVudCByZXF1ZXN0IGxpbWl0LiAiCisgICAgICAgICAgICAiQmUgc3VyZSB0byBmaW5pc2hf
d3JpdGluZyBhbmQgZmluaXNoX3JlYWRpbmcgb24gdGhlICIKKyAgICAgICAgICAgICJjdXJyZW50
IHJlcXVlc3QgdGhhdCBpcyBvcGVuLiIpCisKKyAgICBpbnRlcm5hbF9lcnJvciA9IFRydWUKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZWRpdW0pOgorICAgICAgICBzZWxmLm1lZGl1bSA9IG1l
ZGl1bQogCiAKIGNsYXNzIFNtYXJ0UHJvdG9jb2xFcnJvcihUcmFuc3BvcnRFcnJvcik6Ci0gICAg
IiIiR2VuZXJpYyBienIgc21hcnQgcHJvdG9jb2wgZXJyb3I6ICUoZGV0YWlscylzIiIiCisKKyAg
ICBfZm10ID0gIkdlbmVyaWMgYnpyIHNtYXJ0IHByb3RvY29sIGVycm9yOiAlKGRldGFpbHMpcyIK
IAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXRhaWxzKToKICAgICAgICAgc2VsZi5kZXRhaWxz
ID0gZGV0YWlscwpAQCAtODczLDE1ICs5OTUsMTggQEAKIAogIyBBIHNldCBvZiBzZW1pLW1lYW5p
bmdmdWwgZXJyb3JzIHdoaWNoIGNhbiBiZSB0aHJvd24KIGNsYXNzIFRyYW5zcG9ydE5vdFBvc3Np
YmxlKFRyYW5zcG9ydEVycm9yKToKLSAgICAiIiJUcmFuc3BvcnQgb3BlcmF0aW9uIG5vdCBwb3Nz
aWJsZTogJShtc2cpcyAlKG9yaWdfZXJyb3IpcyIiIgorCisgICAgX2ZtdCA9ICJUcmFuc3BvcnQg
b3BlcmF0aW9uIG5vdCBwb3NzaWJsZTogJShtc2cpcyAlKG9yaWdfZXJyb3IpcyIKIAogCiBjbGFz
cyBDb25uZWN0aW9uRXJyb3IoVHJhbnNwb3J0RXJyb3IpOgotICAgICIiIkNvbm5lY3Rpb24gZXJy
b3I6ICUobXNnKXMgJShvcmlnX2Vycm9yKXMiIiIKKworICAgIF9mbXQgPSAiQ29ubmVjdGlvbiBl
cnJvcjogJShtc2cpcyAlKG9yaWdfZXJyb3IpcyIKIAogCiBjbGFzcyBTb2NrZXRDb25uZWN0aW9u
RXJyb3IoQ29ubmVjdGlvbkVycm9yKToKLSAgICAiIiIlKG1zZylzICUoaG9zdClzJShwb3J0KXMl
KG9yaWdfZXJyb3IpcyIiIgorCisgICAgX2ZtdCA9ICIlKG1zZylzICUoaG9zdClzJShwb3J0KXMl
KG9yaWdfZXJyb3IpcyIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUs
IG1zZz1Ob25lLCBvcmlnX2Vycm9yPU5vbmUpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKQEAg
LTg5OSwxMSArMTAyNCwxMyBAQAogCiAKIGNsYXNzIENvbm5lY3Rpb25SZXNldChUcmFuc3BvcnRF
cnJvcik6Ci0gICAgIiIiQ29ubmVjdGlvbiBjbG9zZWQ6ICUobXNnKXMgJShvcmlnX2Vycm9yKXMi
IiIKKworICAgIF9mbXQgPSAiQ29ubmVjdGlvbiBjbG9zZWQ6ICUobXNnKXMgJShvcmlnX2Vycm9y
KXMiCiAKIAogY2xhc3MgSW52YWxpZFJhbmdlKFRyYW5zcG9ydEVycm9yKToKLSAgICAiIiJJbnZh
bGlkIHJhbmdlIGFjY2VzcyBpbiAlKHBhdGgpcyBhdCAlKG9mZnNldClzLiIiIgorCisgICAgX2Zt
dCA9ICJJbnZhbGlkIHJhbmdlIGFjY2VzcyBpbiAlKHBhdGgpcyBhdCAlKG9mZnNldClzLiIKICAg
ICAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgb2Zmc2V0KToKICAgICAgICAgVHJhbnNw
b3J0RXJyb3IuX19pbml0X18oc2VsZiwgKCJJbnZhbGlkIHJhbmdlIGFjY2VzcyBpbiAlcyBhdCAl
ZCIKQEAgLTkxMyw3ICsxMDQwLDggQEAKIAogCiBjbGFzcyBJbnZhbGlkSHR0cFJlc3BvbnNlKFRy
YW5zcG9ydEVycm9yKToKLSAgICAiIiJJbnZhbGlkIGh0dHAgcmVzcG9uc2UgZm9yICUocGF0aClz
OiAlKG1zZylzIiIiCisKKyAgICBfZm10ID0gIkludmFsaWQgaHR0cCByZXNwb25zZSBmb3IgJShw
YXRoKXM6ICUobXNnKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbXNnLCBvcmln
X2Vycm9yPU5vbmUpOgogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCkBAIC05MjEsNyArMTA0OSw4
IEBACiAKIAogY2xhc3MgSW52YWxpZEh0dHBSYW5nZShJbnZhbGlkSHR0cFJlc3BvbnNlKToKLSAg
ICAiIiJJbnZhbGlkIGh0dHAgcmFuZ2UgIiUocmFuZ2UpcyIgZm9yICUocGF0aClzOiAlKG1zZylz
IiIiCisKKyAgICBfZm10ID0gIkludmFsaWQgaHR0cCByYW5nZSAlKHJhbmdlKXIgZm9yICUocGF0
aClzOiAlKG1zZylzIgogICAgIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCByYW5nZSwg
bXNnKToKICAgICAgICAgc2VsZi5yYW5nZSA9IHJhbmdlCkBAIC05MjksNyArMTA1OCw4IEBACiAK
IAogY2xhc3MgSW52YWxpZEh0dHBDb250ZW50VHlwZShJbnZhbGlkSHR0cFJlc3BvbnNlKToKLSAg
ICAiIiJJbnZhbGlkIGh0dHAgQ29udGVudC10eXBlICIlKGN0eXBlKXMiIGZvciAlKHBhdGgpczog
JShtc2cpcyIiIgorCisgICAgX2ZtdCA9ICdJbnZhbGlkIGh0dHAgQ29udGVudC10eXBlICIlKGN0
eXBlKXMiIGZvciAlKHBhdGgpczogJShtc2cpcycKICAgICAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGF0aCwgY3R5cGUsIG1zZyk6CiAgICAgICAgIHNlbGYuY3R5cGUgPSBjdHlwZQpAQCAtOTM3
LDExICsxMDY3LDEyIEBACiAKIAogY2xhc3MgQ29uZmxpY3RzSW5UcmVlKEJ6ckVycm9yKToKLSAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYsICJX
b3JraW5nIHRyZWUgaGFzIGNvbmZsaWN0cy4iKQorCisgICAgX2ZtdCA9ICJXb3JraW5nIHRyZWUg
aGFzIGNvbmZsaWN0cy4iCiAKIAogY2xhc3MgUGFyc2VDb25maWdFcnJvcihCenJFcnJvcik6CisK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzLCBmaWxlbmFtZSk6CiAgICAgICAgIGlmIGZp
bGVuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBmaWxlbmFtZSA9ICIiCkBAIC05NTAsMTIxICsx
MDgxLDE0MSBAQAogICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQogCiAK
LWNsYXNzIE5vRW1haWxJblVzZXJuYW1lKEJ6ck5ld0Vycm9yKToKLSAgICAiIiIlKHVzZXJuYW1l
KXIgZG9lcyBub3Qgc2VlbSB0byBjb250YWluIGEgcmVhc29uYWJsZSBlbWFpbCBhZGRyZXNzIiIi
CitjbGFzcyBOb0VtYWlsSW5Vc2VybmFtZShCenJFcnJvcik6CisKKyAgICBfZm10ID0gIiUodXNl
cm5hbWUpciBkb2VzIG5vdCBzZWVtIHRvIGNvbnRhaW4gYSByZWFzb25hYmxlIGVtYWlsIGFkZHJl
c3MiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlcm5hbWUpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAg
ICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKIAogCiBjbGFzcyBTaWduaW5nRmFpbGVkKEJ6
ckVycm9yKToKKworICAgIF9mbXQgPSAiRmFpbGVkIHRvIGdwZyBzaWduIGRhdGEgd2l0aCBjb21t
YW5kICUoY29tbWFuZF9saW5lKXIiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZF9s
aW5lKToKLSAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgIkZhaWxlZCB0byBncGcgc2ln
biBkYXRhIHdpdGggY29tbWFuZCAnJXMnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICUgY29tbWFuZF9saW5lKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmLCBjb21tYW5k
X2xpbmU9Y29tbWFuZF9saW5lKQogCiAKIGNsYXNzIFdvcmtpbmdUcmVlTm90UmV2aXNpb24oQnpy
RXJyb3IpOgorCisgICAgX2ZtdCA9ICgiVGhlIHdvcmtpbmcgdHJlZSBmb3IgJShiYXNlZGlyKXMg
aGFzIGNoYW5nZWQgc2luY2UiIAorICAgICAgICAgICAgIiB0aGUgbGFzdCBjb21taXQsIGJ1dCB3
ZWF2ZSBtZXJnZSByZXF1aXJlcyB0aGF0IGl0IGJlIgorICAgICAgICAgICAgIiB1bmNoYW5nZWQi
KQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyZWUpOgotICAgICAgICBCenJFcnJvci5fX2lu
aXRfXyhzZWxmLCAiVGhlIHdvcmtpbmcgdHJlZSBmb3IgJXMgaGFzIGNoYW5nZWQgc2luY2UiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICIgbGFzdCBjb21taXQsIGJ1dCB3ZWF2ZSBtZXJnZSBy
ZXF1aXJlcyB0aGF0IGl0IGJlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiIHVuY2hhbmdl
ZC4iICUgdHJlZS5iYXNlZGlyKQotCi0KLWNsYXNzIFdyaXRpbmdDb21wbGV0ZWQoQnpyTmV3RXJy
b3IpOgotICAgICIiIlRoZSBNZWRpdW1SZXF1ZXN0ICclKHJlcXVlc3QpcycgaGFzIGFscmVhZHkg
aGFkIGZpbmlzaF93cml0aW5nIGNhbGxlZCB1cG9uIGl0IC0gYWNjZXB0IGJ5dGVzIG1heSBub3Qg
YmUgY2FsbGVkIGFueW1vcmUuIiIiCi0KLSAgICBpc191c2VyX2Vycm9yID0gRmFsc2UKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0
X18oc2VsZikKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAotCi0KLWNsYXNzIFdyaXRp
bmdOb3RDb21wbGV0ZShCenJOZXdFcnJvcik6Ci0gICAgIiIiVGhlIE1lZGl1bVJlcXVlc3QgJyUo
cmVxdWVzdClzJyBoYXMgbm90IGhhcyBmaW5pc2hfd3JpdGluZyBjYWxsZWQgdXBvbiBpdCAtIHVu
dGlsIHRoZSB3cml0ZSBwaGFzZSBpcyBjb21wbGV0ZSBubyBkYXRhIG1heSBiZSByZWFkLiIiIgot
Ci0gICAgaXNfdXNlcl9lcnJvciA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVx
dWVzdCk6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYu
cmVxdWVzdCA9IHJlcXVlc3QKLQotCi1jbGFzcyBDYW50UmVwcm9jZXNzQW5kU2hvd0Jhc2UoQnpy
TmV3RXJyb3IpOgotICAgICIiIkNhbid0IHJlcHJvY2VzcyBhbmQgc2hvdyBiYXNlLgotUmVwcm9j
ZXNzaW5nIG9ic2N1cmVzIHJlbGF0aW9uc2hpcCBvZiBjb25mbGljdGluZyBsaW5lcyB0byBiYXNl
LiIiIgotCi0KLWNsYXNzIEdyYXBoQ3ljbGVFcnJvcihCenJOZXdFcnJvcik6Ci0gICAgIiIiQ3lj
bGUgaW4gZ3JhcGggJShncmFwaClyIiIiCisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYs
IGJhc2VkaXI9dHJlZS5iYXNlZGlyKQorCisKK2NsYXNzIENhbnRSZXByb2Nlc3NBbmRTaG93QmFz
ZShCenJFcnJvcik6CisKKyAgICBfZm10ID0gIkNhbid0IHJlcHJvY2VzcyBhbmQgc2hvdyBiYXNl
LCBiZWNhdXNlIHJlcHJvY2Vzc2luZyBvYnNjdXJlcyAiIFwKKyAgICAgICAgICAgInRoZSByZWxh
dGlvbnNoaXAgb2YgY29uZmxpY3RpbmcgbGluZXMgdG8gdGhlIGJhc2UiCisKKworY2xhc3MgR3Jh
cGhDeWNsZUVycm9yKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiQ3ljbGUgaW4gZ3JhcGggJShn
cmFwaClyIgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyYXBoKToKLSAgICAgICAgQnpyTmV3
RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAg
ICAgICAgc2VsZi5ncmFwaCA9IGdyYXBoCiAKIAotY2xhc3MgTm90Q29uZmxpY3RlZChCenJOZXdF
cnJvcik6Ci0gICAgIiIiRmlsZSAlKGZpbGVuYW1lKXMgaXMgbm90IGNvbmZsaWN0ZWQuIiIiCitj
bGFzcyBXcml0aW5nQ29tcGxldGVkKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAoIlRoZSBNZWRp
dW1SZXF1ZXN0ICclKHJlcXVlc3QpcycgaGFzIGFscmVhZHkgaGFkIGZpbmlzaF93cml0aW5nICIK
KyAgICAgICAgICAgICJjYWxsZWQgdXBvbiBpdCAtIGFjY2VwdCBieXRlcyBtYXkgbm90IGJlIGNh
bGxlZCBhbnltb3JlLiIpCisKKyAgICBpbnRlcm5hbF9lcnJvciA9IFRydWUKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAor
CisKK2NsYXNzIFdyaXRpbmdOb3RDb21wbGV0ZShCenJFcnJvcik6CisKKyAgICBfZm10ID0gKCJU
aGUgTWVkaXVtUmVxdWVzdCAnJShyZXF1ZXN0KXMnIGhhcyBub3QgaGFzIGZpbmlzaF93cml0aW5n
ICIKKyAgICAgICAgICAgICJjYWxsZWQgdXBvbiBpdCAtIHVudGlsIHRoZSB3cml0ZSBwaGFzZSBp
cyBjb21wbGV0ZSBubyAiCisgICAgICAgICAgICAiZGF0YSBtYXkgYmUgcmVhZC4iKQorCisgICAg
aW50ZXJuYWxfZXJyb3IgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6
CisgICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKKworCitjbGFzcyBOb3RDb25mbGljdGVk
KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiRmlsZSAlKGZpbGVuYW1lKXMgaXMgbm90IGNvbmZs
aWN0ZWQuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgQnpy
TmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikK
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAKIAotY2xhc3MgTWVkaXVtTm90Q29u
bmVjdGVkKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJUaGUgbWVkaXVtICclKG1lZGl1bSlzJyBpcyBu
b3QgY29ubmVjdGVkLiIiIgorY2xhc3MgTWVkaXVtTm90Q29ubmVjdGVkKEJ6ckVycm9yKToKKwor
ICAgIF9mbXQgPSAiIiJUaGUgbWVkaXVtICclKG1lZGl1bSlzJyBpcyBub3QgY29ubmVjdGVkLiIi
IgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBUcnVlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
bWVkaXVtKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2Vs
Zi5tZWRpdW0gPSBtZWRpdW0KIAogCiBjbGFzcyBNdXN0VXNlRGVjb3JhdGVkKEV4Y2VwdGlvbik6
Ci0gICAgIiIiQSBkZWNvcmF0aW5nIGZ1bmN0aW9uIGhhcyByZXF1ZXN0ZWQgaXRzIG9yaWdpbmFs
IGNvbW1hbmQgYmUgdXNlZC4KLSAgICAKLSAgICBUaGlzIHNob3VsZCBuZXZlciBlc2NhcGUgYnpy
LCBzbyBkb2VzIG5vdCBuZWVkIHRvIGJlIHByaW50YWJsZS4KLSAgICAiIiIKLQotCi1jbGFzcyBO
b0J1bmRsZUZvdW5kKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJObyBidW5kbGUgd2FzIGZvdW5kIGlu
ICUoZmlsZW5hbWUpcyIiIgorICAgIAorICAgIF9mbXQgPSAiIiJBIGRlY29yYXRpbmcgZnVuY3Rp
b24gaGFzIHJlcXVlc3RlZCBpdHMgb3JpZ2luYWwgY29tbWFuZCBiZSB1c2VkLiIiIgorICAgIAor
CitjbGFzcyBOb0J1bmRsZUZvdW5kKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiTm8gYnVuZGxl
IHdhcyBmb3VuZCBpbiAlKGZpbGVuYW1lKXMiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmls
ZW5hbWUpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJF
cnJvci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKIAog
Ci1jbGFzcyBCdW5kbGVOb3RTdXBwb3J0ZWQoQnpyTmV3RXJyb3IpOgotICAgICIiIlVuYWJsZSB0
byBoYW5kbGUgYnVuZGxlIHZlcnNpb24gJSh2ZXJzaW9uKXM6ICUobXNnKXMiIiIKK2NsYXNzIEJ1
bmRsZU5vdFN1cHBvcnRlZChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlVuYWJsZSB0byBoYW5k
bGUgYnVuZGxlIHZlcnNpb24gJSh2ZXJzaW9uKXM6ICUobXNnKXMiCisKICAgICBkZWYgX19pbml0
X18oc2VsZiwgdmVyc2lvbiwgbXNnKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2Vs
ZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi52ZXJzaW9u
ID0gdmVyc2lvbgogICAgICAgICBzZWxmLm1zZyA9IG1zZwogCiAKLWNsYXNzIE1pc3NpbmdUZXh0
KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJCcmFuY2ggJShiYXNlKXMgaXMgbWlzc2luZyByZXZpc2lv
biAlKHRleHRfcmV2aXNpb24pcyBvZiAlKGZpbGVfaWQpcyIiIgorY2xhc3MgTWlzc2luZ1RleHQo
QnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJCcmFuY2ggJShiYXNlKXMgaXMgbWlzc2luZyByZXZp
c2lvbiAlKHRleHRfcmV2aXNpb24pcyBvZiAlKGZpbGVfaWQpcyIKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicmFuY2gsIHRleHRfcmV2aXNpb24sIGZpbGVfaWQpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAg
ICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAogICAgICAgICBzZWxmLmJhc2UgPSBicmFuY2guYmFz
ZQogICAgICAgICBzZWxmLnRleHRfcmV2aXNpb24gPSB0ZXh0X3JldmlzaW9uCiAgICAgICAgIHNl
bGYuZmlsZV9pZCA9IGZpbGVfaWQKIAogCi1jbGFzcyBEdXBsaWNhdGVLZXkoQnpyTmV3RXJyb3Ip
OgotICAgICIiIktleSAlKGtleSlzIGlzIGFscmVhZHkgcHJlc2VudCBpbiBtYXAiIiIKLQotCi1j
bGFzcyBNYWxmb3JtZWRUcmFuc2Zvcm0oQnpyTmV3RXJyb3IpOgotICAgICIiIlRyZWUgdHJhbnNm
b3JtIGlzIG1hbGZvcm1lZCAlKGNvbmZsaWN0cylyIiIiCi0KLQotY2xhc3MgTm9GaW5hbFBhdGgo
QnpyTmV3RXJyb3IpOgotICAgICIiIk5vIGZpbmFsIG5hbWUgZm9yIHRyYW5zX2lkICUodHJhbnNf
aWQpcgotICAgIGZpbGUtaWQ6ICUoZmlsZV9pZClyIgotICAgIHJvb3QgdHJhbnMtaWQ6ICUocm9v
dF90cmFuc19pZClyIAotICAgICIiIgorY2xhc3MgRHVwbGljYXRlS2V5KEJ6ckVycm9yKToKKwor
ICAgIF9mbXQgPSAiS2V5ICUoa2V5KXMgaXMgYWxyZWFkeSBwcmVzZW50IGluIG1hcCIKKworCitj
bGFzcyBNYWxmb3JtZWRUcmFuc2Zvcm0oQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJUcmVlIHRy
YW5zZm9ybSBpcyBtYWxmb3JtZWQgJShjb25mbGljdHMpciIKKworCitjbGFzcyBOb0ZpbmFsUGF0
aChCenJFcnJvcik6CisKKyAgICBfZm10ID0gKCJObyBmaW5hbCBuYW1lIGZvciB0cmFuc19pZCAl
KHRyYW5zX2lkKXJcbiIKKyAgICAgICAgICAgICJmaWxlLWlkOiAlKGZpbGVfaWQpclxuIgorICAg
ICAgICAgICAgInJvb3QgdHJhbnMtaWQ6ICUocm9vdF90cmFuc19pZClyXG4iKQogCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHRyYW5zX2lkLCB0cmFuc2Zvcm0pOgogICAgICAgICBzZWxmLnRyYW5z
X2lkID0gdHJhbnNfaWQKQEAgLTEwNzIsMjk2ICsxMjIzLDMyOSBAQAogICAgICAgICBzZWxmLnJv
b3RfdHJhbnNfaWQgPSB0cmFuc2Zvcm0ucm9vdAogCiAKLWNsYXNzIEJ6ckJhZFBhcmFtZXRlcihC
enJOZXdFcnJvcik6Ci0gICAgIiIiQSBiYWQgcGFyYW1ldGVyIDogJShwYXJhbSlzIGlzIG5vdCB1
c2FibGUuCi0gICAgCi0gICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIG5ldmVyIGJlIHRocm93biwg
YnV0IGl0IGlzIGEgYmFzZSBjbGFzcyBmb3IgYWxsCi0gICAgcGFyYW1ldGVyLXRvLWZ1bmN0aW9u
IGVycm9ycy4KLSAgICAiIiIKK2NsYXNzIEJ6ckJhZFBhcmFtZXRlcihCenJFcnJvcik6CisKKyAg
ICBfZm10ID0gIkJhZCBwYXJhbWV0ZXI6ICUocGFyYW0pciIKKworICAgICMgVGhpcyBleGNlcHRp
b24gc2hvdWxkIG5ldmVyIGJlIHRocm93biwgYnV0IGl0IGlzIGEgYmFzZSBjbGFzcyBmb3IgYWxs
CisgICAgIyBwYXJhbWV0ZXItdG8tZnVuY3Rpb24gZXJyb3JzLgorCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhcmFtKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAg
ICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5wYXJhbSA9IHBhcmFtCiAK
IAogY2xhc3MgQnpyQmFkUGFyYW1ldGVyTm90VW5pY29kZShCenJCYWRQYXJhbWV0ZXIpOgotICAg
ICIiIlBhcmFtZXRlciAlKHBhcmFtKXMgaXMgbmVpdGhlciB1bmljb2RlIG5vciB1dGY4LiIiIgot
Ci0KLWNsYXNzIFJldXNpbmdUcmFuc2Zvcm0oQnpyTmV3RXJyb3IpOgotICAgICIiIkF0dGVtcHQg
dG8gcmV1c2UgYSB0cmFuc2Zvcm0gdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQuIiIiCi0K
LQotY2xhc3MgQ2FudE1vdmVSb290KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJNb3ZpbmcgdGhlIHJv
b3QgZGlyZWN0b3J5IGlzIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lIiIiCisKKyAgICBfZm10
ID0gIlBhcmFtZXRlciAlKHBhcmFtKXMgaXMgbmVpdGhlciB1bmljb2RlIG5vciB1dGY4LiIKKwor
CitjbGFzcyBSZXVzaW5nVHJhbnNmb3JtKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiQXR0ZW1w
dCB0byByZXVzZSBhIHRyYW5zZm9ybSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZC4iCisK
KworY2xhc3MgQ2FudE1vdmVSb290KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiTW92aW5nIHRo
ZSByb290IGRpcmVjdG9yeSBpcyBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZSIKIAogCiBjbGFz
cyBCenJCYWRQYXJhbWV0ZXJOb3RTdHJpbmcoQnpyQmFkUGFyYW1ldGVyKToKLSAgICAiIiJQYXJh
bWV0ZXIgJShwYXJhbSlzIGlzIG5vdCBhIHN0cmluZyBvciB1bmljb2RlIHN0cmluZy4iIiIKKwor
ICAgIF9mbXQgPSAiUGFyYW1ldGVyICUocGFyYW0pcyBpcyBub3QgYSBzdHJpbmcgb3IgdW5pY29k
ZSBzdHJpbmcuIgogCiAKIGNsYXNzIEJ6ckJhZFBhcmFtZXRlck1pc3NpbmcoQnpyQmFkUGFyYW1l
dGVyKToKLSAgICAiIiJQYXJhbWV0ZXIgJChwYXJhbSlzIGlzIHJlcXVpcmVkIGJ1dCBub3QgcHJl
c2VudC4iIiIKKworICAgIF9mbXQgPSAiUGFyYW1ldGVyICQocGFyYW0pcyBpcyByZXF1aXJlZCBi
dXQgbm90IHByZXNlbnQuIgogCiAKIGNsYXNzIEJ6ckJhZFBhcmFtZXRlclVuaWNvZGUoQnpyQmFk
UGFyYW1ldGVyKToKLSAgICAiIiJQYXJhbWV0ZXIgJShwYXJhbSlzIGlzIHVuaWNvZGUgYnV0IG9u
bHkgYnl0ZS1zdHJpbmdzIGFyZSBwZXJtaXR0ZWQuIiIiCisKKyAgICBfZm10ID0gIlBhcmFtZXRl
ciAlKHBhcmFtKXMgaXMgdW5pY29kZSBidXQgb25seSBieXRlLXN0cmluZ3MgYXJlIHBlcm1pdHRl
ZC4iCiAKIAogY2xhc3MgQnpyQmFkUGFyYW1ldGVyQ29udGFpbnNOZXdsaW5lKEJ6ckJhZFBhcmFt
ZXRlcik6Ci0gICAgIiIiUGFyYW1ldGVyICUocGFyYW0pcyBjb250YWlucyBhIG5ld2xpbmUuIiIi
Ci0KLQotY2xhc3MgRGVwZW5kZW5jeU5vdFByZXNlbnQoQnpyTmV3RXJyb3IpOgotICAgICIiIlVu
YWJsZSB0byBpbXBvcnQgbGlicmFyeSAiJShsaWJyYXJ5KXMiOiAlKGVycm9yKXMiIiIKKworICAg
IF9mbXQgPSAiUGFyYW1ldGVyICUocGFyYW0pcyBjb250YWlucyBhIG5ld2xpbmUuIgorCisKK2Ns
YXNzIERlcGVuZGVuY3lOb3RQcmVzZW50KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAnVW5hYmxl
IHRvIGltcG9ydCBsaWJyYXJ5ICIlKGxpYnJhcnkpcyI6ICUoZXJyb3IpcycKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsaWJyYXJ5LCBlcnJvcik6Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5p
dF9fKHNlbGYsIGxpYnJhcnk9bGlicmFyeSwgZXJyb3I9ZXJyb3IpCisgICAgICAgIEJ6ckVycm9y
Ll9faW5pdF9fKHNlbGYsIGxpYnJhcnk9bGlicmFyeSwgZXJyb3I9ZXJyb3IpCiAKIAogY2xhc3Mg
UGFyYW1pa29Ob3RQcmVzZW50KERlcGVuZGVuY3lOb3RQcmVzZW50KToKLSAgICAiIiJVbmFibGUg
dG8gaW1wb3J0IHBhcmFtaWtvIChyZXF1aXJlZCBmb3Igc2Z0cCBzdXBwb3J0KTogJShlcnJvcilz
IiIiCisKKyAgICBfZm10ID0gIlVuYWJsZSB0byBpbXBvcnQgcGFyYW1pa28gKHJlcXVpcmVkIGZv
ciBzZnRwIHN1cHBvcnQpOiAlKGVycm9yKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJy
b3IpOgogICAgICAgICBEZXBlbmRlbmN5Tm90UHJlc2VudC5fX2luaXRfXyhzZWxmLCAncGFyYW1p
a28nLCBlcnJvcikKIAogCi1jbGFzcyBQb2ludGxlc3NNZXJnZShCenJOZXdFcnJvcik6Ci0gICAg
IiIiTm90aGluZyB0byBtZXJnZS4iIiIKLQotCi1jbGFzcyBVbmluaXRpYWxpemFibGVGb3JtYXQo
QnpyTmV3RXJyb3IpOgotICAgICIiIkZvcm1hdCAlKGZvcm1hdClzIGNhbm5vdCBiZSBpbml0aWFs
aXNlZCBieSB0aGlzIHZlcnNpb24gb2YgYnpyLiIiIgorY2xhc3MgUG9pbnRsZXNzTWVyZ2UoQnpy
RXJyb3IpOgorCisgICAgX2ZtdCA9ICJOb3RoaW5nIHRvIG1lcmdlLiIKKworCitjbGFzcyBVbmlu
aXRpYWxpemFibGVGb3JtYXQoQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJGb3JtYXQgJShmb3Jt
YXQpcyBjYW5ub3QgYmUgaW5pdGlhbGlzZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIGJ6ci4iCiAKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgZm9ybWF0KToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0
X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5m
b3JtYXQgPSBmb3JtYXQKIAogCi1jbGFzcyBCYWRDb252ZXJzaW9uVGFyZ2V0KEJ6ck5ld0Vycm9y
KToKLSAgICAiIiJDYW5ub3QgY29udmVydCB0byBmb3JtYXQgJShmb3JtYXQpcy4gICUocHJvYmxl
bSlzIiIiCitjbGFzcyBCYWRDb252ZXJzaW9uVGFyZ2V0KEJ6ckVycm9yKToKKworICAgIF9mbXQg
PSAiQ2Fubm90IGNvbnZlcnQgdG8gZm9ybWF0ICUoZm9ybWF0KXMuICAlKHByb2JsZW0pcyIKIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9ibGVtLCBmb3JtYXQpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAg
ICAgICBzZWxmLnByb2JsZW0gPSBwcm9ibGVtCiAgICAgICAgIHNlbGYuZm9ybWF0ID0gZm9ybWF0
CiAKIAotY2xhc3MgTm9EaWZmKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJEaWZmIGlzIG5vdCBpbnN0
YWxsZWQgb24gdGhpcyBtYWNoaW5lOiAlKG1zZylzIiIiCitjbGFzcyBOb0RpZmYoQnpyRXJyb3Ip
OgorCisgICAgX2ZtdCA9ICJEaWZmIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhpcyBtYWNoaW5lOiAl
KG1zZylzIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6Ci0gICAgICAgIEJ6ck5ld0Vy
cm9yLl9faW5pdF9fKHNlbGYsIG1zZz1tc2cpCi0KLQotY2xhc3MgTm9EaWZmMyhCenJOZXdFcnJv
cik6Ci0gICAgIiIiRGlmZjMgaXMgbm90IGluc3RhbGxlZCBvbiB0aGlzIG1hY2hpbmUuIiIiCi0K
LQotY2xhc3MgRXhpc3RpbmdMaW1ibyhCenJOZXdFcnJvcik6Ci0gICAgIiIiVGhpcyB0cmVlIGNv
bnRhaW5zIGxlZnQtb3ZlciBmaWxlcyBmcm9tIGEgZmFpbGVkIG9wZXJhdGlvbi4KLSAgICBQbGVh
c2UgZXhhbWluZSAlKGxpbWJvX2RpcilzIHRvIHNlZSBpZiBpdCBjb250YWlucyBhbnkgZmlsZXMg
eW91IHdpc2ggdG8KLSAgICBrZWVwLCBhbmQgZGVsZXRlIGl0IHdoZW4geW91IGFyZSBkb25lLgot
ICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW1ib19kaXIpOgotICAgICAgIEJ6ck5l
d0Vycm9yLl9faW5pdF9fKHNlbGYpCi0gICAgICAgc2VsZi5saW1ib19kaXIgPSBsaW1ib19kaXIK
LQotCi1jbGFzcyBJbW1vcnRhbExpbWJvKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJVbmFibGUgdG8g
ZGVsZXRlIHRyYW5zZm9ybSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICQobGltYm9fZGlyKXMuCi0gICAg
UGxlYXNlIGV4YW1pbmUgJShsaW1ib19kaXIpcyB0byBzZWUgaWYgaXQgY29udGFpbnMgYW55IGZp
bGVzIHlvdSB3aXNoIHRvCi0gICAga2VlcCwgYW5kIGRlbGV0ZSBpdCB3aGVuIHlvdSBhcmUgZG9u
ZS4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGltYm9fZGlyKToKLSAgICAgICBC
enJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQotICAgICAgIHNlbGYubGltYm9fZGlyID0gbGltYm9f
ZGlyCi0KLQotY2xhc3MgT3V0T2ZEYXRlVHJlZShCenJOZXdFcnJvcik6Ci0gICAgIiIiV29ya2lu
ZyB0cmVlIGlzIG91dCBvZiBkYXRlLCBwbGVhc2UgcnVuICdienIgdXBkYXRlJy4iIiIKKyAgICAg
ICAgQnpyRXJyb3IuX19pbml0X18oc2VsZiwgbXNnPW1zZykKKworCitjbGFzcyBOb0RpZmYzKEJ6
ckVycm9yKToKKworICAgIF9mbXQgPSAiRGlmZjMgaXMgbm90IGluc3RhbGxlZCBvbiB0aGlzIG1h
Y2hpbmUuIgorCisKK2NsYXNzIEV4aXN0aW5nTGltYm8oQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9
ICIiIlRoaXMgdHJlZSBjb250YWlucyBsZWZ0LW92ZXIgZmlsZXMgZnJvbSBhIGZhaWxlZCBvcGVy
YXRpb24uCisgICAgUGxlYXNlIGV4YW1pbmUgJShsaW1ib19kaXIpcyB0byBzZWUgaWYgaXQgY29u
dGFpbnMgYW55IGZpbGVzIHlvdSB3aXNoIHRvCisgICAga2VlcCwgYW5kIGRlbGV0ZSBpdCB3aGVu
IHlvdSBhcmUgZG9uZS4iIiIKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGltYm9fZGly
KToKKyAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgIHNlbGYubGltYm9fZGly
ID0gbGltYm9fZGlyCisKKworY2xhc3MgSW1tb3J0YWxMaW1ibyhCenJFcnJvcik6CisKKyAgICBf
Zm10ID0gIiIiVW5hYmxlIHRvIGRlbGV0ZSB0cmFuc2Zvcm0gdGVtcG9yYXJ5IGRpcmVjdG9yeSAk
KGxpbWJvX2RpcilzLgorICAgIFBsZWFzZSBleGFtaW5lICUobGltYm9fZGlyKXMgdG8gc2VlIGlm
IGl0IGNvbnRhaW5zIGFueSBmaWxlcyB5b3Ugd2lzaCB0bworICAgIGtlZXAsIGFuZCBkZWxldGUg
aXQgd2hlbiB5b3UgYXJlIGRvbmUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGltYm9f
ZGlyKToKKyAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgIHNlbGYubGltYm9f
ZGlyID0gbGltYm9fZGlyCisKKworY2xhc3MgT3V0T2ZEYXRlVHJlZShCenJFcnJvcik6CisKKyAg
ICBfZm10ID0gIldvcmtpbmcgdHJlZSBpcyBvdXQgb2YgZGF0ZSwgcGxlYXNlIHJ1biAnYnpyIHVw
ZGF0ZScuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyZWUpOgotICAgICAgICBCenJOZXdF
cnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhzZWxmKQogICAg
ICAgICBzZWxmLnRyZWUgPSB0cmVlCiAKIAotY2xhc3MgTWVyZ2VNb2RpZmllZEZvcm1hdEVycm9y
KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJFcnJvciBpbiBtZXJnZSBtb2RpZmllZCBmb3JtYXQiIiIK
LQotCi1jbGFzcyBDb25mbGljdEZvcm1hdEVycm9yKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJGb3Jt
YXQgZXJyb3IgaW4gY29uZmxpY3QgbGlzdGluZ3MiIiIKLQotCi1jbGFzcyBDb3JydXB0UmVwb3Np
dG9yeShCenJOZXdFcnJvcik6Ci0gICAgIiIiQW4gZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQgaW4g
dGhlIHJlcG9zaXRvcnkgJShyZXBvX3BhdGgpcy4KK2NsYXNzIE1lcmdlTW9kaWZpZWRGb3JtYXRF
cnJvcihCenJFcnJvcik6CisKKyAgICBfZm10ID0gIkVycm9yIGluIG1lcmdlIG1vZGlmaWVkIGZv
cm1hdCIKKworCitjbGFzcyBDb25mbGljdEZvcm1hdEVycm9yKEJ6ckVycm9yKToKKworICAgIF9m
bXQgPSAiRm9ybWF0IGVycm9yIGluIGNvbmZsaWN0IGxpc3RpbmdzIgorCisKK2NsYXNzIENvcnJ1
cHRSZXBvc2l0b3J5KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiIiJBbiBlcnJvciBoYXMgYmVl
biBkZXRlY3RlZCBpbiB0aGUgcmVwb3NpdG9yeSAlKHJlcG9fcGF0aClzLgogUGxlYXNlIHJ1biBi
enIgcmVjb25jaWxlIG9uIHRoaXMgcmVwb3NpdG9yeS4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXBvKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAg
QnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5yZXBvX3BhdGggPSByZXBvLmJ6
cmRpci5yb290X3RyYW5zcG9ydC5iYXNlCiAKIAotY2xhc3MgVXBncmFkZVJlcXVpcmVkKEJ6ck5l
d0Vycm9yKToKLSAgICAiIiJUbyB1c2UgdGhpcyBmZWF0dXJlIHlvdSBtdXN0IHVwZ3JhZGUgeW91
ciBicmFuY2ggYXQgJShwYXRoKXMuIiIiCitjbGFzcyBVcGdyYWRlUmVxdWlyZWQoQnpyRXJyb3Ip
OgorCisgICAgX2ZtdCA9ICJUbyB1c2UgdGhpcyBmZWF0dXJlIHlvdSBtdXN0IHVwZ3JhZGUgeW91
ciBicmFuY2ggYXQgJShwYXRoKXMuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgot
ICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQorICAgICAgICBCenJFcnJvci5fX2lu
aXRfXyhzZWxmKQogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAKIAotY2xhc3MgTG9jYWxSZXF1
aXJlc0JvdW5kQnJhbmNoKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJDYW5ub3QgcGVyZm9ybSBsb2Nh
bC1vbmx5IGNvbW1pdHMgb24gdW5ib3VuZCBicmFuY2hlcy4iIiIKLQotCi1jbGFzcyBNaXNzaW5n
UHJvZ3Jlc3NCYXJGaW5pc2goQnpyTmV3RXJyb3IpOgotICAgICIiIkEgbmVzdGVkIHByb2dyZXNz
IGJhciB3YXMgbm90ICdmaW5pc2hlZCcgY29ycmVjdGx5LiIiIgotCi0KLWNsYXNzIEludmFsaWRQ
cm9ncmVzc0JhclR5cGUoQnpyTmV3RXJyb3IpOgotICAgICIiIkVudmlyb25tZW50IHZhcmlhYmxl
IEJaUl9QUk9HUkVTU19CQVI9JyUoYmFyX3R5cGUpcyBpcyBub3QgYSBzdXBwb3J0ZWQgdHlwZQor
Y2xhc3MgTG9jYWxSZXF1aXJlc0JvdW5kQnJhbmNoKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAi
Q2Fubm90IHBlcmZvcm0gbG9jYWwtb25seSBjb21taXRzIG9uIHVuYm91bmQgYnJhbmNoZXMuIgor
CisKK2NsYXNzIE1pc3NpbmdQcm9ncmVzc0JhckZpbmlzaChCenJFcnJvcik6CisKKyAgICBfZm10
ID0gIkEgbmVzdGVkIHByb2dyZXNzIGJhciB3YXMgbm90ICdmaW5pc2hlZCcgY29ycmVjdGx5LiIK
KworCitjbGFzcyBJbnZhbGlkUHJvZ3Jlc3NCYXJUeXBlKEJ6ckVycm9yKToKKworICAgIF9mbXQg
PSAiIiJFbnZpcm9ubWVudCB2YXJpYWJsZSBCWlJfUFJPR1JFU1NfQkFSPSclKGJhcl90eXBlKXMg
aXMgbm90IGEgc3VwcG9ydGVkIHR5cGUKIFNlbGVjdCBvbmUgb2Y6ICUodmFsaWRfdHlwZXMpcyIi
IgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhcl90eXBlLCB2YWxpZF90eXBlcyk6Ci0gICAg
ICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYsIGJhcl90eXBlPWJhcl90eXBlLCB2YWxpZF90
eXBlcz12YWxpZF90eXBlcykKLQotCi1jbGFzcyBVbnN1cHBvcnRlZE9wZXJhdGlvbihCenJOZXdF
cnJvcik6Ci0gICAgIiIiVGhlIG1ldGhvZCAlKG1uYW1lKXMgaXMgbm90IHN1cHBvcnRlZCBvbiBv
YmplY3RzIG9mIHR5cGUgJSh0bmFtZSlzLiIiIgorICAgICAgICBCenJFcnJvci5fX2luaXRfXyhz
ZWxmLCBiYXJfdHlwZT1iYXJfdHlwZSwgdmFsaWRfdHlwZXM9dmFsaWRfdHlwZXMpCisKKworY2xh
c3MgVW5zdXBwb3J0ZWRPcGVyYXRpb24oQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJUaGUgbWV0
aG9kICUobW5hbWUpcyBpcyBub3Qgc3VwcG9ydGVkIG9uIG9iamVjdHMgb2YgdHlwZSAlKHRuYW1l
KXMuIgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZCwgbWV0aG9kX3NlbGYpOgogICAg
ICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxmLm1uYW1lID0gbWV0aG9kLl9f
bmFtZV9fCiAgICAgICAgIHNlbGYudG5hbWUgPSB0eXBlKG1ldGhvZF9zZWxmKS5fX25hbWVfXwog
CiAKLWNsYXNzIEJpbmFyeUZpbGUoQnpyTmV3RXJyb3IpOgotICAgICIiIkZpbGUgaXMgYmluYXJ5
IGJ1dCBzaG91bGQgYmUgdGV4dC4iIiIKLQotCi1jbGFzcyBJbGxlZ2FsUGF0aChCenJOZXdFcnJv
cik6Ci0gICAgIiIiVGhlIHBhdGggJShwYXRoKXMgaXMgbm90IHBlcm1pdHRlZCBvbiB0aGlzIHBs
YXRmb3JtIiIiCitjbGFzcyBCaW5hcnlGaWxlKEJ6ckVycm9yKToKKyAgICAKKyAgICBfZm10ID0g
IkZpbGUgaXMgYmluYXJ5IGJ1dCBzaG91bGQgYmUgdGV4dC4iCisKKworY2xhc3MgSWxsZWdhbFBh
dGgoQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJUaGUgcGF0aCAlKHBhdGgpcyBpcyBub3QgcGVy
bWl0dGVkIG9uIHRoaXMgcGxhdGZvcm0iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6
Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9f
aW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogCi1jbGFzcyBUZXN0YW1l
bnRNaXNtYXRjaChCenJOZXdFcnJvcik6Ci0gICAgIiIiVGVzdGFtZW50IGRpZCBub3QgbWF0Y2gg
ZXhwZWN0ZWQgdmFsdWUuICAKK2NsYXNzIFRlc3RhbWVudE1pc21hdGNoKEJ6ckVycm9yKToKKwor
ICAgIF9mbXQgPSAiIiJUZXN0YW1lbnQgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCB2YWx1ZS4gIAog
ICAgICAgIEZvciByZXZpc2lvbl9pZCB7JShyZXZpc2lvbl9pZClzfSwgZXhwZWN0ZWQgeyUoZXhw
ZWN0ZWQpc30sIG1lYXN1cmVkIAotICAgICAgIHslKG1lYXN1cmVkKXN9Ci0gICAgIiIiCisgICAg
ICAgeyUobWVhc3VyZWQpc30iIiIKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXZpc2lvbl9p
ZCwgZXhwZWN0ZWQsIG1lYXN1cmVkKToKICAgICAgICAgc2VsZi5yZXZpc2lvbl9pZCA9IHJldmlz
aW9uX2lkCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAogICAgICAgICBzZWxmLm1l
YXN1cmVkID0gbWVhc3VyZWQKIAogCi1jbGFzcyBOb3RBQnVuZGxlKEJ6ck5ld0Vycm9yKToKLSAg
ICAiIiJOb3QgYSBienIgcmV2aXNpb24tYnVuZGxlOiAlKHRleHQpciIiIgorY2xhc3MgTm90QUJ1
bmRsZShCenJFcnJvcik6CisgICAgCisgICAgX2ZtdCA9ICJOb3QgYSBienIgcmV2aXNpb24tYnVu
ZGxlOiAlKHRleHQpciIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKLSAgICAgICAg
QnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2Vs
ZikKICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogCiAKLWNsYXNzIEJhZEJ1bmRsZShCenJOZXdF
cnJvcik6IAotICAgICIiIkJhZCBienIgcmV2aXNpb24tYnVuZGxlOiAlKHRleHQpciIiIgorY2xh
c3MgQmFkQnVuZGxlKEJ6ckVycm9yKTogCisgICAgCisgICAgX2ZtdCA9ICJCYWQgYnpyIHJldmlz
aW9uLWJ1bmRsZTogJSh0ZXh0KXIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6Ci0g
ICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9faW5p
dF9fKHNlbGYpCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKIAogCiBjbGFzcyBNYWxmb3JtZWRI
ZWFkZXIoQmFkQnVuZGxlKTogCi0gICAgIiIiTWFsZm9ybWVkIGJ6ciByZXZpc2lvbi1idW5kbGUg
aGVhZGVyOiAlKHRleHQpciIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgotICAg
ICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLnRleHQgPSB0ZXh0
CisgICAgCisgICAgX2ZtdCA9ICJNYWxmb3JtZWQgYnpyIHJldmlzaW9uLWJ1bmRsZSBoZWFkZXI6
ICUodGV4dClyIgogCiAKIGNsYXNzIE1hbGZvcm1lZFBhdGNoZXMoQmFkQnVuZGxlKTogCi0gICAg
IiIiTWFsZm9ybWVkIHBhdGNoZXMgaW4gYnpyIHJldmlzaW9uLWJ1bmRsZTogJSh0ZXh0KXIiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAorICAgIAorICAgIF9mbXQgPSAi
TWFsZm9ybWVkIHBhdGNoZXMgaW4gYnpyIHJldmlzaW9uLWJ1bmRsZTogJSh0ZXh0KXIiCiAKIAog
Y2xhc3MgTWFsZm9ybWVkRm9vdGVyKEJhZEJ1bmRsZSk6IAotICAgICIiIk1hbGZvcm1lZCBmb290
ZXIgaW4gYnpyIHJldmlzaW9uLWJ1bmRsZTogJSh0ZXh0KXIiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXh0KToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKLSAgICAg
ICAgc2VsZi50ZXh0ID0gdGV4dAorICAgIAorICAgIF9mbXQgPSAiTWFsZm9ybWVkIGZvb3RlciBp
biBienIgcmV2aXNpb24tYnVuZGxlOiAlKHRleHQpciIKIAogCiBjbGFzcyBVbnN1cHBvcnRlZEVP
TE1hcmtlcihCYWRCdW5kbGUpOgotICAgICIiIkVuZCBvZiBsaW5lIG1hcmtlciB3YXMgbm90IFxc
biBpbiBienIgcmV2aXNpb24tYnVuZGxlIiIiICAgIAorICAgIAorICAgIF9mbXQgPSAiRW5kIG9m
IGxpbmUgbWFya2VyIHdhcyBub3QgXFxuIGluIGJ6ciByZXZpc2lvbi1idW5kbGUiICAgIAogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxm
KQotCi0KLWNsYXNzIEluY29tcGF0aWJsZUZvcm1hdChCenJOZXdFcnJvcik6Ci0gICAgIiIiQnVu
ZGxlIGZvcm1hdCAlKGJ1bmRsZV9mb3JtYXQpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlKG90aGVy
KXMiIiIKKyAgICAgICAgIyBYWFg6IEJhZEJ1bmRsZSdzIGNvbnN0cnVjdG9yIGFzc3VtZXMgdGhl
cmUncyBleHBsYW5hdG9yeSB0ZXh0LCAKKyAgICAgICAgIyBidXQgZm9yIHRoaXMgdGhlcmUgaXMg
bm90CisgICAgICAgIEJ6ckVycm9yLl9faW5pdF9fKHNlbGYpCisKKworY2xhc3MgSW5jb21wYXRp
YmxlQnVuZGxlRm9ybWF0KEJ6ckVycm9yKToKKyAgICAKKyAgICBfZm10ID0gIkJ1bmRsZSBmb3Jt
YXQgJShidW5kbGVfZm9ybWF0KXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJShvdGhlcilzIgogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1bmRsZV9mb3JtYXQsIG90aGVyKToKLSAgICAgICAgQnpy
TmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikK
ICAgICAgICAgc2VsZi5idW5kbGVfZm9ybWF0ID0gYnVuZGxlX2Zvcm1hdAogICAgICAgICBzZWxm
Lm90aGVyID0gb3RoZXIKIAogCi1jbGFzcyBCYWRJbnZlbnRvcnlGb3JtYXQoQnpyTmV3RXJyb3Ip
OgotICAgICIiIlJvb3QgY2xhc3MgZm9yIGludmVudG9yeSBzZXJpYWxpemF0aW9uIGVycm9ycyIi
IgorY2xhc3MgQmFkSW52ZW50b3J5Rm9ybWF0KEJ6ckVycm9yKToKKyAgICAKKyAgICBfZm10ID0g
IlJvb3QgY2xhc3MgZm9yIGludmVudG9yeSBzZXJpYWxpemF0aW9uIGVycm9ycyIKIAogCiBjbGFz
cyBVbmV4cGVjdGVkSW52ZW50b3J5Rm9ybWF0KEJhZEludmVudG9yeUZvcm1hdCk6Ci0gICAgIiIi
VGhlIGludmVudG9yeSB3YXMgbm90IGluIHRoZSBleHBlY3RlZCBmb3JtYXQ6XG4gJShtc2cpcyIi
IgorCisgICAgX2ZtdCA9ICJUaGUgaW52ZW50b3J5IHdhcyBub3QgaW4gdGhlIGV4cGVjdGVkIGZv
cm1hdDpcbiAlKG1zZylzIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CiAgICAgICAg
IEJhZEludmVudG9yeUZvcm1hdC5fX2luaXRfXyhzZWxmLCBtc2c9bXNnKQogCiAKLWNsYXNzIE5v
U21hcnRNZWRpdW0oQnpyTmV3RXJyb3IpOgotICAgICIiIlRoZSB0cmFuc3BvcnQgJyUodHJhbnNw
b3J0KXMnIGNhbm5vdCB0dW5uZWwgdGhlIHNtYXJ0IHByb3RvY29sLiIiIgorY2xhc3MgTm9TbWFy
dE1lZGl1bShCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlRoZSB0cmFuc3BvcnQgJyUodHJhbnNw
b3J0KXMnIGNhbm5vdCB0dW5uZWwgdGhlIHNtYXJ0IHByb3RvY29sLiIKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0cmFuc3BvcnQpOgotICAgICAgICBCenJOZXdFcnJvci5fX2luaXRfXyhzZWxm
KQogICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydAogCiAKIGNsYXNzIE5vU21hcnRT
ZXJ2ZXIoTm90QnJhbmNoRXJyb3IpOgotICAgICIiIk5vIHNtYXJ0IHNlcnZlciBhdmFpbGFibGUg
YXQgJSh1cmwpcyIiIgorCisgICAgX2ZtdCA9ICJObyBzbWFydCBzZXJ2ZXIgYXZhaWxhYmxlIGF0
ICUodXJsKXMiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsKToKICAgICAgICAgc2VsZi51
cmwgPSB1cmwKIAogCi1jbGFzcyBVbmtub3duU1NIKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJVbnJl
Y29nbmlzZWQgdmFsdWUgZm9yIEJaUl9TU0ggZW52aXJvbm1lbnQgdmFyaWFibGU6ICUodmVuZG9y
KXMiIiIKK2NsYXNzIFVua25vd25TU0goQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJVbnJlY29n
bmlzZWQgdmFsdWUgZm9yIEJaUl9TU0ggZW52aXJvbm1lbnQgdmFyaWFibGU6ICUodmVuZG9yKXMi
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVuZG9yKToKLSAgICAgICAgQnpyTmV3RXJyb3Iu
X19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAg
c2VsZi52ZW5kb3IgPSB2ZW5kb3IKIAogCi1jbGFzcyBHaG9zdFJldmlzaW9uVW51c2FibGVIZXJl
KEJ6ck5ld0Vycm9yKToKLSAgICAiIiJHaG9zdCByZXZpc2lvbiB7JShyZXZpc2lvbl9pZClzfSBj
YW5ub3QgYmUgdXNlZCBoZXJlLiIiIgorY2xhc3MgR2hvc3RSZXZpc2lvblVudXNhYmxlSGVyZShC
enJFcnJvcik6CisKKyAgICBfZm10ID0gIkdob3N0IHJldmlzaW9uIHslKHJldmlzaW9uX2lkKXN9
IGNhbm5vdCBiZSB1c2VkIGhlcmUuIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldmlzaW9u
X2lkKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgQnpyRXJy
b3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5yZXZpc2lvbl9pZCA9IHJldmlzaW9uX2lk
CiAKIAotY2xhc3MgSWxsZWdhbFVzZU9mU2NvcGVSZXBsYWNlcihCenJOZXdFcnJvcik6Ci0gICAg
IiIiU2NvcGVSZXBsYWNlciBvYmplY3QgJShuYW1lKXIgd2FzIHVzZWQgaW5jb3JyZWN0bHk6ICUo
bXNnKXMlKGV4dHJhKXMiIiIKLQotICAgIGlzX3VzZXJfZXJyb3IgPSBGYWxzZQorY2xhc3MgSWxs
ZWdhbFVzZU9mU2NvcGVSZXBsYWNlcihCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlNjb3BlUmVw
bGFjZXIgb2JqZWN0ICUobmFtZSlyIHdhcyB1c2VkIGluY29ycmVjdGx5OiAlKG1zZylzJShleHRy
YSlzIgorCisgICAgaW50ZXJuYWxfZXJyb3IgPSBUcnVlCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgbXNnLCBleHRyYT1Ob25lKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18o
c2VsZikKKyAgICAgICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5uYW1l
ID0gbmFtZQogICAgICAgICBzZWxmLm1zZyA9IG1zZwogICAgICAgICBpZiBleHRyYToKQEAgLTEz
NzAsMjIgKzE1NTQsMjQgQEAKICAgICAgICAgICAgIHNlbGYuZXh0cmEgPSAnJwogCiAKLWNsYXNz
IEludmFsaWRJbXBvcnRMaW5lKEJ6ck5ld0Vycm9yKToKLSAgICAiIiJOb3QgYSB2YWxpZCBpbXBv
cnQgc3RhdGVtZW50OiAlKG1zZylcbiUodGV4dClzIiIiCi0KLSAgICBpc191c2VyX2Vycm9yID0g
RmFsc2UKK2NsYXNzIEludmFsaWRJbXBvcnRMaW5lKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAi
Tm90IGEgdmFsaWQgaW1wb3J0IHN0YXRlbWVudDogJShtc2cpXG4lKHRleHQpcyIKKworICAgIGlu
dGVybmFsX2Vycm9yID0gVHJ1ZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIG1zZyk6
Ci0gICAgICAgIEJ6ck5ld0Vycm9yLl9faW5pdF9fKHNlbGYpCisgICAgICAgIEJ6ckVycm9yLl9f
aW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKICAgICAgICAgc2VsZi5tc2cg
PSBtc2cKIAogCi1jbGFzcyBJbXBvcnROYW1lQ29sbGlzaW9uKEJ6ck5ld0Vycm9yKToKLSAgICAi
IiJUcmllZCB0byBpbXBvcnQgYW4gb2JqZWN0IHRvIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3Rp
bmcgb2JqZWN0LiAlKG5hbWUpcyIiIgotCi0gICAgaXNfdXNlcl9lcnJvciA9IEZhbHNlCitjbGFz
cyBJbXBvcnROYW1lQ29sbGlzaW9uKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiVHJpZWQgdG8g
aW1wb3J0IGFuIG9iamVjdCB0byB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIG9iamVjdC4g
JShuYW1lKXMiCisKKyAgICBpbnRlcm5hbF9lcnJvciA9IFRydWUKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lKToKLSAgICAgICAgQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZikKKyAgICAg
ICAgQnpyRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQoK
=== modified file bzrlib/inventory.py // last-changed:mbp at sourcefrog.net-200611
... 02102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi9pbnZlbnRvcnkucHkKKysrIGJ6cmxpYi9pbnZlbnRvcnkucHkKQEAgLTEwMzYs
MTAgKzEwMzYsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnlp
ZFtmaWxlX2lkXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBmaWxl
X2lkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQnpyRXJyb3IoImNhbid0IGxvb2sg
dXAgZmlsZV9pZCBOb25lIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgQnpyRXJyb3IoImZpbGVfaWQgeyVzfSBub3QgaW4gaW52ZW50b3J5IiAlIGZpbGVfaWQpCisg
ICAgICAgICAgICAjIHJlYWxseSB3ZSdyZSBwYXNzaW5nIGFuIGludmVudG9yeSwgbm90IGEgdHJl
ZS4uLgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLk5vU3VjaElkKHNlbGYsIGZpbGVfaWQpCiAK
ICAgICBkZWYgZ2V0X2ZpbGVfa2luZChzZWxmLCBmaWxlX2lkKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX2J5aWRbZmlsZV9pZF0ua2luZAoK
=== modified file bzrlib/knit.py // last-changed:pqm at pqm.ubuntu.com-20061102234
... 014-be7b4e5b6dac2996 // encoding:base64
LS0tIGJ6cmxpYi9rbml0LnB5CisrKyBienJsaWIva25pdC5weQpAQCAtMTI1NiwzNSArMTI1Niwz
OCBAQAogICAgICAgICAiIiIKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBlbmNvZGVfdXRm
OCA9IGNhY2hlX3V0ZjguZW5jb2RlCi0gICAgICAgIGZvciB2ZXJzaW9uX2lkLCBvcHRpb25zLCBw
b3MsIHNpemUsIHBhcmVudHMgaW4gdmVyc2lvbnM6Ci0gICAgICAgICAgICBsaW5lID0gIlxuJXMg
JXMgJXMgJXMgJXMgOiIgJSAoZW5jb2RlX3V0ZjgodmVyc2lvbl9pZCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywnLmpvaW4ob3B0aW9ucyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdmVyc2lvbl9saXN0X3RvX2luZGV4KHBhcmVudHMp
KQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZSwgc3RyKSwgXAotICAgICAgICAg
ICAgICAgICdjb250ZW50IG11c3QgYmUgdXRmLTggZW5jb2RlZDogJXInICUgKGxpbmUsKQotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9uZWVkX3Rv
X2NyZWF0ZToKLSAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5hcHBlbmRfYnl0ZXMoc2VsZi5f
ZmlsZW5hbWUsICcnLmpvaW4obGluZXMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2lv
ID0gU3RyaW5nSU8oKQotICAgICAgICAgICAgc2lvLndyaXRlKHNlbGYuSEVBREVSKQotICAgICAg
ICAgICAgc2lvLndyaXRlbGluZXMobGluZXMpCi0gICAgICAgICAgICBzaW8uc2VlaygwKQotICAg
ICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnB1dF9maWxlX25vbl9hdG9taWMoc2VsZi5fZmlsZW5h
bWUsIHNpbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3BhcmVudF9k
aXI9c2VsZi5fY3JlYXRlX3BhcmVudF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGU9c2VsZi5fZmlsZV9tb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJfbW9kZT1zZWxmLl9kaXJfbW9kZSkKLSAgICAgICAgICAgIHNlbGYuX25lZWRfdG9fY3Jl
YXRlID0gRmFsc2UKLQotICAgICAgICAjIGNhY2hlIGFmdGVyIHdyaXRpbmcsIHNvIHRoYXQgYSBm
YWlsZWQgd3JpdGUgbGVhZHMgdG8gbWlzc2luZyBjYWNoZQotICAgICAgICAjIGVudHJpZXMgbm90
IGV4dHJhIG9uZXMuIFhYWCBUT0RPOiBSQkMgMjAwNjA1MDIgaW4gdGhlIGV2ZW50IG9mIGEgCi0g
ICAgICAgICMgZmFpbHVyZSwgcmVsb2FkIHRoZSBpbmRleCBvciBmbHVzaCBpdCBvciBzb21lIHN1
Y2gsIHRvIHByZXZlbnQKLSAgICAgICAgIyB3cml0aW5nIHJlY29yZHMgdGhhdCBkaWQgY29tcGxl
dGUgdHdpY2UuCi0gICAgICAgIGZvciB2ZXJzaW9uX2lkLCBvcHRpb25zLCBwb3MsIHNpemUsIHBh
cmVudHMgaW4gdmVyc2lvbnM6Ci0gICAgICAgICAgICBzZWxmLl9jYWNoZV92ZXJzaW9uKHZlcnNp
b25faWQsIG9wdGlvbnMsIHBvcywgc2l6ZSwgcGFyZW50cykKLSAgICAgICAgCisgICAgICAgIG9y
aWdfaGlzdG9yeSA9IHNlbGYuX2hpc3RvcnlbOl0KKyAgICAgICAgb3JpZ19jYWNoZSA9IHNlbGYu
X2NhY2hlLmNvcHkoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB2ZXJzaW9uX2lk
LCBvcHRpb25zLCBwb3MsIHNpemUsIHBhcmVudHMgaW4gdmVyc2lvbnM6CisgICAgICAgICAgICAg
ICAgbGluZSA9ICJcbiVzICVzICVzICVzICVzIDoiICUgKGVuY29kZV91dGY4KHZlcnNpb25faWQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCcuam9p
bihvcHRpb25zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll92ZXJzaW9uX2xpc3RfdG9faW5kZXgocGFyZW50cykpCisgICAgICAgICAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UobGluZSwgc3RyKSwgXAorICAgICAgICAgICAgICAgICAgICAnY29udGVudCBt
dXN0IGJlIHV0Zi04IGVuY29kZWQ6ICVyJyAlIChsaW5lLCkKKyAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV92ZXJzaW9uKHZlcnNp
b25faWQsIG9wdGlvbnMsIHBvcywgc2l6ZSwgcGFyZW50cykKKyAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLl9uZWVkX3RvX2NyZWF0ZToKKyAgICAgICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQuYXBw
ZW5kX2J5dGVzKHNlbGYuX2ZpbGVuYW1lLCAnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2lvID0gU3RyaW5nSU8oKQorICAgICAgICAgICAgICAgIHNp
by53cml0ZShzZWxmLkhFQURFUikKKyAgICAgICAgICAgICAgICBzaW8ud3JpdGVsaW5lcyhsaW5l
cykKKyAgICAgICAgICAgICAgICBzaW8uc2VlaygwKQorICAgICAgICAgICAgICAgIHNlbGYuX3Ry
YW5zcG9ydC5wdXRfZmlsZV9ub25fYXRvbWljKHNlbGYuX2ZpbGVuYW1lLCBzaW8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfcGFyZW50X2Rpcj1zZWxmLl9jcmVh
dGVfcGFyZW50X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9
c2VsZi5fZmlsZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
X21vZGU9c2VsZi5fZGlyX21vZGUpCisgICAgICAgICAgICAgICAgc2VsZi5fbmVlZF90b19jcmVh
dGUgPSBGYWxzZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElmIGFueSBwcm9ibGVt
cyBoYXBwZW4sIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlcyBhbmQgcmUtcmFpc2UKKyAgICAg
ICAgICAgIHNlbGYuX2hpc3RvcnkgPSBvcmlnX2hpc3RvcnkKKyAgICAgICAgICAgIHNlbGYuX2Nh
Y2hlID0gb3JpZ19jYWNoZQorICAgICAgICAgICAgcmFpc2UKKwogICAgIGRlZiBoYXNfdmVyc2lv
bihzZWxmLCB2ZXJzaW9uX2lkKToKICAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgdmVyc2lvbiBpcyBp
biB0aGUgaW5kZXguIiIiCiAgICAgICAgIHJldHVybiAodmVyc2lvbl9pZCBpbiBzZWxmLl9jYWNo
ZSkKCg==
=== modified file bzrlib/symbol_versioning.py // last-changed:jw+debian at jameswe
... stby.net-20061102214138-4395ee87ed9264ed // encoding:base64
LS0tIGJ6cmxpYi9zeW1ib2xfdmVyc2lvbmluZy5weQorKysgYnpybGliL3N5bWJvbF92ZXJzaW9u
aW5nLnB5CkBAIC00NCw3ICs0NCw3IEBACiB6ZXJvX3RlbiA9ICIlcyB3YXMgZGVwcmVjYXRlZCBp
biB2ZXJzaW9uIDAuMTAuIgogemVyb19lbGV2ZW4gPSAiJXMgd2FzIGRlcHJlY2F0ZWQgaW4gdmVy
c2lvbiAwLjExLiIKIHplcm9fdHdlbHZlID0gIiVzIHdhcyBkZXByZWNhdGVkIGluIHZlcnNpb24g
MC4xMi4iCi16ZXJvX3RoaXJ0ZWVuID0gIiVzIHdhcyBkZXByZWNhdGVkIGluIHZlcnNpb24gMC4x
Mi4iCit6ZXJvX3RoaXJ0ZWVuID0gIiVzIHdhcyBkZXByZWNhdGVkIGluIHZlcnNpb24gMC4xMy4i
CiAKIAogZGVmIHNldF93YXJuaW5nX21ldGhvZChtZXRob2QpOgoK
=== modified file bzrlib/tests/__init__.py // last-changed:mbp at sourcefrog.net-2
... 0061103022332-8faa29378257aba3 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9fX2luaXRfXy5weQorKysgYnpybGliL3Rlc3RzL19faW5pdF9fLnB5
CkBAIC02NjksNyArNjY5LDcgQEAKICAgICAgICAgICAgIGFfY2FsbGFibGUoKmFyZ3MsICoqa3dh
cmdzKS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvY2FsX3dhcm5pbmdzID0gW10KLSAgICAgICAg
ZGVmIGNhcHR1cmVfd2FybmluZ3MobXNnLCBjbHMsIHN0YWNrbGV2ZWw9Tm9uZSk6CisgICAgICAg
IGRlZiBjYXB0dXJlX3dhcm5pbmdzKG1zZywgY2xzPU5vbmUsIHN0YWNrbGV2ZWw9Tm9uZSk6CiAg
ICAgICAgICAgICAjIHdlJ3ZlIGhvb2tlZCBpbnRvIGEgZGVwcmVjYXRpb24gc3BlY2lmaWMgY2Fs
bHBhdGgsCiAgICAgICAgICAgICAjIG9ubHkgZGVwcmVjYXRpb25zIHNob3VsZCBnZXR0aW5nIHNl
bnQgdmlhIGl0LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMsIERlcHJlY2F0aW9u
V2FybmluZykKCg==
=== modified file bzrlib/tests/blackbox/test_remerge.py // last-changed:mbp at sou
... rcefrog.net-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3JlbWVyZ2UucHkKKysrIGJ6cmxpYi90ZXN0
cy9ibGFja2JveC90ZXN0X3JlbWVyZ2UucHkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgc2Vs
Zi5mYWlsSWZFeGlzdHMoJ3F1ZXN0aW9uLk9USEVSJykKIAogICAgICAgICBmaWxlX2lkID0gc2Vs
Zi5ydW5fYnpyKCdmaWxlLWlkJywgJ2hlbGxvJylbMF0KLSAgICAgICAgc2VsZi5ydW5fYnpyX2Vy
cm9yKFsnXCdoZWxsby5USElTXCcgaXMgbm90IGEgdmVyc2lvbmVkIGZpbGUnXSwKKyAgICAgICAg
c2VsZi5ydW5fYnpyX2Vycm9yKFsnaGVsbG8uVEhJUyBpcyBub3QgdmVyc2lvbmVkJ10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS1pZCcsICdoZWxsby5USElTJykKIAogICAgICAg
ICBzZWxmLnJ1bl9ienJfZXJyb3IoWydjb25mbGljdHMgZW5jb3VudGVyZWQnXSwKCg==
=== modified file bzrlib/tests/blackbox/test_selftest.py // last-changed:mbp at so
... urcefrog.net-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3NlbGZ0ZXN0LnB5CisrKyBienJsaWIvdGVz
dHMvYmxhY2tib3gvdGVzdF9zZWxmdGVzdC5weQpAQCAtNDQ5LDUgKzQ0OSw1IEBACiAgICAgICAg
IG91dCwgZXJyID0gc2VsZi5ydW5fYnpyX2Vycm9yKFsnXiQnXSwgJ3JvY2tzJywgcmV0Y29kZT0w
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgJ2l0IHN1cmUgZG9lcyFcbicpCiAKLSAg
ICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bl9ienJfZXJyb3IoWyInZm9vYmFyYmF6JyBpcyBub3Qg
YSB2ZXJzaW9uZWQgZmlsZSJdLAorICAgICAgICBvdXQsIGVyciA9IHNlbGYucnVuX2J6cl9lcnJv
cihbImJ6cjogRVJST1I6IGZvb2JhcmJheiBpcyBub3QgdmVyc2lvbmVkIl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLWlkJywgJ2Zvb2JhcmJheicpCgo=
=== modified file bzrlib/tests/blackbox/test_upgrade.py // last-changed:mbp at sou
... rcefrog.net-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3VwZ3JhZGUucHkKKysrIGJ6cmxpYi90ZXN0
cy9ibGFja2JveC90ZXN0X3VwZ3JhZGUucHkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgKG91
dCwgZXJyKSA9IHNlbGYucnVuX2J6cl9jYXB0dXJlZCgKICAgICAgICAgICAgIFsndXBncmFkZScs
IHNlbGYuZ2V0X3JlYWRvbmx5X3VybCgnZm9ybWF0XzVfYnJhbmNoJyldLCAzKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG91dCwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCAi
YnpyOiBFUlJPUjogVXBncmFkZSBVUkwgY2Fubm90IHdvcmsgd2l0aCByZWFkb25seSBVUkwncy5c
biIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCAiYnpyOiBFUlJPUjogVXBncmFkZSBV
UkwgY2Fubm90IHdvcmsgd2l0aCByZWFkb25seSBVUkxzLlxuIikKIAogICAgIGRlZiB0ZXN0X3Vw
Z3JhZGVfdXBfdG9fZGF0ZShzZWxmKToKICAgICAgICAgIyB3aGVuIHVwIHRvIGRhdGUgd2Ugc2hv
dWxkIGdldCBhIG1lc3NhZ2UgdG8gdGhhdCBlZmZlY3QKCg==
=== modified file bzrlib/tests/test_bundle.py // last-changed:mbp at sourcefrog.ne
... t-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2J1bmRsZS5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfYnVu
ZGxlLnB5CkBAIC0zMTYsMTEgKzMxNiwxMSBAQAogICAgICAgICBmb3JtYXQucmVwb3NpdG9yeV9m
b3JtYXQgPSByZXBvc2l0b3J5LlJlcG9zaXRvcnlGb3JtYXRLbml0MigpCiAgICAgICAgIHNlcmlh
bGl6ZXIgPSBCdW5kbGVTZXJpYWxpemVyVjA4KCcwLjgnKQogICAgICAgICBiID0gc2VsZi5tYWtl
X2JyYW5jaCgnLicsIGZvcm1hdD1mb3JtYXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVy
cm9ycy5JbmNvbXBhdGlibGVGb3JtYXQsIHNlcmlhbGl6ZXIud3JpdGUsIAorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhlcnJvcnMuSW5jb21wYXRpYmxlQnVuZGxlRm9ybWF0LCBzZXJpYWxpemVy
LndyaXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5yZXBvc2l0b3J5LCBbXSwge30s
IFN0cmluZ0lPKCkpCiAKICAgICBkZWYgdGVzdF9tYXRjaGVkX2J1bmRsZShzZWxmKToKLSAgICAg
ICAgIiIiRG9uJ3QgcmFpc2UgSW5jb21wYXRpYmxlRm9ybWF0IGZvciBrbml0MiBhbmQgYnVuZGxl
MC45IiIiCisgICAgICAgICIiIkRvbid0IHJhaXNlIEluY29tcGF0aWJsZUJ1bmRsZUZvcm1hdCBm
b3Iga25pdDIgYW5kIGJ1bmRsZTAuOSIiIgogICAgICAgICBmb3JtYXQgPSBienJkaXIuQnpyRGly
TWV0YUZvcm1hdDEoKQogICAgICAgICBmb3JtYXQucmVwb3NpdG9yeV9mb3JtYXQgPSByZXBvc2l0
b3J5LlJlcG9zaXRvcnlGb3JtYXRLbml0MigpCiAgICAgICAgIHNlcmlhbGl6ZXIgPSBCdW5kbGVT
ZXJpYWxpemVyVjA5KCcwLjknKQoK
=== modified file bzrlib/tests/test_errors.py // last-changed:mbp at sourcefrog.ne
... t-20061103022255-03efeee385b81b46 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2Vycm9ycy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfZXJy
b3JzLnB5CkBAIC0yNCw2ICsyNCwxMCBAQAogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RD
YXNlLCBUZXN0Q2FzZVdpdGhUcmFuc3BvcnQKIAogCisjIFRPRE86IE1ha2Ugc3VyZSBidWlsdGlu
IGV4Y2VwdGlvbiBjbGFzcyBmb3JtYXRzIGFyZSBjb25zaXN0ZW50IC0gZS5nLiBzaG91bGQKKyMg
b3Igc2hvdWxkbid0IGVuZCB3aXRoIGEgZnVsbCBzdG9wLCBldGMuCisKKwogY2xhc3MgVGVzdEVy
cm9ycyhUZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgogCiAgICAgZGVmIHRlc3RfaW52ZW50b3J5X21v
ZGlmaWVkKHNlbGYpOgpAQCAtODQsNiArODgsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwby5ienJkaXIucm9vdF90cmFuc3BvcnQuYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKGVycm9yKSkKIAorICAgIGRlZiB0ZXN0X2J6cm5ld2Vycm9yX2lzX2Rl
cHJlY2F0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIERlcHJlY2F0ZWRFcnJvcihlcnJvcnMuQnpy
TmV3RXJyb3IpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmNhbGxEZXByZWNhdGVk
KFsnQnpyTmV3RXJyb3Igd2FzIGRlcHJlY2F0ZWQgaW4gYnpyIDAuMTM7ICcKKyAgICAgICAgICAg
ICAncGxlYXNlIGNvbnZlcnQgRGVwcmVjYXRlZEVycm9yIHRvIHVzZSBCenJFcnJvciBpbnN0ZWFk
J10sCisgICAgICAgICAgICBEZXByZWNhdGVkRXJyb3IpCisKKyAgICBkZWYgdGVzdF9ienJlcnJv
cl9mcm9tX2xpdGVyYWxfc3RyaW5nKHNlbGYpOgorICAgICAgICAjIFNvbWUgY29kZSBjb25zdHJ1
Y3RzIEJ6ckVycm9yIGZyb20gYSBsaXRlcmFsIHN0cmluZywgaW4gd2hpY2ggY2FzZQorICAgICAg
ICAjIG5vIGZ1cnRoZXIgZm9ybWF0dGluZyBpcyBkb25lLiAgKEknbSBub3Qgc3VyZSByYWlzaW5n
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICMgaXMgYSBncmVhdCBpZGVhLCBidXQgaWYgdGhlIGV4
Y2VwdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgY2F1Z2h0CisgICAgICAgICMgcGVyaGFwcyBu
byBtb3JlIGlzIG5lZWRlZC4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIGVycm9y
cy5CenJFcnJvcigndGhpcyBpcyBteSBlcnJvcnM7ICVkIGlzIG5vdCBleHBhbmRlZCcpCisgICAg
ICAgIGV4Y2VwdCBlcnJvcnMuQnpyRXJyb3IsIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCd0aGlzIGlzIG15IGVycm9yczsgJWQgaXMgbm90IGV4cGFuZGVkJywgc3RyKGUpKQorCiAg
ICAgZGVmIHRlc3RfcmVhZGluZ19jb21wbGV0ZWQoc2VsZik6CiAgICAgICAgIGVycm9yID0gZXJy
b3JzLlJlYWRpbmdDb21wbGV0ZWQoImEgcmVxdWVzdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxEaWZmKCJUaGUgTWVkaXVtUmVxdWVzdCAnYSByZXF1ZXN0JyBoYXMgYWxyZWFkeSBoYWQgIgpA
QCAtMTA2LDE1ICsxMjcsMjEgQEAKICAgICAgICAgICAgIHN0cihlcnJvcikpCiAKIAotY2xhc3Mg
UGFzc1Rocm91Z2hFcnJvcihlcnJvcnMuQnpyTmV3RXJyb3IpOgotICAgICIiIlBhc3MgdGhyb3Vn
aCAlKGZvbylzIGFuZCAlKGJhcilzIiIiCitjbGFzcyBQYXNzVGhyb3VnaEVycm9yKGVycm9ycy5C
enJFcnJvcik6CisgICAgCisgICAgX2ZtdCA9ICIiIlBhc3MgdGhyb3VnaCAlKGZvbylzIGFuZCAl
KGJhcilzIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vLCBiYXIpOgotICAgICAgICBl
cnJvcnMuQnpyTmV3RXJyb3IuX19pbml0X18oc2VsZiwgZm9vPWZvbywgYmFyPWJhcikKLQotCi1j
bGFzcyBFcnJvcldpdGhCYWRGb3JtYXQoZXJyb3JzLkJ6ck5ld0Vycm9yKToKLSAgICAiIiJPbmUg
Zm9ybWF0IHNwZWNpZmllcjogJSh0aGluZylzIiIiCisgICAgICAgIGVycm9ycy5CenJFcnJvci5f
X2luaXRfXyhzZWxmLCBmb289Zm9vLCBiYXI9YmFyKQorCisKK2NsYXNzIEVycm9yV2l0aEJhZEZv
cm1hdChlcnJvcnMuQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICIiIk9uZSBmb3JtYXQgc3BlY2lm
aWVyOiAlKHRoaW5nKXMiIiIKKworCitjbGFzcyBFcnJvcldpdGhOb0Zvcm1hdChlcnJvcnMuQnpy
RXJyb3IpOgorICAgICIiIlRoaXMgY2xhc3MgaGFzIGEgZG9jc3RyaW5nIGJ1dCBubyBmb3JtYXQg
c3RyaW5nLiIiIgogCiAKIGNsYXNzIFRlc3RFcnJvckZvcm1hdHRpbmcoVGVzdENhc2UpOgpAQCAt
MTI5LDEzICsxNTYsMjIgQEAKICAgICAgICAgcyA9IHN0cihlKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdQYXNzIHRocm91Z2ggXHhjMlx4YjUgYW5kIGJhcicsIHMpCiAKKyAgICBkZWYgdGVz
dF9taXNzaW5nX2Zvcm1hdF9zdHJpbmcoc2VsZik6CisgICAgICAgIGUgPSBFcnJvcldpdGhOb0Zv
cm1hdChwYXJhbT0ncmFuZG9tdmFsdWUnKQorICAgICAgICBzID0gc2VsZi5jYWxsRGVwcmVjYXRl
ZCgKKyAgICAgICAgICAgICAgICBbJ0Vycm9yV2l0aE5vRm9ybWF0IHVzZXMgaXRzIGRvY3N0cmlu
ZyBhcyBhIGZvcm1hdCwgaXQgc2hvdWxkIHVzZSBfZm10IGluc3RlYWQnXSwKKyAgICAgICAgICAg
ICAgICBsYW1iZGEgeDogc3RyKHgpLCBlKQorICAgICAgICAjIyBzID0gc3RyKGUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocywgCisgICAgICAgICAgICAgICAgIlRoaXMgY2xhc3MgaGFzIGEg
ZG9jc3RyaW5nIGJ1dCBubyBmb3JtYXQgc3RyaW5nLiIpCisKICAgICBkZWYgdGVzdF9taXNtYXRj
aGVkX2Zvcm1hdF9hcmdzKHNlbGYpOgogICAgICAgICAjIEV2ZW4gdGhvdWdoIEVycm9yV2l0aEJh
ZEZvcm1hdCdzIGZvcm1hdCBzdHJpbmcgZG9lcyBub3QgbWF0Y2ggdGhlCiAgICAgICAgICMgYXJn
dW1lbnRzIHdlIGNvbnN0cnVjdGluZyBpdCB3aXRoLCB3ZSBjYW4gc3RpbGwgc3RyaW5naWZ5IGFu
IGluc3RhbmNlCiAgICAgICAgICMgb2YgdGhpcyBleGNlcHRpb24uIFRoZSByZXN1bHRpbmcgc3Ry
aW5nIHdpbGwgc2F5IGl0cyB1bnByaW50YWJsZS4KICAgICAgICAgZSA9IEVycm9yV2l0aEJhZEZv
cm1hdChub3RfdGhpbmc9J3gnKQogICAgICAgICBzZWxmLmFzc2VydFN0YXJ0c1dpdGgoCi0gICAg
ICAgICAgICBzdHIoZSksICdVbnByaW50YWJsZSBleGNlcHRpb24gRXJyb3JXaXRoQmFkRm9ybWF0
KCcpCisgICAgICAgICAgICBzdHIoZSksICdVbnByaW50YWJsZSBleGNlcHRpb24gRXJyb3JXaXRo
QmFkRm9ybWF0JykKIAogCiBjbGFzcyBUZXN0U3BlY2lmaWNFcnJvcnMoVGVzdENhc2UpOgoK
=== modified file bzrlib/tests/test_knit.py // last-changed:john at arbash-meinel.
... com-20061031033325-5775a400c6ce9da3 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2tuaXQucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X2tuaXQu
cHkKQEAgLTYzMCwzICs2MzAsNjcgQEAKICAgICAgICAgdGV4dCA9IGsuZ2V0X3RleHQoJ3RleHQt
MScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVEVYVF8xLCB0ZXh0KQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHt9LCBrLl9kYXRhLl9jYWNoZSkKKworCitjbGFzcyBUZXN0S25pdEluZGV4
KEtuaXRUZXN0cyk6CisKKyAgICBkZWYgdGVzdF9hZGRfdmVyc2lvbnNfZGljdGlvbmFyeV9jb21w
cmVzc2VzKHNlbGYpOgorICAgICAgICAiIiJBZGRpbmcgdmVyc2lvbnMgdG8gdGhlIGluZGV4IHNo
b3VsZCB1cGRhdGUgdGhlIGxvb2t1cCBkaWN0IiIiCisgICAgICAgIGtuaXQgPSBzZWxmLm1ha2Vf
dGVzdF9rbml0KCkKKyAgICAgICAgaWR4ID0ga25pdC5faW5kZXgKKyAgICAgICAgaWR4LmFkZF92
ZXJzaW9uKCdhLTEnLCBbJ2Z1bGx0ZXh0J10sIDAsIDAsIFtdKQorICAgICAgICBzZWxmLmNoZWNr
X2ZpbGVfY29udGVudHMoJ3Rlc3Qua25keCcsCisgICAgICAgICAgICAnIyBienIga25pdCBpbmRl
eCA4XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnYS0xIGZ1bGx0ZXh0IDAgMCAg
OicKKyAgICAgICAgICAgICkKKyAgICAgICAgaWR4LmFkZF92ZXJzaW9ucyhbKCdhLTInLCBbJ2Z1
bGx0ZXh0J10sIDAsIDAsIFsnYS0xJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Et
MycsIFsnZnVsbHRleHQnXSwgMCwgMCwgWydhLTInXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgXSkKKyAgICAgICAgc2VsZi5jaGVja19maWxlX2NvbnRlbnRzKCd0ZXN0LmtuZHgnLAorICAg
ICAgICAgICAgJyMgYnpyIGtuaXQgaW5kZXggOFxuJworICAgICAgICAgICAgJ1xuJworICAgICAg
ICAgICAgJ2EtMSBmdWxsdGV4dCAwIDAgIDpcbicKKyAgICAgICAgICAgICdhLTIgZnVsbHRleHQg
MCAwIDAgOlxuJworICAgICAgICAgICAgJ2EtMyBmdWxsdGV4dCAwIDAgMSA6JworICAgICAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYS0xJywgJ2EtMicsICdhLTMnXSwgaWR4
Ll9oaXN0b3J5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnYS0xJzooJ2EtMScsIFsnZnVs
bHRleHQnXSwgMCwgMCwgW10sIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYS0yJzoo
J2EtMicsIFsnZnVsbHRleHQnXSwgMCwgMCwgWydhLTEnXSwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICdhLTMnOignYS0zJywgWydmdWxsdGV4dCddLCAwLCAwLCBbJ2EtMiddLCAyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZHguX2NhY2hlKQorCisgICAgZGVmIHRlc3Rf
YWRkX3ZlcnNpb25zX2ZhaWxzX2NsZWFuKHNlbGYpOgorICAgICAgICAiIiJJZiBhZGRfdmVyc2lv
bnMgZmFpbHMgaW4gdGhlIG1pZGRsZSwgaXQgcmVzdG9yZXMgYSBwcmlzdGluZSBzdGF0ZS4KKwor
ICAgICAgICBBbnkgbW9kaWZpY2F0aW9ucyB0aGF0IGFyZSBtYWRlIHRvIHRoZSBpbmRleCBhcmUg
cmVzZXQgaWYgYWxsIHZlcnNpb25zCisgICAgICAgIGNhbm5vdCBiZSBhZGRlZC4KKyAgICAgICAg
IiIiCisgICAgICAgICMgVGhpcyBjaGVhdHMgYSBsaXR0bGUgYml0IGJ5IHBhc3NpbmcgaW4gYSBn
ZW5lcmF0b3Igd2hpY2ggd2lsbAorICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWZvcmUg
dGhlIHByb2Nlc3NpbmcgZmluaXNoZXMKKyAgICAgICAgIyBPdGhlciBwb3NzaWJpbGl0aWVzIHdv
dWxkIGJlIHRvIGhhdmUgYW4gdmVyc2lvbiB3aXRoIHRoZSB3cm9uZyBudW1iZXIKKyAgICAgICAg
IyBvZiBlbnRyaWVzLCBvciB0byBtYWtlIHRoZSBiYWNraW5nIHRyYW5zcG9ydCB1bmFibGUgdG8g
d3JpdGUgYW55CisgICAgICAgICMgZmlsZXMuCisKKyAgICAgICAga25pdCA9IHNlbGYubWFrZV90
ZXN0X2tuaXQoKQorICAgICAgICBpZHggPSBrbml0Ll9pbmRleAorICAgICAgICBpZHguYWRkX3Zl
cnNpb24oJ2EtMScsIFsnZnVsbHRleHQnXSwgMCwgMCwgW10pCisKKyAgICAgICAgY2xhc3MgU3Rv
cEVhcmx5KEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGdlbmVy
YXRlX2ZhaWx1cmUoKToKKyAgICAgICAgICAgICIiIkFkZCBzb21lIGVudHJpZXMgYW5kIHRoZW4g
cmFpc2UgYW4gZXhjZXB0aW9uIiIiCisgICAgICAgICAgICB5aWVsZCAoJ2EtMicsIFsnZnVsbHRl
eHQnXSwgMCwgMCwgWydhLTEnXSkKKyAgICAgICAgICAgIHlpZWxkICgnYS0zJywgWydmdWxsdGV4
dCddLCAwLCAwLCBbJ2EtMiddKQorICAgICAgICAgICAgcmFpc2UgU3RvcEVhcmx5KCkKKworICAg
ICAgICAjIEFzc2VydCB0aGUgcHJlLWNvbmRpdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnYS0xJ10sIGlkeC5faGlzdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2EtMSc6
KCdhLTEnLCBbJ2Z1bGx0ZXh0J10sIDAsIDAsIFtdLCAwKX0sIGlkeC5fY2FjaGUpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEVhcmx5LCBpZHguYWRkX3ZlcnNpb25zLCBnZW5lcmF0
ZV9mYWlsdXJlKCkpCisKKyAgICAgICAgIyBBbmQgaXQgc2hvdWxkbid0IGJlIG1vZGlmaWVkCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydhLTEnXSwgaWR4Ll9oaXN0b3J5KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHsnYS0xJzooJ2EtMScsIFsnZnVsbHRleHQnXSwgMCwgMCwgW10sIDAp
fSwgaWR4Ll9jYWNoZSkKCg==
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC05MiwyNiArOTIsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2
aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249LTEpIAogCi0gICAgZGVmIHRlc3RfY3VyX3Jl
dm5vKHNlbGYpOgotICAgICAgICB3dCA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQot
ICAgICAgICBiID0gd3QuYnJhbmNoCi0KLSAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKLSAgICAg
ICAgd3QuY29tbWl0KCdlbXB0eSBjb21taXQnKQotICAgICAgICBsZi5zaG93X2xvZyhiLCB2ZXJi
b3NlPVRydWUsIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0xKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0yLCBlbmRfcmV2aXNpb249MSkg
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hv
d19sb2csIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVu
ZF9yZXZpc2lvbj0yKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9u
TnVtYmVyLCBsZi5zaG93X2xvZywgYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRf
cmV2aXNpb249MCwgZW5kX3JldmlzaW9uPTIpIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJ
bnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249MCkgCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPS0xLCBlbmRfcmV2aXNpb249MSkg
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hv
d19sb2csIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVu
ZF9yZXZpc2lvbj0tMSkgCi0KICAgICBkZWYgdGVzdF9zaW1wbGVfbG9nKHNlbGYpOgogICAgICAg
ICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWxzCiAgICAgICAgIAoK
=== modified file bzrlib/tests/test_selftest.py // last-changed:mbp at sourcefrog.
... net-20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3NlbGZ0ZXN0LnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF9z
ZWxmdGVzdC5weQpAQCAtODQ2LDcgKzg0Niw3IEBACiAgICAgICAgIHNhbXBsZV90ZXN0LnJ1bihy
ZXN1bHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZSgKICAgICAgICAgICAgIG91dHB1
dF9zdHJlYW0uZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICJbMS05XVswLTldbXMvICAgWzEtOV1b
MC05XW1zXG4kIikKKyAgICAgICAgICAgIHIiXGQrbXMvICtcZCttc1xuJCIpCiAgICAgICAgIAog
ICAgIGRlZiB0ZXN0X19nYXRoZXJfbHNwcm9mX2luX2JlbmNobWFya3Moc2VsZik6CiAgICAgICAg
ICIiIldoZW4gX2dhdGhlcl9sc3Byb2ZfaW5fYmVuY2htYXJrcyBpcyBvbiwgYWNjdW11bGF0ZSBw
cm9maWxlIGRhdGEuCgo=
=== modified file bzrlib/tests/test_source.py // last-changed:mbp at sourcefrog.ne
... t-20061031043220-4bf93cffdc7044ed // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3NvdXJjZS5weQorKysgYnpybGliL3Rlc3RzL3Rlc3Rfc291
cmNlLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDUgQ2Fub25pY2FsIEx0
ZAorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQ2Fub25pY2FsIEx0ZAogIyAgIEF1dGhvcnM6
IFJvYmVydCBDb2xsaW5zIDxyb2JlcnQuY29sbGluc0BjYW5vbmljYWwuY29tPgogIwogIyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQpAQCAtMTE0LDYgKzExNCw5IEBACiAgICAgICAgIHlpZWxkIGJ6cl9wYXRoCiAKICAg
ICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoYnpybGliX2Rpcik6CisgICAg
ICAgICAgICBmb3IgZCBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGlmIGQuZW5kc3dpdGgoJy50
bXAnKToKKyAgICAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoZCkKICAgICAgICAgICAgIGZv
ciBmIGluIGZpbGVzOgogICAgICAgICAgICAgICAgIGlmIG5vdCBmLmVuZHN3aXRoKCcucHknKToK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE1NCw2ICsxNTcsMTQgQEAKIAogICAg
ICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiB0ZXN0X3RtcGRpcl9ub3RfaW5fc291cmNlX2Zp
bGVzKHNlbGYpOgorICAgICAgICAiIiJXaGVuIHNjYW5uaW5nIGZvciBzb3VyY2UgZmlsZXMsIHdl
IGRvbid0IGRlc2NlbmQgdGVzdCB0ZW1wZGlycyIiIgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4g
c2VsZi5nZXRfc291cmNlX2ZpbGVzKCk6CisgICAgICAgICAgICBpZiByZS5zZWFyY2gocid0ZXN0
Li4uLlwudG1wJywgZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZ2V0X3Nv
dXJjZV9maWxlKCkgcmV0dXJuZWQgZmlsZW5hbWUgJXIgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZnJvbSB3aXRoaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAlIGZpbGVuYW1lKQorCiAgICAgZGVmIHRlc3RfY29weXJpZ2h0KHNlbGYpOgog
ICAgICAgICAiIiJUZXN0IHRoYXQgYWxsIC5weSBmaWxlcyBoYXZlIGEgdmFsaWQgY29weXJpZ2h0
IHN0YXRlbWVudCIiIgogICAgICAgICAjIFRoZXNlIGFyZSBmaWxlcyB3aGljaCBjb250YWluIGEg
ZGlmZmVyZW50IGNvcHlyaWdodCBzdGF0ZW1lbnQKCg==
=== modified file bzrlib/tests/test_trace.py // last-changed:mbp at sourcefrog.net
... -20061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3RyYWNlLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF90cmFj
ZS5weQpAQCAtNzgsNyArNzgsNyBAQAogICAgIGRlZiB0ZXN0X2Zvcm1hdF9leGNlcHRpb24oc2Vs
Zik6CiAgICAgICAgICIiIlNob3J0IGZvcm1hdHRpbmcgb2YgYnpyIGV4Y2VwdGlvbnMiIiIKICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmFpc2UgZXJyb3JzLk5vdEJyYW5jaEVycm9yLCAnd2li
YmxlJworICAgICAgICAgICAgcmFpc2UgZXJyb3JzLk5vdEJyYW5jaEVycm9yKCd3aWJibGUnKQog
ICAgICAgICBleGNlcHQgZXJyb3JzLk5vdEJyYW5jaEVycm9yOgogICAgICAgICAgICAgcGFzcwog
ICAgICAgICBtc2cgPSBfZm9ybWF0X2V4Y2VwdGlvbigpCgo=
=== modified file bzrlib/tests/test_ui.py // last-changed:mbp at sourcefrog.net-20
... 061102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3VpLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF91aS5weQpA
QCAtMTg5LDYgKzE4OSwxMCBAQAogICAgICAgICAgICAgc2VsZi5hcHBseV9yZWRpcmVjdGVkKAog
ICAgICAgICAgICAgICAgIE5vbmUsIGZhY3Rvcnkuc3Rkb3V0LCBmYWN0b3J5LnN0ZG91dCwgZmFj
dG9yeS5nZXRfYm9vbGVhbiwgIndoYXQgZG8geW91IHdhbnQiKQogICAgICAgICAgICAgKQorICAg
ICAgICAjIEZJWE1FOiBUaGlzIGFzc3VtZXMgdGhlIGZhY3RvcnkncyBnb2luZyB0byBwcm9kdWNl
IGEgc3Bpbm5lci1zdHlsZQorICAgICAgICAjIHByb2dyZXNzIGJhciwgYnV0IGl0IHdvbid0IGlm
IHRoaXMgaXMgcnVuIGZyb20gYSBkdW1iIHRlcm1pbmFsIChlLmcuCisgICAgICAgICMgZnJvbSBp
bnNpZGUgZ3ZpbS4pIC0tIG1icCAyMDA2MTAxNAorICAgICAgICAjCiAgICAgICAgICMgdXNlIGEg
cmVndWxhciBleHByZXNzaW9uIHNvIHRoYXQgd2UgZG9uJ3QgZGVwZW5kIG9uIHRoZSBwYXJ0aWN1
bGFyCiAgICAgICAgICMgc2NyZWVuIHdpZHRoIC0gY291bGQgYWxzbyBzZXQgYW5kIHJlc3RvcmUg
JENPTFVNTiBpZiB0aGF0IGhhcwogICAgICAgICAjIHByaW9yaXR5IG9uIGFsbCBwbGF0Zm9ybXMs
IGJ1dCBpdCBkb2Vzbid0IGF0IHByZXNlbnQuCkBAIC0xOTgsNCArMjAyLDQgQEAKICAgICAgICAg
ICAgICJcciAgICoiIAogICAgICAgICAgICAgIlxyd2hhdCBkbyB5b3Ugd2FudFxcPyBcXFt5L25c
XF06d2hhdCBkbyB5b3Ugd2FudFxcPyBcXFt5L25cXF06IiwgCiAgICAgICAgICAgICBvdXRwdXQp
OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJkaWRuJ3QgbWF0Y2ggZmFjdG9yeSBvdXRwdXQgJXIs
ICVzIiAlIChmYWN0b3J5LCBvdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJkaWRuJ3Qg
bWF0Y2ggZmFjdG9yeSBvdXRwdXQgJXIsICVyIiAlIChmYWN0b3J5LCBvdXRwdXQpKQoK
=== modified file bzrlib/trace.py // last-changed:mbp at sourcefrog.net-2006110302
... 2332-8faa29378257aba3 // encoding:base64
LS0tIGJ6cmxpYi90cmFjZS5weQorKysgYnpybGliL3RyYWNlLnB5CkBAIC0yNzIsNyArMjcyLDcg
QEAKICAgICAgICAgcHJpbnQgPj5lcnJfZmlsZSwgImJ6cjogYnJva2VuIHBpcGUiCiAgICAgZWxp
ZiBpc2luc3RhbmNlKGV4Y19vYmplY3QsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgcHJp
bnQgPj5lcnJfZmlsZSwgImJ6cjogaW50ZXJydXB0ZWQiCi0gICAgZWxpZiBnZXRhdHRyKGV4Y19v
YmplY3QsICdpc191c2VyX2Vycm9yJywgRmFsc2UpOgorICAgIGVsaWYgbm90IGdldGF0dHIoZXhj
X29iamVjdCwgJ2ludGVybmFsX2Vycm9yJywgVHJ1ZSk6CiAgICAgICAgIHJlcG9ydF91c2VyX2Vy
cm9yKGV4Y19pbmZvLCBlcnJfZmlsZSkKICAgICBlbGlmIGlzaW5zdGFuY2UoZXhjX29iamVjdCwg
KE9TRXJyb3IsIElPRXJyb3IpKToKICAgICAgICAgIyBNaWdodCBiZSBuaWNlIHRvIGNhdGNoIGFs
bCBvZiB0aGVzZSBhbmQgc2hvdyB0aGVtIGFzIHNvbWV0aGluZyBtb3JlCgo=
=== modified file bzrlib/workingtree.py // last-changed:mbp at sourcefrog.net-2006
... 1102102019-9a5a02f485dff6f6 // encoding:base64
LS0tIGJ6cmxpYi93b3JraW5ndHJlZS5weQorKysgYnpybGliL3dvcmtpbmd0cmVlLnB5CkBAIC0x
MDUxLDggKzEwNTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBvc3V0aWxzLnJlbmFtZShzZWxm
LmFic3BhdGgoZiksIHNlbGYuYWJzcGF0aChkZXN0X3BhdGgpKQogICAgICAgICAgICAgICAgIGV4
Y2VwdCBPU0Vycm9yLCBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBCenJFcnJvcigiZmFp
bGVkIHRvIHJlbmFtZSAlciB0byAlcjogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGYsIGRlc3RfcGF0aCwgZVsxXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJyZW5hbWUgcm9sbGVkIGJhY2siXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGYsIGRlc3RfcGF0aCwgZVsxXSkpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAg
ICMgcmVzdG9yZSB0aGUgaW52ZW50b3J5IG9uIGVycm9yCiAgICAgICAgICAgICBzZWxmLl9zZXRf
aW52ZW50b3J5KG9yaWdfaW52LCBkaXJ0eT1vcmlnaW5hbF9tb2RpZmllZCkKQEAgLTExMDQsOCAr
MTEwMyw3IEBACiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgogICAgICAgICAgICAgaW52LnJl
bmFtZShmaWxlX2lkLCBmcm9tX3BhcmVudCwgZnJvbV9uYW1lKQogICAgICAgICAgICAgcmFpc2Ug
QnpyRXJyb3IoImZhaWxlZCB0byByZW5hbWUgJXIgdG8gJXI6ICVzIgotICAgICAgICAgICAgICAg
ICAgICAlIChmcm9tX2FicywgdG9fYWJzLCBlWzFdKSwKLSAgICAgICAgICAgICAgICAgICAgWyJy
ZW5hbWUgcm9sbGVkIGJhY2siXSkKKyAgICAgICAgICAgICAgICAgICAgJSAoZnJvbV9hYnMsIHRv
X2FicywgZVsxXSkpCiAgICAgICAgIHNlbGYuX3dyaXRlX2ludmVudG9yeShpbnYpCiAKICAgICBA
bmVlZHNfcmVhZF9sb2NrCgo=
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110320125
... 6-29456053953cc4ed
# revision id: jw+debian at jameswestby.net-20061103201256-29456053953cc4ed
# sha1: 6ce2b8ef68e087fdf37155c9a30666b9379a5062
# inventory sha1: 7eb2186cca23df5a88a527f2bd9d481a7332cd71
# parent ids:
# jw+debian at jameswestby.net-20061103183529-be47e5c89dac325b
# jw+debian at jameswestby.net-20061103001250-f04465614964f576
# properties:
# branch-nick: bzr.dev.logformat2
# message:
# Get the interaction of assertRaises and applyDeprecated right. Fix missing
# self for one of the applyDeprecated calls.
#
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-11-03 00:12:50.384999990 +0000
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC0zMTQsMzEgKzMxNCwyNiBAQAogCiAgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigpCiAgICAg
ICAgIHd0LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKLSAgICAgICAgc2hvd19sb2coYiwgbGYsIHZl
cmJvc2U9VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIs
IGxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dF9yZXZpc2lvbj0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmRfcmV2aXNpb249MSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRS
ZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJl
Y2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hv
d19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydF9yZXZpc2lvbj0wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5h
cHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNp
b249MCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGly
dGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0tMQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICwgZW5kX3JldmlzaW9uPTEpKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2
aXNpb249MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kX3JldmlzaW9uPS0xKSkKKyAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGly
dGVlbiwgc2hvd19sb2csIGIsIGxmLCB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0xKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNlbGYuYXBwbHlEZXByZWNhdGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwg
bGYsIHN0YXJ0X3JldmlzaW9uPTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9yZXZp
c2lvbj0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIs
IHNlbGYuYXBwbHlEZXByZWNhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvX3Ro
aXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHN0YXJ0X3JldmlzaW9uPTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJ
bnZhbGlkUmV2aXNpb25OdW1iZXIsIHNlbGYuYXBwbHlEZXByZWNhdGVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICB6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHN0YXJ0X3Jldmlz
aW9uPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj0yKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNlbGYuYXBwbHlEZXBy
ZWNhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xv
ZywgYiwgbGYsIHN0YXJ0X3JldmlzaW9uPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZF9yZXZpc2lvbj0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25O
dW1iZXIsIHNlbGYuYXBwbHlEZXByZWNhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB6
ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHN0YXJ0X3JldmlzaW9uPS0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzZWxmLmFwcGx5RGVwcmVjYXRlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCBzdGFy
dF9yZXZpc2lvbj0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249LTEp
CiAKICAgICBkZWYgdGVzdF9jdXJfcmV2bm9fZGVwcmVjYXRlZChzZWxmKToKICAgICAgICAgd3Qg
PSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKQEAgLTM0OCwzMCArMzQzLDI0IEBACiAg
ICAgICAgIHd0LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKICAgICAgICAgc2VsZi5hcHBseURlcHJl
Y2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCB2ZXJib3NlPVRydWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0x
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4s
IHNob3dfbG9nLCBiLCBsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfcmV2aXNpb249MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTEpKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3Jl
dmlzaW9uPTIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1i
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9f
dGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTIpKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBs
ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRf
cmV2aXNpb249MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kX3JldmlzaW9uPTApKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2
aXNpb25OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNh
dGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249LTEKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGVuZF9yZXZpc2lvbj0xKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5RGVwcmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93
X2xvZywgYiwgbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0X3JldmlzaW9uPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj0tMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRSZXZpc2lvbk51bWJlciwgc2VsZi5hcHBseURlcHJlY2F0ZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwgc3RhcnRfcmV2
aXNpb249MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2VsZi5hcHBseURl
cHJlY2F0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9fdGhpcnRlZW4sIHNob3df
bG9nLCBiLCBsZiwgc3RhcnRfcmV2aXNpb249MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kX3JldmlzaW9uPTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lv
bk51bWJlciwgc2VsZi5hcHBseURlcHJlY2F0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwgc3RhcnRfcmV2aXNpb249MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTIpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2VsZi5hcHBseURlcHJlY2F0ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwgc3Rh
cnRfcmV2aXNpb249MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTAp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2VsZi5h
cHBseURlcHJlY2F0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9fdGhpcnRlZW4s
IHNob3dfbG9nLCBiLCBsZiwgc3RhcnRfcmV2aXNpb249LTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZF9yZXZpc2lvbj0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlk
UmV2aXNpb25OdW1iZXIsIHNlbGYuYXBwbHlEZXByZWNhdGVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHN0YXJ0X3JldmlzaW9uPTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj0tMSkKIAogICAgIGRlZiB0
ZXN0X3NpbXBsZV9sb2dfZGVwcmVjYXRlZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2Vy
dEVxdWFscwpAQCAtMzgwLDcgKzM2OSw3IEBACiAgICAgICAgIGIgPSB3dC5icmFuY2gKIAogICAg
ICAgICBsZiA9IExvZ0NhdGNoZXIoKQotICAgICAgICBhcHBseURlcHJlY2F0ZWQoemVyb190aGly
dGVlbiwgc2hvd19sb2csIGIsIGxmKQorICAgICAgICBzZWxmLmFwcGx5RGVwcmVjYXRlZCh6ZXJv
X3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYpCiAgICAgICAgICMgbm8gZW50cmllcyB5ZXQKICAg
ICAgICAgZXEobGYubG9ncywgW10pCiAKCg==
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110300125
... 0-f04465614964f576
# revision id: jw+debian at jameswestby.net-20061103001250-f04465614964f576
# sha1: 9f832a114926e769f4274637f2933a5e34f3a257
# inventory sha1: 34fb05b7cba4158b47970b0574b3a89e47491ab0
# parent ids:
# jw+debian at jameswestby.net-20061102234025-019c72f047a1f23e
# properties:
# branch-nick: bzr.dev.logformat
# message:
# Remove some more deprecation warnings during tests, and drop the explicit
# deprecation test, as it is well covered by the use of applyDeprecated when
# testing the functionality of the old version.
#
# committer: James Westby <jw+debian at jameswestby.net>
# date: Thu 2006-11-02 23:40:25.134000063 +0000
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC05OCw3ICs5OCw3IEBACiAKICAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKICAgICAgICAg
d3QuY29tbWl0KCdlbXB0eSBjb21taXQnKQotICAgICAgICBzaG93X2xvZyhiLCBsZiwgdmVyYm9z
ZT1UcnVlLCBzdGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249MSkKKyAgICAgICAgbGYuc2hv
d19sb2coYiwgdmVyYm9zZT1UcnVlLCBzdGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249MSkK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93
X2xvZywgYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MiwgZW5k
X3JldmlzaW9uPTEpIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25O
dW1iZXIsIGxmLnNob3dfbG9nLCBiLApAQCAtMzA4LDcgKzMwOCwzOSBAQAogICAgICAgICBsb2df
Y29udGVudHMgPSBsb2dmaWxlLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsRGlmZihs
b2dfY29udGVudHMsICcxOiBMaW5lLUxvZy1Gb3JtYXR0ZS4uLiAyMDA1LTExLTIzIGFkZCBhXG4n
KQogCi0gICAgZGVmIHRlc3Rfc2hvd19sb2dfZGVwcmVjYXRlZChzZWxmKToKKyAgICBkZWYgdGVz
dF9jdXJfcmV2bm9fZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd3QgPSBzZWxmLm1ha2VfYnJh
bmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgYiA9IHd0LmJyYW5jaAorCisgICAgICAgIGxmID0g
TG9nQ2F0Y2hlcigpCisgICAgICAgIHd0LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKKyAgICAgICAg
c2hvd19sb2coYiwgbGYsIHZlcmJvc2U9VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3Jldmlz
aW9uPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGly
dGVlbiwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZp
c2lvbj0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmRfcmV2aXNpb249MikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lv
bk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQo
emVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0wLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2cs
IGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydF9yZXZpc2lvbj0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmRfcmV2aXNpb249MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFs
aWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURl
cHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0tMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgZW5kX3JldmlzaW9uPTEp
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4s
IHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPS0xKSkKKworICAgIGRlZiB0ZXN0X2N1cl9y
ZXZub19kZXByZWNhdGVkKHNlbGYpOgogICAgICAgICB3dCA9IHNlbGYubWFrZV9icmFuY2hfYW5k
X3RyZWUoJy4nKQogICAgICAgICBiID0gd3QuYnJhbmNoCiAKQEAgLTMxNiw0NiArMzQ4LDYgQEAK
ICAgICAgICAgd3QuY29tbWl0KCdlbXB0eSBjb21taXQnKQogICAgICAgICBzZWxmLmFwcGx5RGVw
cmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHZlcmJvc2U9VHJ1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9u
PTEpCi0KLSAgICBkZWYgdGVzdF9jdXJfcmV2bm9fZGVwcmVjYXRlZChzZWxmKToKLSAgICAgICAg
d3QgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKLSAgICAgICAgYiA9IHd0LmJyYW5j
aAotCi0gICAgICAgIGxmID0gTG9nQ2F0Y2hlcigpCi0gICAgICAgIHd0LmNvbW1pdCgnZW1wdHkg
Y29tbWl0JykKLSAgICAgICAgc2hvd19sb2coYiwgbGYsIHZlcmJvc2U9VHJ1ZSwgc3RhcnRfcmV2
aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFs
aWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURl
cHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwg
c2hvd19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0w
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2
aXNpb249MikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190
aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9y
ZXZpc2lvbj0tMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICwgZW5kX3JldmlzaW9uPTEpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2
aXNpb25OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNh
dGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPS0xKSkKLQot
ICAgIGRlZiB0ZXN0X2N1cl9yZXZub19kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICB3dCA9IHNl
bGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQotICAgICAgICBiID0gd3QuYnJhbmNoCi0KLSAg
ICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKLSAgICAgICAgd3QuY29tbWl0KCdlbXB0eSBjb21taXQn
KQotICAgICAgICBzaG93X2xvZyhiLCBsZiwgdmVyYm9zZT1UcnVlLCBzdGFydF9yZXZpc2lvbj0x
LCBlbmRfcmV2aXNpb249MSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlz
aW9uTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5RGVwcmVjYXRl
ZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTIsCkBAIC0zODgsNyArMzgw
LDcgQEAKICAgICAgICAgYiA9IHd0LmJyYW5jaAogCiAgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigp
Ci0gICAgICAgIHNob3dfbG9nKGIsIGxmKQorICAgICAgICBhcHBseURlcHJlY2F0ZWQoemVyb190
aGlydGVlbiwgc2hvd19sb2csIGIsIGxmKQogICAgICAgICAjIG5vIGVudHJpZXMgeWV0CiAgICAg
ICAgIGVxKGxmLmxvZ3MsIFtdKQogCgo=
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110223402
... 5-019c72f047a1f23e
# revision id: jw+debian at jameswestby.net-20061102234025-019c72f047a1f23e
# sha1: 720d5a2d0e06964416c8606ab3c2bf033e9a1301
# inventory sha1: 8c7989093307c3be755d3af62facaa53a19f29bf
# parent ids:
# jw+debian at jameswestby.net-20061102233505-dcb9bc4438a05ac9
# properties:
# branch-nick: bzr.dev.logformat
# message:
# Move show_log to a method of LogFormatter to allow more adventurous formatters.
# Update all bzr lib code to the new API, deprecate the old one, add tests for
# the new API and the deprecation.
#
# committer: James Westby <jw+debian at jameswestby.net>
# date: Thu 2006-11-02 23:35:05.224999905 +0000
=== modified file bzrlib/benchmarks/bench_log.py // encoding:base64
LS0tIGJ6cmxpYi9iZW5jaG1hcmtzL2JlbmNoX2xvZy5weQorKysgYnpybGliL2JlbmNobWFya3Mv
YmVuY2hfbG9nLnB5CkBAIC0yMCw3ICsyMCw3IEBACiBpbXBvcnQgc3lzCiAKIGZyb20gYnpybGli
LmJlbmNobWFya3MgaW1wb3J0IEJlbmNobWFyawotZnJvbSBienJsaWIubG9nIGltcG9ydCBsb2df
Zm9ybWF0dGVyLCBzaG93X2xvZworZnJvbSBienJsaWIubG9nIGltcG9ydCBsb2dfZm9ybWF0dGVy
CiBmcm9tIGJ6cmxpYi5vc3V0aWxzIGltcG9ydCBwYXRoam9pbgogZnJvbSBjU3RyaW5nSU8gaW1w
b3J0IFN0cmluZ0lPCiBmcm9tIGJ6cmxpYi50cmFuc2Zvcm0gaW1wb3J0IFRyZWVUcmFuc2Zvcm0K
QEAgLTQ2LDEzICs0NiwxMyBAQAogICAgICAgICAiIiJSdW4gbG9nIGluIGEgbWFueS1jb21taXQg
dHJlZS4iIiIgCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfbWFueV9jb21taXRfdHJlZShoYXJk
bGluaz1UcnVlKQogICAgICAgICBsZiA9IGxvZ19mb3JtYXR0ZXIoJ2xvbmcnLCB0b19maWxlPVN0
cmluZ0lPKCkpCi0gICAgICAgIHNlbGYudGltZShzaG93X2xvZywgdHJlZS5icmFuY2gsIGxmLCBk
aXJlY3Rpb249J3JldmVyc2UnKQorICAgICAgICBzZWxmLnRpbWUobGYuc2hvd19sb2csIHRyZWUu
YnJhbmNoLCBkaXJlY3Rpb249J3JldmVyc2UnKQogCiAgICAgZGVmIHRlc3RfbWVyZ2VfbG9nKHNl
bGYpOgogICAgICAgICAiIiJSdW4gbG9nIGluIGEgdHJlZSB3aXRoIG1hbnkgbWVyZ2VzIiIiCiAg
ICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfaGVhdmlseV9tZXJnZWRfdHJlZShoYXJkbGluaz1UcnVl
KQogICAgICAgICBsZiA9IGxvZ19mb3JtYXR0ZXIoJ3Nob3J0JywgdG9fZmlsZT1TdHJpbmdJTygp
KQotICAgICAgICBzZWxmLnRpbWUoc2hvd19sb2csIHRyZWUuYnJhbmNoLCBsZiwgZGlyZWN0aW9u
PSdyZXZlcnNlJykKKyAgICAgICAgc2VsZi50aW1lKGxmLnNob3dfbG9nLCB0cmVlLmJyYW5jaCwg
ZGlyZWN0aW9uPSdyZXZlcnNlJykKIAogICAgIGRlZiB0ZXN0X2xvZ19zY3JlZW5mdWwoc2VsZik6
CiAgICAgICAgICIiIlNpbXVsYXRlIGxvZyAtLWxvbmd8bGVzcyIiIgpAQCAtNjcsMTIgKzY3LDEy
IEBACiAgICAgICAgIHNlbGYuc2NyZWVuZnVsX3Rlc3Rlcignc2hvcnQnKQogCiAgICAgZGVmIHNj
cmVlbmZ1bF90ZXN0ZXIoc2VsZiwgZm9ybWF0dGVyKToKLSAgICAgICAgIiIiUnVuIHNob3dfbG9n
LCBidXQgc3RvcCBhZnRlciAyNSBsaW5lcyBhcmUgZ2VuZXJhdGVkIiIiCisgICAgICAgICIiIlJ1
biBsZi5zaG93X2xvZywgYnV0IHN0b3AgYWZ0ZXIgMjUgbGluZXMgYXJlIGdlbmVyYXRlZCIiIgog
ICAgICAgICB0cmVlID0gc2VsZi5tYWtlX21hbnlfY29tbWl0X3RyZWUoaGFyZGxpbms9VHJ1ZSkK
ICAgICAgICAgZGVmIGxvZ19zY3JlZW5mdWwoKToKICAgICAgICAgICAgIGxmID0gbG9nX2Zvcm1h
dHRlcihmb3JtYXR0ZXIsIHRvX2ZpbGU9TGluZUNvbnN1bWVyKDI1KSkKICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICBzaG93X2xvZyh0cmVlLmJyYW5jaCwgbGYsIGRpcmVjdGlvbj0n
cmV2ZXJzZScpCisgICAgICAgICAgICAgICAgbGYuc2hvd19sb2codHJlZS5icmFuY2gsIGRpcmVj
dGlvbj0ncmV2ZXJzZScpCiAgICAgICAgICAgICBleGNlcHQgTGluZXNEb25lOgogICAgICAgICAg
ICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CkBAIC05Myw0ICs5Myw0IEBACiAgICAgICAg
ICIiIid2ZXJib3NlJyBsb2cgLS0gc2hvd3MgZmlsZSBjaGFuZ2VzIiIiCiAgICAgICAgIHRyZWUg
PSBzZWxmLm1ha2VfbWFueV9jb21taXRfdHJlZShoYXJkbGluaz1UcnVlKQogICAgICAgICBsZiA9
IGxvZ19mb3JtYXR0ZXIoJ2xvbmcnLCB0b19maWxlPVN0cmluZ0lPKCkpCi0gICAgICAgIHNlbGYu
dGltZShzaG93X2xvZywgdHJlZS5icmFuY2gsIGxmLCBkaXJlY3Rpb249J3JldmVyc2UnLCB2ZXJi
b3NlPVRydWUpCisgICAgICAgIHNlbGYudGltZShsZi5zaG93X2xvZywgdHJlZS5icmFuY2gsIGRp
cmVjdGlvbj0ncmV2ZXJzZScsIHZlcmJvc2U9VHJ1ZSkKCg==
=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0xMzYyLDcg
KzEzNjIsNyBAQAogICAgICAgICAgICAgbG9uZz1GYWxzZSwKICAgICAgICAgICAgIHNob3J0PUZh
bHNlLAogICAgICAgICAgICAgbGluZT1GYWxzZSk6Ci0gICAgICAgIGZyb20gYnpybGliLmxvZyBp
bXBvcnQgbG9nX2Zvcm1hdHRlciwgc2hvd19sb2cKKyAgICAgICAgZnJvbSBienJsaWIubG9nIGlt
cG9ydCBsb2dfZm9ybWF0dGVyCiAgICAgICAgIGFzc2VydCBtZXNzYWdlIGlzIE5vbmUgb3IgaXNp
bnN0YW5jZShtZXNzYWdlLCBiYXNlc3RyaW5nKSwgXAogICAgICAgICAgICAgImludmFsaWQgbWVz
c2FnZSBhcmd1bWVudCAlciIgJSBtZXNzYWdlCiAgICAgICAgIGRpcmVjdGlvbiA9IChmb3J3YXJk
IGFuZCAnZm9yd2FyZCcpIG9yICdyZXZlcnNlJwpAQCAtMTQzOCwxNCArMTQzOCwxMyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9fZmlsZT1zZWxmLm91dGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaG93X3RpbWV6b25lPXRpbWV6b25lKQogCi0gICAgICAgIHNob3dfbG9n
KGIsCi0gICAgICAgICAgICAgICAgIGxmLAotICAgICAgICAgICAgICAgICBmaWxlX2lkLAotICAg
ICAgICAgICAgICAgICB2ZXJib3NlPXZlcmJvc2UsCi0gICAgICAgICAgICAgICAgIGRpcmVjdGlv
bj1kaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPXJldjEsCi0gICAg
ICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj1yZXYyLAotICAgICAgICAgICAgICAgICBzZWFyY2g9
bWVzc2FnZSkKKyAgICAgICAgbGYuc2hvd19sb2coYiwKKyAgICAgICAgICAgICAgICAgICAgZmls
ZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT12ZXJib3NlLAorICAgICAgICAgICAg
ICAgICAgICBkaXJlY3Rpb249ZGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICBzdGFydF9y
ZXZpc2lvbj1yZXYxLAorICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249cmV2MiwKKyAg
ICAgICAgICAgICAgICAgICAgc2VhcmNoPW1lc3NhZ2UpCiAKIAogZGVmIGdldF9sb2dfZm9ybWF0
KGxvbmc9RmFsc2UsIHNob3J0PUZhbHNlLCBsaW5lPUZhbHNlLCBkZWZhdWx0PSdsb25nJyk6CkBA
IC0yODAyLDcgKzI4MDEsNyBAQAogICAgIGRlZiBydW4oc2VsZiwgbG9jYXRpb249Tm9uZSwKICAg
ICAgICAgICAgIGRyeV9ydW49RmFsc2UsIHZlcmJvc2U9RmFsc2UsCiAgICAgICAgICAgICByZXZp
c2lvbj1Ob25lLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIGZyb20gYnpybGliLmxvZyBpbXBvcnQg
bG9nX2Zvcm1hdHRlciwgc2hvd19sb2cKKyAgICAgICAgZnJvbSBienJsaWIubG9nIGltcG9ydCBs
b2dfZm9ybWF0dGVyCiAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgZnJvbSBienJsaWIudW5j
b21taXQgaW1wb3J0IHVuY29tbWl0CiAKQEAgLTI4MzcsMTIgKzI4MzYsMTEgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvX2ZpbGU9c2VsZi5vdXRmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvd190aW1lem9uZT0nb3JpZ2luYWwnKQogCi0gICAgICAgIHNob3dfbG9nKGIs
Ci0gICAgICAgICAgICAgICAgIGxmLAotICAgICAgICAgICAgICAgICB2ZXJib3NlPUZhbHNlLAot
ICAgICAgICAgICAgICAgICBkaXJlY3Rpb249J2ZvcndhcmQnLAotICAgICAgICAgICAgICAgICBz
dGFydF9yZXZpc2lvbj1yZXZubywKLSAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPWIucmV2
bm8oKSkKKyAgICAgICAgbGYuc2hvd19sb2coYiwKKyAgICAgICAgICAgICAgICAgICAgdmVyYm9z
ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uPSdmb3J3YXJkJywKKyAgICAg
ICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249cmV2bm8sCisgICAgICAgICAgICAgICAgICAg
IGVuZF9yZXZpc2lvbj1iLnJldm5vKCkpCiAKICAgICAgICAgaWYgZHJ5X3J1bjoKICAgICAgICAg
ICAgIHByaW50ICdEcnktcnVuLCBwcmV0ZW5kaW5nIHRvIHJlbW92ZSB0aGUgYWJvdmUgcmV2aXNp
b25zLicKCg==
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTU2LDcgKzU2LDEwIEBACiAK
IGZyb20gYnpybGliIGltcG9ydCBzeW1ib2xfdmVyc2lvbmluZwogaW1wb3J0IGJ6cmxpYi5lcnJv
cnMgYXMgZXJyb3JzCi1mcm9tIGJ6cmxpYi5zeW1ib2xfdmVyc2lvbmluZyBpbXBvcnQgZGVwcmVj
YXRlZF9tZXRob2QsIHplcm9fZWxldmVuCitmcm9tIGJ6cmxpYi5zeW1ib2xfdmVyc2lvbmluZyBp
bXBvcnQgKGRlcHJlY2F0ZWRfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXByZWNhdGVkX2Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB6ZXJvX2VsZXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgemVyb190aGlydGVlbikKIGZyb20gYnpybGliLnRyYWNlIGltcG9ydCBtdXR0ZXIKIGZy
b20gYnpybGliLnRzb3J0IGltcG9ydCBtZXJnZV9zb3J0CiAKQEAgLTExNCw3ICsxMTcsNyBAQAog
ICAgICAgICByZXZubyArPSAxCiAgICAgcmV0dXJuIHJoCiAKLQorQGRlcHJlY2F0ZWRfZnVuY3Rp
b24oemVyb190aGlydGVlbikKIGRlZiBzaG93X2xvZyhicmFuY2gsCiAgICAgICAgICAgICAgbGYs
CiAgICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkPU5vbmUsCkBAIC0xMjUsMTUwICsxMjgsMTYg
QEAKICAgICAgICAgICAgICBzZWFyY2g9Tm9uZSk6CiAgICAgIiIiV3JpdGUgb3V0IGh1bWFuLXJl
YWRhYmxlIGxvZyBvZiBjb21taXRzIHRvIHRoaXMgYnJhbmNoLgogCi0gICAgbGYKLSAgICAgICAg
TG9nRm9ybWF0dGVyIG9iamVjdCB0byBzaG93IHRoZSBvdXRwdXQuCi0KLSAgICBzcGVjaWZpY19m
aWxlaWQKLSAgICAgICAgSWYgdHJ1ZSwgbGlzdCBvbmx5IHRoZSBjb21taXRzIGFmZmVjdGluZyB0
aGUgc3BlY2lmaWVkCi0gICAgICAgIGZpbGUsIHJhdGhlciB0aGFuIGFsbCBjb21taXRzLgotCi0g
ICAgdmVyYm9zZQotICAgICAgICBJZiB0cnVlIHNob3cgYWRkZWQvY2hhbmdlZC9kZWxldGVkL3Jl
bmFtZWQgZmlsZXMuCi0KLSAgICBkaXJlY3Rpb24KLSAgICAgICAgJ3JldmVyc2UnIChkZWZhdWx0
KSBpcyBsYXRlc3QgdG8gZWFybGllc3Q7Ci0gICAgICAgICdmb3J3YXJkJyBpcyBlYXJsaWVzdCB0
byBsYXRlc3QuCi0KLSAgICBzdGFydF9yZXZpc2lvbgotICAgICAgICBJZiBub3QgTm9uZSwgb25s
eSBzaG93IHJldmlzaW9ucyA+PSBzdGFydF9yZXZpc2lvbgotCi0gICAgZW5kX3JldmlzaW9uCi0g
ICAgICAgIElmIG5vdCBOb25lLCBvbmx5IHNob3cgcmV2aXNpb25zIDw9IGVuZF9yZXZpc2lvbgor
ICAgIERFUFJFQ0FURUQ6IHVzZSBsZi5zaG93X2xvZygpIGluc3RlYWQuCiAgICAgIiIiCi0gICAg
YnJhbmNoLmxvY2tfcmVhZCgpCi0gICAgdHJ5OgotICAgICAgICBfc2hvd19sb2coYnJhbmNoLCBs
Ziwgc3BlY2lmaWNfZmlsZWlkLCB2ZXJib3NlLCBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAg
ICBzdGFydF9yZXZpc2lvbiwgZW5kX3JldmlzaW9uLCBzZWFyY2gpCi0gICAgZmluYWxseToKLSAg
ICAgICAgYnJhbmNoLnVubG9jaygpCi0gICAgCi1kZWYgX3Nob3dfbG9nKGJyYW5jaCwKLSAgICAg
ICAgICAgICBsZiwKLSAgICAgICAgICAgICBzcGVjaWZpY19maWxlaWQ9Tm9uZSwKLSAgICAgICAg
ICAgICB2ZXJib3NlPUZhbHNlLAotICAgICAgICAgICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScsCi0g
ICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249Tm9uZSwKLSAgICAgICAgICAgICBlbmRfcmV2aXNp
b249Tm9uZSwKLSAgICAgICAgICAgICBzZWFyY2g9Tm9uZSk6Ci0gICAgIiIiV29ya2VyIGZ1bmN0
aW9uIGZvciBzaG93X2xvZyAtIHNlZSBzaG93X2xvZy4iIiIKLSAgICBmcm9tIGJ6cmxpYi5vc3V0
aWxzIGltcG9ydCBmb3JtYXRfZGF0ZQotICAgIGZyb20gYnpybGliLmVycm9ycyBpbXBvcnQgQnpy
Q2hlY2tFcnJvcgotICAgIAotICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KLQotICAgIGlm
IG5vdCBpc2luc3RhbmNlKGxmLCBMb2dGb3JtYXR0ZXIpOgotICAgICAgICB3YXJuKCJub3QgYSBM
b2dGb3JtYXR0ZXIgaW5zdGFuY2U6ICVyIiAlIGxmKQotCi0gICAgaWYgc3BlY2lmaWNfZmlsZWlk
OgotICAgICAgICBtdXR0ZXIoJ2dldCBsb2cgZm9yIGZpbGVfaWQgJXInLCBzcGVjaWZpY19maWxl
aWQpCi0KLSAgICBpZiBzZWFyY2ggaXMgbm90IE5vbmU6Ci0gICAgICAgIGltcG9ydCByZQotICAg
ICAgICBzZWFyY2hSRSA9IHJlLmNvbXBpbGUoc2VhcmNoLCByZS5JR05PUkVDQVNFKQotICAgIGVs
c2U6Ci0gICAgICAgIHNlYXJjaFJFID0gTm9uZQotCi0gICAgd2hpY2hfcmV2cyA9IF9lbnVtZXJh
dGVfaGlzdG9yeShicmFuY2gpCi0gICAgCi0gICAgaWYgc3RhcnRfcmV2aXNpb24gaXMgTm9uZToK
LSAgICAgICAgc3RhcnRfcmV2aXNpb24gPSAxCi0gICAgZWxzZToKLSAgICAgICAgYnJhbmNoLmNo
ZWNrX3JlYWxfcmV2bm8oc3RhcnRfcmV2aXNpb24pCi0gICAgCi0gICAgaWYgZW5kX3JldmlzaW9u
IGlzIE5vbmU6Ci0gICAgICAgIGVuZF9yZXZpc2lvbiA9IGxlbih3aGljaF9yZXZzKQotICAgIGVs
c2U6Ci0gICAgICAgIGJyYW5jaC5jaGVja19yZWFsX3Jldm5vKGVuZF9yZXZpc2lvbikKLQotICAg
ICMgbGlzdCBpbmRleGVzIGFyZSAwLWJhc2VkOyByZXZpc2lvbnMgYXJlIDEtYmFzZWQKLSAgICBj
dXRfcmV2cyA9IHdoaWNoX3JldnNbKHN0YXJ0X3JldmlzaW9uLTEpOihlbmRfcmV2aXNpb24pXQot
ICAgIGlmIG5vdCBjdXRfcmV2czoKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIGNvbnZlcnQgdGhl
IHJldmlzaW9uIGhpc3RvcnkgdG8gYSBkaWN0aW9uYXJ5OgotICAgIHJldl9ub3MgPSBkaWN0KChr
LCB2KSBmb3IgdiwgayBpbiBjdXRfcmV2cykKLQotICAgICMgb3ZlcnJpZGUgdGhlIG1haW5saW5l
IHRvIGxvb2sgbGlrZSB0aGUgcmV2aXNpb24gaGlzdG9yeS4KLSAgICBtYWlubGluZV9yZXZzID0g
W3JldmlzaW9uX2lkIGZvciBpbmRleCwgcmV2aXNpb25faWQgaW4gY3V0X3JldnNdCi0gICAgaWYg
Y3V0X3JldnNbMF1bMF0gPT0gMToKLSAgICAgICAgbWFpbmxpbmVfcmV2cy5pbnNlcnQoMCwgTm9u
ZSkKLSAgICBlbHNlOgotICAgICAgICBtYWlubGluZV9yZXZzLmluc2VydCgwLCB3aGljaF9yZXZz
W3N0YXJ0X3JldmlzaW9uLTJdWzFdKQotICAgICMgaG93IHNob3VsZCB3ZSBzaG93IG1lcmdlZCBy
ZXZpc2lvbnMgPwotICAgICMgb2xkIGFwaTogc2hvd19tZXJnZS4gTmV3IGFwaTogc2hvd19tZXJn
ZV9yZXZubwotICAgIHNob3dfbWVyZ2VfcmV2bm8gPSBnZXRhdHRyKGxmLCAnc2hvd19tZXJnZV9y
ZXZubycsIE5vbmUpCi0gICAgc2hvd19tZXJnZSA9IGdldGF0dHIobGYsICdzaG93X21lcmdlJywg
Tm9uZSkKLSAgICBpZiBzaG93X21lcmdlIGlzIE5vbmUgYW5kIHNob3dfbWVyZ2VfcmV2bm8gaXMg
Tm9uZToKLSAgICAgICAgIyBubyBtZXJnZWQtcmV2bm8gc3VwcG9ydAotICAgICAgICBpbmNsdWRl
X21lcmdlcyA9IEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgaW5jbHVkZV9tZXJnZXMgPSBUcnVl
Ci0gICAgaWYgc2hvd19tZXJnZSBpcyBub3QgTm9uZSBhbmQgc2hvd19tZXJnZV9yZXZubyBpcyBO
b25lOgotICAgICAgICAjIHRlbGwgZGV2ZWxvcGVycyB0byB1cGRhdGUgdGhlaXIgY29kZQotICAg
ICAgICBzeW1ib2xfdmVyc2lvbmluZy53YXJuKCdMb2dGb3JtYXR0ZXJzIHNob3VsZCBwcm92aWRl
IHNob3dfbWVyZ2VfcmV2bm8gJwotICAgICAgICAgICAgJ2luc3RlYWQgb2Ygc2hvd19tZXJnZSBz
aW5jZSBienIgMC4xMS4nLAotICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xl
dmVsPTMpCi0gICAgdmlld19yZXZpc2lvbnMgPSBsaXN0KGdldF92aWV3X3JldmlzaW9ucyhtYWlu
bGluZV9yZXZzLCByZXZfbm9zLCBicmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRp
cmVjdGlvbiwgaW5jbHVkZV9tZXJnZXM9aW5jbHVkZV9tZXJnZXMpKQotCi0gICAgZGVmIGl0ZXJf
cmV2aXNpb25zKCk6Ci0gICAgICAgICMgciA9IHJldmlzaW9uLCBuID0gcmV2bm8sIGQgPSBtZXJn
ZSBkZXB0aAotICAgICAgICByZXZpc2lvbl9pZHMgPSBbciBmb3IgciwgbiwgZCBpbiB2aWV3X3Jl
dmlzaW9uc10KLSAgICAgICAgemVyb3MgPSBzZXQociBmb3IgciwgbiwgZCBpbiB2aWV3X3Jldmlz
aW9ucyBpZiBkID09IDApCi0gICAgICAgIG51bSA9IDkKLSAgICAgICAgcmVwb3NpdG9yeSA9IGJy
YW5jaC5yZXBvc2l0b3J5Ci0gICAgICAgIHdoaWxlIHJldmlzaW9uX2lkczoKLSAgICAgICAgICAg
IGN1cl9kZWx0YXMgPSB7fQotICAgICAgICAgICAgcmV2aXNpb25zID0gcmVwb3NpdG9yeS5nZXRf
cmV2aXNpb25zKHJldmlzaW9uX2lkc1s6bnVtXSkKLSAgICAgICAgICAgIGlmIHZlcmJvc2Ugb3Ig
c3BlY2lmaWNfZmlsZWlkOgotICAgICAgICAgICAgICAgIGRlbHRhX3JldmlzaW9ucyA9IFtyIGZv
ciByIGluIHJldmlzaW9ucyBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
LnJldmlzaW9uX2lkIGluIHplcm9zXQotICAgICAgICAgICAgICAgIGRlbHRhcyA9IHJlcG9zaXRv
cnkuZ2V0X2RlbHRhc19mb3JfcmV2aXNpb25zKGRlbHRhX3JldmlzaW9ucykKLSAgICAgICAgICAg
ICAgICBjdXJfZGVsdGFzID0gZGljdChpemlwKChyLnJldmlzaW9uX2lkIGZvciByIGluIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhX3JldmlzaW9ucyksIGRl
bHRhcykpCi0gICAgICAgICAgICBmb3IgcmV2aXNpb24gaW4gcmV2aXNpb25zOgotICAgICAgICAg
ICAgICAgICMgVGhlIGRlbHRhIHZhbHVlIHdpbGwgYmUgTm9uZSB1bmxlc3MKLSAgICAgICAgICAg
ICAgICAjIDEuIHZlcmJvc2Ugb3Igc3BlY2lmaWNfZmlsZWlkIGlzIHNwZWNpZmllZCwgYW5kCi0g
ICAgICAgICAgICAgICAgIyAyLiB0aGUgcmV2aXNpb24gaXMgYSBtYWlubGluZSByZXZpc2lvbgot
ICAgICAgICAgICAgICAgIHlpZWxkIHJldmlzaW9uLCBjdXJfZGVsdGFzLmdldChyZXZpc2lvbi5y
ZXZpc2lvbl9pZCkKLSAgICAgICAgICAgIHJldmlzaW9uX2lkcyAgPSByZXZpc2lvbl9pZHNbbnVt
Ol0KLSAgICAgICAgICAgIG51bSA9IGludChudW0gKiAxLjUpCi0gICAgICAgICAgICAKLSAgICAj
IG5vdyB3ZSBqdXN0IHByaW50IGFsbCB0aGUgcmV2aXNpb25zCi0gICAgZm9yICgocmV2X2lkLCBy
ZXZubywgbWVyZ2VfZGVwdGgpLCAocmV2LCBkZWx0YSkpIGluIFwKLSAgICAgICAgIGl6aXAodmll
d19yZXZpc2lvbnMsIGl0ZXJfcmV2aXNpb25zKCkpOgotCi0gICAgICAgIGlmIHNlYXJjaFJFOgot
ICAgICAgICAgICAgaWYgbm90IHNlYXJjaFJFLnNlYXJjaChyZXYubWVzc2FnZSk6Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBtZXJnZV9kZXB0aCA9PSAwOgotICAgICAg
ICAgICAgIyBhIG1haW5saW5lIHJldmlzaW9uLgotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgc3BlY2lmaWNfZmlsZWlkOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkZWx0YS50b3Vj
aGVzX2ZpbGVfaWQoc3BlY2lmaWNfZmlsZWlkKToKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAKLSAgICAgICAgICAgIGlmIG5vdCB2ZXJib3NlOgotICAgICAgICAgICAgICAgICMg
YWx0aG91Z2ggd2UgY2FsY3VsYXRlZCBpdCwgdGhyb3cgaXQgYXdheSB3aXRob3V0IGRpc3BsYXkK
LSAgICAgICAgICAgICAgICBkZWx0YSA9IE5vbmUKLQotICAgICAgICAgICAgbGYuc2hvdyhyZXZu
bywgcmV2LCBkZWx0YSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNob3dfbWVyZ2Vf
cmV2bm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsZi5zaG93X21lcmdlKHJldiwgbWVyZ2Vf
ZGVwdGgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxmLnNob3dfbWVyZ2Vf
cmV2bm8ocmV2LCBtZXJnZV9kZXB0aCwgcmV2bm8pCisgICAgbGYuc2hvd19sb2coYnJhbmNoLAor
ICAgICAgICAgICAgICAgIHNwZWNpZmljX2ZpbGVpZD1zcGVjaWZpY19maWxlaWQsCisgICAgICAg
ICAgICAgICAgdmVyYm9zZT12ZXJib3NlLAorICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1kaXJl
Y3Rpb24sCisgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249c3RhcnRfcmV2aXNpb24sCisg
ICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPWVuZF9yZXZpc2lvbiwKKyAgICAgICAgICAgICAg
ICBzZWFyY2g9c2VhcmNoKQorICAgIAogCiAKIGRlZiBnZXRfdmlld19yZXZpc2lvbnMobWFpbmxp
bmVfcmV2cywgcmV2X25vcywgYnJhbmNoLCBkaXJlY3Rpb24sCkBAIC0zMzksOCArMjA4LDE1NyBA
QAogCiAgICAgZGVmIHNob3J0X2NvbW1pdHRlcihzZWxmLCByZXYpOgogICAgICAgICByZXR1cm4g
cmUuc3ViKCc8LipALio+JywgJycsIHJldi5jb21taXR0ZXIpLnN0cmlwKCcgJykKLSAgICAKLSAg
ICAKKworCisgICAgZGVmIHNob3dfbG9nKHNlbGYsCisgICAgICAgICAgICAgICAgIGJyYW5jaCwK
KyAgICAgICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkPU5vbmUsCisgICAgICAgICAgICAgICAg
IHZlcmJvc2U9RmFsc2UsCisgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScsCisg
ICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgICAgIGVu
ZF9yZXZpc2lvbj1Ob25lLAorICAgICAgICAgICAgICAgICBzZWFyY2g9Tm9uZSk6CisgICAgICAg
ICIiIldyaXRlIG91dCBodW1hbi1yZWFkYWJsZSBsb2cgb2YgY29tbWl0cyB0byB0aGlzIGJyYW5j
aC4KKworICAgICAgICBzcGVjaWZpY19maWxlaWQKKyAgICAgICAgICAgIElmIHRydWUsIGxpc3Qg
b25seSB0aGUgY29tbWl0cyBhZmZlY3RpbmcgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgZmls
ZSwgcmF0aGVyIHRoYW4gYWxsIGNvbW1pdHMuCisKKyAgICAgICAgdmVyYm9zZQorICAgICAgICAg
ICAgSWYgdHJ1ZSBzaG93IGFkZGVkL2NoYW5nZWQvZGVsZXRlZC9yZW5hbWVkIGZpbGVzLgorCisg
ICAgICAgIGRpcmVjdGlvbgorICAgICAgICAgICAgJ3JldmVyc2UnIChkZWZhdWx0KSBpcyBsYXRl
c3QgdG8gZWFybGllc3Q7CisgICAgICAgICAgICAnZm9yd2FyZCcgaXMgZWFybGllc3QgdG8gbGF0
ZXN0LgorCisgICAgICAgIHN0YXJ0X3JldmlzaW9uCisgICAgICAgICAgICBJZiBub3QgTm9uZSwg
b25seSBzaG93IHJldmlzaW9ucyA+PSBzdGFydF9yZXZpc2lvbgorCisgICAgICAgIGVuZF9yZXZp
c2lvbgorICAgICAgICAgICAgSWYgbm90IE5vbmUsIG9ubHkgc2hvdyByZXZpc2lvbnMgPD0gZW5k
X3JldmlzaW9uCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAorICAg
ICAgICBzZWxmLnNwZWNpZmljX2ZpbGVpZCA9IHNwZWNpZmljX2ZpbGVpZAorICAgICAgICBzZWxm
LnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYuZGlyZWN0aW9uID0gZGlyZWN0aW9uCisg
ICAgICAgIHNlbGYuc3RhcnRfcmV2aXNpb24gPSBzdGFydF9yZXZpc2lvbgorICAgICAgICBzZWxm
LmVuZF9yZXZpc2lvbiA9IGVuZF9yZXZpc2lvbgorICAgICAgICBzZWxmLnNlYXJjaCA9IHNlYXJj
aAorICAgICAgICBicmFuY2gubG9ja19yZWFkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
c2VsZi5fc2hvd19sb2coKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnJhbmNoLnVu
bG9jaygpCisKKyAgICBkZWYgX3Nob3dfbG9nKHNlbGYpOgorICAgICAgICAiIiJXb3JrZXIgZnVu
Y3Rpb24gZm9yIHNob3dfbG9nIC0gc2VlIHNob3dfbG9nLiIiIgorICAgICAgICBmcm9tIGJ6cmxp
Yi5vc3V0aWxzIGltcG9ydCBmb3JtYXRfZGF0ZQorICAgICAgICBmcm9tIGJ6cmxpYi5lcnJvcnMg
aW1wb3J0IEJ6ckNoZWNrRXJyb3IKKyAgICAgICAgCisgICAgICAgIGZyb20gd2FybmluZ3MgaW1w
b3J0IHdhcm4KKworICAgICAgICBpZiBzZWxmLnNwZWNpZmljX2ZpbGVpZDoKKyAgICAgICAgICAg
IG11dHRlcignZ2V0IGxvZyBmb3IgZmlsZV9pZCAlcicsIHNlbGYuc3BlY2lmaWNfZmlsZWlkKQor
CisgICAgICAgIGlmIHNlbGYuc2VhcmNoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaW1wb3J0
IHJlCisgICAgICAgICAgICBzZWFyY2hSRSA9IHJlLmNvbXBpbGUoc2VsZi5zZWFyY2gsIHJlLklH
Tk9SRUNBU0UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWFyY2hSRSA9IE5vbmUKKwor
ICAgICAgICB3aGljaF9yZXZzID0gX2VudW1lcmF0ZV9oaXN0b3J5KHNlbGYuYnJhbmNoKQorICAg
ICAgICAKKyAgICAgICAgaWYgc2VsZi5zdGFydF9yZXZpc2lvbiBpcyBOb25lOgorICAgICAgICAg
ICAgc2VsZi5zdGFydF9yZXZpc2lvbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYuYnJhbmNoLmNoZWNrX3JlYWxfcmV2bm8oc2VsZi5zdGFydF9yZXZpc2lvbikKKyAgICAgICAg
CisgICAgICAgIGlmIHNlbGYuZW5kX3JldmlzaW9uIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm
LmVuZF9yZXZpc2lvbiA9IGxlbih3aGljaF9yZXZzKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5icmFuY2guY2hlY2tfcmVhbF9yZXZubyhzZWxmLmVuZF9yZXZpc2lvbikKKworICAg
ICAgICAjIGxpc3QgaW5kZXhlcyBhcmUgMC1iYXNlZDsgcmV2aXNpb25zIGFyZSAxLWJhc2VkCisg
ICAgICAgIGN1dF9yZXZzID0gd2hpY2hfcmV2c1soc2VsZi5zdGFydF9yZXZpc2lvbi0xKTooc2Vs
Zi5lbmRfcmV2aXNpb24pXQorICAgICAgICBpZiBub3QgY3V0X3JldnM6CisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICAjIGNvbnZlcnQgdGhlIHJldmlzaW9uIGhpc3RvcnkgdG8gYSBkaWN0
aW9uYXJ5OgorICAgICAgICByZXZfbm9zID0gZGljdCgoaywgdikgZm9yIHYsIGsgaW4gY3V0X3Jl
dnMpCisKKyAgICAgICAgIyBvdmVycmlkZSB0aGUgbWFpbmxpbmUgdG8gbG9vayBsaWtlIHRoZSBy
ZXZpc2lvbiBoaXN0b3J5LgorICAgICAgICBtYWlubGluZV9yZXZzID0gW3JldmlzaW9uX2lkIGZv
ciBpbmRleCwgcmV2aXNpb25faWQgaW4gY3V0X3JldnNdCisgICAgICAgIGlmIGN1dF9yZXZzWzBd
WzBdID09IDE6CisgICAgICAgICAgICBtYWlubGluZV9yZXZzLmluc2VydCgwLCBOb25lKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgbWFpbmxpbmVfcmV2cy5pbnNlcnQoMCwgd2hpY2hfcmV2
c1tzZWxmLnN0YXJ0X3JldmlzaW9uLTJdWzFdKQorICAgICAgICAjIGhvdyBzaG91bGQgd2Ugc2hv
dyBtZXJnZWQgcmV2aXNpb25zID8KKyAgICAgICAgIyBvbGQgYXBpOiBzaG93X21lcmdlLiBOZXcg
YXBpOiBzaG93X21lcmdlX3Jldm5vCisgICAgICAgIHNob3dfbWVyZ2VfcmV2bm8gPSBnZXRhdHRy
KHNlbGYsICdzaG93X21lcmdlX3Jldm5vJywgTm9uZSkKKyAgICAgICAgc2hvd19tZXJnZSA9IGdl
dGF0dHIoc2VsZiwgJ3Nob3dfbWVyZ2UnLCBOb25lKQorICAgICAgICBpZiBzaG93X21lcmdlIGlz
IE5vbmUgYW5kIHNob3dfbWVyZ2VfcmV2bm8gaXMgTm9uZToKKyAgICAgICAgICAgICMgbm8gbWVy
Z2VkLXJldm5vIHN1cHBvcnQKKyAgICAgICAgICAgIGluY2x1ZGVfbWVyZ2VzID0gRmFsc2UKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGluY2x1ZGVfbWVyZ2VzID0gVHJ1ZQorICAgICAgICBp
ZiBzaG93X21lcmdlIGlzIG5vdCBOb25lIGFuZCBzaG93X21lcmdlX3Jldm5vIGlzIE5vbmU6Cisg
ICAgICAgICAgICAjIHRlbGwgZGV2ZWxvcGVycyB0byB1cGRhdGUgdGhlaXIgY29kZQorICAgICAg
ICAgICAgc3ltYm9sX3ZlcnNpb25pbmcud2FybignTG9nRm9ybWF0dGVycyBzaG91bGQgcHJvdmlk
ZSAnCisgICAgICAgICAgICAgICAgJ3Nob3dfbWVyZ2VfcmV2bm8gaW5zdGVhZCBvZiBzaG93X21l
cmdlIHNpbmNlIGJ6ciAwLjExLicsCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5n
LCBzdGFja2xldmVsPTMpCisgICAgICAgIHZpZXdfcmV2aXNpb25zID0gbGlzdChnZXRfdmlld19y
ZXZpc2lvbnMobWFpbmxpbmVfcmV2cywgcmV2X25vcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuYnJhbmNoLCBzZWxmLmRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfbWVyZ2VzPWluY2x1ZGVfbWVyZ2VzKSkKKworICAgICAgICBkZWYg
aXRlcl9yZXZpc2lvbnMoKToKKyAgICAgICAgICAgICMgciA9IHJldmlzaW9uLCBuID0gcmV2bm8s
IGQgPSBtZXJnZSBkZXB0aAorICAgICAgICAgICAgcmV2aXNpb25faWRzID0gW3IgZm9yIHIsIG4s
IGQgaW4gdmlld19yZXZpc2lvbnNdCisgICAgICAgICAgICB6ZXJvcyA9IHNldChyIGZvciByLCBu
LCBkIGluIHZpZXdfcmV2aXNpb25zIGlmIGQgPT0gMCkKKyAgICAgICAgICAgIG51bSA9IDkKKyAg
ICAgICAgICAgIHJlcG9zaXRvcnkgPSBzZWxmLmJyYW5jaC5yZXBvc2l0b3J5CisgICAgICAgICAg
ICB3aGlsZSByZXZpc2lvbl9pZHM6CisgICAgICAgICAgICAgICAgY3VyX2RlbHRhcyA9IHt9Cisg
ICAgICAgICAgICAgICAgcmV2aXNpb25zID0gcmVwb3NpdG9yeS5nZXRfcmV2aXNpb25zKHJldmlz
aW9uX2lkc1s6bnVtXSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2Ugb3Igc2VsZi5z
cGVjaWZpY19maWxlaWQ6CisgICAgICAgICAgICAgICAgICAgIGRlbHRhX3JldmlzaW9ucyA9IFty
IGZvciByIGluIHJldmlzaW9ucyBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgci5yZXZpc2lvbl9pZCBpbiB6ZXJvc10KKyAgICAgICAgICAgICAgICAgICAgZGVsdGFz
ID0gcmVwb3NpdG9yeS5nZXRfZGVsdGFzX2Zvcl9yZXZpc2lvbnMoZGVsdGFfcmV2aXNpb25zKQor
ICAgICAgICAgICAgICAgICAgICBjdXJfZGVsdGFzID0gZGljdChpemlwKChyLnJldmlzaW9uX2lk
IGZvciByIGluIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWx0YV9yZXZpc2lvbnMpLCBkZWx0YXMpKQorICAgICAgICAgICAgICAgIGZvciByZXZpc2lvbiBp
biByZXZpc2lvbnM6CisgICAgICAgICAgICAgICAgICAgICMgVGhlIGRlbHRhIHZhbHVlIHdpbGwg
YmUgTm9uZSB1bmxlc3MKKyAgICAgICAgICAgICAgICAgICAgIyAxLiB2ZXJib3NlIG9yIHNwZWNp
ZmljX2ZpbGVpZCBpcyBzcGVjaWZpZWQsIGFuZAorICAgICAgICAgICAgICAgICAgICAjIDIuIHRo
ZSByZXZpc2lvbiBpcyBhIG1haW5saW5lIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgIHlp
ZWxkIHJldmlzaW9uLCBjdXJfZGVsdGFzLmdldChyZXZpc2lvbi5yZXZpc2lvbl9pZCkKKyAgICAg
ICAgICAgICAgICByZXZpc2lvbl9pZHMgID0gcmV2aXNpb25faWRzW251bTpdCisgICAgICAgICAg
ICAgICAgbnVtID0gaW50KG51bSAqIDEuNSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgIyBu
b3cgd2UganVzdCBwcmludCBhbGwgdGhlIHJldmlzaW9ucworICAgICAgICBmb3IgKChyZXZfaWQs
IHJldm5vLCBtZXJnZV9kZXB0aCksIChyZXYsIGRlbHRhKSkgaW4gXAorICAgICAgICAgICAgIGl6
aXAodmlld19yZXZpc2lvbnMsIGl0ZXJfcmV2aXNpb25zKCkpOgorCisgICAgICAgICAgICBpZiBz
ZWFyY2hSRToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VhcmNoUkUuc2VhcmNoKHJldi5tZXNz
YWdlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgbWVy
Z2VfZGVwdGggPT0gMDoKKyAgICAgICAgICAgICAgICAjIGEgbWFpbmxpbmUgcmV2aXNpb24uCisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3BlY2lmaWNfZmls
ZWlkOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGVsdGEudG91Y2hlc19maWxlX2lkKHNl
bGYuc3BlY2lmaWNfZmlsZWlkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZlcmJvc2U6CisgICAgICAgICAg
ICAgICAgICAgICMgYWx0aG91Z2ggd2UgY2FsY3VsYXRlZCBpdCwgdGhyb3cgaXQgYXdheSB3aXRo
b3V0IGRpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgZGVsdGEgPSBOb25lCisKKyAgICAgICAg
ICAgICAgICBzZWxmLnNob3cocmV2bm8sIHJldiwgZGVsdGEpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIGlmIHNob3dfbWVyZ2VfcmV2bm8gaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5zaG93X21lcmdlKHJldiwgbWVyZ2VfZGVwdGgpCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93X21lcmdlX3Jldm5vKHJldiwg
bWVyZ2VfZGVwdGgsIHJldm5vKQorCiBjbGFzcyBMb25nTG9nRm9ybWF0dGVyKExvZ0Zvcm1hdHRl
cik6CiAgICAgZGVmIHNob3coc2VsZiwgcmV2bm8sIHJldiwgZGVsdGEpOgogICAgICAgICByZXR1
cm4gc2VsZi5fc2hvd19oZWxwZXIocmV2bm89cmV2bm8sIHJldj1yZXYsIGRlbHRhPWRlbHRhKQoK
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC0yOCw2ICsyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lTG9nRm9ybWF0
dGVyKQogZnJvbSBienJsaWIuYnJhbmNoIGltcG9ydCBCcmFuY2gKIGZyb20gYnpybGliLmVycm9y
cyBpbXBvcnQgSW52YWxpZFJldmlzaW9uTnVtYmVyCitmcm9tIGJ6cmxpYi5zeW1ib2xfdmVyc2lv
bmluZyBpbXBvcnQgemVyb190aGlydGVlbgogCiAKIGNsYXNzIF9Mb2dFbnRyeShvYmplY3QpOgpA
QCAtNzgsMTcgKzc5LDE3IEBACiAgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigpCiAgICAgICAgIHd0
LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKICAgICAgICAgc2hvd19sb2coYiwgbGYsIHZlcmJvc2U9
VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2hvd19sb2csIGIsIGxmLAorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0yLCBlbmRfcmV2aXNp
b249MSkgCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwg
c2hvd19sb2csIGIsIGxmLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNp
b25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249MikgCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRSZXZpc2lvbk51bWJlciwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0wLCBlbmRfcmV2aXNpb249MikgCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2hvd19sb2cs
IGIsIGxmLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIs
IGxmLnNob3dfbG9nLCBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lv
bj0xLCBlbmRfcmV2aXNpb249MCkgCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRS
ZXZpc2lvbk51bWJlciwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0tMSwgZW5kX3JldmlzaW9uPTEpIAotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNob3dfbG9nLCBiLCBsZiwK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93
X2xvZywgYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwgZW5k
X3JldmlzaW9uPS0xKSAKIAogICAgIGRlZiB0ZXN0X2N1cl9yZXZubyhzZWxmKToKQEAgLTk4LDE3
ICs5OSwxNyBAQAogICAgICAgICBsZiA9IExvZ0NhdGNoZXIoKQogICAgICAgICB3dC5jb21taXQo
J2VtcHR5IGNvbW1pdCcpCiAgICAgICAgIHNob3dfbG9nKGIsIGxmLCB2ZXJib3NlPVRydWUsIHN0
YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93X2xvZywgYiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MiwgZW5kX3JldmlzaW9uPTEpIAot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNob3dfbG9n
LCBiLCBsZiwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVy
LCBsZi5zaG93X2xvZywgYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNp
b249MSwgZW5kX3JldmlzaW9uPTIpIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlk
UmV2aXNpb25OdW1iZXIsIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93X2xvZywgYiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MCwgZW5kX3JldmlzaW9uPTIpIAotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIHNob3dfbG9nLCBiLCBsZiwK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93
X2xvZywgYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwgZW5k
X3JldmlzaW9uPTApIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25O
dW1iZXIsIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxp
ZFJldmlzaW9uTnVtYmVyLCBsZi5zaG93X2xvZywgYiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRfcmV2aXNpb249LTEsIGVuZF9yZXZpc2lvbj0xKSAKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lv
bj0tMSkgCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfbG9nKHNlbGYpOgpAQCAtMTE4LDEzICsxMTks
MTMgQEAKICAgICAgICAgYiA9IHd0LmJyYW5jaAogCiAgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigp
Ci0gICAgICAgIHNob3dfbG9nKGIsIGxmKQorICAgICAgICBsZi5zaG93X2xvZyhiKQogICAgICAg
ICAjIG5vIGVudHJpZXMgeWV0CiAgICAgICAgIGVxKGxmLmxvZ3MsIFtdKQogCiAgICAgICAgIHd0
LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKICAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKLSAgICAg
ICAgc2hvd19sb2coYiwgbGYsIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgbGYuc2hvd19sb2coYiwg
dmVyYm9zZT1UcnVlKQogICAgICAgICBlcShsZW4obGYubG9ncyksIDEpCiAgICAgICAgIGVxKGxm
LmxvZ3NbMF0ucmV2bm8sICcxJykKICAgICAgICAgZXEobGYubG9nc1swXS5yZXYubWVzc2FnZSwg
J2VtcHR5IGNvbW1pdCcpCkBAIC0xMzgsMTQgKzEzOSwxNSBAQAogCiAgICAgICAgIGxmID0gU3Ry
aW5nSU8oKQogICAgICAgICAjIGxvZyB1c2luZyByZWd1bGFyIHRoaW5nCi0gICAgICAgIHNob3df
bG9nKGIsIExvbmdMb2dGb3JtYXR0ZXIobGYpKQorICAgICAgICBmb3JtYXR0ZXIgPSBMb25nTG9n
Rm9ybWF0dGVyKGxmKQorICAgICAgICBmb3JtYXR0ZXIuc2hvd19sb2coYikKICAgICAgICAgbGYu
c2VlaygwKQogICAgICAgICBmb3IgbCBpbiBsZi5yZWFkbGluZXMoKToKICAgICAgICAgICAgIHNl
bGYubG9nKGwpCiAKICAgICAgICAgIyBnZXQgbG9nIGFzIGRhdGEgc3RydWN0dXJlCiAgICAgICAg
IGxmID0gTG9nQ2F0Y2hlcigpCi0gICAgICAgIHNob3dfbG9nKGIsIGxmLCB2ZXJib3NlPVRydWUp
CisgICAgICAgIGxmLnNob3dfbG9nKGIsIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAgZXEobGVuKGxm
LmxvZ3MpLCAyKQogICAgICAgICBzZWxmLmxvZygnbG9nIGVudHJpZXM6JykKICAgICAgICAgZm9y
IGxvZ2VudHJ5IGluIGxmLmxvZ3M6CkBAIC0xNjQsNyArMTY2LDcgQEAKICAgICAgICAgc2VsZi5s
b2coIm9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlOiAlciIsIG1zZykKICAgICAgICAgd3QuY29tbWl0
KG1zZykKICAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKLSAgICAgICAgc2hvd19sb2coYiwgbGYs
IHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgbGYuc2hvd19sb2coYiwgdmVyYm9zZT1UcnVlKQogICAg
ICAgICBjb21taXR0ZWRfbXNnID0gbGYubG9nc1swXS5yZXYubWVzc2FnZQogICAgICAgICBzZWxm
LmxvZygiZXNjYXBlZCBjb21taXQgbWVzc2FnZTogJXIiLCBjb21taXR0ZWRfbXNnKQogICAgICAg
ICBzZWxmLmFzc2VydF8obXNnICE9IGNvbW1pdHRlZF9tc2cpCkBAIC0xNzksNyArMTgxLDcgQEAK
ICAgICAgICAgc2VsZi5sb2coIm9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlOiAlciIsIG1zZykKICAg
ICAgICAgd3QuY29tbWl0KG1zZykKICAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKLSAgICAgICAg
c2hvd19sb2coYiwgbGYsIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgbGYuc2hvd19sb2coYiwgdmVy
Ym9zZT1UcnVlKQogICAgICAgICBjb21taXR0ZWRfbXNnID0gbGYubG9nc1swXS5yZXYubWVzc2Fn
ZQogICAgICAgICBzZWxmLmxvZygiZXNjYXBlZCBjb21taXQgbWVzc2FnZTogJXIiLCBjb21taXR0
ZWRfbXNnKQogICAgICAgICBzZWxmLmFzc2VydF8obXNnID09IGNvbW1pdHRlZF9tc2cpCkBAIC0y
MDcsNyArMjA5LDcgQEAKIAogICAgICAgICBzaW8gPSBTdHJpbmdJTygpCiAgICAgICAgIGxmID0g
U2hvcnRMb2dGb3JtYXR0ZXIodG9fZmlsZT1zaW8pCi0gICAgICAgIHNob3dfbG9nKGIsIGxmKQor
ICAgICAgICBsZi5zaG93X2xvZyhiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzaW8uZ2V0
dmFsdWUoKSwgIiIiXAogICAgIDMgSm9lIEZvb1x0MjAwNS0xMS0yMQogICAgICAgc2luZ2xlIGxp
bmUgd2l0aCB0cmFpbGluZyBuZXdsaW5lCkBAIC0yMjQsNyArMjI2LDcgQEAKIAogICAgICAgICBz
aW8gPSBTdHJpbmdJTygpCiAgICAgICAgIGxmID0gTG9uZ0xvZ0Zvcm1hdHRlcih0b19maWxlPXNp
bykKLSAgICAgICAgc2hvd19sb2coYiwgbGYpCisgICAgICAgIGxmLnNob3dfbG9nKGIpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNpby5nZXR2YWx1ZSgpLCAiIiJcCiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHJldm5vOiAz
CkBAIC0yNjgsNyArMjcwLDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj0nTG9yZW0g
SXBzdW0gPHRlc3RAZXhhbXBsZS5jb20+JykKICAgICAgICAgbG9nZmlsZSA9IGZpbGUoJ291dC50
bXAnLCAndysnKQogICAgICAgICBmb3JtYXR0ZXIgPSBMb25nTG9nRm9ybWF0dGVyKHRvX2ZpbGU9
bG9nZmlsZSkKLSAgICAgICAgc2hvd19sb2coYiwgZm9ybWF0dGVyLCB2ZXJib3NlPVRydWUpCisg
ICAgICAgIGZvcm1hdHRlci5zaG93X2xvZyhiLCB2ZXJib3NlPVRydWUpCiAgICAgICAgIGxvZ2Zp
bGUuZmx1c2goKQogICAgICAgICBsb2dmaWxlLnNlZWsoMCkKICAgICAgICAgbG9nX2NvbnRlbnRz
ID0gbG9nZmlsZS5yZWFkKCkKQEAgLTMwMCw3ICszMDIsMjc2IEBACiAgICAgICAgICAgICAgICAg
ICBjb21taXR0ZXI9J0xpbmUtTG9nLUZvcm1hdHRlciBUZXN0ZXIgPHRlc3RAbGluZS5sb2c+JykK
ICAgICAgICAgbG9nZmlsZSA9IGZpbGUoJ291dC50bXAnLCAndysnKQogICAgICAgICBmb3JtYXR0
ZXIgPSBMaW5lTG9nRm9ybWF0dGVyKHRvX2ZpbGU9bG9nZmlsZSkKLSAgICAgICAgc2hvd19sb2co
YiwgZm9ybWF0dGVyKQorICAgICAgICBmb3JtYXR0ZXIuc2hvd19sb2coYikKKyAgICAgICAgbG9n
ZmlsZS5mbHVzaCgpCisgICAgICAgIGxvZ2ZpbGUuc2VlaygwKQorICAgICAgICBsb2dfY29udGVu
dHMgPSBsb2dmaWxlLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsRGlmZihsb2dfY29u
dGVudHMsICcxOiBMaW5lLUxvZy1Gb3JtYXR0ZS4uLiAyMDA1LTExLTIzIGFkZCBhXG4nKQorCisg
ICAgZGVmIHRlc3Rfc2hvd19sb2dfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd3QgPSBzZWxm
Lm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgYiA9IHd0LmJyYW5jaAorCisgICAg
ICAgIGxmID0gTG9nQ2F0Y2hlcigpCisgICAgICAgIHd0LmNvbW1pdCgnZW1wdHkgY29tbWl0JykK
KyAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIs
IGxmLCB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3Jl
dmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0xKQorCisgICAgZGVmIHRlc3RfY3VyX3Jldm5vX2RlcHJl
Y2F0ZWQoc2VsZik6CisgICAgICAgIHd0ID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicp
CisgICAgICAgIGIgPSB3dC5icmFuY2gKKworICAgICAgICBsZiA9IExvZ0NhdGNoZXIoKQorICAg
ICAgICB3dC5jb21taXQoJ2VtcHR5IGNvbW1pdCcpCisgICAgICAgIHNob3dfbG9nKGIsIGxmLCB2
ZXJib3NlPVRydWUsIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0xKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBi
LCBsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRfcmV2aXNpb249MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kX3JldmlzaW9uPTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlk
UmV2aXNpb25OdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXBy
ZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTIpKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNo
b3dfbG9nLCBiLCBsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRfcmV2aXNpb249MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPTIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
YXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3Jldmlz
aW9uPTApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhp
cnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249LTEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIGVuZF9yZXZpc2lvbj0xKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmFwcGx5RGVwcmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3Jl
dmlzaW9uPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZF9yZXZpc2lvbj0tMSkpCisKKyAgICBkZWYgdGVzdF9jdXJfcmV2bm9fZGVwcmVjYXRlZChz
ZWxmKToKKyAgICAgICAgd3QgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAg
ICAgYiA9IHd0LmJyYW5jaAorCisgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigpCisgICAgICAgIHd0
LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKKyAgICAgICAgc2hvd19sb2coYiwgbGYsIHZlcmJvc2U9
VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZp
c2lvbj0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmRfcmV2aXNpb249MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lv
bk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQo
emVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MikpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2cs
IGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydF9yZXZpc2lvbj0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmRfcmV2aXNpb249MikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFs
aWRSZXZpc2lvbk51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURl
cHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcmV2aXNpb249MCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwg
c2hvd19sb2csIGIsIGxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFydF9yZXZpc2lvbj0tMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgZW5kX3JldmlzaW9uPTEpKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3dfbG9nLCBiLCBsZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcmV2aXNpb249
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3Jl
dmlzaW9uPS0xKSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9sb2dfZGVwcmVjYXRlZChzZWxmKToK
KyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFscworICAgICAgICAKKyAgICAgICAgd3QgPSBz
ZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgYiA9IHd0LmJyYW5jaAorCisg
ICAgICAgIGxmID0gTG9nQ2F0Y2hlcigpCisgICAgICAgIHNob3dfbG9nKGIsIGxmKQorICAgICAg
ICAjIG5vIGVudHJpZXMgeWV0CisgICAgICAgIGVxKGxmLmxvZ3MsIFtdKQorCisgICAgICAgIHd0
LmNvbW1pdCgnZW1wdHkgY29tbWl0JykKKyAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKKyAgICAg
ICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCB2
ZXJib3NlPVRydWUpCisgICAgICAgIGVxKGxlbihsZi5sb2dzKSwgMSkKKyAgICAgICAgZXEobGYu
bG9nc1swXS5yZXZubywgJzEnKQorICAgICAgICBlcShsZi5sb2dzWzBdLnJldi5tZXNzYWdlLCAn
ZW1wdHkgY29tbWl0JykKKyAgICAgICAgZCA9IGxmLmxvZ3NbMF0uZGVsdGEKKyAgICAgICAgc2Vs
Zi5sb2coJ2xvZyBkZWx0YTogJXInICUgZCkKKyAgICAgICAgc2VsZi5jaGVja0RlbHRhKGQpCisK
KyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnaGVsbG8nXSkKKyAgICAgICAgd3QuYWRkKCdoZWxs
bycpCisgICAgICAgIHd0LmNvbW1pdCgnYWRkIG9uZSBmaWxlJykKKworICAgICAgICBsZiA9IFN0
cmluZ0lPKCkKKyAgICAgICAgIyBsb2cgdXNpbmcgcmVndWxhciB0aGluZworICAgICAgICBzZWxm
LmFwcGx5RGVwcmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgTG9uZ0xvZ0Zvcm1h
dHRlcihsZikpCisgICAgICAgIGxmLnNlZWsoMCkKKyAgICAgICAgZm9yIGwgaW4gbGYucmVhZGxp
bmVzKCk6CisgICAgICAgICAgICBzZWxmLmxvZyhsKQorCisgICAgICAgICMgZ2V0IGxvZyBhcyBk
YXRhIHN0cnVjdHVyZQorICAgICAgICBsZiA9IExvZ0NhdGNoZXIoKQorICAgICAgICBzZWxmLmFw
cGx5RGVwcmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYsIHZlcmJvc2U9VHJ1
ZSkKKyAgICAgICAgZXEobGVuKGxmLmxvZ3MpLCAyKQorICAgICAgICBzZWxmLmxvZygnbG9nIGVu
dHJpZXM6JykKKyAgICAgICAgZm9yIGxvZ2VudHJ5IGluIGxmLmxvZ3M6CisgICAgICAgICAgICBz
ZWxmLmxvZygnJTRzICVzJyAlIChsb2dlbnRyeS5yZXZubywgbG9nZW50cnkucmV2Lm1lc3NhZ2Up
KQorICAgICAgICAKKyAgICAgICAgIyBmaXJzdCBvbmUgaXMgbW9zdCByZWNlbnQKKyAgICAgICAg
bG9nZW50cnkgPSBsZi5sb2dzWzBdCisgICAgICAgIGVxKGxvZ2VudHJ5LnJldm5vLCAnMicpCisg
ICAgICAgIGVxKGxvZ2VudHJ5LnJldi5tZXNzYWdlLCAnYWRkIG9uZSBmaWxlJykKKyAgICAgICAg
ZCA9IGxvZ2VudHJ5LmRlbHRhCisgICAgICAgIHNlbGYubG9nKCdsb2cgMiBkZWx0YTogJXInICUg
ZCkKKyAgICAgICAgIyBzZWxmLmNoZWNrRGVsdGEoZCwgYWRkZWQ9WydoZWxsbyddKQorICAgICAg
ICAKKyAgICAgICAgIyBjb21taXQgYSBsb2cgbWVzc2FnZSB3aXRoIGNvbnRyb2wgY2hhcmFjdGVy
cworICAgICAgICBtc2cgPSAiQWxsIDgtYml0IGNoYXJzOiAiICsgICcnLmpvaW4oW3VuaWNocih4
KSBmb3IgeCBpbiByYW5nZSgyNTYpXSkKKyAgICAgICAgc2VsZi5sb2coIm9yaWdpbmFsIGNvbW1p
dCBtZXNzYWdlOiAlciIsIG1zZykKKyAgICAgICAgd3QuY29tbWl0KG1zZykKKyAgICAgICAgbGYg
PSBMb2dDYXRjaGVyKCkKKyAgICAgICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVl
biwgc2hvd19sb2csIGIsIGxmLCB2ZXJib3NlPVRydWUpCisgICAgICAgIGNvbW1pdHRlZF9tc2cg
PSBsZi5sb2dzWzBdLnJldi5tZXNzYWdlCisgICAgICAgIHNlbGYubG9nKCJlc2NhcGVkIGNvbW1p
dCBtZXNzYWdlOiAlciIsIGNvbW1pdHRlZF9tc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0Xyhtc2cg
IT0gY29tbWl0dGVkX21zZykKKyAgICAgICAgc2VsZi5hc3NlcnRfKGxlbihjb21taXR0ZWRfbXNn
KSA+IGxlbihtc2cpKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBsb2cgbWVzc2FnZSB3aXRoIG9u
bHkgWE1MLXZhbGlkIGNoYXJhY3RlcnMgaXNuJ3QKKyAgICAgICAgIyBlc2NhcGVkLiAgQXMgRWxl
bWVudFRyZWUgYXBwYXJlbnRseSBkb2VzIHNvbWUga2luZCBvZgorICAgICAgICAjIG5ld2xpbmUg
Y29udmVyc2lvbiwgbmVpdGhlciBMRiAoXHgwQSkgbm9yIENSIChceDBEKSBhcmUKKyAgICAgICAg
IyBpbmNsdWRlZCBpbiB0aGUgdGVzdCBjb21taXQgbWVzc2FnZSwgZXZlbiB0aG91Z2ggdGhleSBh
cmUKKyAgICAgICAgIyB2YWxpZCBYTUwgMS4wIGNoYXJhY3RlcnMuCisgICAgICAgIG1zZyA9ICJc
eDA5IiArICcnLmpvaW4oW3VuaWNocih4KSBmb3IgeCBpbiByYW5nZSgweDIwLCAyNTYpXSkKKyAg
ICAgICAgc2VsZi5sb2coIm9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlOiAlciIsIG1zZykKKyAgICAg
ICAgd3QuY29tbWl0KG1zZykKKyAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKKyAgICAgICAgc2Vs
Zi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGxmLCB2ZXJib3Nl
PVRydWUpCisgICAgICAgIGNvbW1pdHRlZF9tc2cgPSBsZi5sb2dzWzBdLnJldi5tZXNzYWdlCisg
ICAgICAgIHNlbGYubG9nKCJlc2NhcGVkIGNvbW1pdCBtZXNzYWdlOiAlciIsIGNvbW1pdHRlZF9t
c2cpCisgICAgICAgIHNlbGYuYXNzZXJ0Xyhtc2cgPT0gY29tbWl0dGVkX21zZykKKworICAgIGRl
ZiB0ZXN0X3RyYWlsaW5nX25ld2xpbmVzX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHd0ID0g
c2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIGIgPSB3dC5icmFuY2gKKyAg
ICAgICAgYi5uaWNrPSd0ZXN0JworICAgICAgICBvcGVuKCdhJywgJ3diJykud3JpdGUoJ2hlbGxv
IG1vdG9cbicpCisgICAgICAgIHd0LmFkZCgnYScpCisgICAgICAgIHd0LmNvbW1pdCgnc2ltcGxl
IGxvZyBtZXNzYWdlJywgcmV2X2lkPSdhMScKKyAgICAgICAgICAgICAgICAsIHRpbWVzdGFtcD0x
MTMyNTg2NjU1LjQ1OTk2MDkzOCwgdGltZXpvbmU9LTYqMzYwMAorICAgICAgICAgICAgICAgICwg
Y29tbWl0dGVyPSdKb2UgRm9vIDxqb2VAZm9vLmNvbT4nKQorICAgICAgICBvcGVuKCdiJywgJ3di
Jykud3JpdGUoJ2dvb2RieWVcbicpCisgICAgICAgIHd0LmFkZCgnYicpCisgICAgICAgIHd0LmNv
bW1pdCgnbXVsdGlsaW5lXG5sb2dcbm1lc3NhZ2VcbicsIHJldl9pZD0nYTInCisgICAgICAgICAg
ICAgICAgLCB0aW1lc3RhbXA9MTEzMjU4Njg0Mi40MTExNzU5NjYsIHRpbWV6b25lPS02KjM2MDAK
KyAgICAgICAgICAgICAgICAsIGNvbW1pdHRlcj0nSm9lIEZvbyA8am9lQGZvby5jb20+JykKKwor
ICAgICAgICBvcGVuKCdjJywgJ3diJykud3JpdGUoJ2p1c3QgYW5vdGhlciBtYW5pYyBtb25kYXlc
bicpCisgICAgICAgIHd0LmFkZCgnYycpCisgICAgICAgIHd0LmNvbW1pdCgnc2luZ2xlIGxpbmUg
d2l0aCB0cmFpbGluZyBuZXdsaW5lXG4nLCByZXZfaWQ9J2EzJworICAgICAgICAgICAgICAgICwg
dGltZXN0YW1wPTExMzI1ODcxNzYuODM1MjI4OTIwLCB0aW1lem9uZT0tNiozNjAwCisgICAgICAg
ICAgICAgICAgLCBjb21taXR0ZXIgPSAnSm9lIEZvbyA8am9lQGZvby5jb20+JykKKworICAgICAg
ICBzaW8gPSBTdHJpbmdJTygpCisgICAgICAgIGxmID0gU2hvcnRMb2dGb3JtYXR0ZXIodG9fZmls
ZT1zaW8pCisgICAgICAgIHNlbGYuYXBwbHlEZXByZWNhdGVkKHplcm9fdGhpcnRlZW4sIHNob3df
bG9nLCBiLCBsZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2lvLmdldHZhbHVlKCksICIi
IlwKKyAgICAzIEpvZSBGb29cdDIwMDUtMTEtMjEKKyAgICAgIHNpbmdsZSBsaW5lIHdpdGggdHJh
aWxpbmcgbmV3bGluZQorCisgICAgMiBKb2UgRm9vXHQyMDA1LTExLTIxCisgICAgICBtdWx0aWxp
bmUKKyAgICAgIGxvZworICAgICAgbWVzc2FnZQorCisgICAgMSBKb2UgRm9vXHQyMDA1LTExLTIx
CisgICAgICBzaW1wbGUgbG9nIG1lc3NhZ2UKKworIiIiKQorCisgICAgICAgIHNpbyA9IFN0cmlu
Z0lPKCkKKyAgICAgICAgbGYgPSBMb25nTG9nRm9ybWF0dGVyKHRvX2ZpbGU9c2lvKQorICAgICAg
ICBzZWxmLmFwcGx5RGVwcmVjYXRlZCh6ZXJvX3RoaXJ0ZWVuLCBzaG93X2xvZywgYiwgbGYpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNpby5nZXR2YWx1ZSgpLCAiIiJcCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Jldm5v
OiAzCitjb21taXR0ZXI6IEpvZSBGb28gPGpvZUBmb28uY29tPgorYnJhbmNoIG5pY2s6IHRlc3QK
K3RpbWVzdGFtcDogTW9uIDIwMDUtMTEtMjEgMDk6MzI6NTYgLTA2MDAKK21lc3NhZ2U6CisgIHNp
bmdsZSBsaW5lIHdpdGggdHJhaWxpbmcgbmV3bGluZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityZXZubzogMgorY29tbWl0dGVy
OiBKb2UgRm9vIDxqb2VAZm9vLmNvbT4KK2JyYW5jaCBuaWNrOiB0ZXN0Cit0aW1lc3RhbXA6IE1v
biAyMDA1LTExLTIxIDA5OjI3OjIyIC0wNjAwCittZXNzYWdlOgorICBtdWx0aWxpbmUKKyAgbG9n
CisgIG1lc3NhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorcmV2bm86IDEKK2NvbW1pdHRlcjogSm9lIEZvbyA8am9lQGZvby5j
b20+CiticmFuY2ggbmljazogdGVzdAordGltZXN0YW1wOiBNb24gMjAwNS0xMS0yMSAwOToyNDox
NSAtMDYwMAorbWVzc2FnZToKKyAgc2ltcGxlIGxvZyBtZXNzYWdlCisiIiIpCisgICAgICAgIAor
ICAgIGRlZiB0ZXN0X3ZlcmJvc2VfbG9nX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgICIiIlZl
cmJvc2UgbG9nIGluY2x1ZGVzIGNoYW5nZWQgZmlsZXMKKyAgICAgICAgCisgICAgICAgIGJ1ZyAj
NDY3NgorICAgICAgICAiIiIKKyAgICAgICAgd3QgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVl
KCcuJykKKyAgICAgICAgYiA9IHd0LmJyYW5jaAorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydh
J10pCisgICAgICAgIHd0LmFkZCgnYScpCisgICAgICAgICMgWFhYOiB3aHkgZG9lcyBhIGxvbmdl
ciBuaWNrIHNob3cgdXA/CisgICAgICAgIGIubmljayA9ICd0ZXN0X3ZlcmJvc2VfbG9nJworICAg
ICAgICB3dC5jb21taXQobWVzc2FnZT0nYWRkIGEnLAorICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wPTExMzI3MTE3MDcsCisgICAgICAgICAgICAgICAgICB0aW1lem9uZT0zNjAwMCwKKyAgICAg
ICAgICAgICAgICAgIGNvbW1pdHRlcj0nTG9yZW0gSXBzdW0gPHRlc3RAZXhhbXBsZS5jb20+JykK
KyAgICAgICAgbG9nZmlsZSA9IGZpbGUoJ291dC50bXAnLCAndysnKQorICAgICAgICBmb3JtYXR0
ZXIgPSBMb25nTG9nRm9ybWF0dGVyKHRvX2ZpbGU9bG9nZmlsZSkKKyAgICAgICAgc2VsZi5hcHBs
eURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGZvcm1hdHRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlKQorICAgICAgICBsb2dmaWxlLmZs
dXNoKCkKKyAgICAgICAgbG9nZmlsZS5zZWVrKDApCisgICAgICAgIGxvZ19jb250ZW50cyA9IGxv
Z2ZpbGUucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxEaWZmKGxvZ19jb250ZW50cywg
JycnXAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCityZXZubzogMQorY29tbWl0dGVyOiBMb3JlbSBJcHN1bSA8dGVzdEBleGFtcGxl
LmNvbT4KK2JyYW5jaCBuaWNrOiB0ZXN0X3ZlcmJvc2VfbG9nCit0aW1lc3RhbXA6IFdlZCAyMDA1
LTExLTIzIDEyOjA4OjI3ICsxMDAwCittZXNzYWdlOgorICBhZGQgYQorYWRkZWQ6CisgIGEKKycn
JykKKworICAgIGRlZiB0ZXN0X2xpbmVfbG9nX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgICIi
IkxpbmUgbG9nIHNob3VsZCBzaG93IHJldm5vCisgICAgICAgIAorICAgICAgICBidWcgIzUxNjIK
KyAgICAgICAgIiIiCisgICAgICAgIHd0ID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicp
CisgICAgICAgIGIgPSB3dC5icmFuY2gKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnYSddKQor
ICAgICAgICB3dC5hZGQoJ2EnKQorICAgICAgICBiLm5pY2sgPSAndGVzdC1saW5lLWxvZycKKyAg
ICAgICAgd3QuY29tbWl0KG1lc3NhZ2U9J2FkZCBhJywKKyAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD0xMTMyNzExNzA3LAorICAgICAgICAgICAgICAgICAgdGltZXpvbmU9MzYwMDAsCisgICAg
ICAgICAgICAgICAgICBjb21taXR0ZXI9J0xpbmUtTG9nLUZvcm1hdHRlciBUZXN0ZXIgPHRlc3RA
bGluZS5sb2c+JykKKyAgICAgICAgbG9nZmlsZSA9IGZpbGUoJ291dC50bXAnLCAndysnKQorICAg
ICAgICBmb3JtYXR0ZXIgPSBMaW5lTG9nRm9ybWF0dGVyKHRvX2ZpbGU9bG9nZmlsZSkKKyAgICAg
ICAgc2VsZi5hcHBseURlcHJlY2F0ZWQoemVyb190aGlydGVlbiwgc2hvd19sb2csIGIsIGZvcm1h
dHRlcikKICAgICAgICAgbG9nZmlsZS5mbHVzaCgpCiAgICAgICAgIGxvZ2ZpbGUuc2VlaygwKQog
ICAgICAgICBsb2dfY29udGVudHMgPSBsb2dmaWxlLnJlYWQoKQoK
=== modified directory // last-changed:jw+debian at jameswestby.net-2006110223350
... 5-dcb9bc4438a05ac9
# revision id: jw+debian at jameswestby.net-20061102233505-dcb9bc4438a05ac9
# sha1: b0fc5c414a34155d3f7c601012384665ff12f230
# inventory sha1: 2bf49c76878d5b7b4fa5393f234264390d841841
# parent ids:
# pqm at pqm.ubuntu.com-20061102105944-77e5667ce7540df5
# properties:
# branch-nick: bzr.dev.logformat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20061104/d122dfc0/attachment.pgp
More information about the bazaar
mailing list