# # add_file "tests/t_merge_6.at" # # patch "ChangeLog" # from [97d760e4023907d790eec7256a96b2f44f4af9de] # to [012048b71f64fbe18c149bee6bcf99f24011666f] # # patch "tests/t_merge_6.at" # from [] # to [98c527059720ddf78cad7457e859dbeafe60ecf6] # # patch "testsuite.at" # from [603335422124e2e1b3e80ca69540bab23a07f06e] # to [9f97c7da97779ac806ed852c8236d9ece770447e] # --- ChangeLog +++ ChangeLog @@ -1,5 +1,11 @@ -2005-04-28 Matt Johnston + * tests/t_merge_6.at, testsuite.at: add a new test for the case where + duplicate lines appear in a file during a merge. This testcase can + be correctly handled by merge(1). + +2005-04-28 Matt Johnston + * tests/t_i18n_file.at, transforms.cc: OS X expects all paths to be utf-8, don't try to use other encodings in the test. --- tests/t_merge_6.at +++ tests/t_merge_6.at @@ -0,0 +1,782 @@ +AT_SETUP([test a merge 6]) +MONOTONE_SETUP + +# This test is a bug report. +AT_XFAIL_IF(true) + +NEED_UNB64 + +# Another real merge error. This is the diff between the correct +# result and the file produced by the merge: +# +# --- correct Thu Apr 28 14:52:11 2005 +# +++ testfile Thu Apr 28 14:52:20 2005 +# @@ -277,6 +277,17 @@ +# committing a new revision, rather than the current time. Useful when +# importing history from another version control system. +# .TP +# +\fB--author=\fI\fP +# +Use the given author as the value of the "author" cert when committing +# +a new revision, rather than the default author. Useful when +# +committing a patch on behalf of someone else, or when importing +# +history from another version control system. +# +.TP +# +\fB--date=\fI\fP +# +Use the given given date and time as value of the "date" cert when +# +committing a new revision, rather than the current time. Useful when +# +importing history from another version control system. +# +.TP +# \fB--root=\fI\fP +# Stop the search for a working copy (containing the @file{MT} directory) +# at the specified root directory rather than at the physical root of the + +# merge(1) can handle this merge correctly. + +AT_DATA(parent.b64, [ +LlRIICJtb25vdG9uZSIgMQouU0ggTkFNRQptb25vdG9uZSBcLSBkaXN0cmlidXRlZCB2ZXJzaW9u +IGNvbnRyb2wgc3lzdGVtCi5TSCBTWU5PUFNJUwpcZkJtb25vdG9uZVxmUCBcZklbb3B0aW9uc10g +PGNvbW1hbmQ+IFtwYXJhbWV0ZXJzXVxmUAouUApPcHRpb25zLCB3aGljaCBhZmZlY3QgZ2xvYmFs +IGJlaGF2aW9yIG9yIHNldCBkZWZhdWx0IHZhbHVlcywgY29tZQpmaXJzdCBpbiB0aGUgYXJndW1l +bnQgbGlzdC4gQSBzaW5nbGUgY29tbWFuZCBtdXN0IGZvbGxvdywgaW5kaWNhdGluZwp0aGUgb3Bl +cmF0aW9uIHRvIHBlcmZvcm0sIGZvbGxvd2VkIGJ5IHBhcmFtZXRlcnMgd2hpY2ggdmFyeSBkZXBl +bmRpbmcKb24gdGhlIGNvbW1hbmQuCi5TUyBOb3RlClRoaXMgbWFucGFnZSBpcyBhIHN1bW1hcnkg +b2Ygc29tZSBvZiB0aGUgZmVhdHVyZXMgYW5kIGNvbW1hbmRzIG9mClxmQm1vbm90b25lXGZQLCBi +dXQgaXQgaXMgbm90IHRoZSBtb3N0IGRldGFpbGVkIHNvdXJjZSBvZiBpbmZvcm1hdGlvbgphdmFp +bGFibGUuIEZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlIGNvbmNlcHRzIGFuZCBhIHR1 +dG9yaWFsIG9uCml0cyB1c2UsIHBsZWFzZSByZWZlciB0byB0aGUgdGV4aW5mbyBtYW51YWwgKHZp +YSB0aGUgXGZCaW5mbwptb25vdG9uZVxmUCBjb21tYW5kLCBvciBvbmxpbmUpLgouU1MgQ29tbWFu +ZHMKLlRQIApcZkJjb21tZW50XGZQIFxmSTxpZD5cZlAKV3JpdGUgYSBjb21tZW50IGNlcnQgZm9y +IGEgcmV2aXNpb24uCi5UUApcZkJhcHByb3ZlXGZQIFxmSTxpZD5cZlAKTWFrZSBhICJicmFuY2gi +IGNlcnQgYXBwcm92aW5nIG9mIGEgcmV2aXNpb24ncyBtZW1iZXJzaGlwIGluIGEgYnJhbmNoLgou +VFAKXGZCZGlzYXBwcm92ZVxmUCBcZkk8aWQxPlxmUApEaXNhcHByb3ZlIG9mIGEgcmV2aXNpb24s +IGNvbW1pdHRpbmcgdGhlIGludmVyc2UgY2hhbmdlcyBhcyBhcyBhCmRlc2NlbmRhbnQgb2YgdGhl +IGRpc2FwcHJvdmVkIHJldmlzaW9uLgouVFAKXGZCdGFnXGZQIFxmSTxpZD4gPHRhZ25hbWU+XGZQ +ClB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJ0ZXN0cmVzdWx0 +XGZQIFxmSTxpZD4gKDB8MXx0cnVlfGZhbHNlfHllc3xub3xwYXNzfGZhaWwpXGZQCkluZGljYXRl +IGEgcGFzc2luZyBvciBmYWlsaW5nIHRlc3QgcmVzdWx0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJh +Z3JhcGhcZlAKRHVtcCByZXZpc2lvbiBncmFwaCB0byBzdGRvdXQgaW4gVkNHIGZvcm1hdC4KLlRQ +ClxmQmRpZmYgXGZJWy0tcmV2aXNpb249PGlkMT4gWy0tcmV2aXNpb249PGlkMj5dIF0gWzxwYXRo +bmFtZT4uLi5dXGZQClNob3cgZGlmZnMgYmV0d2VlbiB3b3JraW5nIGNvcHkgYW5kIGRhdGFiYXNl +LgouVFAKXGZCc3RhdHVzIFxmSVs8cGF0aG5hbWU+Li4uXVxmUApTaG93IHN0YXR1cyBvZiB3b3Jr +aW5nIGNvcHkuCi5UUApcZkJsb2dcZlAgXGZJW2lkXSBcZlAKU2hvdyBoaXN0b3JpY2FsIGxvZyBv +ZiByZXZpc2lvbnMsIHN0YXJ0aW5nIGZyb20gd29ya2luZyBjb3B5CmJhc2UgcmV2aXNpb24sIG9y +IFxmSVtpZF1cZlAgaWYgZ2l2ZW4uCi5UUApcZkJjZXJ0XGZQIFxmSTxpZD4gPGNlcnRuYW1lPiBb +Y2VydHZhbF1cZlAKQ3JlYXRlIGEgY3VzdG9tIGNlcnQgZm9yIGEgcmV2aXNpb24uIFJlYWRzIGNl +cnQgdmFsdWUKZnJvbSBzdGRpbiBpZiBubyB2YWx1ZSBnaXZlbiBvbiBjb21tYW5kIGxpbmUuCi5U +UApcZkJnZW5rZXlcZlAgXGZJPGtleWlkPlxmUApHZW5lcmF0ZSBhbiBSU0Ega2V5LXBhaXIgYW5k +IHN0b3JlIGl0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxjaGtleXBhc3NcZlAgXGZJPGtleWlkPlxm +UApDaGFuZ2UgcGFzc3BocmFzZSBvZiB0aGUgcHJpdmF0ZSBoYWxmIG9mIGEga2V5LgouVFAKXGZC +bGlzdCBjZXJ0c1xmUCBcZkk8aWQ+XGZQCkxpc3QgY2VydHMgYXNzb2NpYXRlZCB3aXRoIHJldmlz +aW9uLgouVFAKXGZCbGlzdCBrZXlzXGZQIFxmSVtwYXJ0aWFsLWlkXVxmUApMaXN0IGtleXMgbWF0 +Y2hpbmcgZ2xvYiwgb3IgbGlzdCBhbGwga2V5cyBpZiBubyBnbG9iIGdpdmVuLgouVFAKXGZCbGlz +dCBicmFuY2hlc1xmUApMaXN0IGFsbCBicmFuY2hlcy4KLlRQClxmQmxpc3QgdGFnc1xmUApMaXN0 +IGFsbCB0YWdzLgouVFAKXGZCbGlzdCB2YXJzIFxmSVs8ZG9tYWluPl1cZlAKTGlzdCBhbGwgdmFy +cyAocG9zc2libHkgbGltaXRlZCBieSBkb21haW4pLgouVFAKXGZCbGlzdCB1bmtub3duIFxmSVs8 +cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gd29ya2luZyBkaXJlY3RvcnksIGJ1dCBub3Qg +aW4gcmV2aXNpb24ncyBtYW5pZmVzdCBvcgp3b3JrIGxpc3QuCi5UUApcZkJsaXN0IGlnbm9yZWQg +XGZJWzxwYXRobmFtZS4uLl1cZlAKTGlzdCBmaWxlcyBpbnRlbnRpb25hbGx5IGlnbm9yZWQgZHVl +IHRvIHRoZSBpZ25vcmVfZmlsZSBob29rLgouVFAKXGZCbGlzdCBtaXNzaW5nIFxmSVs8cGF0aG5h +bWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gcmV2aXNpb24ncyBtYW5pZmVzdCwgYnV0IG5vdCBpbiB3 +b3JraW5nIGRpcmVjdG9yeS4KLlRQClxmQmZkYXRhXGZQIFxmSTxpZD5cZlAKV3JpdGUgZmlsZSBk +YXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJmZGVsdGFcZlAgXGZJPG9sZGlkPiA8bmV3aWQ+ +XGZQCldyaXRlIGZpbGUgZGVsdGEgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQm1kYXRhXGZQIFxm +STxpZD5cZlAKV3JpdGUgbWFuaWZlc3QgZGF0YSBwYWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCbWRl +bHRhXGZQIFxmSTxvbGRpZD4gPG5ld2lkPlxmUApXcml0ZSBtYW5pZmVzdCBkZWx0YSBwYWNrZXQg +dG8gc3Rkb3V0LgouVFAKXGZCY2VydHNcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZpc2lvbiBjZXJ0 +IHBhY2tldHMgdG8gc3Rkb3V0LgouVFAKXGZCcmRhdGFcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZp +c2lvbiBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJwcml2a2V5XGZQIFxmSTxpZD5cZlAK +V3JpdGUgcHJpdmF0ZSBrZXkgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQnB1YmtleVxmUCBcZkk8 +aWQ+XGZQCldyaXRlIHB1YmxpYyBrZXkgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQnJlYWRcZlAK +UmVhZCBwYWNrZXRzIGZyb20gc3RkaW4uIAouVFAKXGZCY3ZzX2ltcG9ydFxmUCBcZkk8Y3Zzcm9v +dD5cZlAKSW1wb3J0IGFsbCB2ZXJzaW9ucyBpbiBDVlMgcmVwb3NpdG9yeS4gUmVjb25zdHJ1Y3Rz +IHJldmlzaW9ucyBhbmQKY29udmVydHMgbWV0YWRhdGEgdG8gY2VydGlmaWNhdGVzLiBBIHByaXZh +dGUgc2lnbmluZyBrZXkgbXVzdCBhbHJlYWR5CmV4aXN0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxm +QnJjc19pbXBvcnRcZlAgXGZJPHJjc2ZpbGU+IC4uLlxmUApJbXBvcnQgYWxsIGZpbGUgdmVyc2lv +bnMgaW4gUkNTIGZpbGVzLiBEb2VzIG5vdCByZWNvbnN0cnVjdCByZXZpc2lvbnMKYWNyb3NzIHRo +ZSBlbnRpcmUgdHJlZS4KLlRQClxmQmNoZWNrb3V0XGZQIFxmSVttYW5pZmVzdC1pZF1cZlAgXGZJ +PGRpcmVjdG9yeVxmUApDaGVjayBvdXQgdHJlZSBzdGF0ZSBmcm9tIGRhdGFiYXNlLgouVFAKXGZC +Y29cZlAgXGZJW21hbmlmZXN0LWlkXVxmUCBcZkk8ZGlyZWN0b3J5XGZQCkNoZWNrIG91dCB0cmVl +IHN0YXRlIGZyb20gZGF0YWJhc2U7IGFuIGFsaWFzIGZvciBcZkJjaGVja291dFxmUC4KLlRQClxm +QmNhdFxmUCBcZkkoZmlsZXxtYW5pZmVzdCkgPGlkPlxmUApXcml0ZSBmaWxlIG9yIG1hbmlmZXN0 +IGZyb20gZGF0YWJhc2UgdG8gc3Rkb3V0LgouVFAKXGZCaGVhZHNcZlAKU2hvdyB1bm1lcmdlZCBo +ZWFkcyBvZiBicmFuY2gsIG9yIHJlcG9ydCB3aGVuIGJyYW5jaCBpcyBtZXJnZWQuCi5UUApcZkJt +ZXJnZVxmUApNZXJnZSB1bm1lcmdlZCBoZWFkcyBvZiBicmFuY2guCi5UUApcZkJhZGRcZlAgXGZJ +PHBhdGhuYW1lPiBbLi4uXVxmUApBZGQgZmlsZXMgdG8gd29ya2luZyBjb3B5LiBhZGRpbmcgYSBm +aWxlIGRvZXMgbm90IGNvcHkgaXQgaW50byB0aGUgZGF0YWJhc2UsCm1lcmVseSBhZGRzIGl0IHRv +IHRoZSB3b3JrIGxpc3QuIFlvdSBtdXN0IFxmQmNvbW1pdFxmUCB5b3VyIGNoYW5nZXMgaW4gb3Jk +ZXIKdG8gY29weSBhZGRlZCBmaWxlcyB0byB0aGUgZGF0YWJhc2UuCi5UUApcZkJkcm9wXGZQIFxm +STxwYXRobmFtZT4gWy4uLl1cZlAKRHJvcCBmaWxlcyBmcm9tIHdvcmtpbmcgY29weS4gRmlsZXMg +YXJlIG5vdCBkZWxldGVkIGZyb20gd29ya2luZyBjb3B5LCAKbWVyZWx5IG5vdGVkIGFzIHJlbW92 +YWxzIGluIHRoZSB3b3JrIGxpc3QuCi5UUApcZkJyZW5hbWVcZlAgXGZJPHNyYz4gXGZJPGRzdD5c +ZlAKUmVuYW1lIGZpbGVzIGZyb20gXGZJPHNyYz4gXGZQIHRvIFxmSTxkc3Q+IFxmUCBpbiB3b3Jr +aW5nIGNvcHkuCi5UUApcZkJjb21taXRcZlAgXGZJWy0tbWVzc2FnZT08bG9nIG1lc3NhZ2U+XSBb +PHBhdGhuYW1lPi4uLl1cZlAgCkNvbW1pdCB3b3JraW5nIGNvcHkgdG8gZGF0YWJhc2UuIElmIGEg +LS1tZXNzYWdlIG9wdGlvbiBpcyBwcm92aWRlZCBvbgp0aGUgY29tbWFuZCBpbmUsIGl0IGlzIHVz +ZWQ7IG90aGVyd2lzZSBhIGxvZyBtZXNzYWdlIGVkaXRvciB3aWxsIGJlCmludm9rZWQuCi5UUApc +ZkJ1cGRhdGVcZlAgClVwZGF0ZSB3b3JraW5nIGNvcHkuCi5UUApcZkJwdXNoXGZQIFxmSTxob3N0 +PiA8Y29sbGVjdGlvbj5cZlAgClB1c2ggY29udGVudHMgb2YgXGZJPGNvbGxlY3Rpb24+XGZQIHRv +IGRhdGFiYXNlIG9uIFxmSTxob3N0PlxmUCAKLlRQClxmQnB1bGxcZlAgXGZJPGhvc3Q+IDxjb2xs +ZWN0aW9uPlxmUCAKUHVzaCBjb250ZW50cyBvZiBcZkk8Y29sbGVjdGlvbj5cZlAgZnJvbSBkYXRh +YmFzZSBvbiBcZkk8aG9zdD5cZlAgCi5UUApcZkJzeW5jXGZQIFxmSTxob3N0PiA8Y29sbGVjdGlv +bj5cZlAgClN5bmMgY29udGVudHMgb2YgXGZJPGNvbGxlY3Rpb24+XGZQIHdpdGggZGF0YWJhc2Ug +b24gXGZJPGhvc3Q+XGZQIAouVFAKXGZCc2VydmVcZlAgXGZJPGhvc3Q+IDxjb2xsZWN0aW9uPlxm +UCAKU2VydmUgY29udGVudHMgb2YgXGZJPGNvbGxlY3Rpb24+XGZQIGF0IG5ldHdvcmsgYWRkcmVz +cyBcZkk8aG9zdD5cZlAgCi5UUApcZkJzZXRcZlAgXGZJPGRvbWFpbj4gPG5hbWU+IDx2YWx1ZT5c +ZlAgClNldCB0aGUgZGIgdmFyIFxmSTxuYW1lPlxmUCBpbiBkb21haW4gXGZJPGRvbWFpbj5cZlAg +dG8gdmFsdWUKXGZJPHZhbHVlPlxmUC4gCi5UUApcZkJ1bnNldFxmUCBcZkk8ZG9tYWluPiA8bmFt +ZT5cZlAgCkRlbGV0ZSBhbnkgc2V0dGluZyBmb3IgZGIgdmFyIFxmSTxuYW1lPlxmUCBpbiBkb21h +aW4gXGZJPGRvbWFpbj5cZlAuCi5UUApcZkJhdXRvbWF0ZVxmUCBcZkkoaW50ZXJmYWNlX3ZlcnNp +b258aGVhZHN8ZGVzY2VuZGVudHN8ZXJhc2VfYW5jZXN0b3JzfHRvcG9zb3J0fGFuY2VzdHJ5X2Rp +ZmZlcmVuY2V8bGVhdmVzKVxmUApTY3JpcHRpbmcgaW50ZXJmYWNlLgouVFAKXGZCZGJcZlAgXGZJ +KGluaXR8aW5mb3x2ZXJzaW9ufGR1bXB8bG9hZHxtaWdyYXRlfHJlYnVpbGR8ZXhlY3V0ZXxjaGVj +aylcZlAKTWFuaXB1bGF0ZSBkYXRhYmFzZSBzdGF0ZS4KLlNIIERFU0NSSVBUSU9OCk1vbm90b25l +IGlzIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgd2hpY2ggYWxsb3dzIHlvdSB0byBrZWVwIG9s +ZAp2ZXJzaW9ucyBvZiBmaWxlcywgYXMgd2VsbCBhcyBzcGVjaWFsIFxmSW1hbmlmZXN0IGZpbGVz +XGZQIHdoaWNoCmRlc2NyaWJlIHRoZSBsb2NhdGlvbiBvZiBmaWxlcyBpbiBhIHRyZWUuIFVubGlr +ZSBvdGhlciBzeXN0ZW1zLAp2ZXJzaW9ucyBpbiBtb25vdG9uZSBhcmUgXGZJaWRlbnRpZmllZFxm +UCBieSBjcnlwdG9ncmFwaGljIGhhc2gsIGFuZApvcGVyYXRpb25zIGFyZSBhdXRoZW50aWNhdGVk +IGJ5IGluZGl2aWR1YWwgdXNlcnMnIGV2YWx1YXRpbmcKY3J5cHRvZ3JhcGhpYyBzaWduYXR1cmVz +IG9uIG1ldGEtZGF0YSwgcmF0aGVyIHRoYW4gYW55IGNlbnRyYWwKYXV0aG9yaXR5LgoKTW9ub3Rv +bmUga2VlcHMgYSBjb2xsZWN0aW9uIG9mIHZlcnNpb25zIGluIGEgc2luZ2xlLWZpbGUgcmVsYXRp +b25hbApkYXRhYmFzZS4gSXQgaXMgZXNzZW50aWFsbHkgc2VydmVybGVzcywgdXNpbmcgbmV0d29y +ayBzZXJ2ZXJzIG9ubHkgYXMKdW50cnVzdGVkIGNvbW11bmljYXRpb24gZmFjaWxpdGllcy4gQSBt +b25vdG9uZSBkYXRhYmFzZSBpcyBhIHJlZ3VsYXIKZmlsZSwgd2hpY2ggY29udGFpbnMgYWxsIHRo +ZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZXh0cmFjdCBwcmV2aW91cwp2ZXJzaW9ucyBvZiBmaWxl +cywgdmVyaWZ5IHNpZ25hdHVyZXMsIG1lcmdlIGFuZCBtb2RpZnkgdmVyc2lvbnMsIGFuZApjb21t +dW5pY2F0ZSB3aXRoIG5ldHdvcmsgc2VydmVycy4KLlNIIE9QVElPTlMKLlRQClxmQi0taGVscFxm +UApQcmludCBoZWxwIG1lc3NhZ2UuCi5UUApcZkItLWRlYnVnXGZQClR1cm4gb24gZGVidWdnaW5n +IGxvZyBvbiBzdGFuZGFyZCBlcnJvciBzdHJlYW0uIFRoaXMgaXMgdmVyeQp2ZXJib3NlLiBEZWZh +dWx0IGlzIHRvIGJlIHNpbGVudCwgdW5sZXNzIGFuIGVycm9yIG9jY3VycywgaW4gd2hpY2gKY2Fz +ZSBmYWlsdXJlIGxvZyBpcyBkdW1wZWQuCi5UUApcZkItLXF1aWV0XGZQClR1cm4gb2ZmIG5vcm1h +bCBwcm9ncmVzcyBtZXNzYWdlcy4KLlRQClxmQi0tZHVtcD1cZlBcZkk8ZmlsZT5cZlAKRHVtcCBk +ZWJ1Z2dpbmcgbG9nIHRvIFxmSWZpbGVcZlAgb24gZmFpbHVyZS4KLlRQClxmQi0tbm9zdGRcZlAK +RG8gbm90IGV2YWx1YXRlICJzdGFuZGFyZCIgbHVhIGhvb2tzIGNvbXBpbGVkIGludG8gXGZCbW9u +b3RvbmVcZlAuCi5UUApcZkItLW5vcmNcZlAKRG8gbm90IGxvYWQgbHVhIGhvb2tzIGZyb20gdXNl +cidzIFxmQn4vLm1vbm90b25lcmNcZlAgZmlsZS4KLlRQClxmQi0tcmNmaWxlPVxmUFxmSTxmaWxl +PlxmUApMb2FkIGV4dHJhIGx1YSBob29rcyBmcm9tIFxmSWZpbGVcZlAgKG1heSBiZSBnaXZlbiBt +dWx0aXBsZSB0aW1lcykuCi5UUApcZkItLWRiPVxmUFxmSTxmaWxlPlxmUApVc2UgZGF0YWJhc2Ug +aW4gXGZJZmlsZVxmUC4KLlRQClxmQi0ta2V5PVxmUFxmSTxrZXlpZD5cZlAKVXNlIFxmSWtleWlk +XGZQIGZvciBvcGVyYXRpb25zIHdoaWNoIHByb2R1Y2UgUlNBIHNpZ25hdHVyZXMuIERlZmF1bHQK +aXMgaW5mZXJyZWQgZnJvbSBwcmVzZW5jZSBvZiB1bmlxdWUgcHJpdmF0ZSBrZXkgaW4gZGF0YWJh +c2UuIENhbiBhbHNvCmJlIGN1c3RvbWl6ZWQgb24gYSBwZXItYnJhbmNoIGJhc2lzIHdpdGggaG9v +ayBmdW5jdGlvbiAKXGZCZ2V0X2JyYW5jaF9rZXkoYnJhbmNobmFtZSlcZlAuCi5UUApcZkIta1xm +UCBcZkk8a2V5aWQ+XGZQCkFuIGFsaWFzIGZvciBcZkItLWtleT1cZlBcZkk8a2V5aWQ+XGZQCi5U +UApcZkItLWJyYW5jaD1cZlBcZkk8YnJhbmNobmFtZT5cZlAKVXNlIFxmSWJyYW5jaG5hbWVcZlAg +Zm9yIG9wZXJhdGlvbnMgb24gYSBicmFuY2guIERlZmF1bHQgaXMgaW5mZXJyZWQKaW4gb3BlcmF0 +aW9ucyBvbiBleGlzdGluZyBicmFuY2hlcyAoY29tbWl0LCB1cGRhdGUsIGV0YykuCi5UUApcZkIt +YlxmUCBcZkk8YnJhbmNobmFtZT5cZlAKQW4gYWxpYXMgZm9yIFxmQi0tYnJhbmNoPVxmUFxmSTxi +cmFuY2huYW1lPlxmUAouVFAKXGZCLS10aWNrZXQ9XGZQXGZJZG90fGNvdW50XGZQClVzZSB0aGUg +Z2l2ZW4gbWV0aG9kIHRvIHByaW50IHRpY2tlcnMuICBUaGUgXGZCY291bnRcZlAgbWV0aG9kIHBy +aW50cwp0aGUgY291bnQgZm9yIGVhY2ggdGlja2VyIG9uIG9uZSBsaW5lLCBpbmNyZW1lbnRpbmcg +dGhlIG51bWJlcnMgaW4KcGxhY2UsIHdoaWxlIHRoZSBcZkJkb3RcZlAgbWV0aG9kIHByaW50cyBh +IGNvbnRpbnVvdXMgc3RyaW5nIG9mCmNoYXJhY3RlcnMgKGxpa2Ugc29tZSBwcm9ncmFtcyBwcm92 +aWRlIGEgcHJvZ3Jlc3MgbGluZSBvZiBkb3RzKS4KVGhlIGRlZmF1bHQgaXMgXGZCY291bnRcZlAu +Ci5UUApcZkItLXJldmlzaW9uPVxmUFxmSTxpZD5cZlAKQ3VycmVudGx5IHRoaXMgb3B0aW9uIG9u +bHkgYXBwbGllcyB0byB0aGUgZGlmZiBjb21tYW5kIHdoZXJlIGl0IG1heSBiZQp1c2VkIHRvIGNv +bXBhcmUgYSB3b3JraW5nIGNvcHkgd2l0aCBhIHNwZWNpZmljIHJldmlzaW9uIG9yIHRvIGNvbXBh +cmUKdHdvIHNwZWNpZmljIHJldmlzaW9ucy4gSXQgd2lsbCBsaWtlbHkgYXBwbHkgdG8gb3RoZXIg +Y29tbWFuZHMgaW4gdGhlCmZ1dHVyZS4KLlRQClxmQi1yXGZQIFxmSTxpZD5cZlAKQW4gYWxpYXMg +Zm9yIFxmQi0tcmV2aXNpb249XGZQXGZJPGlkPlxmUAouVFAKXGZCLS1tZXNzYWdlPVxmSTxsb2cg +bWVzc2FnZT5cZlAKVXNlIHRoZSBnaXZlbiBtZXNzYWdlIGFzIHRoZSBjaGFuZ2Vsb2cgd2hlbiBj +b21taXR0aW5nIGEgbmV3IHJldmlzaW9uCnJhdGhlciB0aGFuIGludm9raW5nIHRoZSBsb2cgbWVz +c2FnZSBlZGl0b3IuIEN1cnJlbnRseSB0aGlzIG9wdGlvbiBvbmx5CmFwcGxpZXMgdG8gdGhlIGNv +bW1pdCBjb21tYW5kIGJ1dCBpdCBtYXkgYWxzbyBhcHBseSB0byB0aGUgY29tbWVudApjb21tYW5k +IGluIHRoZSBmdXR1cmUuCi5UUApcZkItbSBcZkk8bG9nIG1lc3NhZ2U+XGZQCkFuIGFsaWFzIGZv +ciBcZkItLW1lc3NhZ2U9XGZJPGxvZyBtZXNzYWdlPlxmUAouVFAKXGZCLS1yb290PVxmSTxyb290 +IGRpcj5cZlAKU3RvcCB0aGUgc2VhcmNoIGZvciBhIHdvcmtpbmcgY29weSAoY29udGFpbmluZyB0 +aGUgQGZpbGV7TVR9IGRpcmVjdG9yeSkKYXQgdGhlIHNwZWNpZmllZCByb290IGRpcmVjdG9yeSBy +YXRoZXIgdGhhbiBhdCB0aGUgcGh5c2ljYWwgcm9vdCBvZiB0aGUKZmlsZXN5c3RlbS4KLlRQClxm +Qi14YXJncz1cZkk8ZmlsZT5cZlAKSW5qZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpbiBw +bGFjZSBhbW9uZyB0aGUgY29tbWFuZCBsaW5lCmFyZ3VtZW50cy4gIFRoaXMgbWF5IGJlIHVzZWZ1 +bCBpbiBjYXNlIHRoZSBjb21tYW5kIGxpbmUgd291bGQKb3RoZXJ3aXNlIGJlY29tZSB0b28gbG9u +ZyBmb3IgeW91ciBzeXN0ZW0uICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZAptb3JlIHRoYW4gb25j +ZSBpZiBuZWVkZWQuCi5UUApcZkItQCBcZkk8ZmlsZT5cZlAKQW4gYWxpYXMgZm9yIFxmQi0teGFy +Z3M9XGZJPGZpbGU+XGZQCgouU0ggRU5WSVJPTk1FTlQKLlRQClxmQkVESVRPUlxmUApVc2VkIHRv +IGVkaXQgY29tbWVudHMsIGxvZyBtZXNzYWdlcywgZXRjLgouVFAKXGZCVklTVUFMXGZQClVzZWQg +aW4gcHJlZmVyZW5jZSB0byBcZkJFRElUT1JcZlAsIGlmIHNldC4KLlNIIEZJTEVTCi5UUApcZkIk +SE9NRS8ubW9ub3RvbmVyY1xmUApBIGx1YSBzY3JpcHQsIHVzZWQgYXMgYSBjdXN0b21pemF0aW9u +IGZpbGUuCi5TSCBOT1RFUwouSVAgXChidQpDb21tYW5kIGxpbmUgb3B0aW9ucyBvdmVycmlkZSBl +bnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kCnNldHRpbmdzIGluIGx1YSBzY3JpcHRzIChzdWNoIGFz +IFxmQi5tb25vdG9uZXJjXGZQKQouU0ggIlNFRSBBTFNPIgpcZkJpbmZvIG1vbm90b25lXGZQCi5T +SCBCVUdTCnNlZSBodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1tb25vdG9u +ZQouU0ggQVVUSE9SCmdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9ib3guY29tPgo= +]) + +AT_DATA(left.b64, [ +LlRIICJtb25vdG9uZSIgMQouU0ggTkFNRQptb25vdG9uZSBcLSBkaXN0cmlidXRlZCB2ZXJzaW9u +IGNvbnRyb2wgc3lzdGVtCi5TSCBTWU5PUFNJUwpcZkJtb25vdG9uZVxmUCBcZklbb3B0aW9uc10g +PGNvbW1hbmQ+IFtwYXJhbWV0ZXJzXVxmUAouUApPcHRpb25zLCB3aGljaCBhZmZlY3QgZ2xvYmFs +IGJlaGF2aW9yIG9yIHNldCBkZWZhdWx0IHZhbHVlcywgY29tZQpmaXJzdCBpbiB0aGUgYXJndW1l +bnQgbGlzdC4gQSBzaW5nbGUgY29tbWFuZCBtdXN0IGZvbGxvdywgaW5kaWNhdGluZwp0aGUgb3Bl +cmF0aW9uIHRvIHBlcmZvcm0sIGZvbGxvd2VkIGJ5IHBhcmFtZXRlcnMgd2hpY2ggdmFyeSBkZXBl +bmRpbmcKb24gdGhlIGNvbW1hbmQuCi5TUyBOb3RlClRoaXMgbWFucGFnZSBpcyBhIHN1bW1hcnkg +b2Ygc29tZSBvZiB0aGUgZmVhdHVyZXMgYW5kIGNvbW1hbmRzIG9mClxmQm1vbm90b25lXGZQLCBi +dXQgaXQgaXMgbm90IHRoZSBtb3N0IGRldGFpbGVkIHNvdXJjZSBvZiBpbmZvcm1hdGlvbgphdmFp +bGFibGUuIEZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlIGNvbmNlcHRzIGFuZCBhIHR1 +dG9yaWFsIG9uCml0cyB1c2UsIHBsZWFzZSByZWZlciB0byB0aGUgdGV4aW5mbyBtYW51YWwgKHZp +YSB0aGUgXGZCaW5mbwptb25vdG9uZVxmUCBjb21tYW5kLCBvciBvbmxpbmUpLgouU1MgQ29tbWFu +ZHMKLlRQIApcZkJjb21tZW50XGZQIFxmSTxpZD5cZlAKV3JpdGUgYSBjb21tZW50IGNlcnQgZm9y +IGEgcmV2aXNpb24uCi5UUApcZkJhcHByb3ZlXGZQIFxmSTxpZD5cZlAKTWFrZSBhICJicmFuY2gi +IGNlcnQgYXBwcm92aW5nIG9mIGEgcmV2aXNpb24ncyBtZW1iZXJzaGlwIGluIGEgYnJhbmNoLgou +VFAKXGZCZGlzYXBwcm92ZVxmUCBcZkk8aWQxPlxmUApEaXNhcHByb3ZlIG9mIGEgcmV2aXNpb24s +IGNvbW1pdHRpbmcgdGhlIGludmVyc2UgY2hhbmdlcyBhcyBhcyBhCmRlc2NlbmRhbnQgb2YgdGhl +IGRpc2FwcHJvdmVkIHJldmlzaW9uLgouVFAKXGZCdGFnXGZQIFxmSTxpZD4gPHRhZ25hbWU+XGZQ +ClB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJ0ZXN0cmVzdWx0 +XGZQIFxmSTxpZD4gKDB8MXx0cnVlfGZhbHNlfHllc3xub3xwYXNzfGZhaWwpXGZQCkluZGljYXRl +IGEgcGFzc2luZyBvciBmYWlsaW5nIHRlc3QgcmVzdWx0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJh +Z3JhcGhcZlAKRHVtcCByZXZpc2lvbiBncmFwaCB0byBzdGRvdXQgaW4gVkNHIGZvcm1hdC4KLlRQ +ClxmQmRpZmYgXGZJWy0tcmV2aXNpb249PGlkMT4gWy0tcmV2aXNpb249PGlkMj5dIF0gWzxwYXRo +bmFtZT4uLi5dXGZQClNob3cgZGlmZnMgYmV0d2VlbiB3b3JraW5nIGNvcHkgYW5kIGRhdGFiYXNl +LgouVFAKXGZCc3RhdHVzIFxmSVs8cGF0aG5hbWU+Li4uXVxmUApTaG93IHN0YXR1cyBvZiB3b3Jr +aW5nIGNvcHkuCi5UUApcZkJpbnZlbnRvcnkgXGZJWzxwYXRobmFtZT4uLi5dXGZQClNob3cgaW52 +ZW50b3J5IG9mIGZpbGVzIGluIHRoZSB3b3JraW5nIGNvcHkuCi5UUApcZkJsb2dcZlAgXGZJW2lk +XSBcZlAKU2hvdyBoaXN0b3JpY2FsIGxvZyBvZiByZXZpc2lvbnMsIHN0YXJ0aW5nIGZyb20gd29y +a2luZyBjb3B5CmJhc2UgcmV2aXNpb24sIG9yIFxmSVtpZF1cZlAgaWYgZ2l2ZW4uCi5UUApcZkJj +ZXJ0XGZQIFxmSTxpZD4gPGNlcnRuYW1lPiBbY2VydHZhbF1cZlAKQ3JlYXRlIGEgY3VzdG9tIGNl +cnQgZm9yIGEgcmV2aXNpb24uIFJlYWRzIGNlcnQgdmFsdWUKZnJvbSBzdGRpbiBpZiBubyB2YWx1 +ZSBnaXZlbiBvbiBjb21tYW5kIGxpbmUuCi5UUApcZkJnZW5rZXlcZlAgXGZJPGtleWlkPlxmUApH +ZW5lcmF0ZSBhbiBSU0Ega2V5LXBhaXIgYW5kIHN0b3JlIGl0IGluIHRoZSBkYXRhYmFzZS4KLlRQ +ClxjaGtleXBhc3NcZlAgXGZJPGtleWlkPlxmUApDaGFuZ2UgcGFzc3BocmFzZSBvZiB0aGUgcHJp +dmF0ZSBoYWxmIG9mIGEga2V5LgouVFAKXGZCbGlzdCBjZXJ0c1xmUCBcZkk8aWQ+XGZQCkxpc3Qg +Y2VydHMgYXNzb2NpYXRlZCB3aXRoIHJldmlzaW9uLgouVFAKXGZCbGlzdCBrZXlzXGZQIFxmSVtw +YXJ0aWFsLWlkXVxmUApMaXN0IGtleXMgbWF0Y2hpbmcgZ2xvYiwgb3IgbGlzdCBhbGwga2V5cyBp +ZiBubyBnbG9iIGdpdmVuLgouVFAKXGZCbGlzdCBicmFuY2hlc1xmUApMaXN0IGFsbCBicmFuY2hl +cy4KLlRQClxmQmxpc3QgdGFnc1xmUApMaXN0IGFsbCB0YWdzLgouVFAKXGZCbGlzdCB2YXJzIFxm +SVs8ZG9tYWluPl1cZlAKTGlzdCBhbGwgdmFycyAocG9zc2libHkgbGltaXRlZCBieSBkb21haW4p +LgouVFAKXGZCbGlzdCB1bmtub3duIFxmSVs8cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4g +d29ya2luZyBkaXJlY3RvcnksIGJ1dCBub3QgaW4gcmV2aXNpb24ncyBtYW5pZmVzdCBvcgp3b3Jr +IGxpc3QuCi5UUApcZkJsaXN0IGlnbm9yZWQgXGZJWzxwYXRobmFtZS4uLl1cZlAKTGlzdCBmaWxl +cyBpbnRlbnRpb25hbGx5IGlnbm9yZWQgZHVlIHRvIHRoZSBpZ25vcmVfZmlsZSBob29rLgouVFAK +XGZCbGlzdCBtaXNzaW5nIFxmSVs8cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gcmV2aXNp +b24ncyBtYW5pZmVzdCwgYnV0IG5vdCBpbiB3b3JraW5nIGRpcmVjdG9yeS4KLlRQClxmQmZkYXRh +XGZQIFxmSTxpZD5cZlAKV3JpdGUgZmlsZSBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJm +ZGVsdGFcZlAgXGZJPG9sZGlkPiA8bmV3aWQ+XGZQCldyaXRlIGZpbGUgZGVsdGEgcGFja2V0IHRv +IHN0ZG91dC4KLlRQClxmQm1kYXRhXGZQIFxmSTxpZD5cZlAKV3JpdGUgbWFuaWZlc3QgZGF0YSBw +YWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCbWRlbHRhXGZQIFxmSTxvbGRpZD4gPG5ld2lkPlxmUApX +cml0ZSBtYW5pZmVzdCBkZWx0YSBwYWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCY2VydHNcZlAgXGZJ +PGlkPlxmUApXcml0ZSByZXZpc2lvbiBjZXJ0IHBhY2tldHMgdG8gc3Rkb3V0LgouVFAKXGZCcmRh +dGFcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZpc2lvbiBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5U +UApcZkJwcml2a2V5XGZQIFxmSTxpZD5cZlAKV3JpdGUgcHJpdmF0ZSBrZXkgcGFja2V0IHRvIHN0 +ZG91dC4KLlRQClxmQnB1YmtleVxmUCBcZkk8aWQ+XGZQCldyaXRlIHB1YmxpYyBrZXkgcGFja2V0 +IHRvIHN0ZG91dC4KLlRQClxmQnJlYWRcZlAKUmVhZCBwYWNrZXRzIGZyb20gc3RkaW4uIAouVFAK +XGZCY3ZzX2ltcG9ydFxmUCBcZkk8Y3Zzcm9vdD5cZlAKSW1wb3J0IGFsbCB2ZXJzaW9ucyBpbiBD +VlMgcmVwb3NpdG9yeS4gUmVjb25zdHJ1Y3RzIHJldmlzaW9ucyBhbmQKY29udmVydHMgbWV0YWRh +dGEgdG8gY2VydGlmaWNhdGVzLiBBIHByaXZhdGUgc2lnbmluZyBrZXkgbXVzdCBhbHJlYWR5CmV4 +aXN0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxmQnJjc19pbXBvcnRcZlAgXGZJPHJjc2ZpbGU+IC4u +LlxmUApJbXBvcnQgYWxsIGZpbGUgdmVyc2lvbnMgaW4gUkNTIGZpbGVzLiBEb2VzIG5vdCByZWNv +bnN0cnVjdCByZXZpc2lvbnMKYWNyb3NzIHRoZSBlbnRpcmUgdHJlZS4gIFlvdSBkbyBub3Qgd2Fu +dCB0aGlzIGNvbW1hbmQsIGl0IGlzIGZvcgpkZWJ1Z2dpbmc7IHVzZSBjdnNfaW1wb3J0LgouVFAK +XGZCY2hlY2tvdXRcZlAgXGZJW21hbmlmZXN0LWlkXVxmUCBcZkk8ZGlyZWN0b3J5XGZQCkNoZWNr +IG91dCB0cmVlIHN0YXRlIGZyb20gZGF0YWJhc2UuCi5UUApcZkJjb1xmUCBcZklbbWFuaWZlc3Qt +aWRdXGZQIFxmSTxkaXJlY3RvcnlcZlAKQ2hlY2sgb3V0IHRyZWUgc3RhdGUgZnJvbSBkYXRhYmFz +ZTsgYW4gYWxpYXMgZm9yIFxmQmNoZWNrb3V0XGZQLgouVFAKXGZCY2F0XGZQIFxmSShmaWxlfG1h +bmlmZXN0KSA8aWQ+XGZQCldyaXRlIGZpbGUgb3IgbWFuaWZlc3QgZnJvbSBkYXRhYmFzZSB0byBz +dGRvdXQuCi5UUApcZkJoZWFkc1xmUApTaG93IHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaCwgb3Ig +cmVwb3J0IHdoZW4gYnJhbmNoIGlzIG1lcmdlZC4KLlRQClxmQm1lcmdlXGZQCk1lcmdlIHVubWVy +Z2VkIGhlYWRzIG9mIGJyYW5jaC4KLlRQClxmQmFkZFxmUCBcZkk8cGF0aG5hbWU+IFsuLi5dXGZQ +CkFkZCBmaWxlcyB0byB3b3JraW5nIGNvcHkuIGFkZGluZyBhIGZpbGUgZG9lcyBub3QgY29weSBp +dCBpbnRvIHRoZSBkYXRhYmFzZSwKbWVyZWx5IGFkZHMgaXQgdG8gdGhlIHdvcmsgbGlzdC4gWW91 +IG11c3QgXGZCY29tbWl0XGZQIHlvdXIgY2hhbmdlcyBpbiBvcmRlcgp0byBjb3B5IGFkZGVkIGZp +bGVzIHRvIHRoZSBkYXRhYmFzZS4KLlRQClxmQmRyb3BcZlAgXGZJPHBhdGhuYW1lPiBbLi4uXVxm +UApEcm9wIGZpbGVzIGZyb20gd29ya2luZyBjb3B5LiBGaWxlcyBhcmUgbm90IGRlbGV0ZWQgZnJv +bSB3b3JraW5nIGNvcHksIAptZXJlbHkgbm90ZWQgYXMgcmVtb3ZhbHMgaW4gdGhlIHdvcmsgbGlz +dC4KLlRQClxmQnJlbmFtZVxmUCBcZkk8c3JjPiBcZkk8ZHN0PlxmUApSZW5hbWUgZmlsZXMgZnJv +bSBcZkk8c3JjPiBcZlAgdG8gXGZJPGRzdD4gXGZQIGluIHdvcmtpbmcgY29weS4KLlRQClxmQmNv +bW1pdFxmUCBcZklbLS1tZXNzYWdlPTxsb2cgbWVzc2FnZT5dIFs8cGF0aG5hbWU+Li4uXVxmUCAK +Q29tbWl0IHdvcmtpbmcgY29weSB0byBkYXRhYmFzZS4gSWYgYSAtLW1lc3NhZ2Ugb3B0aW9uIGlz +IHByb3ZpZGVkIG9uCnRoZSBjb21tYW5kIGluZSwgaXQgaXMgdXNlZDsgb3RoZXJ3aXNlIGEgbG9n +IG1lc3NhZ2UgZWRpdG9yIHdpbGwgYmUKaW52b2tlZC4KLlRQClxmQnVwZGF0ZVxmUCAgXGZJW3Jl +dmlzaW9uLWlkXVxmUApVcGRhdGUgd29ya2luZyBjb3B5LgouVFAKXGZCdXBkYXRlX2lub2RlcHJp +bnRzXGZQIApUdXJuIG9uIGlub2RlcHJpbnRzIG1vZGUsIGFuZCBmb3JjZSBhIGNhY2hlIHJlZnJl +c2guCi5UUApcZkJwdXNoXGZQIFxmSVs8aG9zdD4gWzxjb2xsZWN0aW9uPl1dXGZQIApQdXNoIGNv +bnRlbnRzIG9mIFxmSTxjb2xsZWN0aW9uPlxmUCB0byBkYXRhYmFzZSBvbiBcZkk8aG9zdD5cZlAg +Ci5UUApcZkJwdWxsXGZQIFxmSVs8aG9zdD4gWzxjb2xsZWN0aW9uPl1dXGZQIApQdXNoIGNvbnRl +bnRzIG9mIFxmSTxjb2xsZWN0aW9uPlxmUCBmcm9tIGRhdGFiYXNlIG9uIFxmSTxob3N0PlxmUCAK +LlRQClxmQnN5bmNcZlAgXGZJPGhvc3Q+IDxjb2xsZWN0aW9uPlxmUCAKU3luYyBjb250ZW50cyBv +ZiBcZkk8Y29sbGVjdGlvbj5cZlAgd2l0aCBkYXRhYmFzZSBvbiBcZkk8aG9zdD5cZlAgCi5UUApc +ZkJzZXJ2ZVxmUCBcZkk8aG9zdD4gPGNvbGxlY3Rpb24+XGZQIApTZXJ2ZSBjb250ZW50cyBvZiBc +Zkk8Y29sbGVjdGlvbj5cZlAgYXQgbmV0d29yayBhZGRyZXNzIFxmSTxob3N0PlxmUCAKLlRQClxm +QnNldFxmUCBcZkk8ZG9tYWluPiA8bmFtZT4gPHZhbHVlPlxmUCAKU2V0IHRoZSBkYiB2YXIgXGZJ +PG5hbWU+XGZQIGluIGRvbWFpbiBcZkk8ZG9tYWluPlxmUCB0byB2YWx1ZQpcZkk8dmFsdWU+XGZQ +LiAKLlRQClxmQnVuc2V0XGZQIFxmSTxkb21haW4+IDxuYW1lPlxmUCAKRGVsZXRlIGFueSBzZXR0 +aW5nIGZvciBkYiB2YXIgXGZJPG5hbWU+XGZQIGluIGRvbWFpbiBcZkk8ZG9tYWluPlxmUC4KLlRQ +ClxmQmF1dG9tYXRlXGZQIFxmSShpbnRlcmZhY2VfdmVyc2lvbnxoZWFkc3xkZXNjZW5kZW50c3xl +cmFzZV9hbmNlc3RvcnN8dG9wb3NvcnR8YW5jZXN0cnlfZGlmZmVyZW5jZXxsZWF2ZXMpXGZQClNj +cmlwdGluZyBpbnRlcmZhY2UuCi5UUApcZkJkYlxmUCBcZkkoaW5pdHxpbmZvfHZlcnNpb258ZHVt +cHxsb2FkfG1pZ3JhdGV8cmVidWlsZHxleGVjdXRlfGNoZWNrKVxmUApNYW5pcHVsYXRlIGRhdGFi +YXNlIHN0YXRlLgouU0ggREVTQ1JJUFRJT04KTW9ub3RvbmUgaXMgYSB2ZXJzaW9uIGNvbnRyb2wg +c3lzdGVtLCB3aGljaCBhbGxvd3MgeW91IHRvIGtlZXAgb2xkCnZlcnNpb25zIG9mIGZpbGVzLCBh +cyB3ZWxsIGFzIHNwZWNpYWwgXGZJbWFuaWZlc3QgZmlsZXNcZlAgd2hpY2gKZGVzY3JpYmUgdGhl +IGxvY2F0aW9uIG9mIGZpbGVzIGluIGEgdHJlZS4gVW5saWtlIG90aGVyIHN5c3RlbXMsCnZlcnNp +b25zIGluIG1vbm90b25lIGFyZSBcZklpZGVudGlmaWVkXGZQIGJ5IGNyeXB0b2dyYXBoaWMgaGFz +aCwgYW5kCm9wZXJhdGlvbnMgYXJlIGF1dGhlbnRpY2F0ZWQgYnkgaW5kaXZpZHVhbCB1c2Vycycg +ZXZhbHVhdGluZwpjcnlwdG9ncmFwaGljIHNpZ25hdHVyZXMgb24gbWV0YS1kYXRhLCByYXRoZXIg +dGhhbiBhbnkgY2VudHJhbAphdXRob3JpdHkuCgpNb25vdG9uZSBrZWVwcyBhIGNvbGxlY3Rpb24g +b2YgdmVyc2lvbnMgaW4gYSBzaW5nbGUtZmlsZSByZWxhdGlvbmFsCmRhdGFiYXNlLiBJdCBpcyBl +c3NlbnRpYWxseSBzZXJ2ZXJsZXNzLCB1c2luZyBuZXR3b3JrIHNlcnZlcnMgb25seSBhcwp1bnRy +dXN0ZWQgY29tbXVuaWNhdGlvbiBmYWNpbGl0aWVzLiBBIG1vbm90b25lIGRhdGFiYXNlIGlzIGEg +cmVndWxhcgpmaWxlLCB3aGljaCBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0 +byBleHRyYWN0IHByZXZpb3VzCnZlcnNpb25zIG9mIGZpbGVzLCB2ZXJpZnkgc2lnbmF0dXJlcywg +bWVyZ2UgYW5kIG1vZGlmeSB2ZXJzaW9ucywgYW5kCmNvbW11bmljYXRlIHdpdGggbmV0d29yayBz +ZXJ2ZXJzLgouU0ggT1BUSU9OUwouVFAKXGZCLS1oZWxwXGZQClByaW50IGhlbHAgbWVzc2FnZS4K +LlRQClxmQi0tZGVidWdcZlAKVHVybiBvbiBkZWJ1Z2dpbmcgbG9nIG9uIHN0YW5kYXJkIGVycm9y +IHN0cmVhbS4gVGhpcyBpcyB2ZXJ5CnZlcmJvc2UuIERlZmF1bHQgaXMgdG8gYmUgc2lsZW50LCB1 +bmxlc3MgYW4gZXJyb3Igb2NjdXJzLCBpbiB3aGljaApjYXNlIGZhaWx1cmUgbG9nIGlzIGR1bXBl +ZC4KLlRQClxmQi0tcXVpZXRcZlAKVHVybiBvZmYgbm9ybWFsIHByb2dyZXNzIG1lc3NhZ2VzLgou +VFAKXGZCLS1kdW1wPVxmUFxmSTxmaWxlPlxmUApEdW1wIGRlYnVnZ2luZyBsb2cgdG8gXGZJZmls +ZVxmUCBvbiBmYWlsdXJlLgouVFAKXGZCLS1ub3N0ZFxmUApEbyBub3QgZXZhbHVhdGUgInN0YW5k +YXJkIiBsdWEgaG9va3MgY29tcGlsZWQgaW50byBcZkJtb25vdG9uZVxmUC4KLlRQClxmQi0tbm9y +Y1xmUApEbyBub3QgbG9hZCBsdWEgaG9va3MgZnJvbSB1c2VyJ3MgXGZCfi8ubW9ub3RvbmVyY1xm +UCBmaWxlLgouVFAKXGZCLS1yY2ZpbGU9XGZQXGZJPGZpbGU+XGZQCkxvYWQgZXh0cmEgbHVhIGhv +b2tzIGZyb20gXGZJZmlsZVxmUCAobWF5IGJlIGdpdmVuIG11bHRpcGxlIHRpbWVzKS4KLlRQClxm +Qi0tZGI9XGZQXGZJPGZpbGU+XGZQClVzZSBkYXRhYmFzZSBpbiBcZklmaWxlXGZQLgouVFAKXGZC +LS1rZXk9XGZQXGZJPGtleWlkPlxmUApVc2UgXGZJa2V5aWRcZlAgZm9yIG9wZXJhdGlvbnMgd2hp +Y2ggcHJvZHVjZSBSU0Egc2lnbmF0dXJlcy4gRGVmYXVsdAppcyBpbmZlcnJlZCBmcm9tIHByZXNl +bmNlIG9mIHVuaXF1ZSBwcml2YXRlIGtleSBpbiBkYXRhYmFzZS4gQ2FuIGFsc28KYmUgY3VzdG9t +aXplZCBvbiBhIHBlci1icmFuY2ggYmFzaXMgd2l0aCBob29rIGZ1bmN0aW9uIApcZkJnZXRfYnJh +bmNoX2tleShicmFuY2huYW1lKVxmUC4KLlRQClxmQi1rXGZQIFxmSTxrZXlpZD5cZlAKQW4gYWxp +YXMgZm9yIFxmQi0ta2V5PVxmUFxmSTxrZXlpZD5cZlAKLlRQClxmQi0tYnJhbmNoPVxmUFxmSTxi +cmFuY2huYW1lPlxmUApVc2UgXGZJYnJhbmNobmFtZVxmUCBmb3Igb3BlcmF0aW9ucyBvbiBhIGJy +YW5jaC4gRGVmYXVsdCBpcyBpbmZlcnJlZAppbiBvcGVyYXRpb25zIG9uIGV4aXN0aW5nIGJyYW5j +aGVzIChjb21taXQsIHVwZGF0ZSwgZXRjKS4KLlRQClxmQi1iXGZQIFxmSTxicmFuY2huYW1lPlxm +UApBbiBhbGlhcyBmb3IgXGZCLS1icmFuY2g9XGZQXGZJPGJyYW5jaG5hbWU+XGZQCi5UUApcZkIt +LXRpY2tldD1cZlBcZklkb3R8Y291bnRcZlAKVXNlIHRoZSBnaXZlbiBtZXRob2QgdG8gcHJpbnQg +dGlja2Vycy4gIFRoZSBcZkJjb3VudFxmUCBtZXRob2QgcHJpbnRzCnRoZSBjb3VudCBmb3IgZWFj +aCB0aWNrZXIgb24gb25lIGxpbmUsIGluY3JlbWVudGluZyB0aGUgbnVtYmVycyBpbgpwbGFjZSwg +d2hpbGUgdGhlIFxmQmRvdFxmUCBtZXRob2QgcHJpbnRzIGEgY29udGludW91cyBzdHJpbmcgb2YK +Y2hhcmFjdGVycyAobGlrZSBzb21lIHByb2dyYW1zIHByb3ZpZGUgYSBwcm9ncmVzcyBsaW5lIG9m +IGRvdHMpLgpUaGUgZGVmYXVsdCBpcyBcZkJjb3VudFxmUC4KLlRQClxmQi0tcmV2aXNpb249XGZQ +XGZJPGlkPlxmUApDdXJyZW50bHkgdGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSBkaWZm +IGNvbW1hbmQgd2hlcmUgaXQgbWF5IGJlCnVzZWQgdG8gY29tcGFyZSBhIHdvcmtpbmcgY29weSB3 +aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb3IgdG8gY29tcGFyZQp0d28gc3BlY2lmaWMgcmV2aXNp +b25zLiBJdCB3aWxsIGxpa2VseSBhcHBseSB0byBvdGhlciBjb21tYW5kcyBpbiB0aGUKZnV0dXJl +LgouVFAKXGZCLXJcZlAgXGZJPGlkPlxmUApBbiBhbGlhcyBmb3IgXGZCLS1yZXZpc2lvbj1cZlBc +Zkk8aWQ+XGZQCi5UUApcZkItLW1lc3NhZ2U9XGZJPGxvZyBtZXNzYWdlPlxmUApVc2UgdGhlIGdp +dmVuIG1lc3NhZ2UgYXMgdGhlIGNoYW5nZWxvZyB3aGVuIGNvbW1pdHRpbmcgYSBuZXcgcmV2aXNp +b24KcmF0aGVyIHRoYW4gaW52b2tpbmcgdGhlIGxvZyBtZXNzYWdlIGVkaXRvci4gQ3VycmVudGx5 +IHRoaXMgb3B0aW9uIG9ubHkKYXBwbGllcyB0byB0aGUgY29tbWl0IGNvbW1hbmQgYnV0IGl0IG1h +eSBhbHNvIGFwcGx5IHRvIHRoZSBjb21tZW50CmNvbW1hbmQgaW4gdGhlIGZ1dHVyZS4KLlRQClxm +Qi1tIFxmSTxsb2cgbWVzc2FnZT5cZlAKQW4gYWxpYXMgZm9yIFxmQi0tbWVzc2FnZT1cZkk8bG9n +IG1lc3NhZ2U+XGZQCi5UUApcZkItLWF1dGhvcj1cZkk8YXV0aG9yIGVtYWlsPlxmUApVc2UgdGhl +IGdpdmVuIGF1dGhvciBhcyB0aGUgdmFsdWUgb2YgdGhlICJhdXRob3IiIGNlcnQgd2hlbiBjb21t +aXR0aW5nCmEgbmV3IHJldmlzaW9uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBhdXRob3IuICBV +c2VmdWwgd2hlbgpjb21taXR0aW5nIGEgcGF0Y2ggb24gYmVoYWxmIG9mIHNvbWVvbmUgZWxzZSwg +b3Igd2hlbiBpbXBvcnRpbmcKaGlzdG9yeSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5 +c3RlbS4KLlRQClxmQi0tZGF0ZT1cZkk8ZGF0ZSBhbmQgdGltZT5cZlAKVXNlIHRoZSBnaXZlbiBn +aXZlbiBkYXRlIGFuZCB0aW1lIGFzIHZhbHVlIG9mIHRoZSAiZGF0ZSIgY2VydCB3aGVuCmNvbW1p +dHRpbmcgYSBuZXcgcmV2aXNpb24sIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50IHRpbWUuICBVc2Vm +dWwgd2hlbgppbXBvcnRpbmcgaGlzdG9yeSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5 +c3RlbS4KLlRQClxmQi0tcm9vdD1cZkk8cm9vdCBkaXI+XGZQClN0b3AgdGhlIHNlYXJjaCBmb3Ig +YSB3b3JraW5nIGNvcHkgKGNvbnRhaW5pbmcgdGhlIEBmaWxle01UfSBkaXJlY3RvcnkpCmF0IHRo +ZSBzcGVjaWZpZWQgcm9vdCBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYXQgdGhlIHBoeXNpY2FsIHJv +b3Qgb2YgdGhlCmZpbGVzeXN0ZW0uCi5UUApcZkItLXhhcmdzPVxmSTxmaWxlPlxmUApJbmplY3Qg +dGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGluIHBsYWNlIGFtb25nIHRoZSBjb21tYW5kIGxpbmUK +YXJndW1lbnRzLiAgVGhpcyBtYXkgYmUgdXNlZnVsIGluIGNhc2UgdGhlIGNvbW1hbmQgbGluZSB3 +b3VsZApvdGhlcndpc2UgYmVjb21lIHRvbyBsb25nIGZvciB5b3VyIHN5c3RlbS4gIFRoaXMgb3B0 +aW9uIGNhbiBiZSB1c2VkCm1vcmUgdGhhbiBvbmNlIGlmIG5lZWRlZC4KLlRQClxmQi1AIFxmSTxm +aWxlPlxmUApBbiBhbGlhcyBmb3IgXGZCLS14YXJncz1cZkk8ZmlsZT5cZlAKLlRQClxmQi0tYWxs +LWZpbGVzXGZQCkluY2x1ZGUgZXZlcnkgZmlsZSBhdmFpbGFibGUgaW4gdGhlIHdvcmtpbmcgY29w +eSBpbiB0aGUgaW52ZW50b3J5Cmxpc3QuIEJ5IGRlZmF1bHQgaW52ZW50b3J5IG9ubHkgbGlzdHMg +YGBpbnRlcmVzdGluZycnIGZpbGVzLiBUaGlzIG9wdGlvbgppcyBzcGVjaWZpYyB0byB0aGUgQGNv +bW1hbmR7aW52ZW50b3J5fSBjb21tYW5kLgoKLlNIIEVOVklST05NRU5UCi5UUApcZkJFRElUT1Jc +ZlAKVXNlZCB0byBlZGl0IGNvbW1lbnRzLCBsb2cgbWVzc2FnZXMsIGV0Yy4KLlRQClxmQlZJU1VB +TFxmUApVc2VkIGluIHByZWZlcmVuY2UgdG8gXGZCRURJVE9SXGZQLCBpZiBzZXQuCi5TSCBGSUxF +UwouVFAKXGZCJEhPTUUvLm1vbm90b25lcmNcZlAKQSBsdWEgc2NyaXB0LCB1c2VkIGFzIGEgY3Vz +dG9taXphdGlvbiBmaWxlLgouU0ggTk9URVMKLklQIFwoYnUKQ29tbWFuZCBsaW5lIG9wdGlvbnMg +b3ZlcnJpZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZApzZXR0aW5ncyBpbiBsdWEgc2NyaXB0 +cyAoc3VjaCBhcyBcZkIubW9ub3RvbmVyY1xmUCkKLlNIICJTRUUgQUxTTyIKXGZCaW5mbyBtb25v +dG9uZVxmUAouU0ggQlVHUwpzZWUgaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvYnVncy8/Z3Jv +dXA9bW9ub3RvbmUKLlNIIEFVVEhPUgpncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4K +]) + +AT_DATA(right.b64, [ +LlRIICJtb25vdG9uZSIgMQouU0ggTkFNRQptb25vdG9uZSBcLSBkaXN0cmlidXRlZCB2ZXJzaW9u +IGNvbnRyb2wgc3lzdGVtCi5TSCBTWU5PUFNJUwpcZkJtb25vdG9uZVxmUCBcZklbb3B0aW9uc10g +PGNvbW1hbmQ+IFtwYXJhbWV0ZXJzXVxmUAouUApPcHRpb25zLCB3aGljaCBhZmZlY3QgZ2xvYmFs +IGJlaGF2aW9yIG9yIHNldCBkZWZhdWx0IHZhbHVlcywgY29tZQpmaXJzdCBpbiB0aGUgYXJndW1l +bnQgbGlzdC4gQSBzaW5nbGUgY29tbWFuZCBtdXN0IGZvbGxvdywgaW5kaWNhdGluZwp0aGUgb3Bl +cmF0aW9uIHRvIHBlcmZvcm0sIGZvbGxvd2VkIGJ5IHBhcmFtZXRlcnMgd2hpY2ggdmFyeSBkZXBl +bmRpbmcKb24gdGhlIGNvbW1hbmQuCi5TUyBOb3RlClRoaXMgbWFucGFnZSBpcyBhIHN1bW1hcnkg +b2Ygc29tZSBvZiB0aGUgZmVhdHVyZXMgYW5kIGNvbW1hbmRzIG9mClxmQm1vbm90b25lXGZQLCBi +dXQgaXQgaXMgbm90IHRoZSBtb3N0IGRldGFpbGVkIHNvdXJjZSBvZiBpbmZvcm1hdGlvbgphdmFp +bGFibGUuIEZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlIGNvbmNlcHRzIGFuZCBhIHR1 +dG9yaWFsIG9uCml0cyB1c2UsIHBsZWFzZSByZWZlciB0byB0aGUgdGV4aW5mbyBtYW51YWwgKHZp +YSB0aGUgXGZCaW5mbwptb25vdG9uZVxmUCBjb21tYW5kLCBvciBvbmxpbmUpLgouU1MgQ29tbWFu +ZHMKLlRQIApcZkJjb21tZW50XGZQIFxmSTxpZD5cZlAKV3JpdGUgYSBjb21tZW50IGNlcnQgZm9y +IGEgcmV2aXNpb24uCi5UUApcZkJhcHByb3ZlXGZQIFxmSTxpZD5cZlAKTWFrZSBhICJicmFuY2gi +IGNlcnQgYXBwcm92aW5nIG9mIGEgcmV2aXNpb24ncyBtZW1iZXJzaGlwIGluIGEgYnJhbmNoLgou +VFAKXGZCZGlzYXBwcm92ZVxmUCBcZkk8aWQxPlxmUApEaXNhcHByb3ZlIG9mIGEgcmV2aXNpb24s +IGNvbW1pdHRpbmcgdGhlIGludmVyc2UgY2hhbmdlcyBhcyBhcyBhCmRlc2NlbmRhbnQgb2YgdGhl +IGRpc2FwcHJvdmVkIHJldmlzaW9uLgouVFAKXGZCdGFnXGZQIFxmSTxpZD4gPHRhZ25hbWU+XGZQ +ClB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJ0ZXN0cmVzdWx0 +XGZQIFxmSTxpZD4gKDB8MXx0cnVlfGZhbHNlfHllc3xub3xwYXNzfGZhaWwpXGZQCkluZGljYXRl +IGEgcGFzc2luZyBvciBmYWlsaW5nIHRlc3QgcmVzdWx0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJh +Z3JhcGhcZlAKRHVtcCByZXZpc2lvbiBncmFwaCB0byBzdGRvdXQgaW4gVkNHIGZvcm1hdC4KLlRQ +ClxmQmRpZmYgXGZJWy0tcmV2aXNpb249PGlkMT4gWy0tcmV2aXNpb249PGlkMj5dIF0gWzxwYXRo +bmFtZT4uLi5dXGZQClNob3cgZGlmZnMgYmV0d2VlbiB3b3JraW5nIGNvcHkgYW5kIGRhdGFiYXNl +LgouVFAKXGZCc3RhdHVzIFxmSVs8cGF0aG5hbWU+Li4uXVxmUApTaG93IHN0YXR1cyBvZiB3b3Jr +aW5nIGNvcHkuCi5UUApcZkJsb2dcZlAgXGZJW2lkXSBcZlAKU2hvdyBoaXN0b3JpY2FsIGxvZyBv +ZiByZXZpc2lvbnMsIHN0YXJ0aW5nIGZyb20gd29ya2luZyBjb3B5CmJhc2UgcmV2aXNpb24sIG9y +IFxmSVtpZF1cZlAgaWYgZ2l2ZW4uCi5UUApcZkJjZXJ0XGZQIFxmSTxpZD4gPGNlcnRuYW1lPiBb +Y2VydHZhbF1cZlAKQ3JlYXRlIGEgY3VzdG9tIGNlcnQgZm9yIGEgcmV2aXNpb24uIFJlYWRzIGNl +cnQgdmFsdWUKZnJvbSBzdGRpbiBpZiBubyB2YWx1ZSBnaXZlbiBvbiBjb21tYW5kIGxpbmUuCi5U +UApcZkJnZW5rZXlcZlAgXGZJPGtleWlkPlxmUApHZW5lcmF0ZSBhbiBSU0Ega2V5LXBhaXIgYW5k +IHN0b3JlIGl0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxjaGtleXBhc3NcZlAgXGZJPGtleWlkPlxm +UApDaGFuZ2UgcGFzc3BocmFzZSBvZiB0aGUgcHJpdmF0ZSBoYWxmIG9mIGEga2V5LgouVFAKXGZC +bGlzdCBjZXJ0c1xmUCBcZkk8aWQ+XGZQCkxpc3QgY2VydHMgYXNzb2NpYXRlZCB3aXRoIHJldmlz +aW9uLgouVFAKXGZCbGlzdCBrZXlzXGZQIFxmSVtwYXJ0aWFsLWlkXVxmUApMaXN0IGtleXMgbWF0 +Y2hpbmcgZ2xvYiwgb3IgbGlzdCBhbGwga2V5cyBpZiBubyBnbG9iIGdpdmVuLgouVFAKXGZCbGlz +dCBicmFuY2hlc1xmUApMaXN0IGFsbCBicmFuY2hlcy4KLlRQClxmQmxpc3QgdGFnc1xmUApMaXN0 +IGFsbCB0YWdzLgouVFAKXGZCbGlzdCB2YXJzIFxmSVs8ZG9tYWluPl1cZlAKTGlzdCBhbGwgdmFy +cyAocG9zc2libHkgbGltaXRlZCBieSBkb21haW4pLgouVFAKXGZCbGlzdCB1bmtub3duIFxmSVs8 +cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gd29ya2luZyBkaXJlY3RvcnksIGJ1dCBub3Qg +aW4gcmV2aXNpb24ncyBtYW5pZmVzdCBvcgp3b3JrIGxpc3QuCi5UUApcZkJsaXN0IGlnbm9yZWQg +XGZJWzxwYXRobmFtZS4uLl1cZlAKTGlzdCBmaWxlcyBpbnRlbnRpb25hbGx5IGlnbm9yZWQgZHVl +IHRvIHRoZSBpZ25vcmVfZmlsZSBob29rLgouVFAKXGZCbGlzdCBtaXNzaW5nIFxmSVs8cGF0aG5h +bWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gcmV2aXNpb24ncyBtYW5pZmVzdCwgYnV0IG5vdCBpbiB3 +b3JraW5nIGRpcmVjdG9yeS4KLlRQClxmQmZkYXRhXGZQIFxmSTxpZD5cZlAKV3JpdGUgZmlsZSBk +YXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJmZGVsdGFcZlAgXGZJPG9sZGlkPiA8bmV3aWQ+ +XGZQCldyaXRlIGZpbGUgZGVsdGEgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQm1kYXRhXGZQIFxm +STxpZD5cZlAKV3JpdGUgbWFuaWZlc3QgZGF0YSBwYWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCbWRl +bHRhXGZQIFxmSTxvbGRpZD4gPG5ld2lkPlxmUApXcml0ZSBtYW5pZmVzdCBkZWx0YSBwYWNrZXQg +dG8gc3Rkb3V0LgouVFAKXGZCY2VydHNcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZpc2lvbiBjZXJ0 +IHBhY2tldHMgdG8gc3Rkb3V0LgouVFAKXGZCcmRhdGFcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZp +c2lvbiBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJwcml2a2V5XGZQIFxmSTxpZD5cZlAK +V3JpdGUgcHJpdmF0ZSBrZXkgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQnB1YmtleVxmUCBcZkk8 +aWQ+XGZQCldyaXRlIHB1YmxpYyBrZXkgcGFja2V0IHRvIHN0ZG91dC4KLlRQClxmQnJlYWRcZlAK +UmVhZCBwYWNrZXRzIGZyb20gc3RkaW4uIAouVFAKXGZCY3ZzX2ltcG9ydFxmUCBcZkk8Y3Zzcm9v +dD5cZlAKSW1wb3J0IGFsbCB2ZXJzaW9ucyBpbiBDVlMgcmVwb3NpdG9yeS4gUmVjb25zdHJ1Y3Rz +IHJldmlzaW9ucyBhbmQKY29udmVydHMgbWV0YWRhdGEgdG8gY2VydGlmaWNhdGVzLiBBIHByaXZh +dGUgc2lnbmluZyBrZXkgbXVzdCBhbHJlYWR5CmV4aXN0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxm +QnJjc19pbXBvcnRcZlAgXGZJPHJjc2ZpbGU+IC4uLlxmUApJbXBvcnQgYWxsIGZpbGUgdmVyc2lv +bnMgaW4gUkNTIGZpbGVzLiBEb2VzIG5vdCByZWNvbnN0cnVjdCByZXZpc2lvbnMKYWNyb3NzIHRo +ZSBlbnRpcmUgdHJlZS4gIFlvdSBkbyBub3Qgd2FudCB0aGlzIGNvbW1hbmQsIGl0IGlzIGZvcgpk +ZWJ1Z2dpbmc7IHVzZSBjdnNfaW1wb3J0LgouVFAKXGZCY2hlY2tvdXRcZlAgXGZJW21hbmlmZXN0 +LWlkXVxmUCBcZkk8ZGlyZWN0b3J5XGZQCkNoZWNrIG91dCB0cmVlIHN0YXRlIGZyb20gZGF0YWJh +c2UuCi5UUApcZkJjb1xmUCBcZklbbWFuaWZlc3QtaWRdXGZQIFxmSTxkaXJlY3RvcnlcZlAKQ2hl +Y2sgb3V0IHRyZWUgc3RhdGUgZnJvbSBkYXRhYmFzZTsgYW4gYWxpYXMgZm9yIFxmQmNoZWNrb3V0 +XGZQLgouVFAKXGZCY2F0XGZQIFxmSShmaWxlfG1hbmlmZXN0KSA8aWQ+XGZQCldyaXRlIGZpbGUg +b3IgbWFuaWZlc3QgZnJvbSBkYXRhYmFzZSB0byBzdGRvdXQuCi5UUApcZkJoZWFkc1xmUApTaG93 +IHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaCwgb3IgcmVwb3J0IHdoZW4gYnJhbmNoIGlzIG1lcmdl +ZC4KLlRQClxmQm1lcmdlXGZQCk1lcmdlIHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaC4KLlRQClxm +QmFkZFxmUCBcZkk8cGF0aG5hbWU+IFsuLi5dXGZQCkFkZCBmaWxlcyB0byB3b3JraW5nIGNvcHku +IGFkZGluZyBhIGZpbGUgZG9lcyBub3QgY29weSBpdCBpbnRvIHRoZSBkYXRhYmFzZSwKbWVyZWx5 +IGFkZHMgaXQgdG8gdGhlIHdvcmsgbGlzdC4gWW91IG11c3QgXGZCY29tbWl0XGZQIHlvdXIgY2hh +bmdlcyBpbiBvcmRlcgp0byBjb3B5IGFkZGVkIGZpbGVzIHRvIHRoZSBkYXRhYmFzZS4KLlRQClxm +QmRyb3BcZlAgXGZJPHBhdGhuYW1lPiBbLi4uXVxmUApEcm9wIGZpbGVzIGZyb20gd29ya2luZyBj +b3B5LiBGaWxlcyBhcmUgbm90IGRlbGV0ZWQgZnJvbSB3b3JraW5nIGNvcHksIAptZXJlbHkgbm90 +ZWQgYXMgcmVtb3ZhbHMgaW4gdGhlIHdvcmsgbGlzdC4KLlRQClxmQnJlbmFtZVxmUCBcZkk8c3Jj +PiBcZkk8ZHN0PlxmUApSZW5hbWUgZmlsZXMgZnJvbSBcZkk8c3JjPiBcZlAgdG8gXGZJPGRzdD4g +XGZQIGluIHdvcmtpbmcgY29weS4KLlRQClxmQmNvbW1pdFxmUCBcZklbLS1tZXNzYWdlPTxsb2cg +bWVzc2FnZT5dIFs8cGF0aG5hbWU+Li4uXVxmUCAKQ29tbWl0IHdvcmtpbmcgY29weSB0byBkYXRh +YmFzZS4gSWYgYSAtLW1lc3NhZ2Ugb3B0aW9uIGlzIHByb3ZpZGVkIG9uCnRoZSBjb21tYW5kIGlu +ZSwgaXQgaXMgdXNlZDsgb3RoZXJ3aXNlIGEgbG9nIG1lc3NhZ2UgZWRpdG9yIHdpbGwgYmUKaW52 +b2tlZC4KLlRQClxmQnVwZGF0ZVxmUCAKVXBkYXRlIHdvcmtpbmcgY29weS4KLlRQClxmQnB1c2hc +ZlAgXGZJPGhvc3Q+IDxjb2xsZWN0aW9uPlxmUCAKUHVzaCBjb250ZW50cyBvZiBcZkk8Y29sbGVj +dGlvbj5cZlAgdG8gZGF0YWJhc2Ugb24gXGZJPGhvc3Q+XGZQIAouVFAKXGZCcHVsbFxmUCBcZkk8 +aG9zdD4gPGNvbGxlY3Rpb24+XGZQIApQdXNoIGNvbnRlbnRzIG9mIFxmSTxjb2xsZWN0aW9uPlxm +UCBmcm9tIGRhdGFiYXNlIG9uIFxmSTxob3N0PlxmUCAKLlRQClxmQnN5bmNcZlAgXGZJPGhvc3Q+ +IDxjb2xsZWN0aW9uPlxmUCAKU3luYyBjb250ZW50cyBvZiBcZkk8Y29sbGVjdGlvbj5cZlAgd2l0 +aCBkYXRhYmFzZSBvbiBcZkk8aG9zdD5cZlAgCi5UUApcZkJzZXJ2ZVxmUCBcZkk8aG9zdD4gPGNv +bGxlY3Rpb24+XGZQIApTZXJ2ZSBjb250ZW50cyBvZiBcZkk8Y29sbGVjdGlvbj5cZlAgYXQgbmV0 +d29yayBhZGRyZXNzIFxmSTxob3N0PlxmUCAKLlRQClxmQnNldFxmUCBcZkk8ZG9tYWluPiA8bmFt +ZT4gPHZhbHVlPlxmUCAKU2V0IHRoZSBkYiB2YXIgXGZJPG5hbWU+XGZQIGluIGRvbWFpbiBcZkk8 +ZG9tYWluPlxmUCB0byB2YWx1ZQpcZkk8dmFsdWU+XGZQLiAKLlRQClxmQnVuc2V0XGZQIFxmSTxk +b21haW4+IDxuYW1lPlxmUCAKRGVsZXRlIGFueSBzZXR0aW5nIGZvciBkYiB2YXIgXGZJPG5hbWU+ +XGZQIGluIGRvbWFpbiBcZkk8ZG9tYWluPlxmUC4KLlRQClxmQmF1dG9tYXRlXGZQIFxmSShpbnRl +cmZhY2VfdmVyc2lvbnxoZWFkc3xkZXNjZW5kZW50c3xlcmFzZV9hbmNlc3RvcnN8dG9wb3NvcnR8 +YW5jZXN0cnlfZGlmZmVyZW5jZXxsZWF2ZXMpXGZQClNjcmlwdGluZyBpbnRlcmZhY2UuCi5UUApc +ZkJkYlxmUCBcZkkoaW5pdHxpbmZvfHZlcnNpb258ZHVtcHxsb2FkfG1pZ3JhdGV8cmVidWlsZHxl +eGVjdXRlfGNoZWNrKVxmUApNYW5pcHVsYXRlIGRhdGFiYXNlIHN0YXRlLgouU0ggREVTQ1JJUFRJ +T04KTW9ub3RvbmUgaXMgYSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCB3aGljaCBhbGxvd3MgeW91 +IHRvIGtlZXAgb2xkCnZlcnNpb25zIG9mIGZpbGVzLCBhcyB3ZWxsIGFzIHNwZWNpYWwgXGZJbWFu +aWZlc3QgZmlsZXNcZlAgd2hpY2gKZGVzY3JpYmUgdGhlIGxvY2F0aW9uIG9mIGZpbGVzIGluIGEg +dHJlZS4gVW5saWtlIG90aGVyIHN5c3RlbXMsCnZlcnNpb25zIGluIG1vbm90b25lIGFyZSBcZklp +ZGVudGlmaWVkXGZQIGJ5IGNyeXB0b2dyYXBoaWMgaGFzaCwgYW5kCm9wZXJhdGlvbnMgYXJlIGF1 +dGhlbnRpY2F0ZWQgYnkgaW5kaXZpZHVhbCB1c2VycycgZXZhbHVhdGluZwpjcnlwdG9ncmFwaGlj +IHNpZ25hdHVyZXMgb24gbWV0YS1kYXRhLCByYXRoZXIgdGhhbiBhbnkgY2VudHJhbAphdXRob3Jp +dHkuCgpNb25vdG9uZSBrZWVwcyBhIGNvbGxlY3Rpb24gb2YgdmVyc2lvbnMgaW4gYSBzaW5nbGUt +ZmlsZSByZWxhdGlvbmFsCmRhdGFiYXNlLiBJdCBpcyBlc3NlbnRpYWxseSBzZXJ2ZXJsZXNzLCB1 +c2luZyBuZXR3b3JrIHNlcnZlcnMgb25seSBhcwp1bnRydXN0ZWQgY29tbXVuaWNhdGlvbiBmYWNp +bGl0aWVzLiBBIG1vbm90b25lIGRhdGFiYXNlIGlzIGEgcmVndWxhcgpmaWxlLCB3aGljaCBjb250 +YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBleHRyYWN0IHByZXZpb3VzCnZlcnNp +b25zIG9mIGZpbGVzLCB2ZXJpZnkgc2lnbmF0dXJlcywgbWVyZ2UgYW5kIG1vZGlmeSB2ZXJzaW9u +cywgYW5kCmNvbW11bmljYXRlIHdpdGggbmV0d29yayBzZXJ2ZXJzLgouU0ggT1BUSU9OUwouVFAK +XGZCLS1oZWxwXGZQClByaW50IGhlbHAgbWVzc2FnZS4KLlRQClxmQi0tZGVidWdcZlAKVHVybiBv +biBkZWJ1Z2dpbmcgbG9nIG9uIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4gVGhpcyBpcyB2ZXJ5CnZl +cmJvc2UuIERlZmF1bHQgaXMgdG8gYmUgc2lsZW50LCB1bmxlc3MgYW4gZXJyb3Igb2NjdXJzLCBp +biB3aGljaApjYXNlIGZhaWx1cmUgbG9nIGlzIGR1bXBlZC4KLlRQClxmQi0tcXVpZXRcZlAKVHVy +biBvZmYgbm9ybWFsIHByb2dyZXNzIG1lc3NhZ2VzLgouVFAKXGZCLS1kdW1wPVxmUFxmSTxmaWxl +PlxmUApEdW1wIGRlYnVnZ2luZyBsb2cgdG8gXGZJZmlsZVxmUCBvbiBmYWlsdXJlLgouVFAKXGZC +LS1ub3N0ZFxmUApEbyBub3QgZXZhbHVhdGUgInN0YW5kYXJkIiBsdWEgaG9va3MgY29tcGlsZWQg +aW50byBcZkJtb25vdG9uZVxmUC4KLlRQClxmQi0tbm9yY1xmUApEbyBub3QgbG9hZCBsdWEgaG9v +a3MgZnJvbSB1c2VyJ3MgXGZCfi8ubW9ub3RvbmVyY1xmUCBmaWxlLgouVFAKXGZCLS1yY2ZpbGU9 +XGZQXGZJPGZpbGU+XGZQCkxvYWQgZXh0cmEgbHVhIGhvb2tzIGZyb20gXGZJZmlsZVxmUCAobWF5 +IGJlIGdpdmVuIG11bHRpcGxlIHRpbWVzKS4KLlRQClxmQi0tZGI9XGZQXGZJPGZpbGU+XGZQClVz +ZSBkYXRhYmFzZSBpbiBcZklmaWxlXGZQLgouVFAKXGZCLS1rZXk9XGZQXGZJPGtleWlkPlxmUApV +c2UgXGZJa2V5aWRcZlAgZm9yIG9wZXJhdGlvbnMgd2hpY2ggcHJvZHVjZSBSU0Egc2lnbmF0dXJl +cy4gRGVmYXVsdAppcyBpbmZlcnJlZCBmcm9tIHByZXNlbmNlIG9mIHVuaXF1ZSBwcml2YXRlIGtl +eSBpbiBkYXRhYmFzZS4gQ2FuIGFsc28KYmUgY3VzdG9taXplZCBvbiBhIHBlci1icmFuY2ggYmFz +aXMgd2l0aCBob29rIGZ1bmN0aW9uIApcZkJnZXRfYnJhbmNoX2tleShicmFuY2huYW1lKVxmUC4K +LlRQClxmQi1rXGZQIFxmSTxrZXlpZD5cZlAKQW4gYWxpYXMgZm9yIFxmQi0ta2V5PVxmUFxmSTxr +ZXlpZD5cZlAKLlRQClxmQi0tYnJhbmNoPVxmUFxmSTxicmFuY2huYW1lPlxmUApVc2UgXGZJYnJh +bmNobmFtZVxmUCBmb3Igb3BlcmF0aW9ucyBvbiBhIGJyYW5jaC4gRGVmYXVsdCBpcyBpbmZlcnJl +ZAppbiBvcGVyYXRpb25zIG9uIGV4aXN0aW5nIGJyYW5jaGVzIChjb21taXQsIHVwZGF0ZSwgZXRj +KS4KLlRQClxmQi1iXGZQIFxmSTxicmFuY2huYW1lPlxmUApBbiBhbGlhcyBmb3IgXGZCLS1icmFu +Y2g9XGZQXGZJPGJyYW5jaG5hbWU+XGZQCi5UUApcZkItLXRpY2tldD1cZlBcZklkb3R8Y291bnRc +ZlAKVXNlIHRoZSBnaXZlbiBtZXRob2QgdG8gcHJpbnQgdGlja2Vycy4gIFRoZSBcZkJjb3VudFxm +UCBtZXRob2QgcHJpbnRzCnRoZSBjb3VudCBmb3IgZWFjaCB0aWNrZXIgb24gb25lIGxpbmUsIGlu +Y3JlbWVudGluZyB0aGUgbnVtYmVycyBpbgpwbGFjZSwgd2hpbGUgdGhlIFxmQmRvdFxmUCBtZXRo +b2QgcHJpbnRzIGEgY29udGludW91cyBzdHJpbmcgb2YKY2hhcmFjdGVycyAobGlrZSBzb21lIHBy +b2dyYW1zIHByb3ZpZGUgYSBwcm9ncmVzcyBsaW5lIG9mIGRvdHMpLgpUaGUgZGVmYXVsdCBpcyBc +ZkJjb3VudFxmUC4KLlRQClxmQi0tcmV2aXNpb249XGZQXGZJPGlkPlxmUApDdXJyZW50bHkgdGhp +cyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSBkaWZmIGNvbW1hbmQgd2hlcmUgaXQgbWF5IGJl +CnVzZWQgdG8gY29tcGFyZSBhIHdvcmtpbmcgY29weSB3aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24g +b3IgdG8gY29tcGFyZQp0d28gc3BlY2lmaWMgcmV2aXNpb25zLiBJdCB3aWxsIGxpa2VseSBhcHBs +eSB0byBvdGhlciBjb21tYW5kcyBpbiB0aGUKZnV0dXJlLgouVFAKXGZCLXJcZlAgXGZJPGlkPlxm +UApBbiBhbGlhcyBmb3IgXGZCLS1yZXZpc2lvbj1cZlBcZkk8aWQ+XGZQCi5UUApcZkItLW1lc3Nh +Z2U9XGZJPGxvZyBtZXNzYWdlPlxmUApVc2UgdGhlIGdpdmVuIG1lc3NhZ2UgYXMgdGhlIGNoYW5n +ZWxvZyB3aGVuIGNvbW1pdHRpbmcgYSBuZXcgcmV2aXNpb24KcmF0aGVyIHRoYW4gaW52b2tpbmcg +dGhlIGxvZyBtZXNzYWdlIGVkaXRvci4gQ3VycmVudGx5IHRoaXMgb3B0aW9uIG9ubHkKYXBwbGll +cyB0byB0aGUgY29tbWl0IGNvbW1hbmQgYnV0IGl0IG1heSBhbHNvIGFwcGx5IHRvIHRoZSBjb21t +ZW50CmNvbW1hbmQgaW4gdGhlIGZ1dHVyZS4KLlRQClxmQi1tIFxmSTxsb2cgbWVzc2FnZT5cZlAK +QW4gYWxpYXMgZm9yIFxmQi0tbWVzc2FnZT1cZkk8bG9nIG1lc3NhZ2U+XGZQCi5UUApcZkItLWF1 +dGhvcj1cZkk8YXV0aG9yIGVtYWlsPlxmUApVc2UgdGhlIGdpdmVuIGF1dGhvciBhcyB0aGUgdmFs +dWUgb2YgdGhlICJhdXRob3IiIGNlcnQgd2hlbiBjb21taXR0aW5nCmEgbmV3IHJldmlzaW9uLCBy +YXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBhdXRob3IuICBVc2VmdWwgd2hlbgpjb21taXR0aW5nIGEg +cGF0Y2ggb24gYmVoYWxmIG9mIHNvbWVvbmUgZWxzZSwgb3Igd2hlbiBpbXBvcnRpbmcKaGlzdG9y +eSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KLlRQClxmQi0tZGF0ZT1cZkk8 +ZGF0ZSBhbmQgdGltZT5cZlAKVXNlIHRoZSBnaXZlbiBnaXZlbiBkYXRlIGFuZCB0aW1lIGFzIHZh +bHVlIG9mIHRoZSAiZGF0ZSIgY2VydCB3aGVuCmNvbW1pdHRpbmcgYSBuZXcgcmV2aXNpb24sIHJh +dGhlciB0aGFuIHRoZSBjdXJyZW50IHRpbWUuICBVc2VmdWwgd2hlbgppbXBvcnRpbmcgaGlzdG9y +eSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KLlRQClxmQi0tcm9vdD1cZkk8 +cm9vdCBkaXI+XGZQClN0b3AgdGhlIHNlYXJjaCBmb3IgYSB3b3JraW5nIGNvcHkgKGNvbnRhaW5p +bmcgdGhlIEBmaWxle01UfSBkaXJlY3RvcnkpCmF0IHRoZSBzcGVjaWZpZWQgcm9vdCBkaXJlY3Rv +cnkgcmF0aGVyIHRoYW4gYXQgdGhlIHBoeXNpY2FsIHJvb3Qgb2YgdGhlCmZpbGVzeXN0ZW0uCi5U +UApcZkIteGFyZ3M9XGZJPGZpbGU+XGZQCkluamVjdCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUg +aW4gcGxhY2UgYW1vbmcgdGhlIGNvbW1hbmQgbGluZQphcmd1bWVudHMuICBUaGlzIG1heSBiZSB1 +c2VmdWwgaW4gY2FzZSB0aGUgY29tbWFuZCBsaW5lIHdvdWxkCm90aGVyd2lzZSBiZWNvbWUgdG9v +IGxvbmcgZm9yIHlvdXIgc3lzdGVtLiAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQKbW9yZSB0aGFu +IG9uY2UgaWYgbmVlZGVkLgouVFAKXGZCLUAgXGZJPGZpbGU+XGZQCkFuIGFsaWFzIGZvciBcZkIt +LXhhcmdzPVxmSTxmaWxlPlxmUAoKLlNIIEVOVklST05NRU5UCi5UUApcZkJFRElUT1JcZlAKVXNl +ZCB0byBlZGl0IGNvbW1lbnRzLCBsb2cgbWVzc2FnZXMsIGV0Yy4KLlRQClxmQlZJU1VBTFxmUApV +c2VkIGluIHByZWZlcmVuY2UgdG8gXGZCRURJVE9SXGZQLCBpZiBzZXQuCi5TSCBGSUxFUwouVFAK +XGZCJEhPTUUvLm1vbm90b25lcmNcZlAKQSBsdWEgc2NyaXB0LCB1c2VkIGFzIGEgY3VzdG9taXph +dGlvbiBmaWxlLgouU0ggTk9URVMKLklQIFwoYnUKQ29tbWFuZCBsaW5lIG9wdGlvbnMgb3ZlcnJp +ZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZApzZXR0aW5ncyBpbiBsdWEgc2NyaXB0cyAoc3Vj +aCBhcyBcZkIubW9ub3RvbmVyY1xmUCkKLlNIICJTRUUgQUxTTyIKXGZCaW5mbyBtb25vdG9uZVxm +UAouU0ggQlVHUwpzZWUgaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvYnVncy8/Z3JvdXA9bW9u +b3RvbmUKLlNIIEFVVEhPUgpncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4K +]) + +AT_DATA(correct.b64, [ +LlRIICJtb25vdG9uZSIgMQouU0ggTkFNRQptb25vdG9uZSBcLSBkaXN0cmlidXRlZCB2ZXJzaW9u +IGNvbnRyb2wgc3lzdGVtCi5TSCBTWU5PUFNJUwpcZkJtb25vdG9uZVxmUCBcZklbb3B0aW9uc10g +PGNvbW1hbmQ+IFtwYXJhbWV0ZXJzXVxmUAouUApPcHRpb25zLCB3aGljaCBhZmZlY3QgZ2xvYmFs +IGJlaGF2aW9yIG9yIHNldCBkZWZhdWx0IHZhbHVlcywgY29tZQpmaXJzdCBpbiB0aGUgYXJndW1l +bnQgbGlzdC4gQSBzaW5nbGUgY29tbWFuZCBtdXN0IGZvbGxvdywgaW5kaWNhdGluZwp0aGUgb3Bl +cmF0aW9uIHRvIHBlcmZvcm0sIGZvbGxvd2VkIGJ5IHBhcmFtZXRlcnMgd2hpY2ggdmFyeSBkZXBl +bmRpbmcKb24gdGhlIGNvbW1hbmQuCi5TUyBOb3RlClRoaXMgbWFucGFnZSBpcyBhIHN1bW1hcnkg +b2Ygc29tZSBvZiB0aGUgZmVhdHVyZXMgYW5kIGNvbW1hbmRzIG9mClxmQm1vbm90b25lXGZQLCBi +dXQgaXQgaXMgbm90IHRoZSBtb3N0IGRldGFpbGVkIHNvdXJjZSBvZiBpbmZvcm1hdGlvbgphdmFp +bGFibGUuIEZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlIGNvbmNlcHRzIGFuZCBhIHR1 +dG9yaWFsIG9uCml0cyB1c2UsIHBsZWFzZSByZWZlciB0byB0aGUgdGV4aW5mbyBtYW51YWwgKHZp +YSB0aGUgXGZCaW5mbwptb25vdG9uZVxmUCBjb21tYW5kLCBvciBvbmxpbmUpLgouU1MgQ29tbWFu +ZHMKLlRQIApcZkJjb21tZW50XGZQIFxmSTxpZD5cZlAKV3JpdGUgYSBjb21tZW50IGNlcnQgZm9y +IGEgcmV2aXNpb24uCi5UUApcZkJhcHByb3ZlXGZQIFxmSTxpZD5cZlAKTWFrZSBhICJicmFuY2gi +IGNlcnQgYXBwcm92aW5nIG9mIGEgcmV2aXNpb24ncyBtZW1iZXJzaGlwIGluIGEgYnJhbmNoLgou +VFAKXGZCZGlzYXBwcm92ZVxmUCBcZkk8aWQxPlxmUApEaXNhcHByb3ZlIG9mIGEgcmV2aXNpb24s +IGNvbW1pdHRpbmcgdGhlIGludmVyc2UgY2hhbmdlcyBhcyBhcyBhCmRlc2NlbmRhbnQgb2YgdGhl +IGRpc2FwcHJvdmVkIHJldmlzaW9uLgouVFAKXGZCdGFnXGZQIFxmSTxpZD4gPHRhZ25hbWU+XGZQ +ClB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJ0ZXN0cmVzdWx0 +XGZQIFxmSTxpZD4gKDB8MXx0cnVlfGZhbHNlfHllc3xub3xwYXNzfGZhaWwpXGZQCkluZGljYXRl +IGEgcGFzc2luZyBvciBmYWlsaW5nIHRlc3QgcmVzdWx0IG9uIGEgcmV2aXNpb24uCi5UUApcZkJh +Z3JhcGhcZlAKRHVtcCByZXZpc2lvbiBncmFwaCB0byBzdGRvdXQgaW4gVkNHIGZvcm1hdC4KLlRQ +ClxmQmRpZmYgXGZJWy0tcmV2aXNpb249PGlkMT4gWy0tcmV2aXNpb249PGlkMj5dIF0gWzxwYXRo +bmFtZT4uLi5dXGZQClNob3cgZGlmZnMgYmV0d2VlbiB3b3JraW5nIGNvcHkgYW5kIGRhdGFiYXNl +LgouVFAKXGZCc3RhdHVzIFxmSVs8cGF0aG5hbWU+Li4uXVxmUApTaG93IHN0YXR1cyBvZiB3b3Jr +aW5nIGNvcHkuCi5UUApcZkJpbnZlbnRvcnkgXGZJWzxwYXRobmFtZT4uLi5dXGZQClNob3cgaW52 +ZW50b3J5IG9mIGZpbGVzIGluIHRoZSB3b3JraW5nIGNvcHkuCi5UUApcZkJsb2dcZlAgXGZJW2lk +XSBcZlAKU2hvdyBoaXN0b3JpY2FsIGxvZyBvZiByZXZpc2lvbnMsIHN0YXJ0aW5nIGZyb20gd29y +a2luZyBjb3B5CmJhc2UgcmV2aXNpb24sIG9yIFxmSVtpZF1cZlAgaWYgZ2l2ZW4uCi5UUApcZkJj +ZXJ0XGZQIFxmSTxpZD4gPGNlcnRuYW1lPiBbY2VydHZhbF1cZlAKQ3JlYXRlIGEgY3VzdG9tIGNl +cnQgZm9yIGEgcmV2aXNpb24uIFJlYWRzIGNlcnQgdmFsdWUKZnJvbSBzdGRpbiBpZiBubyB2YWx1 +ZSBnaXZlbiBvbiBjb21tYW5kIGxpbmUuCi5UUApcZkJnZW5rZXlcZlAgXGZJPGtleWlkPlxmUApH +ZW5lcmF0ZSBhbiBSU0Ega2V5LXBhaXIgYW5kIHN0b3JlIGl0IGluIHRoZSBkYXRhYmFzZS4KLlRQ +ClxjaGtleXBhc3NcZlAgXGZJPGtleWlkPlxmUApDaGFuZ2UgcGFzc3BocmFzZSBvZiB0aGUgcHJp +dmF0ZSBoYWxmIG9mIGEga2V5LgouVFAKXGZCbGlzdCBjZXJ0c1xmUCBcZkk8aWQ+XGZQCkxpc3Qg +Y2VydHMgYXNzb2NpYXRlZCB3aXRoIHJldmlzaW9uLgouVFAKXGZCbGlzdCBrZXlzXGZQIFxmSVtw +YXJ0aWFsLWlkXVxmUApMaXN0IGtleXMgbWF0Y2hpbmcgZ2xvYiwgb3IgbGlzdCBhbGwga2V5cyBp +ZiBubyBnbG9iIGdpdmVuLgouVFAKXGZCbGlzdCBicmFuY2hlc1xmUApMaXN0IGFsbCBicmFuY2hl +cy4KLlRQClxmQmxpc3QgdGFnc1xmUApMaXN0IGFsbCB0YWdzLgouVFAKXGZCbGlzdCB2YXJzIFxm +SVs8ZG9tYWluPl1cZlAKTGlzdCBhbGwgdmFycyAocG9zc2libHkgbGltaXRlZCBieSBkb21haW4p +LgouVFAKXGZCbGlzdCB1bmtub3duIFxmSVs8cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4g +d29ya2luZyBkaXJlY3RvcnksIGJ1dCBub3QgaW4gcmV2aXNpb24ncyBtYW5pZmVzdCBvcgp3b3Jr +IGxpc3QuCi5UUApcZkJsaXN0IGlnbm9yZWQgXGZJWzxwYXRobmFtZS4uLl1cZlAKTGlzdCBmaWxl +cyBpbnRlbnRpb25hbGx5IGlnbm9yZWQgZHVlIHRvIHRoZSBpZ25vcmVfZmlsZSBob29rLgouVFAK +XGZCbGlzdCBtaXNzaW5nIFxmSVs8cGF0aG5hbWUuLi5dXGZQCkxpc3QgZmlsZXMgaW4gcmV2aXNp +b24ncyBtYW5pZmVzdCwgYnV0IG5vdCBpbiB3b3JraW5nIGRpcmVjdG9yeS4KLlRQClxmQmZkYXRh +XGZQIFxmSTxpZD5cZlAKV3JpdGUgZmlsZSBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5UUApcZkJm +ZGVsdGFcZlAgXGZJPG9sZGlkPiA8bmV3aWQ+XGZQCldyaXRlIGZpbGUgZGVsdGEgcGFja2V0IHRv +IHN0ZG91dC4KLlRQClxmQm1kYXRhXGZQIFxmSTxpZD5cZlAKV3JpdGUgbWFuaWZlc3QgZGF0YSBw +YWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCbWRlbHRhXGZQIFxmSTxvbGRpZD4gPG5ld2lkPlxmUApX +cml0ZSBtYW5pZmVzdCBkZWx0YSBwYWNrZXQgdG8gc3Rkb3V0LgouVFAKXGZCY2VydHNcZlAgXGZJ +PGlkPlxmUApXcml0ZSByZXZpc2lvbiBjZXJ0IHBhY2tldHMgdG8gc3Rkb3V0LgouVFAKXGZCcmRh +dGFcZlAgXGZJPGlkPlxmUApXcml0ZSByZXZpc2lvbiBkYXRhIHBhY2tldCB0byBzdGRvdXQuCi5U +UApcZkJwcml2a2V5XGZQIFxmSTxpZD5cZlAKV3JpdGUgcHJpdmF0ZSBrZXkgcGFja2V0IHRvIHN0 +ZG91dC4KLlRQClxmQnB1YmtleVxmUCBcZkk8aWQ+XGZQCldyaXRlIHB1YmxpYyBrZXkgcGFja2V0 +IHRvIHN0ZG91dC4KLlRQClxmQnJlYWRcZlAKUmVhZCBwYWNrZXRzIGZyb20gc3RkaW4uIAouVFAK +XGZCY3ZzX2ltcG9ydFxmUCBcZkk8Y3Zzcm9vdD5cZlAKSW1wb3J0IGFsbCB2ZXJzaW9ucyBpbiBD +VlMgcmVwb3NpdG9yeS4gUmVjb25zdHJ1Y3RzIHJldmlzaW9ucyBhbmQKY29udmVydHMgbWV0YWRh +dGEgdG8gY2VydGlmaWNhdGVzLiBBIHByaXZhdGUgc2lnbmluZyBrZXkgbXVzdCBhbHJlYWR5CmV4 +aXN0IGluIHRoZSBkYXRhYmFzZS4KLlRQClxmQnJjc19pbXBvcnRcZlAgXGZJPHJjc2ZpbGU+IC4u +LlxmUApJbXBvcnQgYWxsIGZpbGUgdmVyc2lvbnMgaW4gUkNTIGZpbGVzLiBEb2VzIG5vdCByZWNv +bnN0cnVjdCByZXZpc2lvbnMKYWNyb3NzIHRoZSBlbnRpcmUgdHJlZS4gIFlvdSBkbyBub3Qgd2Fu +dCB0aGlzIGNvbW1hbmQsIGl0IGlzIGZvcgpkZWJ1Z2dpbmc7IHVzZSBjdnNfaW1wb3J0LgouVFAK +XGZCY2hlY2tvdXRcZlAgXGZJW21hbmlmZXN0LWlkXVxmUCBcZkk8ZGlyZWN0b3J5XGZQCkNoZWNr +IG91dCB0cmVlIHN0YXRlIGZyb20gZGF0YWJhc2UuCi5UUApcZkJjb1xmUCBcZklbbWFuaWZlc3Qt +aWRdXGZQIFxmSTxkaXJlY3RvcnlcZlAKQ2hlY2sgb3V0IHRyZWUgc3RhdGUgZnJvbSBkYXRhYmFz +ZTsgYW4gYWxpYXMgZm9yIFxmQmNoZWNrb3V0XGZQLgouVFAKXGZCY2F0XGZQIFxmSShmaWxlfG1h +bmlmZXN0KSA8aWQ+XGZQCldyaXRlIGZpbGUgb3IgbWFuaWZlc3QgZnJvbSBkYXRhYmFzZSB0byBz +dGRvdXQuCi5UUApcZkJoZWFkc1xmUApTaG93IHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaCwgb3Ig +cmVwb3J0IHdoZW4gYnJhbmNoIGlzIG1lcmdlZC4KLlRQClxmQm1lcmdlXGZQCk1lcmdlIHVubWVy +Z2VkIGhlYWRzIG9mIGJyYW5jaC4KLlRQClxmQmFkZFxmUCBcZkk8cGF0aG5hbWU+IFsuLi5dXGZQ +CkFkZCBmaWxlcyB0byB3b3JraW5nIGNvcHkuIGFkZGluZyBhIGZpbGUgZG9lcyBub3QgY29weSBp +dCBpbnRvIHRoZSBkYXRhYmFzZSwKbWVyZWx5IGFkZHMgaXQgdG8gdGhlIHdvcmsgbGlzdC4gWW91 +IG11c3QgXGZCY29tbWl0XGZQIHlvdXIgY2hhbmdlcyBpbiBvcmRlcgp0byBjb3B5IGFkZGVkIGZp +bGVzIHRvIHRoZSBkYXRhYmFzZS4KLlRQClxmQmRyb3BcZlAgXGZJPHBhdGhuYW1lPiBbLi4uXVxm +UApEcm9wIGZpbGVzIGZyb20gd29ya2luZyBjb3B5LiBGaWxlcyBhcmUgbm90IGRlbGV0ZWQgZnJv +bSB3b3JraW5nIGNvcHksIAptZXJlbHkgbm90ZWQgYXMgcmVtb3ZhbHMgaW4gdGhlIHdvcmsgbGlz +dC4KLlRQClxmQnJlbmFtZVxmUCBcZkk8c3JjPiBcZkk8ZHN0PlxmUApSZW5hbWUgZmlsZXMgZnJv +bSBcZkk8c3JjPiBcZlAgdG8gXGZJPGRzdD4gXGZQIGluIHdvcmtpbmcgY29weS4KLlRQClxmQmNv +bW1pdFxmUCBcZklbLS1tZXNzYWdlPTxsb2cgbWVzc2FnZT5dIFs8cGF0aG5hbWU+Li4uXVxmUCAK +Q29tbWl0IHdvcmtpbmcgY29weSB0byBkYXRhYmFzZS4gSWYgYSAtLW1lc3NhZ2Ugb3B0aW9uIGlz +IHByb3ZpZGVkIG9uCnRoZSBjb21tYW5kIGluZSwgaXQgaXMgdXNlZDsgb3RoZXJ3aXNlIGEgbG9n +IG1lc3NhZ2UgZWRpdG9yIHdpbGwgYmUKaW52b2tlZC4KLlRQClxmQnVwZGF0ZVxmUCAgXGZJW3Jl +dmlzaW9uLWlkXVxmUApVcGRhdGUgd29ya2luZyBjb3B5LgouVFAKXGZCdXBkYXRlX2lub2RlcHJp +bnRzXGZQIApUdXJuIG9uIGlub2RlcHJpbnRzIG1vZGUsIGFuZCBmb3JjZSBhIGNhY2hlIHJlZnJl +c2guCi5UUApcZkJwdXNoXGZQIFxmSVs8aG9zdD4gWzxjb2xsZWN0aW9uPl1dXGZQIApQdXNoIGNv +bnRlbnRzIG9mIFxmSTxjb2xsZWN0aW9uPlxmUCB0byBkYXRhYmFzZSBvbiBcZkk8aG9zdD5cZlAg +Ci5UUApcZkJwdWxsXGZQIFxmSVs8aG9zdD4gWzxjb2xsZWN0aW9uPl1dXGZQIApQdXNoIGNvbnRl +bnRzIG9mIFxmSTxjb2xsZWN0aW9uPlxmUCBmcm9tIGRhdGFiYXNlIG9uIFxmSTxob3N0PlxmUCAK +LlRQClxmQnN5bmNcZlAgXGZJPGhvc3Q+IDxjb2xsZWN0aW9uPlxmUCAKU3luYyBjb250ZW50cyBv +ZiBcZkk8Y29sbGVjdGlvbj5cZlAgd2l0aCBkYXRhYmFzZSBvbiBcZkk8aG9zdD5cZlAgCi5UUApc +ZkJzZXJ2ZVxmUCBcZkk8aG9zdD4gPGNvbGxlY3Rpb24+XGZQIApTZXJ2ZSBjb250ZW50cyBvZiBc +Zkk8Y29sbGVjdGlvbj5cZlAgYXQgbmV0d29yayBhZGRyZXNzIFxmSTxob3N0PlxmUCAKLlRQClxm +QnNldFxmUCBcZkk8ZG9tYWluPiA8bmFtZT4gPHZhbHVlPlxmUCAKU2V0IHRoZSBkYiB2YXIgXGZJ +PG5hbWU+XGZQIGluIGRvbWFpbiBcZkk8ZG9tYWluPlxmUCB0byB2YWx1ZQpcZkk8dmFsdWU+XGZQ +LiAKLlRQClxmQnVuc2V0XGZQIFxmSTxkb21haW4+IDxuYW1lPlxmUCAKRGVsZXRlIGFueSBzZXR0 +aW5nIGZvciBkYiB2YXIgXGZJPG5hbWU+XGZQIGluIGRvbWFpbiBcZkk8ZG9tYWluPlxmUC4KLlRQ +ClxmQmF1dG9tYXRlXGZQIFxmSShpbnRlcmZhY2VfdmVyc2lvbnxoZWFkc3xkZXNjZW5kZW50c3xl +cmFzZV9hbmNlc3RvcnN8dG9wb3NvcnR8YW5jZXN0cnlfZGlmZmVyZW5jZXxsZWF2ZXMpXGZQClNj +cmlwdGluZyBpbnRlcmZhY2UuCi5UUApcZkJkYlxmUCBcZkkoaW5pdHxpbmZvfHZlcnNpb258ZHVt +cHxsb2FkfG1pZ3JhdGV8cmVidWlsZHxleGVjdXRlfGNoZWNrKVxmUApNYW5pcHVsYXRlIGRhdGFi +YXNlIHN0YXRlLgouU0ggREVTQ1JJUFRJT04KTW9ub3RvbmUgaXMgYSB2ZXJzaW9uIGNvbnRyb2wg +c3lzdGVtLCB3aGljaCBhbGxvd3MgeW91IHRvIGtlZXAgb2xkCnZlcnNpb25zIG9mIGZpbGVzLCBh +cyB3ZWxsIGFzIHNwZWNpYWwgXGZJbWFuaWZlc3QgZmlsZXNcZlAgd2hpY2gKZGVzY3JpYmUgdGhl +IGxvY2F0aW9uIG9mIGZpbGVzIGluIGEgdHJlZS4gVW5saWtlIG90aGVyIHN5c3RlbXMsCnZlcnNp +b25zIGluIG1vbm90b25lIGFyZSBcZklpZGVudGlmaWVkXGZQIGJ5IGNyeXB0b2dyYXBoaWMgaGFz +aCwgYW5kCm9wZXJhdGlvbnMgYXJlIGF1dGhlbnRpY2F0ZWQgYnkgaW5kaXZpZHVhbCB1c2Vycycg +ZXZhbHVhdGluZwpjcnlwdG9ncmFwaGljIHNpZ25hdHVyZXMgb24gbWV0YS1kYXRhLCByYXRoZXIg +dGhhbiBhbnkgY2VudHJhbAphdXRob3JpdHkuCgpNb25vdG9uZSBrZWVwcyBhIGNvbGxlY3Rpb24g +b2YgdmVyc2lvbnMgaW4gYSBzaW5nbGUtZmlsZSByZWxhdGlvbmFsCmRhdGFiYXNlLiBJdCBpcyBl +c3NlbnRpYWxseSBzZXJ2ZXJsZXNzLCB1c2luZyBuZXR3b3JrIHNlcnZlcnMgb25seSBhcwp1bnRy +dXN0ZWQgY29tbXVuaWNhdGlvbiBmYWNpbGl0aWVzLiBBIG1vbm90b25lIGRhdGFiYXNlIGlzIGEg +cmVndWxhcgpmaWxlLCB3aGljaCBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0 +byBleHRyYWN0IHByZXZpb3VzCnZlcnNpb25zIG9mIGZpbGVzLCB2ZXJpZnkgc2lnbmF0dXJlcywg +bWVyZ2UgYW5kIG1vZGlmeSB2ZXJzaW9ucywgYW5kCmNvbW11bmljYXRlIHdpdGggbmV0d29yayBz +ZXJ2ZXJzLgouU0ggT1BUSU9OUwouVFAKXGZCLS1oZWxwXGZQClByaW50IGhlbHAgbWVzc2FnZS4K +LlRQClxmQi0tZGVidWdcZlAKVHVybiBvbiBkZWJ1Z2dpbmcgbG9nIG9uIHN0YW5kYXJkIGVycm9y +IHN0cmVhbS4gVGhpcyBpcyB2ZXJ5CnZlcmJvc2UuIERlZmF1bHQgaXMgdG8gYmUgc2lsZW50LCB1 +bmxlc3MgYW4gZXJyb3Igb2NjdXJzLCBpbiB3aGljaApjYXNlIGZhaWx1cmUgbG9nIGlzIGR1bXBl +ZC4KLlRQClxmQi0tcXVpZXRcZlAKVHVybiBvZmYgbm9ybWFsIHByb2dyZXNzIG1lc3NhZ2VzLgou +VFAKXGZCLS1kdW1wPVxmUFxmSTxmaWxlPlxmUApEdW1wIGRlYnVnZ2luZyBsb2cgdG8gXGZJZmls +ZVxmUCBvbiBmYWlsdXJlLgouVFAKXGZCLS1ub3N0ZFxmUApEbyBub3QgZXZhbHVhdGUgInN0YW5k +YXJkIiBsdWEgaG9va3MgY29tcGlsZWQgaW50byBcZkJtb25vdG9uZVxmUC4KLlRQClxmQi0tbm9y +Y1xmUApEbyBub3QgbG9hZCBsdWEgaG9va3MgZnJvbSB1c2VyJ3MgXGZCfi8ubW9ub3RvbmVyY1xm +UCBmaWxlLgouVFAKXGZCLS1yY2ZpbGU9XGZQXGZJPGZpbGU+XGZQCkxvYWQgZXh0cmEgbHVhIGhv +b2tzIGZyb20gXGZJZmlsZVxmUCAobWF5IGJlIGdpdmVuIG11bHRpcGxlIHRpbWVzKS4KLlRQClxm +Qi0tZGI9XGZQXGZJPGZpbGU+XGZQClVzZSBkYXRhYmFzZSBpbiBcZklmaWxlXGZQLgouVFAKXGZC +LS1rZXk9XGZQXGZJPGtleWlkPlxmUApVc2UgXGZJa2V5aWRcZlAgZm9yIG9wZXJhdGlvbnMgd2hp +Y2ggcHJvZHVjZSBSU0Egc2lnbmF0dXJlcy4gRGVmYXVsdAppcyBpbmZlcnJlZCBmcm9tIHByZXNl +bmNlIG9mIHVuaXF1ZSBwcml2YXRlIGtleSBpbiBkYXRhYmFzZS4gQ2FuIGFsc28KYmUgY3VzdG9t +aXplZCBvbiBhIHBlci1icmFuY2ggYmFzaXMgd2l0aCBob29rIGZ1bmN0aW9uIApcZkJnZXRfYnJh +bmNoX2tleShicmFuY2huYW1lKVxmUC4KLlRQClxmQi1rXGZQIFxmSTxrZXlpZD5cZlAKQW4gYWxp +YXMgZm9yIFxmQi0ta2V5PVxmUFxmSTxrZXlpZD5cZlAKLlRQClxmQi0tYnJhbmNoPVxmUFxmSTxi +cmFuY2huYW1lPlxmUApVc2UgXGZJYnJhbmNobmFtZVxmUCBmb3Igb3BlcmF0aW9ucyBvbiBhIGJy +YW5jaC4gRGVmYXVsdCBpcyBpbmZlcnJlZAppbiBvcGVyYXRpb25zIG9uIGV4aXN0aW5nIGJyYW5j +aGVzIChjb21taXQsIHVwZGF0ZSwgZXRjKS4KLlRQClxmQi1iXGZQIFxmSTxicmFuY2huYW1lPlxm +UApBbiBhbGlhcyBmb3IgXGZCLS1icmFuY2g9XGZQXGZJPGJyYW5jaG5hbWU+XGZQCi5UUApcZkIt +LXRpY2tldD1cZlBcZklkb3R8Y291bnRcZlAKVXNlIHRoZSBnaXZlbiBtZXRob2QgdG8gcHJpbnQg +dGlja2Vycy4gIFRoZSBcZkJjb3VudFxmUCBtZXRob2QgcHJpbnRzCnRoZSBjb3VudCBmb3IgZWFj +aCB0aWNrZXIgb24gb25lIGxpbmUsIGluY3JlbWVudGluZyB0aGUgbnVtYmVycyBpbgpwbGFjZSwg +d2hpbGUgdGhlIFxmQmRvdFxmUCBtZXRob2QgcHJpbnRzIGEgY29udGludW91cyBzdHJpbmcgb2YK +Y2hhcmFjdGVycyAobGlrZSBzb21lIHByb2dyYW1zIHByb3ZpZGUgYSBwcm9ncmVzcyBsaW5lIG9m +IGRvdHMpLgpUaGUgZGVmYXVsdCBpcyBcZkJjb3VudFxmUC4KLlRQClxmQi0tcmV2aXNpb249XGZQ +XGZJPGlkPlxmUApDdXJyZW50bHkgdGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSBkaWZm +IGNvbW1hbmQgd2hlcmUgaXQgbWF5IGJlCnVzZWQgdG8gY29tcGFyZSBhIHdvcmtpbmcgY29weSB3 +aXRoIGEgc3BlY2lmaWMgcmV2aXNpb24gb3IgdG8gY29tcGFyZQp0d28gc3BlY2lmaWMgcmV2aXNp +b25zLiBJdCB3aWxsIGxpa2VseSBhcHBseSB0byBvdGhlciBjb21tYW5kcyBpbiB0aGUKZnV0dXJl +LgouVFAKXGZCLXJcZlAgXGZJPGlkPlxmUApBbiBhbGlhcyBmb3IgXGZCLS1yZXZpc2lvbj1cZlBc +Zkk8aWQ+XGZQCi5UUApcZkItLW1lc3NhZ2U9XGZJPGxvZyBtZXNzYWdlPlxmUApVc2UgdGhlIGdp +dmVuIG1lc3NhZ2UgYXMgdGhlIGNoYW5nZWxvZyB3aGVuIGNvbW1pdHRpbmcgYSBuZXcgcmV2aXNp +b24KcmF0aGVyIHRoYW4gaW52b2tpbmcgdGhlIGxvZyBtZXNzYWdlIGVkaXRvci4gQ3VycmVudGx5 +IHRoaXMgb3B0aW9uIG9ubHkKYXBwbGllcyB0byB0aGUgY29tbWl0IGNvbW1hbmQgYnV0IGl0IG1h +eSBhbHNvIGFwcGx5IHRvIHRoZSBjb21tZW50CmNvbW1hbmQgaW4gdGhlIGZ1dHVyZS4KLlRQClxm +Qi1tIFxmSTxsb2cgbWVzc2FnZT5cZlAKQW4gYWxpYXMgZm9yIFxmQi0tbWVzc2FnZT1cZkk8bG9n +IG1lc3NhZ2U+XGZQCi5UUApcZkItLWF1dGhvcj1cZkk8YXV0aG9yIGVtYWlsPlxmUApVc2UgdGhl +IGdpdmVuIGF1dGhvciBhcyB0aGUgdmFsdWUgb2YgdGhlICJhdXRob3IiIGNlcnQgd2hlbiBjb21t +aXR0aW5nCmEgbmV3IHJldmlzaW9uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBhdXRob3IuICBV +c2VmdWwgd2hlbgpjb21taXR0aW5nIGEgcGF0Y2ggb24gYmVoYWxmIG9mIHNvbWVvbmUgZWxzZSwg +b3Igd2hlbiBpbXBvcnRpbmcKaGlzdG9yeSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5 +c3RlbS4KLlRQClxmQi0tZGF0ZT1cZkk8ZGF0ZSBhbmQgdGltZT5cZlAKVXNlIHRoZSBnaXZlbiBn +aXZlbiBkYXRlIGFuZCB0aW1lIGFzIHZhbHVlIG9mIHRoZSAiZGF0ZSIgY2VydCB3aGVuCmNvbW1p +dHRpbmcgYSBuZXcgcmV2aXNpb24sIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50IHRpbWUuICBVc2Vm +dWwgd2hlbgppbXBvcnRpbmcgaGlzdG9yeSBmcm9tIGFub3RoZXIgdmVyc2lvbiBjb250cm9sIHN5 +c3RlbS4KLlRQClxmQi0tcm9vdD1cZkk8cm9vdCBkaXI+XGZQClN0b3AgdGhlIHNlYXJjaCBmb3Ig +YSB3b3JraW5nIGNvcHkgKGNvbnRhaW5pbmcgdGhlIEBmaWxle01UfSBkaXJlY3RvcnkpCmF0IHRo +ZSBzcGVjaWZpZWQgcm9vdCBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYXQgdGhlIHBoeXNpY2FsIHJv +b3Qgb2YgdGhlCmZpbGVzeXN0ZW0uCi5UUApcZkItLXhhcmdzPVxmSTxmaWxlPlxmUApJbmplY3Qg +dGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGluIHBsYWNlIGFtb25nIHRoZSBjb21tYW5kIGxpbmUK +YXJndW1lbnRzLiAgVGhpcyBtYXkgYmUgdXNlZnVsIGluIGNhc2UgdGhlIGNvbW1hbmQgbGluZSB3 +b3VsZApvdGhlcndpc2UgYmVjb21lIHRvbyBsb25nIGZvciB5b3VyIHN5c3RlbS4gIFRoaXMgb3B0 +aW9uIGNhbiBiZSB1c2VkCm1vcmUgdGhhbiBvbmNlIGlmIG5lZWRlZC4KLlRQClxmQi1AIFxmSTxm +aWxlPlxmUApBbiBhbGlhcyBmb3IgXGZCLS14YXJncz1cZkk8ZmlsZT5cZlAKLlRQClxmQi0tYWxs +LWZpbGVzXGZQCkluY2x1ZGUgZXZlcnkgZmlsZSBhdmFpbGFibGUgaW4gdGhlIHdvcmtpbmcgY29w +eSBpbiB0aGUgaW52ZW50b3J5Cmxpc3QuIEJ5IGRlZmF1bHQgaW52ZW50b3J5IG9ubHkgbGlzdHMg +YGBpbnRlcmVzdGluZycnIGZpbGVzLiBUaGlzIG9wdGlvbgppcyBzcGVjaWZpYyB0byB0aGUgQGNv +bW1hbmR7aW52ZW50b3J5fSBjb21tYW5kLgoKLlNIIEVOVklST05NRU5UCi5UUApcZkJFRElUT1Jc +ZlAKVXNlZCB0byBlZGl0IGNvbW1lbnRzLCBsb2cgbWVzc2FnZXMsIGV0Yy4KLlRQClxmQlZJU1VB +TFxmUApVc2VkIGluIHByZWZlcmVuY2UgdG8gXGZCRURJVE9SXGZQLCBpZiBzZXQuCi5TSCBGSUxF +UwouVFAKXGZCJEhPTUUvLm1vbm90b25lcmNcZlAKQSBsdWEgc2NyaXB0LCB1c2VkIGFzIGEgY3Vz +dG9taXphdGlvbiBmaWxlLgouU0ggTk9URVMKLklQIFwoYnUKQ29tbWFuZCBsaW5lIG9wdGlvbnMg +b3ZlcnJpZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZApzZXR0aW5ncyBpbiBsdWEgc2NyaXB0 +cyAoc3VjaCBhcyBcZkIubW9ub3RvbmVyY1xmUCkKLlNIICJTRUUgQUxTTyIKXGZCaW5mbyBtb25v +dG9uZVxmUAouU0ggQlVHUwpzZWUgaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvYnVncy8/Z3Jv +dXA9bW9ub3RvbmUKLlNIIEFVVEhPUgpncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4K +]) + +UNB64(parent.b64, parent) +UNB64(left.b64, left) +UNB64(right.b64, right) +UNB64(correct.b64, correct) + +AT_CHECK(cp -f parent testfile) +AT_CHECK(MONOTONE add testfile, [], [ignore], [ignore]) +COMMIT(testbranch) +PARENT_SHA=`BASE_REVISION` + +AT_CHECK(cp -f left testfile) +COMMIT(testbranch) + +REVERT_TO($PARENT_SHA) + +AT_CHECK(cp -f right testfile) +COMMIT(testbranch) + +AT_CHECK(MONOTONE --branch=testbranch merge, [], [ignore], [ignore]) + +AT_CHECK(MONOTONE update, [], [ignore], [ignore]) +AT_CHECK(cmp testfile correct) + +AT_CLEANUP --- testsuite.at +++ testsuite.at @@ -589,3 +589,4 @@ m4_include(tests/t_select_cert.at) m4_include(tests/t_automate_select.at) m4_include(tests/t_update_inodeprints.at) +m4_include(tests/t_merge_6.at)