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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>70870</bug_id>
          
          <creation_ts>2011-10-25 22:34:08 -0700</creation_ts>
          <short_desc>Split DFGJITCodeGenerator::callOperation methods.</short_desc>
          <delta_ts>2011-12-21 17:48:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490561</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-25 22:34:08 -0700</bug_when>
    <thetext>The DFGJITCodeGenerator currently contains two sets of callOperation methods.  One set works with the JSVALUE64 value representation and passes arguments in registers (suitable for use on x86-64), and one set works with the JSVALUE32_64 value representation and passes arguments in memory  (suitable for use on x86).  By refactoring out the representation and calling convention specific aspects of the code we can also configure the DFG JIT to operator on platforms that use the JSVALUE32_64 value representation but pass arguments in registers.

On platforms supported by the JIT, the payload precedes the tag of a value in argument/result ordering, as such, in order to make the setupResults method generally applicable to return the results of a function that are returned in two registers, the ordering of arguments to this function has been reversed - as is the ordering of augments passed to setupArguments methods, with respect to the ordering with which they are passed in to callOperation.  This inconsistency will be resolved in a later change when we combine the pairs of arguments passed into callOperation, such that the function signatures can be made consistent across the two value representations (the callOperation methods will be passed a reference to a struct representing the JSValue temporary, this will consist of two gprs on 32_64 and one on 64).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490563</commentid>
    <comment_count>1</comment_count>
      <attachid>112451</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-25 22:45:48 -0700</bug_when>
    <thetext>Created attachment 112451
The fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490564</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-25 22:47:21 -0700</bug_when>
    <thetext>Attachment 112451 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h:958:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490567</commentid>
    <comment_count>3</comment_count>
      <attachid>112452</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-25 22:49:39 -0700</bug_when>
    <thetext>Created attachment 112452
fix (make the style bot happy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525598</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 14:30:31 -0800</bug_when>
    <thetext>Attachment 112452 was posted by a committer and has review+, assigning to Gavin Barraclough for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525888</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-21 17:48:10 -0800</bug_when>
    <thetext>Oooops, sorry - was fixed in r98431!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112451</attachid>
            <date>2011-10-25 22:45:48 -0700</date>
            <delta_ts>2011-10-25 22:49:39 -0700</delta_ts>
            <desc>The fix</desc>
            <filename>70870.patch</filename>
            <type>text/plain</type>
            <size>43401</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTg0MzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTEtMTAtMjUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERGR0pJVENvZGVHZW5lcmF0b3I6OmNhbGxPcGVyYXRpb24gbWV0aG9k
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4NzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgREZH
SklUQ29kZUdlbmVyYXRvciBjdXJyZW50bHkgY29udGFpbnMgdHdvIHNldHMgb2YgY2FsbE9wZXJh
dGlvbiBtZXRob2RzLgorICAgICAgICBPbmUgc2V0IHdvcmtzIHdpdGggdGhlIEpTVkFMVUU2NCB2
YWx1ZSByZXByZXNlbnRhdGlvbiBhbmQgcGFzc2VzIGFyZ3VtZW50cyBpbgorICAgICAgICByZWdp
c3RlcnMgKHN1aXRhYmxlIGZvciB1c2Ugb24geDg2LTY0KSwgYW5kIG9uZSBzZXQgd29ya3Mgd2l0
aCB0aGUgSlNWQUxVRTMyXzY0CisgICAgICAgIHZhbHVlIHJlcHJlc2VudGF0aW9uIGFuZCBwYXNz
ZXMgYXJndW1lbnRzIGluIG1lbW9yeSAgKHN1aXRhYmxlIGZvciB1c2Ugb24geDg2KS4KKyAgICAg
ICAgQnkgcmVmYWN0b3Jpbmcgb3V0IHRoZSByZXByZXNlbnRhdGlvbiBhbmQgY2FsbGluZyBjb252
ZW50aW9uIHNwZWNpZmljIGFzcGVjdHMKKyAgICAgICAgb2YgdGhlIGNvZGUgd2UgY2FuIGFsc28g
Y29uZmlndXJlIHRoZSBERkcgSklUIHRvIG9wZXJhdG9yIG9uIHBsYXRmb3JtcyB0aGF0IHVzZQor
ICAgICAgICB0aGUgSlNWQUxVRTMyXzY0IHZhbHVlIHJlcHJlc2VudGF0aW9uIGJ1dCBwYXNzIGFy
Z3VtZW50cyBpbiByZWdpc3RlcnMuCisKKyAgICAgICAgT24gcGxhdGZvcm1zIHN1cHBvcnRlZCBi
eSB0aGUgSklULCB0aGUgcGF5bG9hZCBwcmVjZWRlcyB0aGUgdGFnIG9mIGEgdmFsdWUgaW4KKyAg
ICAgICAgYXJndW1lbnQvcmVzdWx0IG9yZGVyaW5nLCBhcyBzdWNoLCBpbiBvcmRlciB0byBtYWtl
IHRoZSBzZXR1cFJlc3VsdHMgbWV0aG9kCisgICAgICAgIGdlbmVyYWxseSBhcHBsaWNhYmxlIHRv
IHJldHVybiB0aGUgcmVzdWx0cyBvZiBhIGZ1bmN0aW9uIHRoYXQgYXJlIHJldHVybmVkIGluCisg
ICAgICAgIHR3byByZWdpc3RlcnMsIHRoZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgdG8gdGhpcyBm
dW5jdGlvbiBoYXMgYmVlbiByZXZlcnNlZCAtCisgICAgICAgIGFzIGlzIHRoZSBvcmRlcmluZyBv
ZiBhdWdtZW50cyBwYXNzZWQgdG8gc2V0dXBBcmd1bWVudHMgbWV0aG9kcywgd2l0aCByZXNwZWN0
CisgICAgICAgIHRvIHRoZSBvcmRlcmluZyB3aXRoIHdoaWNoIHRoZXkgYXJlIHBhc3NlZCBpbiB0
byBjYWxsT3BlcmF0aW9uLgorICAgICAgICBUaGlzIGluY29uc2lzdGVuY3kgd2lsbCBiZSByZXNv
bHZlZCBpbiBhIGxhdGVyIGNoYW5nZSB3aGVuIHdlIGNvbWJpbmUgdGhlIHBhaXJzCisgICAgICAg
IG9mIGFyZ3VtZW50cyBwYXNzZWQgaW50byBjYWxsT3BlcmF0aW9uLCBzdWNoIHRoYXQgdGhlIGZ1
bmN0aW9uIHNpZ25hdHVyZXMgY2FuCisgICAgICAgIGJlIG1hZGUgY29uc2lzdGVudCBhY3Jvc3Mg
dGhlIHR3byB2YWx1ZSByZXByZXNlbnRhdGlvbnMgKHRoZSBjYWxsT3BlcmF0aW9uCisgICAgICAg
IG1ldGhvZHMgd2lsbCBiZSBwYXNzZWQgYSByZWZlcmVuY2UgdG8gYSBzdHJ1Y3QgcmVwcmVzZW50
aW5nIHRoZSBKU1ZhbHVlCisgICAgICAgIHRlbXBvcmFyeSwgdGhpcyB3aWxsIGNvbnNpc3Qgb2Yg
dHdvIGdwcnMgb24gMzJfNjQgYW5kIG9uZSBvbiA2NCkuCisKKyAgICAgICAgKiBkZmcvREZHSklU
Q29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc2V0Q2FsbEFyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6YWRkQ2FsbEFyZ3VtZW50KToKKyAgICAgICAgICAgIC0gbW92
ZWQsIHJlbW92ZWQgdGFnLHBheWxvYWQgdmVyc2lvbiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgICAg
KEpTQzo6REZHOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6c2V0dXBBcmd1
bWVudHNFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZSk6CisgICAgICAgICAgICAtIENhbGxpbmcgY29udmVudGlvbiBzcGVjaWZpYyBwb3J0
aW9uIG9mIGNhbGxPcGVyYXRpb24gcmVmYWN0b3JlZCBvdXQgaW50byB0aGVzZSBtZXRob2RzLgor
ICAgICAgICAoSlNDOjpERkc6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAgICAgLSB1cGRhdGVk
IHRoZXNlIG1ldGhvZHMgdG8gdXNlIHNldHVwQXJndW1lbnRzKiBtZXRob2RzLgorICAgICAgICAo
SlNDOjpERkc6OnNldHVwUmVzdWx0cyk6CisgICAgICAgICAgICAtIHNldHVwUmVzdWx0cyBpcyBu
b3cgcGFzc2VkIHBheWxvYWQsdGFnLgorICAgICAgICAoSlNDOjpERkc6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAgICAgICAgICAgLSBBZGRlZCBmcHIgdmVyc2lv
bnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6REZHOjphcHBlbmRDYWxsU2V0UmVz
dWx0KToKKyAgICAgICAgICAgIC0gQWRkZWQgdmVyc2lvbnMgb2YgdGhpcyBmdW5jdGlvbiB3aXRo
b3V0IGV4Y2VwdGlvbiBjaGVjay4KKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvcjMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6
CisgICAgICAgICAgICAtIHNldHVwUmVzdWx0cyBpcyBub3cgcGFzc2VkIHBheWxvYWQsdGFnLgor
CiAyMDExLTEwLTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGRlbGV0ZVByb3BlcnR5VmlydHVhbApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvcjMyXzY0LmNwcAko
cmV2aXNpb24gOTg0MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVH
ZW5lcmF0b3IzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZv
aWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoTm9kZSYgbm8KIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCi0gICAgc2V0dXBSZXN1bHRzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
Uik7CisgICAgc2V0dXBSZXN1bHRzKHJlc3VsdFBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUik7CiAK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21w
aWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDk4NDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgQVNT
RVJUKGlzTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZU9mTnVtYmVyQ29u
c3RhbnQobm9kZUluZGV4KSkpLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGVJbmRl
eCkpKSwgY2FuVHJhbXBsZSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlUHRyVG9Eb3VibGUoY2Fu
VHJhbXBsZSwgaW5mby5mcHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTk1Myw4ICs5NTMsMTY3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tu
b2RlLnZpcnR1YWxSZWdpc3RlcigpXS5pbml0Q29uc3RhbnQobm9kZUluZGV4LCBub2RlLnJlZkNv
dW50KCkpOwogICAgIH0KIAotI2lmIENQVShYODZfNjQpCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB1
c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgorICAgIC8v
IE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwg
YXJndW1lbnRzIG9uIHRoZQorICAgIC8vIHN0YWNrLiAgT24gb3RoZXIgYXJjaGl0ZWN0dXJlcyB3
ZSBtYXkgbmVlZCB0byBzb3J0IHZhbHVlcyBpbnRvIHRoZQorICAgIC8vIGNvcnJlY3QgcmVnaXN0
ZXJzLgorI2lmIENQVShYODYpCisgICAgdW5zaWduZWQgbV9jYWxsQXJndW1lbnRJbmRleDsKKyAg
ICB2b2lkIHJlc2V0Q2FsbEFyZ3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRJbmRleCA9IDA7IH0K
KworICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkgdG8gaW1wbGVtZW50
IHRoZSBjYWxsT3BlcmF0aW9uIG1ldGhvZHMuCisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BS
UmVnIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9qaXQucG9rZSh2YWx1ZSwgbV9jYWxsQXJndW1l
bnRJbmRleCsrKTsKKyAgICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoVHJ1c3RlZEltbTMy
IGltbSkKKyAgICB7CisgICAgICAgIG1faml0LnBva2UoaW1tLCBtX2NhbGxBcmd1bWVudEluZGV4
KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50
ZXIpCisgICAgeworICAgICAgICBtX2ppdC5wb2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50SW5k
ZXgrKyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEZQUlJlZyB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG1fY2FsbEFyZ3VtZW50SW5kZXgg
KiBzaXplb2Yodm9pZCopKSk7CisgICAgICAgIG1fY2FsbEFyZ3VtZW50SW5kZXggKz0gc2l6ZW9m
KGRvdWJsZSkgLyBzaXplb2Yodm9pZCopOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJn
MikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQorICAgIHsK
KyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRy
IGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7Cisg
ICAgfQorI2Vsc2UKICAgICB0ZW1wbGF0ZTxHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0Qj4KICAg
ICB2b2lkIHNldHVwVHdvU3R1YkFyZ3MoR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCKQogICAgIHsK
QEAgLTEwODUsNDY5ICsxMjQ0LDM3NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX2ppdC5z
d2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICB9
CiAKLSAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9u
cy4KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlcikKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2pp
dC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFy
Z3M8RlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEsIGFy
ZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNT
dGF0ZSgpCisgICAgeworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCisgICAgeworICAg
ICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1f
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5tb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CiAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
KQorICAgIHsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAg
ICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAg
ICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBNb3ZlIHRo
aXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0cmFtcGxlIQorICAgICAgICBtX2pp
dC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQubW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtX2ppdC5tb3ZlKGFyZzIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJB
cmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0Lm1vdmUoYXJnMywgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgorICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGJyb2FkbHkgdmFsdWUgcmVwcmVzZW50YXRpb24gc3BlY2lmaWMgKGku
ZS4KKyAgICAvLyBkZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBhIEpTVmFsdWUgbWF5IGJlIHBhc3Nl
ZCBpbiBvbmUgb3IgdHdvCisgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGFuZCBkZWxlZ2F0ZSB0
aGUgY2FsbGluZyBjb252ZW50aW9uIHNwZWNpZmljCisgICAgLy8gZGVjaXNpb24gYXMgdG8gaG93
IHRvIGZpbGwgdGhlIHJlZ3NpdGVycyB0byBzZXR1cEFyZ3VtZW50cyogbWV0aG9kcy4KKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2b2lkKiBwb2ludGVyKQorICAg
IHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9p
bnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oWl9ERkdPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQ
UlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZShhcmcxLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxKTsKICAgICAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJl
c3VsdCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUdJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gY2FsbE9wZXJhdGlvbigoSl9ERkdPcGVyYXRpb25fRVBQKW9wZXJhdGlvbiwgcmVzdWx0LCBh
cmcxLCBwb2ludGVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUkgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKEpfREZHT3BlcmF0aW9uX0VQKW9wZXJhdGlvbiwgcmVz
dWx0LCBpZGVudGlmaWVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUEgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
T3BlcmF0aW9uKChKX0RGR09wZXJhdGlvbl9FUClvcGVyYXRpb24sIHJlc3VsdCwgYXJnMSk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBz
aXplKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0
cihzaXplKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShKSVRD
b21waWxlcjo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJh
dGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50
IG51bUNvbnN0YW50cykKICAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoSW1tMzIobnVtQ29uc3Rh
bnRzKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShJbW0zMihz
dGFydENvbnN0YW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoSW1tMzIoc3RhcnRDb25zdGFudCks
IEltbTMyKG51bUNvbnN0YW50cykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIC8vIFRo
aXMgYWxzbyBoYW5kbGVzIEpfREZHT3BlcmF0aW9uX0VQUCEKLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAg
ICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigoSl9ERkdPcGVyYXRpb25fRVBQKW9wZXJh
dGlvbiwgcmVzdWx0LCBhcmcxLCBpZGVudGlmaWVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKEpfREZHT3BlcmF0
aW9uX0VKUClvcGVyYXRpb24sIHJlc3VsdCwgYXJnMSwgYXJnMik7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
LSAgICAvLyBUaGlzIGFsc28gaGFuZGxlcyBKX0RGR09wZXJhdGlvbl9FUCEKLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQog
ICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgLy8gVGhpcyBhbHNvIGhhbmRsZXMgSl9ERkdPcGVyYXRpb25fRUpQIQotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0
dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBNYWNyb0Fzc2VtYmxl
cjo6SW1tMzIgaW1tKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIo
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92
YWx1ZSkpKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0u
bV92YWx1ZSkpKSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyIGltbSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAg
ICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIoc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpKSwgYXJnMik7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0g
ICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3Vt
ZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9ERkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
T3BlcmF0aW9uKChWX0RGR09wZXJhdGlvbl9FSlBQKW9wZXJhdGlvbiwgYXJnMSwgYXJnMiwgaWRl
bnRpZmllcik7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRp
b24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIG1faml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0K
KyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9u
X0VBWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKFZfREZHT3BlcmF0aW9uX0VQWkop
b3BlcmF0aW9uLCBhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJn
dW1lbnRzKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24s
IEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIs
IHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJl
ZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVw
VHdvU3R1YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+
KGFyZzEsIGFyZzIpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5h
cHBlbmRDYWxsKG9wZXJhdGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6
cmV0dXJuVmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOworICAgICAgICBz
ZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLQotI2VsaWYgQ1BVKFg4NikKLQotICAg
IHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyB0YWcsIEdQUlJlZyBwYXlsb2FkKQotICAgIHsKLSAg
ICAgICAgR1BSUmVnIHNyY0EgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKLSAgICAgICAgR1BS
UmVnIHNyY0IgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjI7Ci0gICAgICAgIEdQUlJlZyBkZXN0
QSA9IHBheWxvYWQ7Ci0gICAgICAgIEdQUlJlZyBkZXN0QiA9IHRhZzsKLQotICAgICAgICBpZiAo
c3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0g
dHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1faml0Lm1vdmUoc3JjQSwgZGVzdEEpOwot
ICAgICAgICAgICAgbV9qaXQubW92ZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNl
IC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAgICAgICAgICAgIG1faml0Lm1vdmUo
c3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbV9qaXQubW92ZShzcmNBLCBkZXN0QSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbV9qaXQuc3dhcChkZXN0QSwgZGVzdEIpOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50SW5kZXg7Ci0gICAgdm9pZCByZXNldENhbGxB
cmd1bWVudHMoKSB7IG1fY2FsbEFyZ3VtZW50SW5kZXggPSAwOyB9Ci0KLSAgICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9wZXJhdGlv
biBtZXRob2RzLgotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIG1faml0LnBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7Ci0gICAg
fQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB0YWcsIEdQUlJlZyBwYXlsb2FkKQot
ICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShwYXlsb2FkLCBtX2NhbGxBcmd1bWVudEluZGV4Kysp
OwotICAgICAgICBtX2ppdC5wb2tlKHRhZywgbV9jYWxsQXJndW1lbnRJbmRleCsrKTsKLSAgICB9
Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAgbV9q
aXQucG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7Ci0gICAgfQotICAgIHZvaWQgYWRk
Q2FsbEFyZ3VtZW50Qm94ZWQoSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShp
bW0sIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7Ci0gICAgICAgIG1faml0LnBva2UoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSwgbV9jYWxsQXJndW1lbnRJbmRleCsrKTsKLSAgICB9Ci0g
ICAgdm9pZCBhZGRDYWxsQXJndW1lbnQodm9pZCogcG9pbnRlcikKLSAgICB7Ci0gICAgICAgIG1f
aml0LnBva2UoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIG1fY2FsbEFyZ3Vt
ZW50SW5kZXgrKyk7Ci0gICAgfQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEZQUlJlZyB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG1fY2FsbEFyZ3VtZW50
SW5kZXggKiBzaXplb2Yodm9pZCopKSk7Ci0gICAgICAgIG1fY2FsbEFyZ3VtZW50SW5kZXggKz0g
c2l6ZW9mKGRvdWJsZSkgLyBzaXplb2Yodm9pZCopOwotICAgIH0KLQotICAgIC8vIFRoZXNlIG1l
dGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgorI2Vsc2UKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfREZHT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzKGFyZzEpOwogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCByZXN1bHQpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9p
bnRlcikKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQocG9pbnRlcik7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVy
KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQq
IHBvaW50ZXIpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQocG9pbnRlcik7Ci0K
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJh
dGlvbigoSl9ERkdPcGVyYXRpb25fRVBQKW9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXls
b2FkLCBhcmcxLCBwb2ludGVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotCi0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgSWRlbnRpZmllciogaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKChKX0RGR09wZXJhdGlvbl9F
UClvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgaWRlbnRpZmllcik7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIp
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKEpfREZHT3BlcmF0aW9uX0VQKW9wZXJhdGlv
biwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBhcmcxKTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRp
b25fRVBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQs
IHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChwb2ludGVyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KEltbTMyKHNpemUpKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9h
ZCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBv
aW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZH
T3BlcmF0aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7Ci0gICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoSW1tMzIoc3Rh
cnRDb25zdGFudCkpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoSW1tMzIobnVtQ29uc3RhbnRz
KSk7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdGFydENvbnN0YW50KSwgVHJ1c3Rl
ZEltbVB0cihudW1Db25zdGFudHMpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB2b2lkKiBwb2ludGVyKQogICAg
IHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxVGFnLCBhcmcxUGF5bG9hZCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChwb2ludGVyKTsK
LQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgSW1tUHRyKHBvaW50ZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVn
IGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBh
eWxvYWQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQs
IGFyZzFUYWcsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUNJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyBhcmcxLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bGxPcGVyYXRpb24oKEpfREZHT3BlcmF0aW9uX0VQUClvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVz
dWx0UGF5bG9hZCwgYXJnMSwgaWRlbnRpZmllcik7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2Fk
LCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKChKX0RG
R09wZXJhdGlvbl9FSlApb3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIGFyZzFU
YWcsIGFyZzFQYXlsb2FkLCBhcmcyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3Vs
dFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewotICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzFUYWcs
IGFyZzFQYXlsb2FkKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotCisgICAgICAgIHNldHVw
QXJndW1lbnRzRXhlY1N0YXRlKCk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLQorICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAg
ewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzFUYWcsIGFyZzFQYXlsb2FkKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywgYXJnMVBheWxvYWQp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMlRhZywgYXJnMlBheWxvYWQpOwotCisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJn
MlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAg
ewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzFUYWcsIGFyZzFQYXlsb2FkKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzJUYWcsIGFy
ZzJQYXlsb2FkKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBh
eWxvYWQsIGFyZzJUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpK
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0p
CiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzFUYWcsIGFyZzFQYXlsb2FkKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50Qm94ZWQo
aW1tKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgaW1tLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXls
b2FkLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgaW1tLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFk
ZENhbGxBcmd1bWVudEJveGVkKGltbSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFn
LCBhcmcyUGF5bG9hZCk7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0RGR09wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBh
eWxvYWQpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMlRhZywgYXJnMlBh
eWxvYWQpOwotCi0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwgdm9pZCogcG9pbnRlcikK
ICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChwb2ludGVyKTsKLQorICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfREZHT3BlcmF0aW9uX0VKQ0kgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKChWX0RGR09wZXJhdGlvbl9FSlBQKW9wZXJhdGlv
biwgYXJnMVRhZywgYXJnMVBheWxvYWQsIGFyZzIsIGlkZW50aWZpZXIpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0
ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBh
cmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFnLCBh
cmcyUGF5bG9hZCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczVGFnLCBhcmczUGF5bG9h
ZCk7Ci0KKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXls
b2FkLCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9h
ZCkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzNUYWcsIGFyZzNQYXlsb2FkKTsKLQorICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VB
Wkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBH
UFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigo
Vl9ERkdPcGVyYXRpb25fRVBaSilvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzNUYWcsIGFyZzNQ
YXlsb2FkKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHJlc2V0
Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywgYXJnMVBheWxv
YWQpOwotCi0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgICAgIG1faml0LmFzc2VtYmxlcigpLmZzdHBs
KDAsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0Lmxv
YWREb3VibGUoSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZXN1bHQpOwotICAg
ICAgICByZXR1cm4gY2FsbDsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKwogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fREQgb3BlcmF0aW9uLCBG
UFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbCA9IG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uKTsKLSAgICAgICAgbV9qaXQuYXNzZW1i
bGVyKCkuZnN0cGwoMCwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOworICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICNlbmRpZgogCisgICAgLy8gVGhlc2UgbWV0aG9kcyBhZGQgY2FsbCBp
bnN0cnVjdGlvbnMsIHdpdGggb3B0aW9uYWwgZXhjZXB0aW9uIGNoZWNrcyAmIHNldHRpbmcgcmVz
dWx0cy4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBtX2pp
dC5hZGRFeGNlcHRpb25DaGVjayhtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKSwgYXQobV9jb21w
aWxlSW5kZXgpLmNvZGVPcmlnaW4pOwpAQCAtMTU1OCwxMSArMTYyNSw1NCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29u
c3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCkKKyAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QikKKyAgICB7CisgICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7
CisgICAgICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyOworCisgICAg
ICAgIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kg
Y2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAgICAgICAgICAgbV9qaXQubW92ZShzcmNBLCBk
ZXN0QSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgfSBl
bHNlIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1z
d2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbV9q
aXQubW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0EsIGRlc3RB
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5zd2FwKGRlc3RBLCBkZXN0Qik7
CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwg
R1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIHNldHVwUmVz
dWx0cyhyZXN1bHQxLCByZXN1bHQyKTsKKyAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgfQorI2lm
IENQVShYODYpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQp
CisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLmZzdHBs
KDAsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0Lmxv
YWREb3VibGUoSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gY2FsbDsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCisg
ICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChm
dW5jdGlvbik7CisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLmZzdHBsKDAsIEpJVENvbXBpbGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29t
cGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZXN1bHQpOworICAgICAgICByZXR1cm4gY2Fs
bDsKKyAgICB9CisjZWxzZQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcg
cmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwotICAgICAgICBzZXR1cFJlc3VsdHMocmVz
dWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZShGUFJJbmZv
OjpyZXR1cm5WYWx1ZUZQUiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25Q
dHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgICAgICBtX2ppdC5t
b3ZlRG91YmxlKEZQUkluZm86OnJldHVyblZhbHVlRlBSLCByZXN1bHQpOwogICAgICAgICByZXR1
cm4gY2FsbDsKICAgICB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112452</attachid>
            <date>2011-10-25 22:49:39 -0700</date>
            <delta_ts>2011-10-25 22:53:01 -0700</delta_ts>
            <desc>fix (make the style bot happy)</desc>
            <filename>70870.2.patch</filename>
            <type>text/plain</type>
            <size>43400</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTg0MzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTEtMTAtMjUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERGR0pJVENvZGVHZW5lcmF0b3I6OmNhbGxPcGVyYXRpb24gbWV0aG9k
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4NzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgREZH
SklUQ29kZUdlbmVyYXRvciBjdXJyZW50bHkgY29udGFpbnMgdHdvIHNldHMgb2YgY2FsbE9wZXJh
dGlvbiBtZXRob2RzLgorICAgICAgICBPbmUgc2V0IHdvcmtzIHdpdGggdGhlIEpTVkFMVUU2NCB2
YWx1ZSByZXByZXNlbnRhdGlvbiBhbmQgcGFzc2VzIGFyZ3VtZW50cyBpbgorICAgICAgICByZWdp
c3RlcnMgKHN1aXRhYmxlIGZvciB1c2Ugb24geDg2LTY0KSwgYW5kIG9uZSBzZXQgd29ya3Mgd2l0
aCB0aGUgSlNWQUxVRTMyXzY0CisgICAgICAgIHZhbHVlIHJlcHJlc2VudGF0aW9uIGFuZCBwYXNz
ZXMgYXJndW1lbnRzIGluIG1lbW9yeSAgKHN1aXRhYmxlIGZvciB1c2Ugb24geDg2KS4KKyAgICAg
ICAgQnkgcmVmYWN0b3Jpbmcgb3V0IHRoZSByZXByZXNlbnRhdGlvbiBhbmQgY2FsbGluZyBjb252
ZW50aW9uIHNwZWNpZmljIGFzcGVjdHMKKyAgICAgICAgb2YgdGhlIGNvZGUgd2UgY2FuIGFsc28g
Y29uZmlndXJlIHRoZSBERkcgSklUIHRvIG9wZXJhdG9yIG9uIHBsYXRmb3JtcyB0aGF0IHVzZQor
ICAgICAgICB0aGUgSlNWQUxVRTMyXzY0IHZhbHVlIHJlcHJlc2VudGF0aW9uIGJ1dCBwYXNzIGFy
Z3VtZW50cyBpbiByZWdpc3RlcnMuCisKKyAgICAgICAgT24gcGxhdGZvcm1zIHN1cHBvcnRlZCBi
eSB0aGUgSklULCB0aGUgcGF5bG9hZCBwcmVjZWRlcyB0aGUgdGFnIG9mIGEgdmFsdWUgaW4KKyAg
ICAgICAgYXJndW1lbnQvcmVzdWx0IG9yZGVyaW5nLCBhcyBzdWNoLCBpbiBvcmRlciB0byBtYWtl
IHRoZSBzZXR1cFJlc3VsdHMgbWV0aG9kCisgICAgICAgIGdlbmVyYWxseSBhcHBsaWNhYmxlIHRv
IHJldHVybiB0aGUgcmVzdWx0cyBvZiBhIGZ1bmN0aW9uIHRoYXQgYXJlIHJldHVybmVkIGluCisg
ICAgICAgIHR3byByZWdpc3RlcnMsIHRoZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgdG8gdGhpcyBm
dW5jdGlvbiBoYXMgYmVlbiByZXZlcnNlZCAtCisgICAgICAgIGFzIGlzIHRoZSBvcmRlcmluZyBv
ZiBhdWdtZW50cyBwYXNzZWQgdG8gc2V0dXBBcmd1bWVudHMgbWV0aG9kcywgd2l0aCByZXNwZWN0
CisgICAgICAgIHRvIHRoZSBvcmRlcmluZyB3aXRoIHdoaWNoIHRoZXkgYXJlIHBhc3NlZCBpbiB0
byBjYWxsT3BlcmF0aW9uLgorICAgICAgICBUaGlzIGluY29uc2lzdGVuY3kgd2lsbCBiZSByZXNv
bHZlZCBpbiBhIGxhdGVyIGNoYW5nZSB3aGVuIHdlIGNvbWJpbmUgdGhlIHBhaXJzCisgICAgICAg
IG9mIGFyZ3VtZW50cyBwYXNzZWQgaW50byBjYWxsT3BlcmF0aW9uLCBzdWNoIHRoYXQgdGhlIGZ1
bmN0aW9uIHNpZ25hdHVyZXMgY2FuCisgICAgICAgIGJlIG1hZGUgY29uc2lzdGVudCBhY3Jvc3Mg
dGhlIHR3byB2YWx1ZSByZXByZXNlbnRhdGlvbnMgKHRoZSBjYWxsT3BlcmF0aW9uCisgICAgICAg
IG1ldGhvZHMgd2lsbCBiZSBwYXNzZWQgYSByZWZlcmVuY2UgdG8gYSBzdHJ1Y3QgcmVwcmVzZW50
aW5nIHRoZSBKU1ZhbHVlCisgICAgICAgIHRlbXBvcmFyeSwgdGhpcyB3aWxsIGNvbnNpc3Qgb2Yg
dHdvIGdwcnMgb24gMzJfNjQgYW5kIG9uZSBvbiA2NCkuCisKKyAgICAgICAgKiBkZmcvREZHSklU
Q29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc2V0Q2FsbEFyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6YWRkQ2FsbEFyZ3VtZW50KToKKyAgICAgICAgICAgIC0gbW92
ZWQsIHJlbW92ZWQgdGFnLHBheWxvYWQgdmVyc2lvbiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgICAg
KEpTQzo6REZHOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6c2V0dXBBcmd1
bWVudHNFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZSk6CisgICAgICAgICAgICAtIENhbGxpbmcgY29udmVudGlvbiBzcGVjaWZpYyBwb3J0
aW9uIG9mIGNhbGxPcGVyYXRpb24gcmVmYWN0b3JlZCBvdXQgaW50byB0aGVzZSBtZXRob2RzLgor
ICAgICAgICAoSlNDOjpERkc6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAgICAgLSB1cGRhdGVk
IHRoZXNlIG1ldGhvZHMgdG8gdXNlIHNldHVwQXJndW1lbnRzKiBtZXRob2RzLgorICAgICAgICAo
SlNDOjpERkc6OnNldHVwUmVzdWx0cyk6CisgICAgICAgICAgICAtIHNldHVwUmVzdWx0cyBpcyBu
b3cgcGFzc2VkIHBheWxvYWQsdGFnLgorICAgICAgICAoSlNDOjpERkc6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAgICAgICAgICAgLSBBZGRlZCBmcHIgdmVyc2lv
bnMgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6REZHOjphcHBlbmRDYWxsU2V0UmVz
dWx0KToKKyAgICAgICAgICAgIC0gQWRkZWQgdmVyc2lvbnMgb2YgdGhpcyBmdW5jdGlvbiB3aXRo
b3V0IGV4Y2VwdGlvbiBjaGVjay4KKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvcjMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6
CisgICAgICAgICAgICAtIHNldHVwUmVzdWx0cyBpcyBub3cgcGFzc2VkIHBheWxvYWQsdGFnLgor
CiAyMDExLTEwLTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGRlbGV0ZVByb3BlcnR5VmlydHVhbApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvcjMyXzY0LmNwcAko
cmV2aXNpb24gOTg0MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVH
ZW5lcmF0b3IzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZv
aWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoTm9kZSYgbm8KIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCi0gICAgc2V0dXBSZXN1bHRzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
Uik7CisgICAgc2V0dXBSZXN1bHRzKHJlc3VsdFBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUik7CiAK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21w
aWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDk4NDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgQVNT
RVJUKGlzTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZU9mTnVtYmVyQ29u
c3RhbnQobm9kZUluZGV4KSkpLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGVJbmRl
eCkpKSwgY2FuVHJhbXBsZSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlUHRyVG9Eb3VibGUoY2Fu
VHJhbXBsZSwgaW5mby5mcHIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTk1Myw4ICs5NTMsMTY3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tu
b2RlLnZpcnR1YWxSZWdpc3RlcigpXS5pbml0Q29uc3RhbnQobm9kZUluZGV4LCBub2RlLnJlZkNv
dW50KCkpOwogICAgIH0KIAotI2lmIENQVShYODZfNjQpCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB1
c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgorICAgIC8v
IE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwg
YXJndW1lbnRzIG9uIHRoZQorICAgIC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzIHdl
IG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCisgICAgLy8gY29ycmVjdCByZWdpc3Rl
cnMuCisjaWYgQ1BVKFg4NikKKyAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudEluZGV4OworICAg
IHZvaWQgcmVzZXRDYWxsQXJndW1lbnRzKCkgeyBtX2NhbGxBcmd1bWVudEluZGV4ID0gMDsgfQor
CisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNpbmcgaW50ZXJuYWxseSB0byBpbXBsZW1lbnQg
dGhlIGNhbGxPcGVyYXRpb24gbWV0aG9kcy4KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChHUFJS
ZWcgdmFsdWUpCisgICAgeworICAgICAgICBtX2ppdC5wb2tlKHZhbHVlLCBtX2NhbGxBcmd1bWVu
dEluZGV4KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIg
aW1tKQorICAgIHsKKyAgICAgICAgbV9qaXQucG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50SW5kZXgr
Kyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIgcG9pbnRl
cikKKyAgICB7CisgICAgICAgIG1faml0LnBva2UocG9pbnRlciwgbV9jYWxsQXJndW1lbnRJbmRl
eCsrKTsKKyAgICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoRlBSUmVnIHZhbHVlKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRJbmRleCAq
IHNpemVvZih2b2lkKikpKTsKKyAgICAgICAgbV9jYWxsQXJndW1lbnRJbmRleCArPSBzaXplb2Yo
ZG91YmxlKSAvIHNpemVvZih2b2lkKik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcy
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCisgICAgewor
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIg
YXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
VHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAg
ICB9CisjZWxzZQogICAgIHRlbXBsYXRlPEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgogICAg
IHZvaWQgc2V0dXBUd29TdHViQXJncyhHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCiAgICAgewpA
QCAtMTA4NSw0NjkgKzEyNDQsMzc3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1faml0LnN3
YXAoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0K
IAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25z
LgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2b2lkKiBwb2ludGVyKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0
Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJn
czxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJn
Mik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0
YXRlKCkKKyAgICB7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9q
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0Lm1vdmUoYXJn
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBh
cmcyKTsKICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIp
CisgICAgeworICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUgdGhp
cyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCisgICAgICAgIG1faml0
Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0
Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9qaXQubW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5tb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmUoYXJnMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVu
dHMoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmczLCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gVGhl
c2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCisgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgYnJvYWRseSB2YWx1ZSByZXByZXNlbnRhdGlvbiBzcGVjaWZpYyAoaS5l
LgorICAgIC8vIGRlYWwgd2l0aCB0aGUgZmFjdCB0aGF0IGEgSlNWYWx1ZSBtYXkgYmUgcGFzc2Vk
IGluIG9uZSBvciB0d28KKyAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgYW5kIGRlbGVnYXRlIHRo
ZSBjYWxsaW5nIGNvbnZlbnRpb24gc3BlY2lmaWMKKyAgICAvLyBkZWNpc2lvbiBhcyB0byBob3cg
dG8gZmlsbCB0aGUgcmVnc2l0ZXJzIHRvIHNldHVwQXJndW1lbnRzKiBtZXRob2RzLgorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIpCisgICAg
eworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2lu
dGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBS
UmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEpOwogICAgICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
ICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUdJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBjYWxsT3BlcmF0aW9uKChKX0RGR09wZXJhdGlvbl9FUFApb3BlcmF0aW9uLCByZXN1bHQsIGFy
ZzEsIHBvaW50ZXIpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSSBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gY2FsbE9wZXJhdGlvbigoSl9ERkdPcGVyYXRpb25fRVApb3BlcmF0aW9uLCByZXN1
bHQsIGlkZW50aWZpZXIpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxP
cGVyYXRpb24oKEpfREZHT3BlcmF0aW9uX0VQKW9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxKTsKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRp
b25fRVBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNp
emUpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KHNpemUpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwot
ICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludCBzdGFydENvbnN0YW50LCBpbnQg
bnVtQ29uc3RhbnRzKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShJbW0zMihudW1Db25zdGFu
dHMpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHN0
YXJ0Q29uc3RhbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5tb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShJbW0zMihzdGFydENvbnN0YW50KSwg
SW1tMzIobnVtQ29uc3RhbnRzKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgLy8gVGhp
cyBhbHNvIGhhbmRsZXMgSl9ERkdPcGVyYXRpb25fRVBQIQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJn
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxl
cjo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKChKX0RGR09wZXJhdGlvbl9FUFApb3BlcmF0
aW9uLCByZXN1bHQsIGFyZzEsIGlkZW50aWZpZXIpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigoSl9ERkdPcGVyYXRp
b25fRUpQKW9wZXJhdGlvbiwgcmVzdWx0LCBhcmcxLCBhcmcyKTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQot
ICAgIC8vIFRoaXMgYWxzbyBoYW5kbGVzIEpfREZHT3BlcmF0aW9uX0VQIQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAg
ICAgewotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBT
dHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KLSAgICAvLyBUaGlzIGFsc28gaGFuZGxlcyBKX0RGR09wZXJhdGlvbl9FSlAhCi0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIE1hY3JvQXNzZW1ibGVy
OjpJbW0zMiBpbW0pCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihz
dGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3Zh
bHVlKSkpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OkltbVB0
cihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5t
X3ZhbHVlKSkpKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoaW1tLm1fdmFsdWUpKSkpLCBhcmcyKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAg
ICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtX2ppdC5t
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0RGR09wZXJhdGlvbl9FSkNJIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxP
cGVyYXRpb24oKFZfREZHT3BlcmF0aW9uX0VKUFApb3BlcmF0aW9uLCBhcmcxLCBhcmcyLCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJn
dW1lbnRzKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAg
IHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbV9qaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
RUFaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAg
ICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigoVl9ERkdPcGVyYXRpb25fRVBaSilv
cGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1
bWVudHMoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
RlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KLSAgICAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZShGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUiwg
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0REIG9wZXJhdGlvbiwgRlBSUmVn
IHJlc3VsdCwgRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBU
d29TdHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4o
YXJnMSwgYXJnMik7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFw
cGVuZENhbGwob3BlcmF0aW9uKTsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZShGUFJJbmZvOjpy
ZXR1cm5WYWx1ZUZQUiwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotCi0jZWxpZiBDUFUoWDg2KQotCi0gICAg
dm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIHRhZywgR1BSUmVnIHBheWxvYWQpCi0gICAgewotICAg
ICAgICBHUFJSZWcgc3JjQSA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwotICAgICAgICBHUFJS
ZWcgc3JjQiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSMjsKLSAgICAgICAgR1BSUmVnIGRlc3RB
ID0gcGF5bG9hZDsKLSAgICAgICAgR1BSUmVnIGRlc3RCID0gdGFnOwotCi0gICAgICAgIGlmIChz
cmNCICE9IGRlc3RBKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0
d28gc2ltcGxlIG1vdmVzLgotICAgICAgICAgICAgbV9qaXQubW92ZShzcmNBLCBkZXN0QSk7Ci0g
ICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0IsIGRlc3RCKTsKLSAgICAgICAgfSBlbHNlIGlmIChz
cmNBICE9IGRlc3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2Ug
LSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAgICAgICAgICAgbV9qaXQubW92ZShz
cmNCLCBkZXN0Qik7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtX2ppdC5zd2FwKGRlc3RBLCBkZXN0Qik7Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgbV9jYWxsQXJndW1lbnRJbmRleDsKLSAgICB2b2lkIHJlc2V0Q2FsbEFy
Z3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRJbmRleCA9IDA7IH0KLQotICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkgdG8gaW1wbGVtZW50IHRoZSBjYWxsT3BlcmF0aW9u
IG1ldGhvZHMuCi0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BSUmVnIHZhbHVlKQotICAgIHsK
LSAgICAgICAgbV9qaXQucG9rZSh2YWx1ZSwgbV9jYWxsQXJndW1lbnRJbmRleCsrKTsKLSAgICB9
Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BSUmVnIHRhZywgR1BSUmVnIHBheWxvYWQpCi0g
ICAgewotICAgICAgICBtX2ppdC5wb2tlKHBheWxvYWQsIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7
Ci0gICAgICAgIG1faml0LnBva2UodGFnLCBtX2NhbGxBcmd1bWVudEluZGV4KyspOwotICAgIH0K
LSAgICB2b2lkIGFkZENhbGxBcmd1bWVudChJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtX2pp
dC5wb2tlKGltbSwgbV9jYWxsQXJndW1lbnRJbmRleCsrKTsKLSAgICB9Ci0gICAgdm9pZCBhZGRD
YWxsQXJndW1lbnRCb3hlZChJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtX2ppdC5wb2tlKGlt
bSwgbV9jYWxsQXJndW1lbnRJbmRleCsrKTsKLSAgICAgICAgbV9qaXQucG9rZShUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBtX2NhbGxBcmd1bWVudEluZGV4KyspOwotICAgIH0KLSAg
ICB2b2lkIGFkZENhbGxBcmd1bWVudCh2b2lkKiBwb2ludGVyKQotICAgIHsKLSAgICAgICAgbV9q
aXQucG9rZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgbV9jYWxsQXJndW1l
bnRJbmRleCsrKTsKLSAgICB9Ci0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoRlBSUmVnIHZhbHVl
KQotICAgIHsKLSAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRJ
bmRleCAqIHNpemVvZih2b2lkKikpKTsKLSAgICAgICAgbV9jYWxsQXJndW1lbnRJbmRleCArPSBz
aXplb2YoZG91YmxlKSAvIHNpemVvZih2b2lkKik7Ci0gICAgfQotCi0gICAgLy8gVGhlc2UgbWV0
aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCisjZWxzZQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9ERkdPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHMoYXJnMSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBl
bmRDYWxsKG9wZXJhdGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdCk7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChwb2ludGVyKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCog
cG9pbnRlcikKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChwb2ludGVyKTsKLQot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHSSBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
SWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0
aW9uKChKX0RGR09wZXJhdGlvbl9FUFApb3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxv
YWQsIGFyZzEsIHBvaW50ZXIpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJl
c3VsdFBheWxvYWQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBJZGVudGlmaWVyKiBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKEpfREZHT3BlcmF0aW9uX0VQ
KW9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewot
ICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigoSl9ERkdPcGVyYXRpb25fRVApb3BlcmF0aW9u
LCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIGFyZzEpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlv
bl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
dm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1
bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoSW1tMzIoc2l6ZSkpOwotCi0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2Fk
KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9p
bnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChJbW0zMihzdGFy
dENvbnN0YW50KSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChJbW0zMihudW1Db25zdGFudHMp
KTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0YXJ0Q29uc3RhbnQpLCBUcnVzdGVk
SW1tUHRyKG51bUNvbnN0YW50cykpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRp
b25fRUpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQs
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAg
ewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzFUYWcsIGFyZzFQYXlsb2FkKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50ZXIpOwot
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBJbW1QdHIocG9pbnRlcikpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcg
YXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxVGFnLCBhcmcxUGF5bG9hZCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5
bG9hZCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwg
YXJnMVRhZywgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0kg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVn
IGFyZzEsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gY2Fs
bE9wZXJhdGlvbigoSl9ERkdPcGVyYXRpb25fRVBQKW9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1
bHRQYXlsb2FkLCBhcmcxLCBpZGVudGlmaWVyKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKEpfREZH
T3BlcmF0aW9uX0VKUClvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgYXJnMVRh
ZywgYXJnMVBheWxvYWQsIGFyZzIpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9E
RkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7Ci0gICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywg
YXJnMVBheWxvYWQpOwotCi0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0KQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0KKyAgICAgICAgc2V0dXBB
cmd1bWVudHNFeGVjU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotCisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7
Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MVRhZywgYXJnMVBheWxvYWQpOwotCisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxVGFnLCBhcmcxUGF5bG9hZCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFnLCBhcmcyUGF5bG9hZCk7Ci0KKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcy
UGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7
Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MVRhZywgYXJnMVBheWxvYWQpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMlRhZywgYXJn
MlBheWxvYWQpOwotCi0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5
bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyIGltbSkK
ICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnRCb3hlZChp
bW0pOwotCi0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBpbW0sIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0sIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJn
MlBheWxvYWQpCiAgICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50Qm94ZWQoaW1tKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzJUYWcs
IGFyZzJQYXlsb2FkKTsKLQotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZyksIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfREZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKICAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFnLCBhcmcyUGF5
bG9hZCk7Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQog
ICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxVGFnLCBhcmcxUGF5bG9hZCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50ZXIpOwotCisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9ERkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIEdQUlJlZyBhcmcyLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oKFZfREZHT3BlcmF0aW9uX0VKUFApb3BlcmF0aW9u
LCBhcmcxVGFnLCBhcmcxUGF5bG9hZCwgYXJnMiwgaWRlbnRpZmllcik7CisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3Rl
ZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFy
ZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzJUYWcsIGFy
ZzJQYXlsb2FkKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzNUYWcsIGFyZzNQYXlsb2Fk
KTsKLQorICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxv
YWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2Fk
KQogICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnM1RhZywgYXJnM1BheWxvYWQpOwotCisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUFa
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQ
UlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKChW
X0RGR09wZXJhdGlvbl9FUFpKKW9wZXJhdGlvbiwgYXJnMSwgYXJnMiwgYXJnM1RhZywgYXJnM1Bh
eWxvYWQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKLSAgICAgICAgcmVzZXRD
YWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxVGFnLCBhcmcxUGF5bG9h
ZCk7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkuZnN0cGwo
MCwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAg
ICAgIHJldHVybiBjYWxsOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MVBheWxvYWQsIGFyZzFUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLQotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsID0gbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb24pOwotICAgICAgICBtX2ppdC5hc3NlbWJs
ZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgcmVz
dWx0KTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEs
IGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogI2VuZGlmCiAKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxsIGlu
c3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyByZXN1
bHRzLgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
Y29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faml0
LmFkZEV4Y2VwdGlvbkNoZWNrKG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pLCBhdChtX2NvbXBp
bGVJbmRleCkuY29kZU9yaWdpbik7CkBAIC0xNTU4LDExICsxNjI1LDU0IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgSklU
Q29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25z
dCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkKQorICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RC
KQorICAgIHsKKyAgICAgICAgR1BSUmVnIHNyY0EgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsK
KyAgICAgICAgR1BSUmVnIHNyY0IgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjI7CisKKyAgICAg
ICAgaWYgKHNyY0IgIT0gZGVzdEEpIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBj
YXNlcyAtIHR3byBzaW1wbGUgbW92ZXMuCisgICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0EsIGRl
c3RBKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoc3JjQiwgZGVzdEIpOworICAgICAgICB9IGVs
c2UgaWYgKHNyY0EgIT0gZGVzdEIpIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3
YXAgY2FzZSAtIGp1c3QgcHV0IHNyY0IgaW4gcGxhY2UgZmlyc3QuCisgICAgICAgICAgICBtX2pp
dC5tb3ZlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoc3JjQSwgZGVzdEEp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0LnN3YXAoZGVzdEEsIGRlc3RCKTsK
KyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBH
UFJSZWcgcmVzdWx0MikKKyAgICB7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyAgICAgICAgc2V0dXBSZXN1
bHRzKHJlc3VsdDEsIHJlc3VsdDIpOworICAgICAgICByZXR1cm4gY2FsbDsKKyAgICB9CisjaWYg
Q1BVKFg4NikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkuZnN0cGwo
MCwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBjYWxsOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxs
U2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1
bmN0aW9uKTsKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkuZnN0cGwoMCwgSklUQ29tcGlsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21w
aWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBjYWxs
OworICAgIH0KKyNlbHNlCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyBy
ZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIHNldHVwUmVzdWx0cyhyZXN1
bHRUYWcsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKEZQUkluZm86
OnJldHVyblZhbHVlRlBSLCByZXN1bHQpOworICAgICAgICByZXR1cm4gY2FsbDsKKyAgICB9Cisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0Lm1v
dmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwogICAgIH0KICNlbmRpZgo=
</data>
<flag name="review"
          id="110537"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>