<?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>85721</bug_id>
          
          <creation_ts>2012-05-05 14:32:17 -0700</creation_ts>
          <short_desc>DFG should support reflective arguments access</short_desc>
          <delta_ts>2012-05-22 13:01:59 -0700</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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617042</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-05 14:32:17 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617043</commentid>
    <comment_count>1</comment_count>
      <attachid>140410</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-05 14:33:57 -0700</bug_when>
    <thetext>Created attachment 140410
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617047</commentid>
    <comment_count>2</comment_count>
      <attachid>140411</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-05 15:42:58 -0700</bug_when>
    <thetext>Created attachment 140411
more

Added support for op_create_arguments.  Still more work to do though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617066</commentid>
    <comment_count>3</comment_count>
      <attachid>140415</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-05 17:50:11 -0700</bug_when>
    <thetext>Created attachment 140415
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617070</commentid>
    <comment_count>4</comment_count>
      <attachid>140415</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-05-05 18:59:35 -0700</bug_when>
    <thetext>Comment on attachment 140415
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review

&gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; -        bool overrodeLength : 1;
&gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt;          bool overrodeCallee : 1;
&gt;          bool overrodeCaller : 1;
&gt;          bool isStrictMode : 1;

Is keeping the rest of these bit fields actually saving space?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617074</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-05 19:25:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 140415 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt;          bool overrodeCallee : 1;
&gt; &gt;          bool overrodeCaller : 1;
&gt; &gt;          bool isStrictMode : 1;
&gt; 
&gt; Is keeping the rest of these bit fields actually saving space?

Good point. I will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617145</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-05-06 11:59:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 140415 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt; &gt;          bool overrodeCallee : 1;
&gt; &gt; &gt;          bool overrodeCaller : 1;
&gt; &gt; &gt;          bool isStrictMode : 1;
&gt; &gt; 
&gt; &gt; Is keeping the rest of these bit fields actually saving space?
&gt; 
&gt; Good point. I will change.

It occurs to me that the dfg uses a structure check for arguments -- what happens if we made overriding the length change the structure -&gt; then we&apos;d just have the single structure check and all would be well.  Not suggesting that change for this patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617149</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-06 12:07:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 140415 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; &gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; &gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt; &gt; &gt;          bool overrodeCallee : 1;
&gt; &gt; &gt; &gt;          bool overrodeCaller : 1;
&gt; &gt; &gt; &gt;          bool isStrictMode : 1;
&gt; &gt; &gt; 
&gt; &gt; &gt; Is keeping the rest of these bit fields actually saving space?
&gt; &gt; 
&gt; &gt; Good point. I will change.
&gt; 
&gt; It occurs to me that the dfg uses a structure check for arguments -- what happens if we made overriding the length change the structure -&gt; then we&apos;d just have the single structure check and all would be well.  Not suggesting that change for this patch though.

We could do that.

Or we could have the CFA infer that you&apos;re accessing your own arguments, and then we don&apos;t even have to go down the code path that accesses the Arguments object.  That&apos;s my next project.

This entire GetByVal/PutByVal code path is there to ensure that even if the CFA fails to prove whatever we want it to prove, we still run at OK speed. I wouldn&apos;t want to put in real effort to optimize this fall-back path beyond what&apos;s there in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617363</commentid>
    <comment_count>8</comment_count>
      <attachid>140469</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-06 21:22:36 -0700</bug_when>
    <thetext>Created attachment 140469
the patch

Rebased patch with Sam&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617399</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-05-06 22:44:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; (From update of attachment 140415 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; &gt; &gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; &gt; &gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt; &gt; &gt; &gt;          bool overrodeCallee : 1;
&gt; &gt; &gt; &gt; &gt;          bool overrodeCaller : 1;
&gt; &gt; &gt; &gt; &gt;          bool isStrictMode : 1;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Is keeping the rest of these bit fields actually saving space?
&gt; &gt; &gt; 
&gt; &gt; &gt; Good point. I will change.
&gt; &gt; 
&gt; &gt; It occurs to me that the dfg uses a structure check for arguments -- what happens if we made overriding the length change the structure -&gt; then we&apos;d just have the single structure check and all would be well.  Not suggesting that change for this patch though.
&gt; 
&gt; We could do that.
&gt; 
&gt; Or we could have the CFA infer that you&apos;re accessing your own arguments, and then we don&apos;t even have to go down the code path that accesses the Arguments object.  That&apos;s my next project.

Although you&apos;ll still need to do deleted value checks i think if the arguments object is present.

&gt; 
&gt; This entire GetByVal/PutByVal code path is there to ensure that even if the CFA fails to prove whatever we want it to prove, we still run at OK speed. I wouldn&apos;t want to put in real effort to optimize this fall-back path beyond what&apos;s there in this patch.

Fair enough.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617401</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-06 22:48:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 140415 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; &gt; &gt; &gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; &gt; &gt; &gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt; &gt; &gt; &gt; &gt;          bool overrodeCallee : 1;
&gt; &gt; &gt; &gt; &gt; &gt;          bool overrodeCaller : 1;
&gt; &gt; &gt; &gt; &gt; &gt;          bool isStrictMode : 1;
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Is keeping the rest of these bit fields actually saving space?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Good point. I will change.
&gt; &gt; &gt; 
&gt; &gt; &gt; It occurs to me that the dfg uses a structure check for arguments -- what happens if we made overriding the length change the structure -&gt; then we&apos;d just have the single structure check and all would be well.  Not suggesting that change for this patch though.
&gt; &gt; 
&gt; &gt; We could do that.
&gt; &gt; 
&gt; &gt; Or we could have the CFA infer that you&apos;re accessing your own arguments, and then we don&apos;t even have to go down the code path that accesses the Arguments object.  That&apos;s my next project.
&gt; 
&gt; Although you&apos;ll still need to do deleted value checks i think if the arguments object is present.

But that ought to be my slow path, right?

&gt; 
&gt; &gt; 
&gt; &gt; This entire GetByVal/PutByVal code path is there to ensure that even if the CFA fails to prove whatever we want it to prove, we still run at OK speed. I wouldn&apos;t want to put in real effort to optimize this fall-back path beyond what&apos;s there in this patch.
&gt; 
&gt; Fair enough.  r=me

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617647</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-05-07 09:37:22 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; &gt; (From update of attachment 140415 [details] [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140415&amp;action=review
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/Arguments.h:53
&gt; &gt; &gt; &gt; &gt; &gt; &gt; -        bool overrodeLength : 1;
&gt; &gt; &gt; &gt; &gt; &gt; &gt; +        bool overrodeLength; // make this a full byte to make it easy to test from the JIT.
&gt; &gt; &gt; &gt; &gt; &gt; &gt;          bool overrodeCallee : 1;
&gt; &gt; &gt; &gt; &gt; &gt; &gt;          bool overrodeCaller : 1;
&gt; &gt; &gt; &gt; &gt; &gt; &gt;          bool isStrictMode : 1;
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Is keeping the rest of these bit fields actually saving space?
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Good point. I will change.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It occurs to me that the dfg uses a structure check for arguments -- what happens if we made overriding the length change the structure -&gt; then we&apos;d just have the single structure check and all would be well.  Not suggesting that change for this patch though.
&gt; &gt; &gt; 
&gt; &gt; &gt; We could do that.
&gt; &gt; &gt; 
&gt; &gt; &gt; Or we could have the CFA infer that you&apos;re accessing your own arguments, and then we don&apos;t even have to go down the code path that accesses the Arguments object.  That&apos;s my next project.
&gt; &gt; 
&gt; &gt; Although you&apos;ll still need to do deleted value checks i think if the arguments object is present.
&gt; 
&gt; But that ought to be my slow path, right?

Sorry, it sounded like you were planning on doing inline property access even for reified arguments objects.

The more i think about it though, the more i like the idea of having this info marked off by a structure check, it would allow us to do sane things even when the arguments have been reified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617869</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-07 13:19:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/116345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630676</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-22 13:01:59 -0700</bug_when>
    <thetext>Merged in http://trac.webkit.org/changeset/118030</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140410</attachid>
            <date>2012-05-05 14:33:57 -0700</date>
            <delta_ts>2012-05-05 15:42:58 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>arguments_patch_1.diff</filename>
            <type>text/plain</type>
            <size>21373</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBzdXBwb3J0IHJlZmxlY3RpdmUgYXJndW1lbnRzIGFjY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4gcHJv
Z3Jlc3MuICBUaGlzIG9wdGltaXplcyBnZXRfYnlfdmFsIG9uIGFyZ3VtZW50cywgYnV0IEkgc3Rp
bGwKKyAgICAgICAgbmVlZCB0byBhZGQgb3BfY3JlYXRlX2FyZ3VtZW50cyBhbmQgZnJpZW5kcy4K
KworICAgICAgICAqIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNB
cmd1bWVudHNQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmlzQWN0
aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cyk6CisgICAgICAgIChOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKToKKyAgICAgICAg
KERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1
bWVudHNMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgor
ICAgICAgICAoQXJndW1lbnRzRGF0YSk6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6Om9mZnNldE9mRGF0YSk6CisKIDIwMTItMDUtMDEgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29t
cHV0ZSBkb21pbmF0b3JzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsx
NjIsMTEgQEAgaW5saW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQ2NEFycmF5OwogfQogCitpbmxpbmUgYm9vbCBpc0Fy
Z3VtZW50c1ByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISF2
YWx1ZSAmJiAodmFsdWUgJiBQcmVkaWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKK30KKwogaW5saW5l
IGJvb2wgaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQogewogICAgIHJldHVybiBpc0J5dGVBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0x
OTQsNiArMTk5LDcgQEAgaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYQog
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRU
eXBlIHZhbHVlKQogewogICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAg
ICAgfHwgaXNBcmd1bWVudHNQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc0FjdGlvbmFi
bGVUeXBlZE11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOwogfQogCkBAIC0yMTMsMTEgKzIx
OSw2IEBAIGlubGluZSBib29sIGlzTXlBcmd1bWVudHNQcmVkaWN0aW9uKFByZWQKICAgICByZXR1
cm4gdmFsdWUgPT0gUHJlZGljdE15QXJndW1lbnRzOwogfQogCi1pbmxpbmUgYm9vbCBpc0FyZ3Vt
ZW50c1ByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiBQcmVkaWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKLX0KLQogaW5saW5lIGJv
b2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdEludDMyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MTAsNiArNzEwLDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdEFyZ3VtZW50cyk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5n
KSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3Ry
aW5nKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJ
bnQzMik7CkBAIC03OTMsMTIgKzc5OSwyMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5z
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRp
Y3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlm
ICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlz
QWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCkpCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgIHx8IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkKKyNlbmRpZgorICAg
ICAgICAgICAgKSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS5vcCgpID09IFB1dEJ5VmFsKTsK
ICAgICAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1cmVzKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RBcmd1bWVudHMpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgp
KSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qnl0
ZUFycmF5KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRp
Y3RJbnQzMik7CkBAIC0xMDcxLDYgKzEwODYsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJ
bnQzMik7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6Cisg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1bWVudHMpOwor
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJy
ZWFrOworCiAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3RJbnQzMik7CkBAIC0xMTM4LDYgKzExNTgsMTAgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgPT0g
UHJlZGljdFN0cmluZykgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdFN0cmluZyk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
cmV2aXNpb24gMTE2MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigp
KSAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYm9vbCBpc0Fy
Z3VtZW50cyA9IGlzQXJndW1lbnRzUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJv
b2wgaXNCeXRlQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5
dGVBcnJheSgpOwogICAgICAgICAgICAgYm9vbCBpc0ludDhBcnJheSA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCk7CkBAIC05OCw2ICs5OSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChpc0FycmF5KQogICAgICAgICAgICAgICAg
IG5vZGUuc2V0T3AoR2V0QXJyYXlMZW5ndGgpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNBcmd1
bWVudHMpCisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcmd1bWVudHNMZW5ndGgpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcpCiAgICAgICAgICAgICAgICAgbm9kZS5zZXRP
cChHZXRTdHJpbmdMZW5ndGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNCeXRlQXJyYXkpCkBA
IC0xMzAsNyArMTMzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVBy
ZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAg
ICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlv
bikgeworICAgICAgICAgICAgaWYgKCghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAm
JiBiYXNlUHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpCisgICAgICAgICAgICAgICAgfHwgIWlzQWN0
aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhO
b3ApOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMShub2RlKTsK
ICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDIobm9kZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTE2MjI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0Miw2
ICs3NDIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gaXNBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVB
cmd1bWVudHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQXJndW1lbnRzUHJlZGljdGlvbihw
cmVkaWN0aW9uKCkpOworICAgIH0KKyAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJ5dGVB
cnJheSgpCiAgICAgewogICAgICAgICByZXR1cm4gISEocHJlZGljdGlvbigpICYgUHJlZGljdEJ5
dGVBcnJheSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0QnlPZmZzZXQsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFj
cm8oR2V0QXJndW1lbnRzTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRT
dHJpbmdMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldEJ5dGVBcnJheUxl
bmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0SW50OEFycmF5TGVuZ3RoLCBO
b2RlUmVzdWx0SW50MzIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
MTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY0LDYgKzU2NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50c0xlbmd0aDoKICAgICAg
ICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0SW50OEFycmF5TGVu
Z3RoOgogICAgICAgICBjYXNlIEdldEludDE2QXJyYXlMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTEsNyArMjQ1MSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlv
bihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghYXQobm9k
ZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICB8fCAhaXNB
Y3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0
aW9uKCkpCisgICAgICAgICAgICB8fCBhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVB
cmd1bWVudHMoKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsgLy8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUgY2VsbC4gV2Un
bGwgcHJvYmFibHkgYmUgcmlnaHQuCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQzKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUg
IkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNCeXRlQXJyYXkuaCIKIApAQCAtMjM0OSw2ICsyMzUwLDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRl
QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKG5v
ZGUpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQpAQCAtMjQ3Nyw2ICsyNDg1LDY1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQ
UlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJl
ZyA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUu
Z3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1lbnRzOjpzX2luZm8p
KSk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6
b2Zmc2V0T2ZEYXRhKCkpLAorICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcpOworCisgICAgICAg
ICAgICAvLyBUd28gcmVhbGx5IGxhbWUgY2hlY2tzLgorICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBOb05v
ZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgT0JKRUNUX09GRlNF
VE9GKEFyZ3VtZW50c0RhdGEsIG51bUFyZ3VtZW50cykpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCks
IE5vTm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNo
UmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgZGVsZXRlZEFyZ3VtZW50cykpKSk7
CisgICAgCisgICAgICAgICAgICBtX2ppdC5tb3ZlKHByb3BlcnR5UmVnLCBzY3JhdGNoMlJlZyk7
CisgICAgICAgICAgICBtX2ppdC5uZWczMihzY3JhdGNoMlJlZyk7CisgICAgICAgICAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoMlJlZywgc2NyYXRjaDJSZWcpOworICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgcmVnaXN0ZXJzKSks
CisgICAgICAgICAgICAgICAgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKAorICAgICAgICAgICAgICAgIHZhbHVlUmVnLAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgICAgIHNjcmF0
Y2hSZWcsIHNjcmF0Y2gyUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0
ZUFycmF5KCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNl
LmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMy
ODksNiArMzM1NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6
IHsKKyAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50c0xlbmd0aChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogCiAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6IHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
MTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpA
QCAtMzAzMiw3ICszMDMzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4
ZWRQcgogICAgIAogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKLSAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKKyAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJl
ZGljdFN0cmluZykgewogICAgICAgICBpZiAoIWlzU3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKIApAQCAtMzA5
OSw2ICszMTAyLDEyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFBy
CiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlUmVnLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKE5vZGUmIG5vZGUp
Cit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGls
ZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisjZW5kaWYKKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAKKyAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2Uu
Z3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CisgICAgR1BS
UmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
IEdQUlJlZyByZXN1bHRUYWdSZWcgPSByZXN1bHRUYWcuZ3ByKCk7CisjZW5kaWYKKyAgICBHUFJS
ZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgCisgICAgaWYgKCFtX2NvbXBpbGVP
a2F5KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNo
UHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmQXJndW1lbnRzOjpzX2luZm8pKSk7CisgICAgfQorICAgIAorICAgIG1faml0LmxvYWRQdHIo
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6b2Zm
c2V0T2ZEYXRhKCkpLAorICAgICAgICBzY3JhdGNoUmVnKTsKKworICAgIC8vIFR3byByZWFsbHkg
bGFtZSBjaGVja3MuCisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgVW5jb3VudGFibGUs
IEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlLAorICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRP
RihBcmd1bWVudHNEYXRhLCBudW1Bcmd1bWVudHMpKSkpOworICAgIHNwZWN1bGF0aW9uQ2hlY2so
CisgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAg
c2NyYXRjaFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0RhdGEsIGRlbGV0ZWRBcmd1bWVu
dHMpKSkpOworICAgIAorICAgIG1faml0Lm1vdmUocHJvcGVydHlSZWcsIHJlc3VsdFJlZyk7Cisg
ICAgbV9qaXQubmVnMzIocmVzdWx0UmVnKTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihy
ZXN1bHRSZWcsIHJlc3VsdFJlZyk7CisgICAgbV9qaXQubG9hZFB0cigKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0Rh
dGEsIHJlZ2lzdGVycykpLAorICAgICAgICBzY3JhdGNoUmVnKTsKKyAgICAKKyNpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleCgKKyAgICAgICAgICAgIHNjcmF0Y2hSZWcsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAgICBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihSZWdpc3RlcikgKworICAgICAgICAgICAg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLAorICAgICAgICByZXN1bHRU
YWdSZWcpOworICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleCgKKyAgICAgICAgICAgIHNjcmF0Y2hSZWcsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsCisgICAgICAgICAgICBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihSZWdpc3RlcikgKworICAgICAgICAgICAgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwKKyAgICAgICAgcmVzdWx0
UmVnKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ1JlZywgcmVzdWx0UmVnLCBtX2NvbXBp
bGVJbmRleCk7CisjZWxzZQorICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICBzY3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1l
bnRPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAg
ICAgcmVzdWx0UmVnKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZywgbV9jb21waWxlSW5k
ZXgpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVu
dHNMZW5ndGgoTm9kZSYgbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7
CisgICAgCisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRSZWcgPSByZXN1bHQuZ3ByKCk7CisgICAgCisgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1l
bnRzOjpzX2luZm8pKSk7CisgICAgfQorICAgIAorICAgIG1faml0LmxvYWRQdHIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRh
KCkpLAorICAgICAgICByZXN1bHRSZWcpOworCisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlLAorICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0UmVnLCBPQkpFQ1RfT0ZGU0VUT0Yo
QXJndW1lbnRzRGF0YSwgb3ZlcnJvZGVMZW5ndGgpKSkpOworICAgIAorICAgIG1faml0LmxvYWQz
MigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0UmVnLCBPQkpFQ1RfT0ZG
U0VUT0YoQXJndW1lbnRzRGF0YSwgbnVtQXJndW1lbnRzKSksCisgICAgICAgIHJlc3VsdFJlZyk7
CisgICAgaW50ZWdlclJlc3VsdChyZXN1bHRSZWcsIG1fY29tcGlsZUluZGV4KTsKK30KKwogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uTm9DaGVjayhOb2RlJiBub2RlKQog
ewogICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5NTAsNiArMTk1MCw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRD
aGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUm
KTsKKyAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKE5vZGUmKTsKKyAgICB2b2lk
IGNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVZhbHVl
VG9JbnQzMihOb2RlJik7CiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9kZSYpOwog
ICAgIHZvaWQgY29tcGlsZUludDMyVG9Eb3VibGUoTm9kZSYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25BcnJheVB0cjxib29sPiBk
ZWxldGVkQXJndW1lbnRzOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxs
ZWU7Ci0gICAgICAgIGJvb2wgb3ZlcnJvZGVMZW5ndGggOiAxOworICAgICAgICBib29sIG92ZXJy
b2RlTGVuZ3RoOyAvLyBtYWtlIHRoaXMgYSBmdWxsIGJ5dGUgdG8gbWFrZSBpdCBlYXN5IHRvIHRl
c3QgZnJvbSB0aGUgSklULgogICAgICAgICBib29sIG92ZXJyb2RlQ2FsbGVlIDogMTsKICAgICAg
ICAgYm9vbCBvdmVycm9kZUNhbGxlciA6IDE7CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlIDog
MTsKQEAgLTEwMSw2ICsxMDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgeyAKICAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsgCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgZCk7IH0KIAogICAg
IHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140411</attachid>
            <date>2012-05-05 15:42:58 -0700</date>
            <delta_ts>2012-05-05 17:50:11 -0700</delta_ts>
            <desc>more</desc>
            <filename>arguments_patch_2.diff</filename>
            <type>text/plain</type>
            <size>34553</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBzdXBwb3J0IHJlZmxlY3RpdmUgYXJndW1lbnRzIGFjY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4gcHJv
Z3Jlc3MuICBUaGlzIG9wdGltaXplcyBnZXRfYnlfdmFsIG9uIGFyZ3VtZW50cyBhbmQgaGFuZGxl
cworICAgICAgICBvcF9jcmVhdGVfYXJndW1lbnRzLCBidXQgdGhlcmUgaXMgc3RpbGwgYSBsb3Qg
b2YgbWlzc2luZyBzdHVmZi4gQW5kIEkKKyAgICAgICAgaGF2ZW4ndCB0ZXN0ZWQgdGhpcyBleGNl
cHQgZm9yIHNpbXBsZSBwcm9ncmFtcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1ByZWRpY3RlZFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6aXNBcmd1bWVudHNQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxI
ZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoQ0NhbGxIZWxw
ZXJzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwpOgorICAgICAgICAoU3BlY3Vs
YXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJh
bXBsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24p
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoQXJndW1lbnRz
RGF0YSk6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6Om9m
ZnNldE9mRGF0YSk6CisKIDIwMTItMDUtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSBkb21pbmF0b3JzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJ
KHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsMTEgQEAgaW5saW5lIGJv
b2wgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVk
aWN0RmxvYXQ2NEFycmF5OwogfQogCitpbmxpbmUgYm9vbCBpc0FyZ3VtZW50c1ByZWRpY3Rpb24o
UHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBQ
cmVkaWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKK30KKwogaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxl
SW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAgIHJl
dHVybiBpc0J5dGVBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0xOTQsNiArMTk5LDcgQEAgaW5s
aW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYQogaW5saW5lIGJvb2wgaXNBY3Rp
b25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAg
IHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNBcmd1bWVudHNQ
cmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJh
eVByZWRpY3Rpb24odmFsdWUpOwogfQogCkBAIC0yMTMsMTEgKzIxOSw2IEBAIGlubGluZSBib29s
IGlzTXlBcmd1bWVudHNQcmVkaWN0aW9uKFByZWQKICAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGlj
dE15QXJndW1lbnRzOwogfQogCi1pbmxpbmUgYm9vbCBpc0FyZ3VtZW50c1ByZWRpY3Rpb24oUHJl
ZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBQcmVk
aWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKLX0KLQogaW5saW5lIGJvb2wgaXNJbnQzMlByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdElu
dDMyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTAsNiArNzEwLDEyIEBAIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
ICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVu
dHMoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEFyZ3VtZW50cyk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQ
cmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3RyaW5nKTsKICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBAIC03OTMsMTIg
Kzc5OSwyMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAg
ICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVB
cnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpCisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkKKyNlbmRpZgorICAgICAgICAgICAgKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobm9kZS5vcCgpID09IFB1dEJ5VmFsKTsKICAgICAgICAgICAgIGNsb2Ji
ZXJTdHJ1Y3R1cmVzKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYg
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1bWVudHMp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qnl0ZUFycmF5KTsKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBAIC0xMDI4
LDYgKzEwNDMsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgorICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+YXJndW1l
bnRzU3RydWN0dXJlKCkpOworICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICAgIAogICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAgICAgICAg
IC8vIERvZXMgbm90aGluZyB0aGF0IGlzIHVzZXItdmlzaWJsZS4KICAgICAgICAgYnJlYWs7CkBA
IC0xMDcxLDYgKzEwOTEsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CiAgICAg
ICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6CisgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1bWVudHMpOworICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJyZWFrOworCiAgICAg
Y2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RJbnQzMik7CkBAIC0xMTM4LDYgKzExNjMsMTAgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmlu
ZykgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0
cmluZyk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0OSw5ICsyMzQ5LDE2IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NyZWF0ZV9hY3RpdmF0aW9uKTsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNh
c2Ugb3BfY3JlYXRlX2FyZ3VtZW50czogeworICAgICAgICAgICAgTm9kZUluZGV4IGNyZWF0ZUFy
Z3VtZW50cyA9IGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1lbnRzLCBnZXQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBzZXQodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBjcmVh
dGVBcmd1bWVudHMpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FyZ3VtZW50
cyk7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2Fj
dGl2YXRpb246IHsKICAgICAgICAgICAgIC8vIFRoaXMgY3VycmVudGx5IGlnbm9yZXMgYXJndW1l
bnRzIGJlY2F1c2Ugd2UgZG9uJ3Qgc3VwcG9ydCB0aGVtIHlldC4KLSAgICAgICAgICAgIGFkZFRv
R3JhcGgoVGVhck9mZkFjdGl2YXRpb24sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBY3RpdmF0aW9uLCBPcEluZm8o
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdGVh
cl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxMTYyMjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsNiArMTMxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRy
dXN0ZWRJbW0zMiBhcmcyKQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBA
IC00MzIsNiArNDQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CiAgICAgCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
VHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
KyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgSW1tUHRyIGFyZzIpCiAgICAgewogICAgICAg
ICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDExNjIyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw2ICsxNjQsNyBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlE
IG9wCiAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOgogICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2
YXRpb246CiAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIGNhc2Ugb3BfY3Jl
YXRlX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1
bmNfZXhwOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5OSw2ICsyMDAsNyBAQCBpbmxpbmUg
Ym9vbCBjYW5JbmxpbmVPcGNvZGUoT3Bjb2RlSUQgb3BjCiAgICAgY2FzZSBvcF90ZWFyX29mZl9h
Y3RpdmF0aW9uOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOCBAQCBpbmxpbmUgY29u
c3QgY2hhciogdXNlS2luZFRvU3RyaW5nKFVzZUtpCiAKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2Rl
IHsgTmVlZFRvU3BpbGwsIERvbnRTcGlsbCB9OwogCitlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1
bHQgfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1i
ZXIoKSkgIT0gZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9u
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJvb2wg
aXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlzU3RyaW5nUHJl
ZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBib29sIGlzQnl0ZUFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVCeXRlQXJyYXkoKTsKICAgICAgICAgICAgIGJvb2wgaXNJbnQ4QXJyYXkgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpOwpAQCAtOTgsNiArOTksOCBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICAgICBpZiAoaXNBcnJheSkKICAgICAgICAgICAg
ICAgICBub2RlLnNldE9wKEdldEFycmF5TGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlz
QXJndW1lbnRzKQorICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0QXJndW1lbnRzTGVuZ3Ro
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKQogICAgICAgICAgICAgICAgIG5vZGUu
c2V0T3AoR2V0U3RyaW5nTGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5
KQpAQCAtMTMwLDcgKzEzMyw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGJh
c2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRp
Y3Rpb24pIHsKKyAgICAgICAgICAgIGlmICgoIShiYXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQz
MikgJiYgYmFzZVByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgfHwgbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKQorICAgICAgICAgICAgICAgIHx8ICFp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoTm9wKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEobm9k
ZSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQyKG5vZGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDExNjIyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzUsNiArMjc1LDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5sb2NhbCgpOwogICAgIH0KICAgICAKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09
IFRlYXJPZmZBY3RpdmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4obV9vcEluZm8pOworICAgIH0KKyAgICAKICAgICBib29sIGhhc0lkZW50aWZpZXIo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC03NDIsNiArNzQ4LDExIEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24o
KSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0FyZ3VtZW50c1ByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsK
KyAgICB9CisgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICEhKHByZWRpY3Rpb24oKSAmIFByZWRpY3RCeXRlQXJyYXkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTE2MjI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRCeU9m
ZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8o
R2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldEFyZ3VtZW50
c0xlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0U3RyaW5nTGVuZ3RoLCBO
b2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRCeXRlQXJyYXlMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAogICAgIG1hY3JvKEdldEludDhBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMy
KSBcCkBAIC0xODYsNiArMTg3LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhU
ZWFyT2ZmQWN0aXZhdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICAvKiBOb2Rl
cyB1c2VkIGZvciBhcmd1bWVudHMuIFNpbWlsYXIgdG8gYWN0aXZhdGlvbiBzdXBwb3J0LCBvbmx5
IGl0IG1ha2VzIGV2ZW4gbGVzcyAqL1wKKyAgICAvKiBzZW5zZS4gKi9cCisgICAgbWFjcm8oQ3Jl
YXRlQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBcCiAgICAgLyogTm9kZXMgZm9yIGNy
ZWF0aW5nIGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3RnVuY3Rpb25Ob0NoZWNrLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZH
UmVwYXRjaC5oIgpAQCAtMTAyMSwxMSArMTAyMiwyMyBAQCBKU0NlbGwqIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uQ3JlYXRlQWN0CiAgICAgcmV0dXJuIGFjdGl2YXRpb247CiB9CiAKLXZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogYWN0aXZhdGlvbikKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEFTU0VSVChhY3RpdmF0aW9uKTsKLSAg
ICBBU1NFUlQoYWN0aXZhdGlvbi0+aW5oZXJpdHMoJkpTQWN0aXZhdGlvbjo6c19pbmZvKSk7Ci0g
ICAganNDYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb24pLT50ZWFyT2ZmKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CisgICAgcmV0dXJuIEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYyk7Cit9CisKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYWN0aXZhdGlvbkNlbGwsIGludDMyX3QgdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKQoreworICAgIGlmICghYWN0aXZhdGlvbkNlbGwpIHsK
KyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50
ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZh
dGlvbiA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uQ2VsbCk7CisgICAgYWN0aXZh
dGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBl
eGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpKQor
ICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBhY3RpdmF0aW9uKTsKIH0KIAogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNp
b24gMTE2MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAgdHlwZWRlZiBzaXplX3QgREZHX09QRVJB
VElPTiAoKlNfREZHT3BlcgogdHlwZWRlZiBzaXplX3QgREZHX09QRVJBVElPTiAoKlNfREZHT3Bl
cmF0aW9uX0opKEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgq
Vl9ERkdPcGVyYXRpb25fRUFaSikoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QsIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25f
RUNKSikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KTsKK3R5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUNaKShFeGVj
U3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgq
Vl9ERkdPcGVyYXRpb25fRUpDSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCos
IElkZW50aWZpZXIqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRp
b25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9u
X0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCop
OwpAQCAtMTU0LDcgKzE1NSw4IEBAIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nh
bGwoRXgKIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVj
U3RhdGUqKTsKIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdChFeGVj
U3RhdGUqKTsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9u
KEV4ZWNTdGF0ZSopOwotdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZBY3RpdmF0
aW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKTsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRp
b25UZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90IHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3Rlcik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25FeHByZXNzaW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogZG91Ymxl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTU1LDYgKzU1NSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czog
eworICAgICAgICAgICAgLy8gQXQgdGhpcyBzdGFnZSB3ZSBkb24ndCB0cnkgdG8gcHJlZGljdCB3
aGV0aGVyIHRoZSBhcmd1bWVudHMgYXJlIG91cnMgb3IKKyAgICAgICAgICAgIC8vIHNvbWVvbmUg
ZWxzZSdzLiBXZSBjb3VsZCwgYnV0IHdlIGRvbid0LCB5ZXQuCisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEFyZ3VtZW50cyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgTmV3RnVuY3Rpb25Ob0NoZWNrOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbjogewpAQCAtNTY0LDYgKzU3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgor
ICAgICAgICBjYXNlIEdldEFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgY2FzZSBHZXRCeXRlQXJy
YXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0SW50OEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNl
IEdldEludDE2QXJyYXlMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDExNjIyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NTEsNyArMjQ1MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIo
KSB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgp
KS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxk
U3BlY3VsYXRlSW50ZWdlcigpCisgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFy
cmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpCisgICAgICAgICAg
ICB8fCBhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgewogICAg
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsg
Ly8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUgY2VsbC4gV2UnbGwgcHJvYmFibHkgYmUgcmln
aHQuCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxk
MigpKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQz
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIK
IApAQCAtMjM0OSw2ICsyMzUwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKG5vZGUpOworICAgICAgICAgICAg
aWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpA
QCAtMjQ3Nyw2ICsyNDg1LDY1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50
MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDIodGhpcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5Lmdwcigp
OworICAgICAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAg
ICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAor
ICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1lbnRzOjpzX2luZm8pKSk7CisgICAgICAgICAgICB9
CisgICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKCkpLAor
ICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcpOworCisgICAgICAgICAgICAvLyBUd28gcmVhbGx5
IGxhbWUgY2hlY2tzLgorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAg
ICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUsCisgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0RhdGEs
IG51bUFyZ3VtZW50cykpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAg
ICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUmVnLCBPQkpFQ1RfT0ZGU0VU
T0YoQXJndW1lbnRzRGF0YSwgZGVsZXRlZEFyZ3VtZW50cykpKSk7CisgICAgCisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKHByb3BlcnR5UmVnLCBzY3JhdGNoMlJlZyk7CisgICAgICAgICAgICBtX2pp
dC5uZWczMihzY3JhdGNoMlJlZyk7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihzY3JhdGNoMlJlZywgc2NyYXRjaDJSZWcpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cigK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBPQkpF
Q1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgcmVnaXN0ZXJzKSksCisgICAgICAgICAgICAgICAg
c2NyYXRjaFJlZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKAor
ICAgICAgICAgICAgICAgIHZhbHVlUmVnLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVn
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEZy
YW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoUmVn
aXN0ZXIpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUlu
ZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKICAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMyODksNiArMzM1NiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGludGVnZXJS
ZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6IHsKKyAgICAgICAgY29tcGls
ZUdldEFyZ3VtZW50c0xlbmd0aChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAg
Y2FzZSBHZXRTdHJpbmdMZW5ndGg6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKQEAgLTM3MjksMTQgKzM4MDEsMzYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIAotICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246IHsKKyAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50czogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CisgICAgICAg
IAogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUo
dmFsdWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywgdmFs
dWVHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJh
bmNoVGVzdFB0cihKSVRDb21waWxlcjo6WmVybywgcmVzdWx0R1BSKTsKKyAgICAgICAgCisgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENy
ZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAg
ICAgIAorICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHNWYWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGFjdGl2YXRpb25WYWx1ZUdQUiA9IGFjdGl2YXRp
b25WYWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50c1ZhbHVlR1BSID0gYXJndW1l
bnRzVmFsdWUuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
Y3JlYXRlZDsKKyAgICAgICAgY3JlYXRlZC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihKSVRD
b21waWxlcjo6Tm9uWmVybywgYWN0aXZhdGlvblZhbHVlR1BSKSk7CisgICAgICAgIGNyZWF0ZWQu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGFyZ3VtZW50
c1ZhbHVlR1BSKSk7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbChjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmQWN0
aXZhdGlvbiwgSW52YWxpZEdQUlJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbChjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbiwgTm9SZXN1bHQs
IGFjdGl2YXRpb25WYWx1ZUdQUiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obm9kZS51bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTE2MjI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAi
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTMwMzIsNyArMzAz
Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHIKICAgICAKICAg
ICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0
b3JhZ2UuZ3ByKCk7Ci0gICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQ
cmVkaWN0U3RyaW5nKSB7CisgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUFyZ3VtZW50cygpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gZWxz
ZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsK
ICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKQEAgLTMwOTksNiArMzEwMiwxMjAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgIHN0b3JhZ2VS
ZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlJiBub2RlKQoreworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOworI2VuZGlmCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgCisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgIEdQ
UlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIEdQUlJlZyByZXN1bHRSZWcg
PSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBHUFJSZWcgcmVzdWx0
VGFnUmVnID0gcmVzdWx0VGFnLmdwcigpOworI2VuZGlmCisgICAgR1BSUmVnIHNjcmF0Y2hSZWcg
PSBzY3JhdGNoLmdwcigpOworICAgIAorICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
CisgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkFyZ3VtZW50czo6
c19pbmZvKSkpOworICAgIH0KKyAgICAKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBBcmd1bWVudHM6Om9mZnNldE9mRGF0YSgpKSwK
KyAgICAgICAgc2NyYXRjaFJlZyk7CisKKyAgICAvLyBUd28gcmVhbGx5IGxhbWUgY2hlY2tzLgor
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNl
KCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0
YSwgbnVtQXJndW1lbnRzKSkpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICBVbmNv
dW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUsCisgICAgICAgIG1faml0LmJyYW5jaFRl
c3RQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcsIE9C
SkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRhLCBkZWxldGVkQXJndW1lbnRzKSkpKTsKKyAgICAK
KyAgICBtX2ppdC5tb3ZlKHByb3BlcnR5UmVnLCByZXN1bHRSZWcpOworICAgIG1faml0Lm5lZzMy
KHJlc3VsdFJlZyk7CisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0UmVnLCByZXN1
bHRSZWcpOworICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRhLCByZWdpc3RlcnMp
KSwKKyAgICAgICAgc2NyYXRjaFJlZyk7CisgICAgCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICBtX2ppdC5sb2FkMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCisgICAg
ICAgICAgICBzY3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0
LAorICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihS
ZWdpc3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwKKyAgICAgICAgcmVzdWx0VGFnUmVnKTsKKyAgICBt
X2ppdC5sb2FkMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCisgICAgICAg
ICAgICBzY3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LAor
ICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksCisgICAgICAgIHJlc3VsdFJlZyk7CisgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRUYWdSZWcsIHJlc3VsdFJlZywgbV9jb21waWxlSW5kZXgpOworI2Vs
c2UKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KAorICAgICAgICAgICAgc2NyYXRjaFJlZywgcmVzdWx0UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGlt
ZXNFaWdodCwKKyAgICAgICAgICAgIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBz
aXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgIHJlc3VsdFJlZyk7
CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG1fY29tcGlsZUluZGV4KTsKKyNlbmRpZgor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKE5vZGUm
IG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOworICAgIAorICAgIEdQ
UlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0UmVnID0gcmVzdWx0
LmdwcigpOworICAgIAorICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAg
ICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkFyZ3VtZW50czo6c19pbmZvKSkp
OworICAgIH0KKyAgICAKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBBcmd1bWVudHM6Om9mZnNldE9mRGF0YSgpKSwKKyAgICAgICAg
cmVzdWx0UmVnKTsKKworICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIFVuY291bnRhYmxl
LCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0RhdGEs
IG92ZXJyb2RlTGVuZ3RoKSkpKTsKKyAgICAKKyAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50
c0RhdGEsIG51bUFyZ3VtZW50cykpLAorICAgICAgICByZXN1bHRSZWcpOworICAgIGludGVnZXJS
ZXN1bHQocmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbk5vQ2hlY2soTm9kZSYgbm9kZSkKIHsKICAgICBHUFJSZXN1
bHQgcmVzdWx0KHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTE2MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02ODAsNiArNjgw
LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xsZWN0aW9uVHlwZT4KKyAgICB2b2lkIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChib29s
IGRvU3BpbGwsIENvbGxlY3Rpb25UeXBlJiBwbGFucywgTm9SZXN1bHRUYWcpCisgICAgeworICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwoZG9TcGlsbCwgcGxhbnMsIEludmFsaWRH
UFJSZWcsIEludmFsaWRHUFJSZWcsIEludmFsaWRGUFJSZWcpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KICAgICB2b2lkIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzSW1wbChib29sIGRvU3BpbGwsIENvbGxlY3Rpb25UeXBlJiBwbGFucywgRlBSUmVnIGV4Y2x1
ZGUpCiAgICAgewogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwoZG9TcGlsbCwg
cGxhbnMsIEludmFsaWRHUFJSZWcsIEludmFsaWRHUFJSZWcsIGV4Y2x1ZGUpOwpAQCAtNzEyLDYg
KzcxNywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7
CiAgICAgfQorICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoTm9SZXN1bHRUYWcpCisg
ICAgeworICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7CisgICAgfQogCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBzdGF0aWMgR1BSUmVnIHBpY2tDYW5UcmFtcGxlKEpTVmFsdWVSZWdz
IGV4Y2x1ZGUpCkBAIC0xMzgxLDYgKzEzOTAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNaIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIGludCBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBl
MSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMj4KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUx
IGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMikKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgYXJnMSwgYXJnMik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJndW1l
bnRUeXBlMiwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMz4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEFyZ3Vt
ZW50VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMpCiAg
ICAgewpAQCAtMTU3NSw2ICsxNTk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5
bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9ERkdPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludCBhcmcyKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW0zMihhcmcyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9h
ZCwgYXJnM1RhZyk7CkBAIC0xOTUwLDYgKzE5NzQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlR2V0Q2hhckNvZGVBdChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
blN0cmluZyhOb2RlJik7CisgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2Rl
Jik7CisgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKE5vZGUmKTsKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVt
YmVyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKE5vZGUmKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxMTYy
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duQXJy
YXlQdHI8Ym9vbD4gZGVsZXRlZEFyZ3VtZW50czsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gY2FsbGVlOwotICAgICAgICBib29sIG92ZXJyb2RlTGVuZ3RoIDogMTsKKyAgICAg
ICAgYm9vbCBvdmVycm9kZUxlbmd0aDsgLy8gbWFrZSB0aGlzIGEgZnVsbCBieXRlIHRvIG1ha2Ug
aXQgZWFzeSB0byB0ZXN0IGZyb20gdGhlIEpJVC4KICAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxl
ZSA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZXIgOiAxOwogICAgICAgICBib29sIGlz
U3RyaWN0TW9kZSA6IDE7CkBAIC0xMDEsNiArMTAxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgJnNfaW5mbyk7IAogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHMs
IGQpOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140415</attachid>
            <date>2012-05-05 17:50:11 -0700</date>
            <delta_ts>2012-05-06 21:22:36 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>arguments_patch_3.diff</filename>
            <type>text/plain</type>
            <size>44600</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBA
CisyMDEyLTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBzdXBwb3J0IHJlZmxlY3RpdmUgYXJndW1lbnRzIGFjY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBz
dXBwb3J0IGZvciBvcF9jcmVhdGVfYXJndW1lbnRzIHRvIHRoZSBERkcuIE5vIG90aGVyIGFyZ3Vt
ZW50cy1yZWxhdGVkCisgICAgICAgIG9wY29kZXMgYXJlIGFkZGVkIGJ5IHRoaXMgY2hhbmdlLCB0
aG91Z2ggaXQgZG9lcyBhZGQgYSBsb3Qgb2YgdGhlIHNjYWZmb2xkaW5nCisgICAgICAgIG5lY2Vz
c2FyeSBmb3IgdGhlIG90aGVyIG9wcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBhZGRz
IEdldEJ5VmFsL1B1dEJ5VmFsIG9wdGltaXphdGlvbnMgZm9yIEFyZ3VtZW50cy4KKyAgICAgICAg
CisgICAgICAgIEZpbmFsbHksIHRoaXMgcmF0aW9uYWxpemVzIHNsb3dQYXRoQ2FsbCB3aXRoIG5v
IHJldHVybi4gUHJldmlvdXNseSwgdGhhdCB3b3VsZAorICAgICAgICB3b3JrIHZpYSBjYWxsT3Bl
cmF0aW9uKCkgb3ZlcmxvYWRzIHRoYXQgdG9vayBJbnZhbGlkR1BSUmVnIGFzIHRoZSByZXR1cm4g
R1BSLgorICAgICAgICBCdXQgdGhhdCBjcmVhdGVzIGF3ZnVsIGFtYmlndWl0eSwgc2luY2Ugd2Ug
aGFkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0aGF0IHdlcmUKKyAgICAgICAgcG9seW1vcnBoaWMgb3Zl
ciBhbGwgcGFyYW1ldGVycyBleGNlcHQgdGhlIHNlY29uZCwgd2hpY2ggd2FzIGEgR1BSUmVnLCBh
bmQgYQorICAgICAgICBidW5jaCBvZiBub24tdGVtcGxhdGUgb3ZlcmxvYWRzIHRoYXQgYWxzbyBw
b3RlbnRpYWxseSBoYWQgR1BSUmVnIGFzIHRoZSBzZWNvbmQKKyAgICAgICAgYXJndW1lbnQuIEkg
ZmluYWxseSBzdGFydGVkIHRvIGhpdCB0aGlzIGFtYmlndWl0eSBhbmQgd2FzIGdldHRpbmcgYWJz
b2x1dGVseQorICAgICAgICBiaXphcnJlIGNvbXBpbGVyIGVycm9ycywgdGhhdCBtYWRlIG1lIGZl
ZWwgbGlrZSBJIHdhcyBwcm9ncmFtbWluZyBpbiBTTUwuIFNvLAorICAgICAgICBJIGNoYW5nZWQg
dGhlIG5vLWFyZ3VtZW50IG92ZXJsb2FkcyB0byB0YWtlIE5vUmVzdWx0VGFnIGluc3RlYWQsIHdo
aWNoIG1hZGUKKyAgICAgICAgZXZlcnl0aGluZyBzZW5zaWJsZSBhZ2FpbiBieSBlbGltaW5hdGlu
ZyB0aGUgb3ZlcmxvYWQgYW1iaWd1aXR5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIH43
JSBzcGVlZC11cCBvbiBWOC9lYXJsZXkgYW5kIG5ldXRyYWwgZWxzZXdoZXJlLgorCisgICAgICAg
ICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0FyZ3VtZW50c1By
ZWRpY3Rpb24pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZSk6CisgICAgICAgIChDQ2FsbEhlbHBlcnMpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAg
ICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGls
ZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uQXJndW1lbnRzKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwpOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHNEYXRhKToKKyAgICAgICAgKEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKToKKwogMjAxMi0w
NS0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91
bGQgYmUgYWJsZSB0byBjb21wdXRlIGRvbWluYXRvcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAkocmV2aXNpb24gMTE2MjI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTYyLDYgKzE2MiwxMSBAQCBpbmxpbmUgYm9vbCBpc0Zsb2F0NjRBcnJheVByZWRp
Y3Rpb24oUHJlCiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RGbG9hdDY0QXJyYXk7CiB9CiAK
K2lubGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFByZWRpY3RBcmd1bWVudHMpID09IHZh
bHVlOworfQorCiBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGlzQnl0ZUFycmF5UHJlZGlj
dGlvbih2YWx1ZSkKQEAgLTE5NCw2ICsxOTksNyBAQCBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVU
eXBlZE11dGFibGVBcnJhCiBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVk
aWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FyZ3VtZW50c1ByZWRpY3Rpb24odmFsdWUpCiAgICAg
ICAgIHx8IGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSk7CiB9
CiAKQEAgLTIxMywxMSArMjE5LDYgQEAgaW5saW5lIGJvb2wgaXNNeUFyZ3VtZW50c1ByZWRpY3Rp
b24oUHJlZAogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0TXlBcmd1bWVudHM7CiB9CiAKLWlu
bGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewot
ICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFByZWRpY3RBcmd1bWVudHMpID09IHZhbHVl
OwotfQotCiBpbmxpbmUgYm9vbCBpc0ludDMyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQogewogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0SW50MzI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDExNjIy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxMCw2ICs3MTAsMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3Ao
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0QXJndW1lbnRzKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
ID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSku
ZmlsdGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigp
KS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTc5MywxMiArNzk5LDIxIEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxl
TXV0YWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24o
KSkpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0
ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICAgICAgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVu
dHMoKQorI2VuZGlmCisgICAgICAgICAgICApIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLm9w
KCkgPT0gUHV0QnlWYWwpOwogICAgICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoaW5kZXhJbkJs
b2NrKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFyZ3VtZW50cyk7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3Bl
Y3VsYXRlQnl0ZUFycmF5KCkpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSku
ZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTEwMjgsNiArMTA0MywxMSBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG1faGF2ZVN0cnVjdHVy
ZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgCisgICAgY2FzZSBDcmVhdGVBcmd1
bWVudHM6CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgICAgCiAg
ICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgLy8gRG9lcyBub3RoaW5nIHRoYXQg
aXMgdXNlci12aXNpYmxlLgogICAgICAgICBicmVhazsKQEAgLTEwNzEsNiArMTA5MSwxMSBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IEdldEFyZ3VtZW50c0xlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdEFyZ3VtZW50cyk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJl
ZGljdEludDMyKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoK
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7CiAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTExMzgsNiAr
MTE2MywxMCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1
bGF0ZUFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3RyaW5nKTsKICAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzQ5LDkgKzIzNDksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FjdGl2YXRpb24pOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRz
OiB7CisgICAgICAgICAgICBOb2RlSW5kZXggY3JlYXRlQXJndW1lbnRzID0gYWRkVG9HcmFwaChD
cmVhdGVBcmd1bWVudHMsIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgY3JlYXRlQXJn
dW1lbnRzKTsKKyAgICAgICAgICAgIHNldCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRzKTsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogewogICAgICAgICAg
ICAgLy8gVGhpcyBjdXJyZW50bHkgaWdub3JlcyBhcmd1bWVudHMgYmVjYXVzZSB3ZSBkb24ndCBz
dXBwb3J0IHRoZW0geWV0LgotICAgICAgICAgICAgYWRkVG9HcmFwaChUZWFyT2ZmQWN0aXZhdGlv
biwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoVGVhck9mZkFjdGl2YXRpb24sIE9wSW5mbyh1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpLCBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90ZWFyX29mZl9hY3RpdmF0aW9uKTsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEs
MTQgQEAgcHVibGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCiAgICAg
ewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTQzMiw2ICs0NDAsMTMgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwogICAgIH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAg
ICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
bW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBJbW1QdHIgYXJnMikKICAgICB7CiAgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjExLDcgKzYxMSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgotICAgICAgICAgICAgaWYgKG1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkgJiYgZ2V0QnlWYWxM
b2FkRWxpbWluYXRpb24obm9kZS5jaGlsZDEoKS5pbmRleCgpLCBub2RlLmNoaWxkMigpLmluZGV4
KCkpICE9IE5vTm9kZSkKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmJ5VmFsSXNQdXJlKG5vZGUp
CisgICAgICAgICAgICAgICAgJiYgIW5vZGUuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkKKyAg
ICAgICAgICAgICAgICAmJiBnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNoaWxkMSgpLmlu
ZGV4KCksIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkgIT0gTm9Ob2RlKQogICAgICAgICAgICAgICAg
IG5vZGUuc2V0T3AoUHV0QnlWYWxBbGlhcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAgaW5saW5lIGJvb2wg
Y2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9hY3RpdmF0aW9uOgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbjoKKyAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9uZXdf
ZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTksNiArMjAwLDcgQEAgaW5saW5lIGJvb2wgY2FuSW5saW5lT3Bjb2RlKE9wY29kZUlEIG9w
YwogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKICAgICBjYXNlIG9wX25ld19mdW5j
OgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50
czoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBkZWZhdWx0OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMTYyMjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsNiArMTIyLDggQEAgaW5saW5lIGNvbnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaQog
CiBlbnVtIFNwaWxsUmVnaXN0ZXJzTW9kZSB7IE5lZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKIAor
ZW51bSBOb1Jlc3VsdFRhZyB7IE5vUmVzdWx0IH07CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoY29kZUJsb2NrKCktPmlkZW50
aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpICE9IGdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBib29sIGlz
QXJyYXkgPSBpc0FycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKSk7CisgICAgICAgICAgICBib29sIGlzQXJndW1lbnRzID0gaXNBcmd1bWVudHNQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJv
b2wgaXNTdHJpbmcgPSBpc1N0cmluZ1ByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBpc0J5dGVBcnJheSA9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCk7CiAgICAgICAgICAgICBib29s
IGlzSW50OEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4
QXJyYXkoKTsKQEAgLTk4LDYgKzk5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAgICAg
aWYgKGlzQXJyYXkpCiAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcnJheUxlbmd0aCk7
CisgICAgICAgICAgICBlbHNlIGlmIChpc0FyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBub2Rl
LnNldE9wKEdldEFyZ3VtZW50c0xlbmd0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChpc1N0cmlu
ZykKICAgICAgICAgICAgICAgICBub2RlLnNldE9wKEdldFN0cmluZ0xlbmd0aCk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChpc0J5dGVBcnJheSkKQEAgLTEzMCw3ICsxMzMsOSBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAg
ICAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKCEoYmFzZVByZWRpY3Rpb24gJiBQ
cmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7CisgICAgICAgICAgICBpZiAoKCEoYmFz
ZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKQorICAgICAgICAg
ICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRz
KCkKKyAgICAgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG5vZGUu
c2V0T3BBbmREZWZhdWx0RmxhZ3MoTm9wKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFy
QW5kRGVyZWZDaGlsZDEobm9kZSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERl
cmVmQ2hpbGQyKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIHZhcmlhYmxlQWNjZXNzRGF0YSgpLT5sb2NhbCgpOwogICAgIH0KICAgICAKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChvcCgpID09IFRlYXJPZmZBY3RpdmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obV9vcEluZm8pOworICAgIH0KKyAgICAKICAgICBi
b29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC03
NDIsNiArNzQ4LDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGlzQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlQXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0FyZ3VtZW50c1ByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVC
eXRlQXJyYXkoKQogICAgIHsKICAgICAgICAgcmV0dXJuICEhKHByZWRpY3Rpb24oKSAmIFByZWRp
Y3RCeXRlQXJyYXkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTE2MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dv
cmxkKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAg
IG1hY3JvKEdldEFyZ3VtZW50c0xlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8o
R2V0U3RyaW5nTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRCeXRlQXJy
YXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldEludDhBcnJheUxlbmd0
aCwgTm9kZVJlc3VsdEludDMyKSBcCkBAIC0xODYsNiArMTg3LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhUZWFyT2ZmQWN0aXZhdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKKyAgICAvKiBOb2RlcyB1c2VkIGZvciBhcmd1bWVudHMuIFNpbWlsYXIgdG8gYWN0aXZh
dGlvbiBzdXBwb3J0LCBvbmx5IGl0IG1ha2VzIGV2ZW4gbGVzcyAqL1wKKyAgICAvKiBzZW5zZS4g
Ki9cCisgICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBcCiAg
ICAgLyogTm9kZXMgZm9yIGNyZWF0aW5nIGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3RnVu
Y3Rpb25Ob0NoZWNrLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdGdW5jdGlvbiwgTm9k
ZVJlc3VsdEpTKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAKKyNpbmNsdWRlICJB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0
LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgpAQCAtMTAyMSwxMSArMTAyMiwyMyBAQCBKU0Nl
bGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0CiAgICAgcmV0dXJuIGFjdGl2YXRp
b247CiB9CiAKLXZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYWN0aXZhdGlvbikKK0pTQ2VsbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEFTU0VS
VChhY3RpdmF0aW9uKTsKLSAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aW5oZXJpdHMoJkpTQWN0aXZh
dGlvbjo6c19pbmZvKSk7Ci0gICAganNDYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb24pLT50
ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgcmV0dXJuIEFyZ3VtZW50czo6Y3JlYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7Cit9CisKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVy
YXRpb25UZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYWN0aXZhdGlv
bkNlbGwsIGludDMyX3QgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKQoreworICAgIGlmICgh
YWN0aXZhdGlvbkNlbGwpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAg
IGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAg
IGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgfQorICAgIEpT
QWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9u
Q2VsbCk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcikuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKIH0KIAogSlNDZWxsKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBm
dW5jdGlvbkV4ZWN1dGFibGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTE2MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAgdHlwZWRl
ZiBzaXplX3QgREZHX09QRVJBVElPTiAoKlNfREZHT3BlcgogdHlwZWRlZiBzaXplX3QgREZHX09Q
RVJBVElPTiAoKlNfREZHT3BlcmF0aW9uX0opKEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9p
ZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUFaSikoRXhlY1N0YXRlKiwgSlNBcnJh
eSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9O
ICgqVl9ERkdPcGVyYXRpb25fRUNKSikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdP
cGVyYXRpb25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9p
ZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpDSSkoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFU
SU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElP
TiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgdm9pZCopOwpAQCAtMTU0LDcgKzE1NSw4IEBAIHZvaWQqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoRXgKIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmly
dHVhbENvbnN0cnVjdChFeGVjU3RhdGUqKTsKIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
TGlua0NvbnN0cnVjdChFeGVjU3RhdGUqKTsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSopOwotdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblRlYXJPZmZBY3RpdmF0aW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOworSlNDZWxsKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqKTsKK3ZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU0NlbGwq
LCBpbnQzMl90IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcik7CiBKU0NlbGwqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBKU0NlbGwq
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25FeHByZXNzaW9uKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogZG91YmxlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQz
Ml90LCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTYy
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDYgKzU1NSwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNl
IENyZWF0ZUFyZ3VtZW50czogeworICAgICAgICAgICAgLy8gQXQgdGhpcyBzdGFnZSB3ZSBkb24n
dCB0cnkgdG8gcHJlZGljdCB3aGV0aGVyIHRoZSBhcmd1bWVudHMgYXJlIG91cnMgb3IKKyAgICAg
ICAgICAgIC8vIHNvbWVvbmUgZWxzZSdzLiBXZSBjb3VsZCwgYnV0IHdlIGRvbid0LCB5ZXQuCisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb25Ob0NoZWNrOgogICAgICAgICBj
YXNlIE5ld0Z1bmN0aW9uRXhwcmVzc2lvbjogewpAQCAtNTY0LDYgKzU3MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEFyZ3VtZW50c0xlbmd0aDoKICAgICAg
ICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0SW50OEFycmF5TGVu
Z3RoOgogICAgICAgICBjYXNlIEdldEludDE2QXJyYXlMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDExNjIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4NiwxNCArNTg2LDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICBPd25QdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmICghc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewog
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHN0cnVjdHVyZUNo
ZWNrLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBJbnZhbGlkR1BSUmVnLCB2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2ssIHRoaXMsIG9wdGltaXpl
ZENhbGwsIE5vUmVzdWx0LCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLAogICAgICAgICAg
ICAgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2spOwogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXplZENhbGwsIEludmFsaWRHUFJSZWcs
IHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BS
LAogICAgICAgICAgICAgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJl
cikpOwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKQEAgLTIzMzMsNiArMjMz
MywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMo
KSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25Bcmd1bWVudHMobm9kZSk7CisgICAg
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwpAQCAtMjQ1MSw3ICsyNDU4LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKGF0KG5v
ZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFhdChub2RlLmNoaWxk
MigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkKKyAgICAgICAgICAgIHx8ICFpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkK
KyAgICAgICAgICAgIHx8IGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50
cygpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9i
YWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMs
IG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS5jaGlsZDMoKSk7CkBAIC0yNTk1LDcgKzI2MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgYmV5b25kQXJyYXlCb3VuZHMsIHRoaXMsCiAgICAgICAgICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QsCi0gICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgYmFzZVJlZywgcHJvcGVydHlSZWcs
IHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpKTsK
IAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0zMzQxLDYgKzMzNTAsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBpbnRlZ2VyUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAg
IAorICAgIGNhc2UgR2V0QXJndW1lbnRzTGVuZ3RoOiB7CisgICAgICAgIGNvbXBpbGVHZXRBcmd1
bWVudHNMZW5ndGgobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgR2V0
U3RyaW5nTGVuZ3RoOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CkBAIC0zNzk2LDE3ICszODEwLDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
LSAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOiB7CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6
IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgdmFsdWUsIGZhbHNlKTsKICAgICAgICAg
CiAgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwogICAgICAgICBH
UFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubW92
ZSh2YWx1ZVBheWxvYWRHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIAorICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFs
LCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAg
ICAgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0
R1BSKSk7CisgICAgICAgIAorICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxl
SW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVGVhck9m
ZkFjdGl2YXRpb246IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHNWYWx1
ZSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGNyZWF0ZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVl
VGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICBH
UFJSZWcgYWN0aXZhdGlvblZhbHVlVGFnR1BSID0gYWN0aXZhdGlvblZhbHVlLnRhZ0dQUigpOwor
ICAgICAgICBHUFJSZWcgYWN0aXZhdGlvblZhbHVlUGF5bG9hZEdQUiA9IGFjdGl2YXRpb25WYWx1
ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEdQUlJlZyBhcmd1bWVudHNWYWx1ZVRhZ0dQUiA9IGFy
Z3VtZW50c1ZhbHVlLnRhZ0dQUigpOworICAgICAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IGNyZWF0ZWQ7CisgICAgICAgIGNyZWF0ZWQuYXBwZW5kKG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgYWN0aXZhdGlvblZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgY3JlYXRlZC5hcHBlbmQobV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmd1bWVudHNWYWx1ZVRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAgICAgIAogICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbiwgSW52YWxp
ZEdQUlJlZywgdmFsdWVQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgY3JlYXRlZCwgdGhp
cywgb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24sIE5vUmVzdWx0LCBhY3RpdmF0aW9uVmFsdWVQ
YXlsb2FkR1BSLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KG5vZGUudW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKCkpKSk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3Vs
dChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTYy
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKIApAQCAtNTUyLDE0ICs1NTMsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIE93blB0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc3RydWN0dXJl
Q2hlY2ssIHRoaXMsIG9wdGltaXplZENhbGwsIEludmFsaWRHUFJSZWcsIHZhbHVlR1BSLCBiYXNl
R1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2ssIHRoaXMsIG9wdGltaXplZENhbGwsIE5v
UmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXIoaWRlbnRp
Zmllck51bWJlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2spOwog
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXpl
ZENhbGwsIEludmFsaWRHUFJSZWcsIHZhbHVlR1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIs
CiAgICAgICAgICAgICBpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9CiAgICAg
bV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoUHJvcGVydHlBY2Nlc3NSZWNvcmQoY29kZU9yaWdpbiwg
c3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgSklUQ29tcGlsZXI6OkRhdGFMYWJl
bENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFi
ZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CkBAIC0yMzQ5LDYgKzIzNTAsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25Bcmd1bWVudHMobm9kZSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJlZGlj
dFN0cmluZykgewogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAg
ICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCkBAIC0yNDc3LDYgKzI0ODUsNjUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0
ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAg
ICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7Cisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywg
bm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFs
dWVSZWcgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdw
cigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIWlzQXJndW1lbnRzUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZBcmd1
bWVudHM6OnNfaW5mbykpKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgQXJndW1lbnRzOjpvZmZzZXRPZkRhdGEoKSksCisgICAgICAgICAgICAgICAgc2NyYXRjaFJl
Zyk7CisKKyAgICAgICAgICAgIC8vIFR3byByZWFsbHkgbGFtZSBjaGVja3MuCisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVl
U291cmNlKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVn
LAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVn
LCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgbnVtQXJndW1lbnRzKSkpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpT
VmFsdWVTb3VyY2UoKSwgTm9Ob2RlLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3RQ
dHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAorICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRhLCBkZWxldGVk
QXJndW1lbnRzKSkpKTsKKyAgICAKKyAgICAgICAgICAgIG1faml0Lm1vdmUocHJvcGVydHlSZWcs
IHNjcmF0Y2gyUmVnKTsKKyAgICAgICAgICAgIG1faml0Lm5lZzMyKHNjcmF0Y2gyUmVnKTsKKyAg
ICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2gyUmVnLCBzY3JhdGNoMlJl
Zyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRh
LCByZWdpc3RlcnMpKSwKKyAgICAgICAgICAgICAgICBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAgICAgICAgICAgdmFsdWVSZWcs
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKKyAgICAgICAgICAg
ICAgICAgICAgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Vp
Z2h0LAorICAgICAgICAgICAgICAgICAgICBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9y
Qnl0ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjU5NCw3ICsyNjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IGJleW9uZEFycmF5Qm91bmRzLCB0aGlzLAogICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAg
ICAgICAgICAgICAgIEludmFsaWRHUFJSZWcsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJl
ZykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFs
dWVSZWcpKTsKIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0yNzgzLDcgKzI4NTAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAg
ICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCBJbnZhbGlkR1BS
UmVnLCBzdG9yYWdlTGVuZ3RoR1BSLAorICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25BcnJheVB1c2gsIE5vUmVzdWx0LCBzdG9yYWdlTGVuZ3RoR1BSLAogICAgICAgICAg
ICAgICAgIHZhbHVlR1BSLCBiYXNlR1BSKSk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHN0b3JhZ2VMZW5ndGhHUFIsIG1fY29tcGlsZUluZGV4KTsKQEAgLTMyODksNiArMzM1Niwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlu
dGVnZXJSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6IHsKKyAgICAgICAg
Y29tcGlsZUdldEFyZ3VtZW50c0xlbmd0aChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
CiAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKQEAgLTM3MjksMTQgKzM4MDEsMzggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246IHsKKyAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50czogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgIAogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIG1faml0
Lm1vdmUodmFsdWVHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6WmVy
bywgcmVzdWx0R1BSKTsKICAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0
ZWQgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUik7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7
CisgICAgICAgIAorICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVGVhck9mZkFjdGl2
YXRpb246IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHNWYWx1ZSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGFjdGl2YXRpb25WYWx1ZUdQUiA9IGFj
dGl2YXRpb25WYWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGFyZ3VtZW50c1ZhbHVlR1BSID0g
YXJndW1lbnRzVmFsdWUuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgY3JlYXRlZDsKKyAgICAgICAgY3JlYXRlZC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0
cihKSVRDb21waWxlcjo6Tm9uWmVybywgYWN0aXZhdGlvblZhbHVlR1BSKSk7CisgICAgICAgIGNy
ZWF0ZWQuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGFy
Z3VtZW50c1ZhbHVlR1BSKSk7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFy
T2ZmQWN0aXZhdGlvbiwgSW52YWxpZEdQUlJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFy
T2ZmQWN0aXZhdGlvbiwgTm9SZXN1bHQsIGFjdGl2YXRpb25WYWx1ZUdQUiwKKyAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pihub2RlLnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cigpKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5Lmgi
CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMzAzMiw3ICszMDMzLDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgIAogICAgIEdQUlRlbXBvcmFyeSBz
dG9yYWdlKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKLSAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsK
KyAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSBlbHNlIGlmIChhdChub2RlLmNo
aWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewogICAgICAgICBpZiAoIWlz
U3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNT
dHJpbmc6OnNfaW5mbykpKTsKIApAQCAtMzA5OSw2ICszMTAyLDEyMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByCiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlUmVn
LCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uQXJndW1lbnRzKE5vZGUmIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CisjZW5kaWYKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAK
KyAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVn
ID0gcHJvcGVydHkuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5ncHIoKTsK
KyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIEdQUlJlZyByZXN1bHRUYWdSZWcgPSByZXN1bHRU
YWcuZ3ByKCk7CisjZW5kaWYKKyAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7
CisgICAgCisgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpIHsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgp
LAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1lbnRzOjpzX2luZm8pKSk7CisgICAg
fQorICAgIAorICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKCkpLAorICAgICAgICBzY3JhdGNo
UmVnKTsKKworICAgIC8vIFR3byByZWFsbHkgbGFtZSBjaGVja3MuCisgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlLAorICAg
ICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRhLCBudW1Bcmd1bWVudHMp
KSkpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVl
U291cmNlKCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgc2NyYXRjaFJlZywgT0JKRUNUX09GRlNFVE9GKEFy
Z3VtZW50c0RhdGEsIGRlbGV0ZWRBcmd1bWVudHMpKSkpOworICAgIAorICAgIG1faml0Lm1vdmUo
cHJvcGVydHlSZWcsIHJlc3VsdFJlZyk7CisgICAgbV9qaXQubmVnMzIocmVzdWx0UmVnKTsKKyAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRSZWcsIHJlc3VsdFJlZyk7CisgICAgbV9q
aXQubG9hZFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywg
T0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0RhdGEsIHJlZ2lzdGVycykpLAorICAgICAgICBzY3Jh
dGNoUmVnKTsKKyAgICAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1faml0LmxvYWQzMigK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKKyAgICAgICAgICAgIHNjcmF0Y2hS
ZWcsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAgICBD
YWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVv
ZihSZWdpc3RlcikgKworICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLAorICAgICAgICByZXN1bHRUYWdSZWcpOworICAgIG1faml0LmxvYWQzMigKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKKyAgICAgICAgICAgIHNjcmF0Y2hSZWcs
IHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAgICBDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihS
ZWdpc3RlcikgKworICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpKSwKKyAgICAgICAgcmVzdWx0UmVnKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZ1JlZywgcmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7CisjZWxzZQorICAgIG1faml0Lmxv
YWRQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICBz
Y3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LAorICAgICAg
ICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikg
LSBzaXplb2YoUmVnaXN0ZXIpKSwKKyAgICAgICAgcmVzdWx0UmVnKTsKKyAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZywgbV9jb21waWxlSW5kZXgpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSYgbm9kZSkKK3sKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CisgICAgCisgICAgR1BSUmVnIGJhc2VSZWcgPSBi
YXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7CisgICAgCisg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFp
c0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpIHsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLAorICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1lbnRzOjpzX2luZm8pKSk7CisgICAgfQorICAgIAor
ICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKCkpLAorICAgICAgICByZXN1bHRSZWcpOworCisg
ICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2Uo
KSwgTm9Ob2RlLAorICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0UmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgb3ZlcnJvZGVMZW5ndGgp
KSkpOworICAgIAorICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0UmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgbnVtQXJndW1l
bnRzKSksCisgICAgICAgIHJlc3VsdFJlZyk7CisgICAgaW50ZWdlclJlc3VsdChyZXN1bHRSZWcs
IG1fY29tcGlsZUluZGV4KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1
bmN0aW9uTm9DaGVjayhOb2RlJiBub2RlKQogewogICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MCw2ICs2ODAsMTEgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgor
ICAgIHZvaWQgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGJvb2wgZG9TcGlsbCwgQ29sbGVj
dGlvblR5cGUmIHBsYW5zLCBOb1Jlc3VsdFRhZykKKyAgICB7CisgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzSW1wbChkb1NwaWxsLCBwbGFucywgSW52YWxpZEdQUlJlZywgSW52YWxpZEdQ
UlJlZywgSW52YWxpZEZQUlJlZyk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxl
Y3Rpb25UeXBlPgogICAgIHZvaWQgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGJvb2wgZG9T
cGlsbCwgQ29sbGVjdGlvblR5cGUmIHBsYW5zLCBGUFJSZWcgZXhjbHVkZSkKICAgICB7CiAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChkb1NwaWxsLCBwbGFucywgSW52YWxpZEdQ
UlJlZywgSW52YWxpZEdQUlJlZywgZXhjbHVkZSk7CkBAIC03MTIsNiArNzE3LDEwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKICAgICB9CisgICAgc3Rh
dGljIEdQUlJlZyBwaWNrQ2FuVHJhbXBsZShOb1Jlc3VsdFRhZykKKyAgICB7CisgICAgICAgIHJl
dHVybiBHUFJJbmZvOjpyZWdUMDsKKyAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoSlNWYWx1ZVJlZ3MgZXhjbHVkZSkKQEAgLTEz
ODEsMTAgKzEzOTAsMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIGludCBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJn
dW1lbnRUeXBlMj4KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9u
VHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50
VHlwZTIgYXJnMikKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
biwgYXJnMSwgYXJnMik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMiwgdHlwZW5h
bWUgQXJndW1lbnRUeXBlMz4KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1
bmN0aW9uVHlwZSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJnMSwg
QXJndW1lbnRUeXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywg
QXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlwZTMgYXJn
MykKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgYXJnMSwg
YXJnMiwgYXJnMyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
RF9ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkK
QEAgLTE1NzUsNiArMTU5MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
REZHT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBpbnQgYXJnMikKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tMzIoYXJnMikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfREZHT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFy
ZzNUYWcpOwpAQCAtMTU4NSwxNiArMTYwOCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUg
QXJndW1lbnRUeXBlMSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMj4KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBB
cmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMikKKyAgICB7CisgICAgICAgIHJl
dHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgYXJnMSwgYXJnMik7CisgICAgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMSwgdHlw
ZW5hbWUgQXJndW1lbnRUeXBlMiwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMywgdHlwZW5hbWUgQXJn
dW1lbnRUeXBlND4KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9u
VHlwZSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJnMSwgQXJndW1l
bnRUeXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMsIEFyZ3VtZW50VHlwZTQgYXJnNCkKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24s
IE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJn
dW1lbnRUeXBlMyBhcmczLCBBcmd1bWVudFR5cGU0IGFyZzQpCiAgICAgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IEludmFsaWRHUFJSZWcpOwogICAgICAgICByZXR1
cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOwogICAg
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50
VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTMsIHR5
cGVuYW1lIEFyZ3VtZW50VHlwZTQsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTU+Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1lbnRU
eXBlMyBhcmczLCBBcmd1bWVudFR5cGU0IGFyZzQsIEFyZ3VtZW50VHlwZTUgYXJnNSkKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5v
UmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1l
bnRUeXBlMyBhcmczLCBBcmd1bWVudFR5cGU0IGFyZzQsIEFyZ3VtZW50VHlwZTUgYXJnNSkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gSW52YWxpZEdQUlJl
Zyk7CiAgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgYXJnMSwgYXJnMiwg
YXJnMywgYXJnNCwgYXJnNSk7CiAgICAgfQogCkBAIC0xOTUwLDYgKzE5NzYsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0Q2hhckNvZGVBdChOb2RlJik7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlJik7CisgICAgdm9pZCBjb21waWxlR2V0QnlWYWxP
bkFyZ3VtZW50cyhOb2RlJik7CisgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKE5v
ZGUmKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSYpOwogICAgIHZvaWQgY29t
cGlsZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91Ymxl
KE5vZGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CShyZXZpc2lvbiAxMTYyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgT3duQXJyYXlQdHI8Ym9vbD4gZGVsZXRlZEFyZ3VtZW50czsKIAogICAgICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwotICAgICAgICBib29sIG92ZXJyb2RlTGVu
Z3RoIDogMTsKKyAgICAgICAgYm9vbCBvdmVycm9kZUxlbmd0aDsgLy8gbWFrZSB0aGlzIGEgZnVs
bCBieXRlIHRvIG1ha2UgaXQgZWFzeSB0byB0ZXN0IGZyb20gdGhlIEpJVC4KICAgICAgICAgYm9v
bCBvdmVycm9kZUNhbGxlZSA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZXIgOiAxOwog
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA6IDE7CkBAIC0xMDEsNiArMTAxLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IAogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihBcmd1bWVudHMsIGQpOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140469</attachid>
            <date>2012-05-06 21:22:36 -0700</date>
            <delta_ts>2012-05-06 22:44:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>arguments_patch_4.diff</filename>
            <type>text/plain</type>
            <size>45051</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBA
CisyMDEyLTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBzdXBwb3J0IHJlZmxlY3RpdmUgYXJndW1lbnRzIGFjY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBz
dXBwb3J0IGZvciBvcF9jcmVhdGVfYXJndW1lbnRzIHRvIHRoZSBERkcuIE5vIG90aGVyIGFyZ3Vt
ZW50cy1yZWxhdGVkCisgICAgICAgIG9wY29kZXMgYXJlIGFkZGVkIGJ5IHRoaXMgY2hhbmdlLCB0
aG91Z2ggaXQgZG9lcyBhZGQgYSBsb3Qgb2YgdGhlIHNjYWZmb2xkaW5nCisgICAgICAgIG5lY2Vz
c2FyeSBmb3IgdGhlIG90aGVyIG9wcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBhZGRz
IEdldEJ5VmFsL1B1dEJ5VmFsIG9wdGltaXphdGlvbnMgZm9yIEFyZ3VtZW50cy4KKyAgICAgICAg
CisgICAgICAgIEZpbmFsbHksIHRoaXMgcmF0aW9uYWxpemVzIHNsb3dQYXRoQ2FsbCB3aXRoIG5v
IHJldHVybi4gUHJldmlvdXNseSwgdGhhdCB3b3VsZAorICAgICAgICB3b3JrIHZpYSBjYWxsT3Bl
cmF0aW9uKCkgb3ZlcmxvYWRzIHRoYXQgdG9vayBJbnZhbGlkR1BSUmVnIGFzIHRoZSByZXR1cm4g
R1BSLgorICAgICAgICBCdXQgdGhhdCBjcmVhdGVzIGF3ZnVsIGFtYmlndWl0eSwgc2luY2Ugd2Ug
aGFkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0aGF0IHdlcmUKKyAgICAgICAgcG9seW1vcnBoaWMgb3Zl
ciBhbGwgcGFyYW1ldGVycyBleGNlcHQgdGhlIHNlY29uZCwgd2hpY2ggd2FzIGEgR1BSUmVnLCBh
bmQgYQorICAgICAgICBidW5jaCBvZiBub24tdGVtcGxhdGUgb3ZlcmxvYWRzIHRoYXQgYWxzbyBw
b3RlbnRpYWxseSBoYWQgR1BSUmVnIGFzIHRoZSBzZWNvbmQKKyAgICAgICAgYXJndW1lbnQuIEkg
ZmluYWxseSBzdGFydGVkIHRvIGhpdCB0aGlzIGFtYmlndWl0eSBhbmQgd2FzIGdldHRpbmcgYWJz
b2x1dGVseQorICAgICAgICBiaXphcnJlIGNvbXBpbGVyIGVycm9ycywgdGhhdCBtYWRlIG1lIGZl
ZWwgbGlrZSBJIHdhcyBwcm9ncmFtbWluZyBpbiBTTUwuIFNvLAorICAgICAgICBJIGNoYW5nZWQg
dGhlIG5vLWFyZ3VtZW50IG92ZXJsb2FkcyB0byB0YWtlIE5vUmVzdWx0VGFnIGluc3RlYWQsIHdo
aWNoIG1hZGUKKyAgICAgICAgZXZlcnl0aGluZyBzZW5zaWJsZSBhZ2FpbiBieSBlbGltaW5hdGlu
ZyB0aGUgb3ZlcmxvYWQgYW1iaWd1aXR5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIH43
JSBzcGVlZC11cCBvbiBWOC9lYXJsZXkgYW5kIG5ldXRyYWwgZWxzZXdoZXJlLgorCisgICAgICAg
ICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0FyZ3VtZW50c1By
ZWRpY3Rpb24pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZSk6CisgICAgICAgIChDQ2FsbEhlbHBlcnMpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAg
ICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGls
ZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uQXJndW1lbnRzKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwpOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHNEYXRhKToKKyAgICAgICAgKEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKToKKwogMjAxMi0w
NS0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFRydW5jYXRp
bmcgbXVsdGlwbGljYXRpb24gb24gaW50ZWdlcnMgc2hvdWxkIG5vdCBPU1IgZXhpdCBldmVyeSB0
aW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRU
eXBlLmgJKHJldmlzaW9uIDExNjI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsMTEgQEAgaW5s
aW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJldHVybiB2YWx1ZSA9
PSBQcmVkaWN0RmxvYXQ2NEFycmF5OwogfQogCitpbmxpbmUgYm9vbCBpc0FyZ3VtZW50c1ByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFs
dWUgJiBQcmVkaWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKK30KKwogaW5saW5lIGJvb2wgaXNBY3Rp
b25hYmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewog
ICAgIHJldHVybiBpc0J5dGVBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0xOTQsNiArMTk5LDcg
QEAgaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYQogaW5saW5lIGJvb2wg
aXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNBcmd1
bWVudHNQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFi
bGVBcnJheVByZWRpY3Rpb24odmFsdWUpOwogfQogCkBAIC0yMTMsMTEgKzIxOSw2IEBAIGlubGlu
ZSBib29sIGlzTXlBcmd1bWVudHNQcmVkaWN0aW9uKFByZWQKICAgICByZXR1cm4gdmFsdWUgPT0g
UHJlZGljdE15QXJndW1lbnRzOwogfQogCi1pbmxpbmUgYm9vbCBpc0FyZ3VtZW50c1ByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUg
JiBQcmVkaWN0QXJndW1lbnRzKSA9PSB2YWx1ZTsKLX0KLQogaW5saW5lIGJvb2wgaXNJbnQzMlBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gUHJl
ZGljdEludDMyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTYyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNiArNzI2LDEy
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVB
cmd1bWVudHMoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEFyZ3VtZW50cyk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZp
bHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VU
b3AoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3RyaW5nKTsKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBAIC04
MDksMTIgKzgxNSwyMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghbV9ncmFwaFtu
b2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11
dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkp
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkKKyNlbmRpZgorICAgICAgICAgICAgKSB7
CiAgICAgICAgICAgICBBU1NFUlQobm9kZS5vcCgpID09IFB1dEJ5VmFsKTsKICAgICAgICAgICAg
IGNsb2JiZXJTdHJ1Y3R1cmVzKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkp
IHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1
bWVudHMpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qnl0ZUFycmF5KTsKICAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBA
IC0xMDQ0LDYgKzEwNTksMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZAogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgorICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+
YXJndW1lbnRzU3RydWN0dXJlKCkpOworICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgICAgIAogICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAg
ICAgICAgIC8vIERvZXMgbm90aGluZyB0aGF0IGlzIHVzZXItdmlzaWJsZS4KICAgICAgICAgYnJl
YWs7CkBAIC0xMDg3LDYgKzExMDcsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7
CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6CisgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1bWVudHMpOworICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RJbnQzMik7CkBAIC0xMTU0LDYgKzExNzksMTAgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNs
ZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGlj
dFN0cmluZykgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdFN0cmluZyk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxMTYyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0OSw5ICsyMzQ5LDE2IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czogeworICAgICAgICAgICAgTm9kZUluZGV4IGNy
ZWF0ZUFyZ3VtZW50cyA9IGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1lbnRzLCBnZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBzZXQodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBjcmVhdGVBcmd1bWVudHMpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2Fy
Z3VtZW50cyk7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RlYXJf
b2ZmX2FjdGl2YXRpb246IHsKICAgICAgICAgICAgIC8vIFRoaXMgY3VycmVudGx5IGlnbm9yZXMg
YXJndW1lbnRzIGJlY2F1c2Ugd2UgZG9uJ3Qgc3VwcG9ydCB0aGVtIHlldC4KLSAgICAgICAgICAg
IGFkZFRvR3JhcGgoVGVhck9mZkFjdGl2YXRpb24sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBY3RpdmF0aW9uLCBP
cEluZm8odW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAx
MTYyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKwogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7CkBAIC00MzIsNiArNDQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CiAgICAgCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgSW1tUHRyIGFyZzIpCiAgICAgewog
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTE2MjY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxMSw3ICs2MTEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmJ5
VmFsSXNQdXJlKG5vZGUpICYmIGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCku
aW5kZXgoKSwgbm9kZS5jaGlsZDIoKS5pbmRleCgpKSAhPSBOb05vZGUpCisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5ieVZhbElzUHVyZShub2RlKQorICAgICAgICAgICAgICAgICYmICFub2RlLnNo
b3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpCisgICAgICAgICAgICAgICAgJiYgZ2V0QnlWYWxMb2Fk
RWxpbWluYXRpb24obm9kZS5jaGlsZDEoKS5pbmRleCgpLCBub2RlLmNoaWxkMigpLmluZGV4KCkp
ICE9IE5vTm9kZSkKICAgICAgICAgICAgICAgICBub2RlLnNldE9wKFB1dEJ5VmFsQWxpYXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY0LDYgKzE2NCw3IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AK
ICAgICBjYXNlIG9wX2luaXRfbGF6eV9yZWc6CiAgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlv
bjoKICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgY2FzZSBvcF9jcmVhdGVf
YXJndW1lbnRzOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTk5LDYgKzIwMCw3IEBAIGlubGluZSBib29s
IGNhbklubGluZU9wY29kZShPcGNvZGVJRCBvcGMKICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2
YXRpb246CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
KyAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b24uaAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw4IEBAIGlubGluZSBjb25zdCBj
aGFyKiB1c2VLaW5kVG9TdHJpbmcoVXNlS2kKIAogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBO
ZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07CiAKK2VudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9
OworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
cmV2aXNpb24gMTE2MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigp
KSAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYm9vbCBpc0Fy
Z3VtZW50cyA9IGlzQXJndW1lbnRzUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJv
b2wgaXNCeXRlQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5
dGVBcnJheSgpOwogICAgICAgICAgICAgYm9vbCBpc0ludDhBcnJheSA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCk7CkBAIC05OCw2ICs5OSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChpc0FycmF5KQogICAgICAgICAgICAgICAg
IG5vZGUuc2V0T3AoR2V0QXJyYXlMZW5ndGgpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNBcmd1
bWVudHMpCisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcmd1bWVudHNMZW5ndGgpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcpCiAgICAgICAgICAgICAgICAgbm9kZS5zZXRP
cChHZXRTdHJpbmdMZW5ndGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNCeXRlQXJyYXkpCkBA
IC0xMzAsNyArMTMzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBjYXNlIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVBy
ZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAg
ICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlv
bikgeworICAgICAgICAgICAgaWYgKCghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAm
JiBiYXNlUHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpCisgICAgICAgICAgICAgICAgfHwgIWlzQWN0
aW9uYWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24o
KSkpIHsKICAgICAgICAgICAgICAgICBub2RlLnNldE9wQW5kRGVmYXVsdEZsYWdzKE5vcCk7CiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQxKG5vZGUpOwogICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMihub2RlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMTYyNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSwx
MiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
bG9jYWwoKTsKICAgICB9CiAgICAgCisgICAgVmlydHVhbFJlZ2lzdGVyIHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcigpCisgICAgeworICAgICAgICBBU1NFUlQob3AoKSA9PSBUZWFyT2ZmQWN0
aXZhdGlvbik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG1f
b3BJbmZvKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNJZGVudGlmaWVyKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtNzQyLDYgKzc0OCwxMSBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0K
ICAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQorICAg
IAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAhIShwcmVkaWN0aW9uKCkgJiBQcmVkaWN0Qnl0ZUFycmF5KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDExNjI2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDYgKzExMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhH
ZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRBcmd1bWVudHNMZW5ndGgsIE5v
ZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFN0cmluZ0xlbmd0aCwgTm9kZVJlc3VsdElu
dDMyKSBcCiAgICAgbWFjcm8oR2V0Qnl0ZUFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwK
ICAgICBtYWNybyhHZXRJbnQ4QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMTg2
LDYgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
Q3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oVGVhck9mZkFjdGl2
YXRpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgLyogTm9kZXMgdXNlZCBmb3Ig
YXJndW1lbnRzLiBTaW1pbGFyIHRvIGFjdGl2YXRpb24gc3VwcG9ydCwgb25seSBpdCBtYWtlcyBl
dmVuIGxlc3MgKi9cCisgICAgLyogc2Vuc2UuICovXAorICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50
cywgTm9kZVJlc3VsdEpTKSBcCisgICAgXAogICAgIC8qIE5vZGVzIGZvciBjcmVhdGluZyBmdW5j
dGlvbnMuICovXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uTm9DaGVjaywgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMTYyNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZH
T3BlcmF0aW9ucy5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIK
QEAgLTEwMjEsMTEgKzEwMjIsMjMgQEAgSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZUFjdAogICAgIHJldHVybiBhY3RpdmF0aW9uOwogfQogCi12b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFjdGl2
YXRpb24pCitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBBU1NFUlQoYWN0aXZhdGlvbik7Ci0gICAgQVNTRVJUKGFj
dGl2YXRpb24tPmluaGVyaXRzKCZKU0FjdGl2YXRpb246OnNfaW5mbykpOwotICAgIGpzQ2FzdDxK
U0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKS0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOwor
ICAgIHJldHVybiBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOwor
fQorCit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGFjdGl2YXRpb25DZWxsLCBpbnQzMl90IHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcikKK3sKKyAgICBpZiAoIWFjdGl2YXRpb25DZWxsKSB7CisgICAgICAgIGlm
IChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cikuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVj
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0Nh
c3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbkNlbGwpOworICAgIGFjdGl2YXRpb24tPnRlYXJP
ZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNB
cmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0
aXZhdGlvbik7CiB9CiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDExNjI2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCw3IEBAIHR5cGVkZWYgc2l6ZV90IERGR19PUEVSQVRJT04gKCpTX0RG
R09wZXIKIHR5cGVkZWYgc2l6ZV90IERGR19PUEVSQVRJT04gKCpTX0RGR09wZXJhdGlvbl9KKShF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VBWkopKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7
CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VDSkopKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVm
IHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VDWikoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VKQ0kpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqLCBJZGVudGlmaWVy
Kik7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSlBQKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKQEAgLTE1NCw3
ICsxNTUsOCBAQCB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4CiB2b2lk
KiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zdHJ1Y3QoRXhlY1N0YXRlKik7CiB2
b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRlKik7CiBK
U0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUq
KTsKLXZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3Rh
dGUqLCBKU0NlbGwqKTsKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmd1
bWVudHMoRXhlY1N0YXRlKik7Cit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFj
dGl2YXRpb24oRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIpOwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTQ2VsbCopOwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uRXhwcmVzc2lvbihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIGRvdWJsZSBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3Niw2ICs1NzYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKKyAgICAgICAg
ICAgIC8vIEF0IHRoaXMgc3RhZ2Ugd2UgZG9uJ3QgdHJ5IHRvIHByZWRpY3Qgd2hldGhlciB0aGUg
YXJndW1lbnRzIGFyZSBvdXJzIG9yCisgICAgICAgICAgICAvLyBzb21lb25lIGVsc2Uncy4gV2Ug
Y291bGQsIGJ1dCB3ZSBkb24ndCwgeWV0LgorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFByZWRpY3RBcmd1bWVudHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5l
d0Z1bmN0aW9uTm9DaGVjazoKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbkV4cHJlc3Npb246IHsK
QEAgLTU4NSw2ICs1OTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0Qnl0ZUFycmF5TGVuZ3RoOgog
ICAgICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRJbnQxNkFy
cmF5TGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTYyNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01ODYsMTQgKzU4NiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlk
KENvZGVPCiAgICAgT3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAo
IXNsb3dQYXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjaywgdGhpcywgb3B0aW1pemVkQ2FsbCwgSW52
YWxpZEdQUlJlZywgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwKKyAgICAgICAgICAgIHN0
cnVjdHVyZUNoZWNrLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVUYWdHUFIs
IHZhbHVlUGF5bG9hZEdQUiwKICAgICAgICAgICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVy
KGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVjdHVyZUNo
ZWNrKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cHRpbWl6ZWRDYWxsLCBJbnZhbGlkR1BSUmVnLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BS
LAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwg
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwKICAgICAgICAgICAgIGJhc2VQYXlsb2FkR1BS
LCBpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9CiAgICAgbV9qaXQuYWRkUHJv
cGVydHlBY2Nlc3MoCkBAIC0yMzMzLDYgKzIzMzMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcu
Z3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbE9uQXJndW1lbnRzKG5vZGUpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3Ry
aW5nKSB7CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKQEAgLTI0
NTEsNyArMjQ1OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoIWF0
KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxl
TXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7
CisgICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigp
CisgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChu
b2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICB8fCBhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgewogICAgICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsgLy8gU2F2ZSBhIHJlZ2lzdGVy
LCBzcGVjdWxhdGUgY2VsbC4gV2UnbGwgcHJvYmFibHkgYmUgcmlnaHQuCiAgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwpAQCAtMjU5NSw3ICsy
NjA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIGJleW9uZEFycmF5Qm91bmRzLCB0
aGlzLAogICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAgICAgIEludmFsaWRH
UFJSZWcsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVRhZ1JlZywgdmFsdWVQYXlsb2FkUmVn
KSk7CisgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1
ZVRhZ1JlZywgdmFsdWVQYXlsb2FkUmVnKSk7CiAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxl
SW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MzM0MSw2ICszMzUwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEFyZ3VtZW50c0xlbmd0
aDogeworICAgICAgICBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpAQCAtMzc5NiwxNyAr
MzgxMCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjog
eworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIHZhbHVlLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIg
PSB2YWx1ZS50YWdHUFIoKTsKICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVl
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUodmFsdWVQYXlsb2FkR1BSLCByZXN1bHRHUFIp
OworICAgICAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIAorICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChub3RDcmVhdGVkLCB0aGlzLCBvcGVy
YXRpb25DcmVhdGVBcmd1bWVudHMsIHJlc3VsdEdQUikpOworICAgICAgICAKKyAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgICAgICAKKyAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOiB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGFjdGl2YXRpb25WYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJndW1lbnRzVmFsdWUodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAg
ICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoMzIo
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgR1BSUmVnIGFjdGl2YXRpb25WYWx1ZVRhZ0dQUiA9
IGFjdGl2YXRpb25WYWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIGFjdGl2YXRpb25WYWx1
ZVBheWxvYWRHUFIgPSBhY3RpdmF0aW9uVmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICBHUFJS
ZWcgYXJndW1lbnRzVmFsdWVUYWdHUFIgPSBhcmd1bWVudHNWYWx1ZS50YWdHUFIoKTsKKyAgICAg
ICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBjcmVhdGVkOworICAgICAgICBjcmVh
dGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFjdGl2YXRp
b25WYWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Cisg
ICAgICAgIGNyZWF0ZWQuYXBwZW5kKG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgYXJndW1lbnRzVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSkpOwogICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAg
ICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgY3JlYXRlZCwgdGhpcywgb3BlcmF0
aW9uVGVhck9mZkFjdGl2YXRpb24sIEludmFsaWRHUFJSZWcsIHZhbHVlUGF5bG9hZEdQUikpOwor
ICAgICAgICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBY3RpdmF0aW9u
LCBOb1Jlc3VsdCwgYWN0aXZhdGlvblZhbHVlUGF5bG9hZEdQUiwKKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQzMl90Pihub2RlLnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcigpKSkp
OwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5Lmgi
CiAKQEAgLTU1MiwxNCArNTUzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU8KICAgICBPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlm
ICghc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBJ
bnZhbGlkR1BSUmVnLCB2YWx1ZUdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHN0cnVjdHVyZUNo
ZWNrLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCiAg
ICAgICAgICAgICBpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKHN0cnVjdHVyZUNoZWNrKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93
UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBJbnZhbGlkR1BSUmVnLCB2YWx1ZUdQ
UiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwg
Tm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVu
dGlmaWVyTnVtYmVyKSk7CiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3Bl
cnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVs
KCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BS
KSkpOwpAQCAtMjM0OSw2ICsyMzUwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsK
KyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKG5vZGUpOworICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGNvbXBp
bGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQpAQCAtMjQ3Nyw2ICsyNDg1LDY1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHko
dGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDIodGhpcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5Lmdw
cigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CisgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKCFpc0FyZ3VtZW50c1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAg
ICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmQXJndW1lbnRzOjpzX2luZm8pKSk7CisgICAgICAgICAg
ICB9CisgICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEFyZ3VtZW50czo6b2Zmc2V0T2ZEYXRhKCkp
LAorICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcpOworCisgICAgICAgICAgICAvLyBUd28gcmVh
bGx5IGxhbWUgY2hlY2tzLgorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAg
ICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUsCisgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50c0Rh
dGEsIG51bUFyZ3VtZW50cykpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAg
ICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoUmVnLCBPQkpFQ1RfT0ZG
U0VUT0YoQXJndW1lbnRzRGF0YSwgZGVsZXRlZEFyZ3VtZW50cykpKSk7CisgICAgCisgICAgICAg
ICAgICBtX2ppdC5tb3ZlKHByb3BlcnR5UmVnLCBzY3JhdGNoMlJlZyk7CisgICAgICAgICAgICBt
X2ppdC5uZWczMihzY3JhdGNoMlJlZyk7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzY3JhdGNoMlJlZywgc2NyYXRjaDJSZWcpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBP
QkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzRGF0YSwgcmVnaXN0ZXJzKSksCisgICAgICAgICAgICAg
ICAgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRy
KAorICAgICAgICAgICAgICAgIHZhbHVlUmVnLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hSZWcsIHNjcmF0Y2gy
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgICAgICAgICAgQ2Fs
bEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2Yo
UmVnaXN0ZXIpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKICAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI1OTQsNyArMjY2MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBiZXlvbmRBcnJheUJvdW5kcywgdGhpcywKICAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCwKLSAgICAgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CiAKICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjc4Myw3ICsyODUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbkFycmF5UHVzaCwgSW52YWxpZEdQUlJlZywgc3RvcmFnZUxlbmd0aEdQUiwKKyAgICAg
ICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCBOb1Jlc3VsdCwg
c3RvcmFnZUxlbmd0aEdQUiwKICAgICAgICAgICAgICAgICB2YWx1ZUdQUiwgYmFzZUdQUikpOwog
ICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlTGVuZ3RoR1BSLCBtX2NvbXBp
bGVJbmRleCk7CkBAIC0zMjg5LDYgKzMzNTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21w
aWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0
QXJndW1lbnRzTGVuZ3RoOiB7CisgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgR2V0U3RyaW5nTGVuZ3RoOiB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CkBAIC0zNzI5LDE0ICszODAxLDM4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIFRlYXJP
ZmZBY3RpdmF0aW9uOiB7CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgdmFsdWUpOworICAgICAgICAKICAgICAgICAgR1BSUmVnIHZhbHVl
R1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJy
YW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Olplcm8sIHJlc3VsdEdQUik7CiAgICAgICAgIAotICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRD
b21waWxlcjo6Tm9uWmVybywgdmFsdWVHUFIpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChub3RDcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHMsIHJlc3VsdEdQUikpOworICAgICAgICAKKyAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOiB7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGFjdGl2YXRpb25WYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYXJndW1lbnRzVmFsdWUodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIEdQ
UlJlZyBhY3RpdmF0aW9uVmFsdWVHUFIgPSBhY3RpdmF0aW9uVmFsdWUuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyBhcmd1bWVudHNWYWx1ZUdQUiA9IGFyZ3VtZW50c1ZhbHVlLmdwcigpOworICAgICAg
ICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGNyZWF0ZWQ7CisgICAgICAgIGNyZWF0
ZWQuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGFjdGl2
YXRpb25WYWx1ZUdQUikpOworICAgICAgICBjcmVhdGVkLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0
UHRyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBhcmd1bWVudHNWYWx1ZUdQUikpOwogICAgICAgICAK
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93UGF0aENhbGwo
Y3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24sIEludmFsaWRHUFJSZWcs
IHZhbHVlR1BSKSk7CisgICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAg
Y3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24sIE5vUmVzdWx0LCBhY3Rp
dmF0aW9uVmFsdWVHUFIsCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4obm9k
ZS51bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTE2
MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQog
CisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAg
LTMwMzQsNyArMzAzNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVk
UHIKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3Rv
cmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7Ci0gICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRp
Y3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CisgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRp
Y3RTdHJpbmcpIHsKICAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAKQEAgLTMxMDEs
NiArMzEwNCwxMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgog
ICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlJiBub2RlKQor
eworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQy
KCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOworI2VuZGlmCisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgCisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIEdQUlJl
ZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBH
UFJSZWcgcmVzdWx0VGFnUmVnID0gcmVzdWx0VGFnLmdwcigpOworI2VuZGlmCisgICAgR1BSUmVn
IHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgIAorICAgIGlmICghbV9jb21waWxlT2th
eSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkFyZ3VtZW50czo6c19pbmZvKSkpOworICAgIH0KKyAgICAKKyAgICBtX2ppdC5sb2FkUHRyKAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBBcmd1bWVudHM6Om9mZnNl
dE9mRGF0YSgpKSwKKyAgICAgICAgc2NyYXRjaFJlZyk7CisKKyAgICAvLyBUd28gcmVhbGx5IGxh
bWUgY2hlY2tzLgorICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIFVuY291bnRhYmxlLCBK
U1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBPQkpFQ1RfT0ZGU0VUT0Yo
QXJndW1lbnRzRGF0YSwgbnVtQXJndW1lbnRzKSkpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKAor
ICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUsCisgICAgICAgIG1f
aml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgIHNj
cmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRhLCBkZWxldGVkQXJndW1lbnRz
KSkpKTsKKyAgICAKKyAgICBtX2ppdC5tb3ZlKHByb3BlcnR5UmVnLCByZXN1bHRSZWcpOworICAg
IG1faml0Lm5lZzMyKHJlc3VsdFJlZyk7CisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVz
dWx0UmVnLCByZXN1bHRSZWcpOworICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIE9CSkVDVF9PRkZTRVRPRihBcmd1bWVudHNEYXRh
LCByZWdpc3RlcnMpKSwKKyAgICAgICAgc2NyYXRjaFJlZyk7CisgICAgCisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNl
SW5kZXgoCisgICAgICAgICAgICBzY3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwKKyAgICAgICAgcmVzdWx0VGFn
UmVnKTsKKyAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoCisgICAgICAgICAgICBzY3JhdGNoUmVnLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0LAorICAgICAgICAgICAgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAq
IHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoUmVnaXN0ZXIpICsKKyAgICAgICAgICAgIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksCisgICAgICAgIHJlc3VsdFJl
Zyk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdSZWcsIHJlc3VsdFJlZywgbV9jb21waWxl
SW5kZXgpOworI2Vsc2UKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QmFzZUluZGV4KAorICAgICAgICAgICAgc2NyYXRjaFJlZywgcmVzdWx0UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAg
IHJlc3VsdFJlZyk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG1fY29tcGlsZUluZGV4
KTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJndW1lbnRz
TGVuZ3RoKE5vZGUmIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwor
ICAgIAorICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0
UmVnID0gcmVzdWx0LmdwcigpOworICAgIAorICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCisgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkFyZ3VtZW50
czo6c19pbmZvKSkpOworICAgIH0KKyAgICAKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBBcmd1bWVudHM6Om9mZnNldE9mRGF0YSgp
KSwKKyAgICAgICAgcmVzdWx0UmVnKTsKKworICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAg
IFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZywgT0JKRUNUX09GRlNFVE9GKEFy
Z3VtZW50c0RhdGEsIG92ZXJyb2RlTGVuZ3RoKSkpKTsKKyAgICAKKyAgICBtX2ppdC5sb2FkMzIo
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZywgT0JKRUNUX09GRlNF
VE9GKEFyZ3VtZW50c0RhdGEsIG51bUFyZ3VtZW50cykpLAorICAgICAgICByZXN1bHRSZWcpOwor
ICAgIGludGVnZXJSZXN1bHQocmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbk5vQ2hlY2soTm9kZSYgbm9kZSkKIHsK
ICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02ODAsNiArNjgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICB2b2lkIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzSW1wbChib29sIGRvU3BpbGwsIENvbGxlY3Rpb25UeXBlJiBwbGFucywgTm9SZXN1bHRUYWcp
CisgICAgeworICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwoZG9TcGlsbCwgcGxh
bnMsIEludmFsaWRHUFJSZWcsIEludmFsaWRHUFJSZWcsIEludmFsaWRGUFJSZWcpOworICAgIH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KICAgICB2b2lkIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzSW1wbChib29sIGRvU3BpbGwsIENvbGxlY3Rpb25UeXBlJiBwbGFucywg
RlBSUmVnIGV4Y2x1ZGUpCiAgICAgewogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0lt
cGwoZG9TcGlsbCwgcGxhbnMsIEludmFsaWRHUFJSZWcsIEludmFsaWRHUFJSZWcsIGV4Y2x1ZGUp
OwpAQCAtNzEyLDYgKzcxNywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gR1BS
SW5mbzo6cmVnVDA7CiAgICAgfQorICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoTm9S
ZXN1bHRUYWcpCisgICAgeworICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7CisgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBzdGF0aWMgR1BSUmVnIHBpY2tDYW5UcmFtcGxl
KEpTVmFsdWVSZWdzIGV4Y2x1ZGUpCkBAIC0xMzgxLDEwICsxMzkwLDE5IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0
aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBpbnQgYXJnMikKKyAgICB7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJn
MikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1l
IEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTI+CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywg
QXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFyZzIpCisgICAgeworICAgICAgICBy
ZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIpOworICAgIH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5
cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTM+Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1lbnRU
eXBlMyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25U
eXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSwgQXJndW1lbnRU
eXBlMiBhcmcyLCBBcmd1bWVudFR5cGUzIGFyZzMpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0ID09IEludmFsaWRHUFJSZWcpOwogICAgICAgICByZXR1cm4gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
RlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCkBAIC0xNTc1LDYgKzE1OTMsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBh
eWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgaW50IGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKQEAgLTE1ODUsMTYgKzE2MDgsMTkg
QEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3Vt
ZW50VHlwZTI+CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5
cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5
cGUyIGFyZzIpCisgICAgeworICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24s
IGFyZzEsIGFyZzIpOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTIsIHR5cGVuYW1l
IEFyZ3VtZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQ+Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBBcmd1bWVudFR5cGUxIGFyZzEsIEFyZ3VtZW50VHlwZTIgYXJnMiwgQXJndW1lbnRUeXBlMyBh
cmczLCBBcmd1bWVudFR5cGU0IGFyZzQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBh
cmcxLCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlwZTMgYXJnMywgQXJndW1lbnRUeXBl
NCBhcmc0KQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBh
cmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUy
LCB0eXBlbmFtZSBBcmd1bWVudFR5cGUzLCB0eXBlbmFtZSBBcmd1bWVudFR5cGU0LCB0eXBlbmFt
ZSBBcmd1bWVudFR5cGU1PgotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVu
Y3Rpb25UeXBlIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmcxLCBB
cmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlwZTMgYXJnMywgQXJndW1lbnRUeXBlNCBhcmc0
LCBBcmd1bWVudFR5cGU1IGFyZzUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcx
LCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3VtZW50VHlwZTMgYXJnMywgQXJndW1lbnRUeXBlNCBh
cmc0LCBBcmd1bWVudFR5cGU1IGFyZzUpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0ID09IEludmFsaWRHUFJSZWcpOwogICAgICAgICByZXR1cm4gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwogICAgIH0KIApA
QCAtMTk1MCw2ICsxOTc2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGlsZUdldENo
YXJDb2RlQXQoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYp
OworICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25Bcmd1bWVudHMoTm9kZSYpOworICAgIHZvaWQg
Y29tcGlsZUdldEFyZ3VtZW50c0xlbmd0aChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVU
b0ludDMyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlJik7CiAg
ICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2RlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTE2MjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDE2ICs0MSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBudW1Bcmd1
bWVudHM7CiAKKyAgICAgICAgLy8gV2UgbWFrZSB0aGVzZSBmdWxsIGJ5dGUgYm9vbGVhbnMgdG8g
bWFrZSB0aGVtIGVhc3kgdG8gdGVzdCBmcm9tIHRoZSBKSVQsCisgICAgICAgIC8vIGFuZCBiZWNh
dXNlIGV2ZW4gaWYgdGhleSB3ZXJlIHNpbmdsZS1iaXQgYm9vbGVhbnMgd2Ugc3RpbGwgd291bGRu
J3Qgc2F2ZQorICAgICAgICAvLyBhbnkgc3BhY2UuCisgICAgICAgIGJvb2wgb3ZlcnJvZGVMZW5n
dGg7IAorICAgICAgICBib29sIG92ZXJyb2RlQ2FsbGVlOworICAgICAgICBib29sIG92ZXJyb2Rl
Q2FsbGVyOworICAgICAgICBib29sIGlzU3RyaWN0TW9kZTsKKwogICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVyczsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gcmVnaXN0ZXJBcnJheTsKIAogICAgICAgICBPd25BcnJheVB0cjxib29sPiBk
ZWxldGVkQXJndW1lbnRzOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxs
ZWU7Ci0gICAgICAgIGJvb2wgb3ZlcnJvZGVMZW5ndGggOiAxOwotICAgICAgICBib29sIG92ZXJy
b2RlQ2FsbGVlIDogMTsKLSAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxlciA6IDE7Ci0gICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlIDogMTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRzIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewpAQCAtMTAxLDYgKzEwNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkRhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
QXJndW1lbnRzLCBkKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
</data>
<flag name="review"
          id="146340"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>