<?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>82519</bug_id>
          
          <creation_ts>2012-03-28 13:47:09 -0700</creation_ts>
          <short_desc>Yarr: if we&apos;re not using the output array, don&apos;t populate it!</short_desc>
          <delta_ts>2012-03-28 15:18:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>590375</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-28 13:47:09 -0700</bug_when>
    <thetext>Add a new variant of the match method to RegExp that returns a MatchResult, and modify YarrJIT to be able to compile code that doesn&apos;t use an output vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590411</commentid>
    <comment_count>1</comment_count>
      <attachid>134393</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-28 14:10:52 -0700</bug_when>
    <thetext>Created attachment 134393
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590417</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 14:15:56 -0700</bug_when>
    <thetext>Attachment 134393 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/runtime/RegExp.h:62:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExp.h:62:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/RegExp.cpp:456:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/runtime/RegExp.cpp:477:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/yarr/YarrJIT.cpp:350:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590431</commentid>
    <comment_count>3</comment_count>
      <attachid>134393</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 14:22:01 -0700</bug_when>
    <thetext>Comment on attachment 134393
Fix

Attachment 134393 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12154394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590441</commentid>
    <comment_count>4</comment_count>
      <attachid>134403</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-28 14:30:50 -0700</bug_when>
    <thetext>Created attachment 134403
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590447</commentid>
    <comment_count>5</comment_count>
      <attachid>134403</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-03-28 14:37:19 -0700</bug_when>
    <thetext>Comment on attachment 134403
Fix

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

&gt; Source/JavaScriptCore/runtime/RegExp.cpp:221
&gt;  struct RegExpRepresentation {
&gt; -#if ENABLE(YARR_JIT)
&gt; -    Yarr::YarrCodeBlock m_regExpJITCode;
&gt; -#endif
&gt; -    OwnPtr&lt;Yarr::BytecodePattern&gt; m_regExpBytecode;
&gt;  };

This is now an empty struct.  Is that intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590473</commentid>
    <comment_count>6</comment_count>
      <attachid>134403</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 14:54:14 -0700</bug_when>
    <thetext>Comment on attachment 134403
Fix

Attachment 134403 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12099073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590476</commentid>
    <comment_count>7</comment_count>
      <attachid>134403</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 14:58:09 -0700</bug_when>
    <thetext>Comment on attachment 134403
Fix

Attachment 134403 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12153466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590507</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-28 15:18:45 -0700</bug_when>
    <thetext>Fixed in r112454</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134393</attachid>
            <date>2012-03-28 14:10:52 -0700</date>
            <delta_ts>2012-03-28 14:30:50 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>82519.patch</filename>
            <type>text/plain</type>
            <size>56962</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyNDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEyLTAzLTI4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBZYXJyOiBpZiB3ZSdyZSBub3QgdXNpbmcgdGhlIG91dHB1dCBhcnJheSwgZG9u
J3QgcG9wdWxhdGUgaXQhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MjUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB2YXJpYW50IG9mIHRoZSBtYXRjaCBtZXRob2QgdG8gUmVnRXhwIHRo
YXQgcmV0dXJucyBhIE1hdGNoUmVzdWx0LAorICAgICAgICBhbmQgbW9kaWZ5IFlhcnJKSVQgdG8g
YmUgYWJsZSB0byBjb21waWxlIGNvZGUgdGhhdCBkb2Vzbid0IHVzZSBhbiBvdXRwdXQgdmVjdG9y
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgICAgIC0gTW92ZWQgTWF0Y2hSZXN1bHQgaW50byBpdHMgb3duIGhlYWRlci4KKyAg
ICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAgICAg
LSBBZGRlZCBtaXNzaW5nIGluY2x1ZGUuCisgICAgICAgICogcnVudGltZS9NYXRjaFJlc3VsdC5o
OiBBZGRlZC4KKyAgICAgICAgKE1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6CisgICAgICAgIChN
YXRjaFJlc3VsdCk6CisgICAgICAgIChNYXRjaFJlc3VsdDo6ZmFpbGVkKToKKyAgICAgICAgKE1h
dGNoUmVzdWx0OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKE1hdGNoUmVzdWx0OjplbXB0eSk6
CisgICAgICAgICAgICAtIE1vdmVkIE1hdGNoUmVzdWx0IGludG8gaXRzIG93biBoZWFkZXIuCisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAgICAgLSBDaGFuZ2VkIGR1ZSB0byBleGVj
dXRlICYgcmVwcmVzZW50YXRpb24gY2hhbmdlcy4KKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21w
aWxlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlN
YXRjaE9ubHkpOgorICAgICAgICAgICAgLSBBZGRlZCBoZWxwZXIgdG8gY29tcGlsZSBNYXRjaE9u
bHkgY29kZS4KKyAgICAgICAgKEpTQzo6UmVnRXhwOjppbnZhbGlkYXRlQ29kZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwOjpwcmludFRyYWNlRGF0YSk6CisgICAgICAgICAgICAtIENoYW5nZWQgZHVlIHJl
cHJlc2VudGF0aW9uIGNoYW5nZXMuCisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAg
ICAgKFJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZSk6CisgICAgICAgICAg
ICAtIE1hZGUgWWFyckNvZGVCbG9jayBhIG1lbWJlci4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3JtTWF0Y2gpOgorICAgICAgICAgICAgLSBBZGRl
ZCBuby1vdmVjdG9yIGZvcm0uCisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OnJlaWZ5QWxsUHJvcGVydGll
cyk6CisgICAgICAgICAgICAtIE1hdGNoIG5vdyB0YWtlcyBhIHJlZmVyZW5jZSB0byBvdmVjdG9y
LCBub3QgYSBwb2ludGVyLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAgICAgLSBNb3ZlZCBNYXRjaFJlc3VsdCBpbnRvIGl0cyBvd24g
aGVhZGVyLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3RyaW5nUHJvdG9GdW5jU3BsaXQpOgorICAgICAgICAgICAgLSBNYXRjaCBub3cgdGFr
ZXMgYSByZWZlcmVuY2UgdG8gb3ZlY3Rvciwgbm90IGEgcG9pbnRlci4KKyAgICAgICAgKiB0ZXN0
UmVnRXhwLmNwcDoKKyAgICAgICAgKHRlc3RPbmVSZWdFeHApOgorICAgICAgICAgICAgLSBNYXRj
aCBub3cgdGFrZXMgYSByZWZlcmVuY2UgdG8gb3ZlY3Rvciwgbm90IGEgcG9pbnRlci4KKyAgICAg
ICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoWWFycik6CisgICAgICAgIChZYXJyR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6aW5pdENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OnJlbW92ZUNhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OnNldFN1YnBhdHRlcm5TdGFydCk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OnNldFN1YnBhdHRlcm5FbmQpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpjbGVhclN1YnBhdHRlcm5TdGFydCk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OnNldE1hdGNoU3RhcnQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZXRNYXRjaFN0YXJ0KToKKyAgICAgICAg
ICAgIC0gQWRkZWQgaGVscGVyIGZ1bmN0aW9ucyB0byBpbnRlcm1lZGlhdGUgYWNjZXNzIHRvIG91
dHB1dC4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVEb3RTdGFy
RW5jbG9zdXJlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGUp
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpiYWNrdHJhY2spOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUVudGVyKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICAgICAtIENoYW5nZWQg
dG8gdXNlIHRoZSBuZXcgaGVscGVycywgb25seSBnZW5lcmF0ZSBzdWJwYXR0ZXJucyBpZiBJbmNs
dWRlU3VicGF0dGVybnMuCisgICAgICAgIChKU0M6OllhcnI6OmppdENvbXBpbGUpOgorICAgICAg
ICAgICAgLSBOZWVkcyB0byB0ZW1wbGF0ZSBvZiBNYXRjaE9ubHkgb3IgSW5jbHVkZVN1YnBhdHRl
cm5zLgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoWWFyckNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6aGFzOEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpoYXMxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZU1hdGNoT25seSk6CisgICAg
ICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDE2Qml0Q29kZU1hdGNoT25seSk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisgICAgICAgICAgICAtIEFkZGVkIGEgc2Vj
b25kIHNldCBvZiBDb2RlUmVmcywgc28gdGhhdCB3ZSBjYW4gY29tcGlsZSBSZXhFeHBzIHdpdGgv
d2l0aG91dCBzdWJwYXR0ZXJuIG1hdGNoaW5nLgorCiAyMDEyLTAzLTI3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIE9TUiBleGl0IHNob3VsZCBub3QgZ2Vu
ZXJhdGUgYW4gZXhpdCBmb3IgdmFyaWFibGVzIG9mIGlubGluZWVzIGlmIHRoZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAkocmV2aXNpb24gMTEyMTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyAr
MjE1LDcgQEAgc3RhdGljIGJvb2wgdGVzdE9uZVJlZ0V4cChKU0dsb2JhbERhdGEmIAogICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKICAgICBWZWN0b3I8aW50LCAzMj4gb3V0VmVjdG9yOwogICAgIG91
dFZlY3Rvci5yZXNpemUocmVnRXhwVGVzdC0+ZXhwZWN0VmVjdG9yLnNpemUoKSk7Ci0gICAgaW50
IG1hdGNoUmVzdWx0ID0gcmVnZXhwLT5tYXRjaChnbG9iYWxEYXRhLCByZWdFeHBUZXN0LT5zdWJq
ZWN0LCByZWdFeHBUZXN0LT5vZmZzZXQsICZvdXRWZWN0b3IpOworICAgIGludCBtYXRjaFJlc3Vs
dCA9IHJlZ2V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwgcmVnRXhwVGVzdC0+c3ViamVjdCwgcmVnRXhw
VGVzdC0+b2Zmc2V0LCBvdXRWZWN0b3IpOwogCiAgICAgaWYgKG1hdGNoUmVzdWx0ICE9IHJlZ0V4
cFRlc3QtPnJlc3VsdCkgewogICAgICAgICByZXN1bHQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzM3LDYgKzMzNyw3IEBACiAJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmggKi87IH07CiAJCTg2MDRGNTA1MTQzQ0UxQzIwMEIyOTVGNSAvKiBKU0dsb2Jh
bFRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDRGNTAzMTQzQ0UxQzEwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJC
MkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYxMkU0Q0QxNTIzODlF
QzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNC
MjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3
MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXpl
VUNTMi5jcHAgKi87IH07CiAJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNo
ZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgKi87
IH07CkBAIC0zNTAsNyArMzUxLDcgQEAKIAkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI3RDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCAq
LzsgfTsKIAkJODY3MDRCODUxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCN0UxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJySklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NzA0QjdGMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCAqLzsgfTsKLQkJODY3MDRC
ODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklU
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJODY3MDRCODcxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJODY3MDRCODkx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5jcHAgKi87IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2Myw3ICs0NjQsNyBAQAogCQlBNzUy
MUUxMzE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1MjFFMTIxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRT
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzU3MDZERTExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NTcwNkREMTE4QTJCQ0Yw
MDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovOyB9OwogCQlBNzY2QjQ0RjBFRThE
Q0QxMDA5NTE4Q0EgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlBNzZDNTE3NjExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkM1MTc0
MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oICovOyB9OworCQlBNzZDNTE3NjEx
ODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0lu
dGVyZmFjZUpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkY1NEEyMTNCMjhB
QUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJQTc4MUUzNTkxNDE5NzBD
NzAwMDk0RDkwIC8qIFN0b3JhZ2VCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzgxRTM1ODE0MTk3MEM3MDAwOTREOTAgLyogU3RvcmFnZUJh
cnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBN0VFNzQxMUI5OEI4RDAwNjVBMTRG
IC8qIEFTVEJ1aWxkZXIuaCAqLzsgfTsKQEAgLTk3Niw2ICs5NzcsNyBAQAogCQk4NjAzQ0VGMzE0
Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2RlUHJvZmlsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2hhbmdlTG9nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyog
SlNHbG9iYWxUaGlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFs
VGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjEyRTRDQjE1MjI5MTg0MDBD
ODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWF0Y2hSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQjIzREYwRkM2
MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJDYW5v
bmljYWxpemVVQ1MyLmNwcDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyog
WWFyckNhbm9uaWNhbGl6ZVVDUzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
WWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODUsMTUgKzE0ODcsMTIgQEAKIAkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENv
bXBpbGF0aW9uRWZmb3J0LmggKi8sCi0JCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAotCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCi0JCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAotCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENv
bXBhY3RKSVRDb2RlTWFwLmggKi8sCiAJCQkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovLAogCQkJCUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAv
KiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi8sCiAJCQkJODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIx
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgKi8sCisJCQkJMEY0NjgwRDAx
NEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMTQy
OUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgKi8sCiAJCQkJMTQyOUQ5MkUwRUQyMkQ3
MDAwQjg5NjE5IC8qIEpJVC5oICovLAogCQkJCTg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBK
SVRBcml0aG1ldGljLmNwcCAqLywKQEAgLTE1MDEsNyArMTUwMCwxMCBAQAogCQkJCTg2Q0M4NUEy
MEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRDYWxsLmNwcCAqLywKIAkJCQkxNDZGRTUxMTExQTcxMDQz
MDA4N0FFNjYgLyogSklUQ2FsbDMyXzY0LmNwcCAqLywKIAkJCQk4NkNDRUZERDBGNDEzRjg5MDBG
RDdGOUUgLyogSklUQ29kZS5oICovLAorCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBK
SVRDb21waWxhdGlvbkVmZm9ydC5oICovLAogCQkJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAv
KiBKSVREcml2ZXIuaCAqLywKKwkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCAqLywKIAkJCQk4NkNDODVBMDBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lTWV0
aG9kcy5oICovLAogCQkJCUJDREQ1MUU5MEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNw
cCAqLywKIAkJCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNw
cCAqLywKQEAgLTE4NTEsNiArMTg1Myw3IEBACiAJCQkJQTdFMkVBNjkwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuaCAqLywKIAkJCQlGNjkyQTg2ODAyNTU1OTdEMDFGRjYwRjcgLyog
TG9va3VwLmNwcCAqLywKIAkJCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9va3VwLmgg
Ki8sCisJCQkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8sCiAJ
CQkJRjY5MkE4NkEwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovLAogCQkJCUY2
OTJBODZCMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmggKi8sCiAJCQkJOTAyMTNFM0Ix
MjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovLApAQCAtMjUxMiw2ICsy
NTE1LDcgQEAKIAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8qIERGR0luc2Vy
dGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMkMxNTFGREU5MTAwQ0Q4OTEwIC8q
IE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUg
LyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJl
dmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJfaAogI2RlZmluZSBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyX2gKIAorI2luY2x1ZGUgIkFzc2VtYmxlckJ1ZmZlci5oIgogI2luY2x1ZGUgIkNvZGVMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIE1hdGNoUmVzdWx0X2gKKyNkZWZpbmUgTWF0Y2hSZXN1bHRfaAorCit0eXBlZGVmIHVp
bnQ2NF90IEVuY29kZWRNYXRjaFJlc3VsdDsKKworc3RydWN0IE1hdGNoUmVzdWx0IHsKKyAgICBB
TFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0KHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKKyAgICAg
ICAgOiBzdGFydChzdGFydCkKKyAgICAgICAgLCBlbmQoZW5kKQorICAgIHsKKyAgICB9CisKKyAg
ICBleHBsaWNpdCBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0KEVuY29kZWRNYXRjaFJlc3VsdCBl
bmNvZGVkKQorICAgIHsKKyAgICAgICAgdW5pb24gdSB7CisgICAgICAgICAgICB1aW50NjRfdCBl
bmNvZGVkOworICAgICAgICAgICAgc3RydWN0IHMgeworICAgICAgICAgICAgICAgIHNpemVfdCBz
dGFydDsKKyAgICAgICAgICAgICAgICBzaXplX3QgZW5kOworICAgICAgICAgICAgfSBzcGxpdDsK
KyAgICAgICAgfSB2YWx1ZTsKKyAgICAgICAgdmFsdWUuZW5jb2RlZCA9IGVuY29kZWQ7CisgICAg
ICAgIHN0YXJ0ID0gdmFsdWUuc3BsaXQuc3RhcnQ7CisgICAgICAgIGVuZCA9IHZhbHVlLnNwbGl0
LmVuZDsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWls
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KFdURjo6bm90Rm91bmQsIDAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0b3IgYm9vbCgpCisgICAgeworICAg
ICAgICByZXR1cm4gc3RhcnQgIT0gV1RGOjpub3RGb3VuZDsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0ID09IGVuZDsK
KyAgICB9CisKKyAgICBzaXplX3Qgc3RhcnQ7CisgICAgc2l6ZV90IGVuZDsKK307CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lv
biAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTgsMTAgKzIxOCw2IEBAIHZvaWQgUmVnRXhwRnVuY3Rpb25hbFRl
c3RDb2xsZWN0b3I6Om91dHAKICNlbmRpZgogCiBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb24g
ewotI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhw
SklUQ29kZTsKLSNlbmRpZgotICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fcmVn
RXhwQnl0ZWNvZGU7CiB9OwogCiBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQpAQCAt
Mjc5LDIzICsyNzUsMjIgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRhKiBnbG9i
YQogICAgIH0KICAgICBBU1NFUlQobV9udW1TdWJwYXR0ZXJucyA9PSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnMpOwogCi0gICAgaWYgKCFtX3JlcHJlc2VudGF0aW9uKSB7CisgICAgaWYgKCFoYXND
b2RlKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gTm90Q29tcGlsZWQpOwotICAgICAg
ICBtX3JlcHJlc2VudGF0aW9uID0gYWRvcHRQdHIobmV3IFJlZ0V4cFJlcHJlc2VudGF0aW9uKTsK
ICAgICAgICAgZ2xvYmFsRGF0YS0+cmVnRXhwQ2FjaGUoKS0+YWRkVG9TdHJvbmdDYWNoZSh0aGlz
KTsKICAgICAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwogICAgIH0KIAogI2lmIEVOQUJMRShZQVJS
X0pJVCkKICAgICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKSB7Ci0gICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwg
Y2hhclNpemUsIGdsb2JhbERhdGEsIG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSk7
CisgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgY2hhclNpemUsIGdsb2JhbERhdGEs
IG1fcmVnRXhwSklUQ29kZSk7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQotICAgICAgICBp
ZiAoIW1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZS5pc0ZhbGxCYWNrKCkpCisgICAg
ICAgIGlmICghbV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJhY2soKSkKICAgICAgICAgICAgIG1fc3Rh
dGUgPSBKSVRDb2RlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3N0YXRlID0gQnl0ZUNv
ZGU7CiAjZWxzZQotICAgICAgICBpZiAoIW1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29k
ZS5pc0ZhbGxCYWNrKCkpIHsKKyAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUuaXNGYWxsQmFj
aygpKSB7CiAgICAgICAgICAgICBtX3N0YXRlID0gSklUQ29kZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzA1LDIyICszMDAsMTggQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUo
SlNHbG9iYWxEYXRhKiBnbG9iYQogICAgIFVOVVNFRF9QQVJBTShjaGFyU2l6ZSk7CiAjZW5kaWYK
IAotICAgIG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29t
cGlsZShwYXR0ZXJuLCAmZ2xvYmFsRGF0YS0+bV9yZWdFeHBBbGxvY2F0b3IpOworICAgIG1fcmVn
RXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmZ2xvYmFsRGF0YS0+bV9y
ZWdFeHBBbGxvY2F0b3IpOwogfQogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewot
ICAgIC8vIElmIHRoZSBzdGF0ZSBpcyBOb3RDb21waWxlZCBvciBQYXJzZUVycm9yLCB0aGVuIHRo
ZXJlIGlzIG5vIHJlcHJlc2VudGF0aW9uLgotICAgIC8vIElmIHRoZXJlIGlzIGEgcmVwcmVzZW50
YXRpb24sIGFuZCB0aGUgc3RhdGUgbXVzdCBiZSBlaXRoZXIgSklUQ29kZSBvciBCeXRlQ29kZS4K
LSAgICBBU1NFUlQoISFtX3JlcHJlc2VudGF0aW9uID09IChtX3N0YXRlID09IEpJVENvZGUgfHwg
bV9zdGF0ZSA9PSBCeXRlQ29kZSkpOwotICAgIAotICAgIGlmIChtX3JlcHJlc2VudGF0aW9uKSB7
CisgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYg
KG1fc3RhdGUgIT0gSklUQ29kZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKChj
aGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklU
Q29kZS5oYXM4Qml0Q29kZSgpKSkKKyAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
OCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlcHJlc2Vu
dGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkpKQorICAgICAgICBpZiAoKGNo
YXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUo
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAjZWxzZQogICAgICAgICByZXR1cm47CkBAIC0zMzAs
NyArMzIxLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShKU0dsb2JhbAogICAg
IGNvbXBpbGUoJmdsb2JhbERhdGEsIGNoYXJTaXplKTsKIH0KIAotaW50IFJlZ0V4cDo6bWF0Y2go
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQoraW50IFJlZ0V4cDo6bWF0Y2goSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQogewogI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKICAgICBtX3J0TWF0Y2hDYWxsQ291bnQrKzsKQEAgLTM0MCwzMCArMzMxLDIyIEBAIGlu
dCBSZWdFeHA6Om1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGEKICAgICBjb21waWxlSWZOZWNl
c3NhcnkoZ2xvYmFsRGF0YSwgcy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2
KTsKIAogICAgIGludCBvZmZzZXRWZWN0b3JTaXplID0gKG1fbnVtU3VicGF0dGVybnMgKyAxKSAq
IDI7Ci0gICAgaW50KiBvZmZzZXRWZWN0b3I7Ci0gICAgVmVjdG9yPGludCwgMzI+IG5vblJldHVy
bmVkT3ZlY3RvcjsKLSAgICBpZiAob3ZlY3RvcikgewotICAgICAgICBvdmVjdG9yLT5yZXNpemUo
b2Zmc2V0VmVjdG9yU2l6ZSk7Ci0gICAgICAgIG9mZnNldFZlY3RvciA9IG92ZWN0b3ItPmRhdGEo
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBub25SZXR1cm5lZE92ZWN0b3IucmVzaXplKG9mZnNl
dFZlY3RvclNpemUpOwotICAgICAgICBvZmZzZXRWZWN0b3IgPSBub25SZXR1cm5lZE92ZWN0b3Iu
ZGF0YSgpOwotICAgIH0KLSAgICBBU1NFUlQob2Zmc2V0VmVjdG9yKTsKKyAgICBvdmVjdG9yLnJl
c2l6ZShvZmZzZXRWZWN0b3JTaXplKTsKKyAgICBpbnQqIG9mZnNldFZlY3RvciA9IG92ZWN0b3Iu
ZGF0YSgpOwogCiAgICAgaW50IHJlc3VsdDsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgaWYg
KG1fc3RhdGUgPT0gSklUQ29kZSkgewogICAgICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAg
ICAgIHJlc3VsdCA9IFlhcnI6OmV4ZWN1dGUobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRD
b2RlLCBzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0
b3IpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFy
YWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKS5zdGFydDsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gWWFycjo6ZXhlY3V0ZShtX3JlcHJl
c2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0
LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdF
eHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3Ro
KCksIG9mZnNldFZlY3Rvcikuc3RhcnQ7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQogICAg
ICAgICBtYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIocywgc3RhcnRPZmZzZXQsIG9mZnNldFZl
Y3RvciwgcmVzdWx0KTsKICNlbmRpZgogICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3Vs
dCA9IFlhcnI6OmludGVycHJldChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlLmdl
dCgpLCBzLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCo+KG9mZnNldFZlY3RvcikpOworICAgICAgICByZXN1bHQgPSBZYXJyOjppbnRlcnByZXQobV9y
ZWdFeHBCeXRlY29kZS5nZXQoKSwgcywgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQqPihvZmZzZXRWZWN0b3IpKTsKIAogICAgIC8vIEZJWE1FOiBUaGUg
WUFSUiBlbmdpbmUgc2hvdWxkIGhhbmRsZSB1bnNpZ25lZCBvciBzaXplX3QgbGVuZ3RoIG1hdGNo
ZXMuCiAgICAgLy8gVGhlIFlBUlIgSW50ZXJwcmV0ZXIgaXMgInVuc2lnbmVkIiBjbGVhbiwgd2hp
bGUgdGhlIFlBUlIgSklUIGhhc24ndCBiZWVuIGFkZHJlc3NlZC4KQEAgLTQwNCwxMiArMzg3LDEx
MCBAQCBpbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAordm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgWWFycjo6
WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIGlnbm9yZUNhc2UoKSwgbXVsdGls
aW5lKCksICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJv
cikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgbV9zdGF0ZSA9IFBh
cnNlRXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fbnVtU3VicGF0
dGVybnMgPT0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zKTsKKworICAgIGlmICghaGFzQ29kZSgp
KSB7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IE5vdENvbXBpbGVkKTsKKyAgICAgICAgZ2xv
YmFsRGF0YS0+cmVnRXhwQ2FjaGUoKS0+YWRkVG9TdHJvbmdDYWNoZSh0aGlzKTsKKyAgICAgICAg
bV9zdGF0ZSA9IEJ5dGVDb2RlOworICAgIH0KKworI2lmIEVOQUJMRShZQVJSX0pJVCkKKyAgICBp
ZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKSB7CisgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgY2hhclNpemUsIGds
b2JhbERhdGEsIG1fcmVnRXhwSklUQ29kZSwgWWFycjo6TWF0Y2hPbmx5KTsKKyNpZiBFTkFCTEUo
WUFSUl9KSVRfREVCVUcpCisgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJhY2so
KSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX3N0YXRlID0gQnl0ZUNvZGU7CisjZWxzZQorICAgICAgICBpZiAoIW1fcmVnRXhwSklU
Q29kZS5pc0ZhbGxCYWNrKCkpIHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShjaGFyU2l6ZSk7CisjZW5kaWYKKworICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZ
YXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmZ2xvYmFsRGF0YS0+bV9yZWdFeHBBbGxvY2F0b3Ip
OworfQorCit2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlm
IChoYXNDb2RlKCkpIHsKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisgICAgICAgIGlmIChtX3N0YXRl
ICE9IEpJVENvZGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgoY2hhclNpemUg
PT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGVNYXRjaE9ubHko
KSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6
Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZU1hdGNoT25seSgpKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyNlbHNlCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIH0K
KworICAgIGNvbXBpbGVNYXRjaE9ubHkoJmdsb2JhbERhdGEsIGNoYXJTaXplKTsKK30KKworTWF0
Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKKyAgICBtX3J0TWF0Y2hDYWxsQ291bnQrKzsKKyNlbmRpZgorCisgICAgQVNTRVJUKG1f
c3RhdGUgIT0gUGFyc2VFcnJvcik7CisgICAgY29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KGds
b2JhbERhdGEsIHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNik7CisKKyNp
ZiBFTkFCTEUoWUFSUl9KSVQpCisgICAgaWYgKG1fc3RhdGUgPT0gSklUQ29kZSkgeworICAgICAg
ICBNYXRjaFJlc3VsdCByZXN1bHQgPSBzLmlzOEJpdCgpID8KKyAgICAgICAgICAgIG1fcmVnRXhw
SklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCkp
IDoKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczE2KCks
IHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpKTsKKyNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgbV9ydE1hdGNoRm91bmRDb3VudCsrOwor
I2VuZGlmCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7
CisgICAgICAgIGludCBvZmZzZXRWZWN0b3JTaXplID0gKG1fbnVtU3VicGF0dGVybnMgKyAxKSAq
IDI7CisgICAgICAgIGludCogb2Zmc2V0VmVjdG9yOworICAgICAgICBWZWN0b3I8aW50LCAzMj4g
bm9uUmV0dXJuZWRPdmVjdG9yOworICAgICAgICBub25SZXR1cm5lZE92ZWN0b3IucmVzaXplKG9m
ZnNldFZlY3RvclNpemUpOworICAgICAgICBvZmZzZXRWZWN0b3IgPSBub25SZXR1cm5lZE92ZWN0
b3IuZGF0YSgpOworICAgICAgICBpbnQgciA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVj
b2RlLmdldCgpLCBzLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCo+KG9mZnNldFZlY3RvcikpOworI2lmIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4K
KyAgICAgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpLT5vdXRwdXRPbmVU
ZXN0KHRoaXMsIHMsIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIHJlc3VsdCk7CisjZW5kaWYK
KyAgICAgICAgaWYgKHIgPj0gMCkgeworI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKKyAgICAg
ICAgICAgIG1fcnRNYXRjaEZvdW5kQ291bnQrKzsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJu
IE1hdGNoUmVzdWx0KHIsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihvZmZzZXRWZWN0b3Ip
WzFdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZh
aWxlZCgpOworICAgIH0KK30KKwogdm9pZCBSZWdFeHA6OmludmFsaWRhdGVDb2RlKCkKIHsKLSAg
ICBpZiAoIW1fcmVwcmVzZW50YXRpb24pCisgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7Ci0gICAgbV9yZXByZXNlbnRhdGlvbi5j
bGVhcigpOworICAgIG1fcmVnRXhwSklUQ29kZS5jbGVhcigpOworICAgIG1fcmVnRXhwQnl0ZWNv
ZGUuY2xlYXIoKTsKIH0KIAogI2lmIEVOQUJMRShZQVJSX0pJVF9ERUJVRykKQEAgLTQyOCw3ICs1
MDksNyBAQCB2b2lkIFJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyCiAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMCwgaSA9IDA7IGkgPCBtX251bVN1YnBhdHRlcm5zICsgMTsgaiArPSAy
LCBpKyspCiAgICAgICAgIGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2pdID0gLTE7CiAKLSAgICBp
bnRlcnByZXRlclJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlcHJlc2VudGF0aW9uLT5tX3Jl
Z0V4cEJ5dGVjb2RlLmdldCgpLCBzLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgaW50ZXJwcmV0
ZXJPZmZzZXRWZWN0b3IpOworICAgIGludGVycHJldGVyUmVzdWx0ID0gWWFycjo6aW50ZXJwcmV0
KG1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMsIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBpbnRl
cnByZXRlck9mZnNldFZlY3Rvcik7CiAKICAgICBpZiAoaml0UmVzdWx0ICE9IGludGVycHJldGVy
UmVzdWx0KQogICAgICAgICBkaWZmZXJlbmNlcysrOwpAQCAtNDc3LDcgKzU1OCw3IEBAIHZvaWQg
UmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIKICAgICAgICAgc25wcmludGYoZm9y
bWF0dGVkUGF0dGVybiwgNDEsIChwYXR0TGVuIDw9IDM4KSA/ICIvJS4zOHMvIiA6ICIvJS4zNnMu
Li4iLCByYXdQYXR0ZXJuKTsKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgWWFycjo6
WWFyckNvZGVCbG9jayYgY29kZUJsb2NrID0gbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRD
b2RlOworICAgICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSBtX3JlZ0V4cEpJ
VENvZGU7CiAKICAgICAgICAgY29uc3Qgc2l6ZV90IGppdEFkZHJTaXplID0gMjA7CiAgICAgICAg
IGNoYXIgaml0QWRkcltqaXRBZGRyU2l6ZV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTEyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE0ICsyMiwxOSBAQAogI2lm
bmRlZiBSZWdFeHBfaAogI2RlZmluZSBSZWdFeHBfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgog
I2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
KyNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlZ0V4cEtleS5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJ5YXJyL1lh
cnIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisjaW5jbHVkZSAieWFyci9ZYXJySklULmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRp
b247CkBAIC01MywxMiArNTgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3MgIT0g
SW52YWxpZEZsYWdzOyB9CiAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBpbnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IgPSAwKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgaW50IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAgICAgTWF0
Y2hSZXN1bHQgbWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBz
LCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5z
KCkgY29uc3QgeyByZXR1cm4gbV9udW1TdWJwYXR0ZXJuczsgfQogCiAgICAgICAgIGJvb2wgaGFz
Q29kZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uOwor
ICAgICAgICAgICAgcmV0dXJuIG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGludmFsaWRhdGVDb2RlKCk7CkBAIC05NSw2ICsxMDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBjb21waWxlKEpTR2xvYmFsRGF0YSosIFlhcnI6OllhcnJD
aGFyU2l6ZSk7CiAgICAgICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYs
IFlhcnI6OllhcnJDaGFyU2l6ZSk7CiAKKyAgICAgICAgdm9pZCBjb21waWxlTWF0Y2hPbmx5KEpT
R2xvYmFsRGF0YSosIFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgICAgIHZvaWQgY29tcGlsZUlm
TmVjZXNzYXJ5TWF0Y2hPbmx5KEpTR2xvYmFsRGF0YSYsIFlhcnI6OllhcnJDaGFyU2l6ZSk7CisK
ICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCiAgICAgICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0
aEludGVycHJldGVyKGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0
VmVjdG9yLCBpbnQgaml0UmVzdWx0KTsKICNlbmRpZgpAQCAtMTA4LDcgKzExNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRDb3VudDsKICNlbmRp
ZgogCi0gICAgICAgIE93blB0cjxSZWdFeHBSZXByZXNlbnRhdGlvbj4gbV9yZXByZXNlbnRhdGlv
bjsKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisgICAgICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9y
ZWdFeHBKSVRDb2RlOworI2VuZGlmCisgICAgICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRl
cm4+IG1fcmVnRXhwQnl0ZWNvZGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAg
ICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4cCosIEpT
U3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3RvciA9
IDApOworICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRhJiwgUmVn
RXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqKiBv
dmVjdG9yKTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYs
IFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCk7CiAK
ICAgICAgICAgdm9pZCBzZXRNdWx0aWxpbmUoYm9vbCBtdWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUg
PSBtdWx0aWxpbmU7IH0KICAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X211bHRpbGluZTsgfQpAQCAtMTAyLDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICov
CiAgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9y
bU1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5n
KiBzdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92
ZWN0b3IpCiAgICAgewotICAgICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKGdsb2Jh
bERhdGEsIGlucHV0LCBzdGFydE9mZnNldCwgJm1fb3ZlY3Rvcik7CisgICAgICAgIGludCBwb3Np
dGlvbiA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwgaW5wdXQsIHN0YXJ0T2Zmc2V0LCBtX292
ZWN0b3IpOwogCiAgICAgICAgIGlmIChvdmVjdG9yKQogICAgICAgICAgICAgKm92ZWN0b3IgPSBt
X292ZWN0b3IuZGF0YSgpOwpAQCAtMTE5LDYgKzEyMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQocG9zaXRpb24sIGVuZCk7CiAgICAgfQorICAgIEFM
V0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4cCogcmVnRXhwLCBKU1N0cmluZyogc3RyaW5n
LCBjb25zdCBVU3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0T2Zmc2V0KQorICAgIHsKKyAgICAgICAg
TWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwLT5tYXRjaChnbG9iYWxEYXRhLCBpbnB1dCwgc3Rh
cnRPZmZzZXQpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgbV9jYWNoZWRSZXN1
bHQucmVjb3JkKGdsb2JhbERhdGEsIHRoaXMsIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmNwcAkocmV2aXNpb24gMTEyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0CiAKICAgICBpZiAodW5z
aWduZWQgbnVtU3VicGF0dGVybnMgPSBtX3JlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewogICAg
ICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgIGludCBwb3Np
dGlvbiA9IG1fcmVnRXhwLT5tYXRjaChleGVjLT5nbG9iYWxEYXRhKCksIG1faW5wdXQtPnZhbHVl
KGV4ZWMpLCBtX3Jlc3VsdC5zdGFydCwgJnN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgaW50
IHBvc2l0aW9uID0gbV9yZWdFeHAtPm1hdGNoKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9pbnB1dC0+
dmFsdWUoZXhlYyksIG1fcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6
ZV90Pihwb3NpdGlvbikgPT0gbV9yZXN1bHQuc3RhcnQpOwogICAgICAgICBBU1NFUlQobV9yZXN1
bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOwog
ICAgICAgICBBU1NFUlQobV9yZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0
dGVyblJlc3VsdHNbMV0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjggKzI2LDYg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0gICAgc3RydWN0IE1hdGNoUmVzdWx0IHsKLSAg
ICAgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQp
Ci0gICAgICAgICAgICA6IHN0YXJ0KHN0YXJ0KQotICAgICAgICAgICAgLCBlbmQoZW5kKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgTWF0Y2hSZXN1
bHQgZmFpbGVkKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KFdU
Rjo6bm90Rm91bmQsIDApOwotICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0
b3IgYm9vbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydCAhPSBXVEY6Om5v
dEZvdW5kOwotICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbXB0eSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgc2l6ZV90IHN0YXJ0OwotICAgICAgICBzaXplX3QgZW5kOwotICAgIH07Ci0gICAgCiAg
ICAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAvLyBjLiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgIjAiLAogICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1d
OiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgogICAgICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCi0g
ICAgICAgICAgICBpZiAocmVnLT5tYXRjaCgqZ2xvYmFsRGF0YSwgaW5wdXQsIDApIDwgMCkKKyAg
ICAgICAgICAgIGlmICghcmVnLT5tYXRjaCgqZ2xvYmFsRGF0YSwgaW5wdXQsIDApKQogICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1
c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtOTc0LDcgKzk3NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgd2hpbGUgKG1h
dGNoUG9zaXRpb24gPCBpbnB1dC5sZW5ndGgoKSkgewogICAgICAgICAgICAgLy8gYS4gQ2FsbCBT
cGxpdE1hdGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0Lgog
ICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7Ci0gICAgICAgICAgICBpbnQgbXBv
cyA9IHJlZy0+bWF0Y2goKmdsb2JhbERhdGEsIGlucHV0LCBtYXRjaFBvc2l0aW9uLCAmb3ZlY3Rv
cik7CisgICAgICAgICAgICBpbnQgbXBvcyA9IHJlZy0+bWF0Y2goKmdsb2JhbERhdGEsIGlucHV0
LCBtYXRjaFBvc2l0aW9uLCBvdmVjdG9yKTsKICAgICAgICAgICAgIC8vIGIuIElmIHogaXMgZmFp
bHVyZSwgdGhlbiBsZXQgcSA9IHEgKyAxLgogICAgICAgICAgICAgaWYgKG1wb3MgPCAwKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKK3RlbXBsYXRlPFlh
cnJKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZT4KIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICBmcmllbmQgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFs
RGF0YSosIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
dW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIGJvb2wgaWdub3Jl
Q2FzZSwgYm9vbCBtdWx0aWxpbmUpOwogCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZXR1cm5SZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmV0dXJuUmVnaXN0ZXIyID0gQVJNUmVnaXN0ZXJzOjpyMTsKICNlbGlmIENQVShNSVBT
KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gTUlQU1JlZ2lzdGVyczo6YTA7
CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBNSVBTUmVnaXN0ZXJzOjphMTsK
QEAgLTYwLDYgKzYyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6dDU7
CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IE1JUFNSZWdp
c3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9
IE1JUFNSZWdpc3RlcnM6OnYxOwogI2VsaWYgQ1BVKFNINCkKICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBpbnB1dCA9IFNINFJlZ2lzdGVyczo6cjQ7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgaW5kZXggPSBTSDRSZWdpc3RlcnM6OnI1OwpAQCAtNzAsNiArNzMsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDEgPSBTSDRSZWdpc3RlcnM6OnIxOwogCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmV0dXJuUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOworICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9IFNINFJlZ2lzdGVyczo6cjE7CiAjZWxpZiBD
UFUoWDg2KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gWDg2UmVnaXN0ZXJz
OjplYXg7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBYODZSZWdpc3RlcnM6
OmVkeDsKQEAgLTgwLDYgKzg0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlbQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVnaXN0ZXJz
Ojplc2k7CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lz
dGVyMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OwogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBpbnB1dCA9IFg4NlJlZ2lzdGVyczo6ZWRpOwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGluZGV4ID0gWDg2UmVnaXN0ZXJzOjplc2k7CkBAIC05MCw2ICs5NSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwogCiAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlcjIgPSBYODZSZWdpc3RlcnM6
OmVkeDsKICNlbmRpZgogCiAgICAgdm9pZCBvcHRpbWl6ZUFsdGVybmF0aXZlKFBhdHRlcm5BbHRl
cm5hdGl2ZSogYWx0ZXJuYXRpdmUpCkBAIC0zMDUsNiArMzExLDY1IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAganVtcChBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBmcmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQqKSkpOwogICAgIH0KIAor
ICAgIHZvaWQgaW5pdENhbGxGcmFtZSgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBjYWxsRnJh
bWVTaXplID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplOworICAgICAgICBpZiAo
Y2FsbEZyYW1lU2l6ZSkKKyAgICAgICAgICAgIHN1YlB0cihJbW0zMihjYWxsRnJhbWVTaXplICog
c2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICB9CisgICAgdm9pZCBy
ZW1vdmVDYWxsRnJhbWUoKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2FsbEZyYW1lU2l6ZSA9
IG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZTsKKyAgICAgICAgaWYgKGNhbGxGcmFt
ZVNpemUpCisgICAgICAgICAgICBhZGRQdHIoSW1tMzIoY2FsbEZyYW1lU2l6ZSAqIHNpemVvZih2
b2lkKikpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gVXNlZCB0byBy
ZWNvcmQgc3VicGF0dGVycywgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGNvbXBpbGVNb2RlIGlz
IEluY2x1ZGVTdWJwYXR0ZXJucy4KKyAgICB2b2lkIHNldFN1YnBhdHRlcm5TdGFydChSZWdpc3Rl
cklEIHJlZywgdW5zaWduZWQgc3VicGF0dGVybikKKyAgICB7CisgICAgICAgIEFTU0VSVChzdWJw
YXR0ZXJuKTsKKyAgICAgICAgQVNTRVJUKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJu
cyk7CisgICAgICAgIHN0b3JlMzIocmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwg
MSkgKiBzaXplb2YoaW50KSkpOworICAgIH0KKyAgICB2b2lkIHNldFN1YnBhdHRlcm5FbmQoUmVn
aXN0ZXJJRCByZWcsIHVuc2lnbmVkIHN1YnBhdHRlcm4pCisgICAgeworICAgICAgICBBU1NFUlQo
c3VicGF0dGVybik7CisgICAgICAgIEFTU0VSVChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0
dGVybnMpOworICAgICAgICBzdG9yZTMyKHJlZywgQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVy
biA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN1YnBh
dHRlcm5TdGFydCh1bnNpZ25lZCBzdWJwYXR0ZXJuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN1
YnBhdHRlcm4pOworICAgICAgICBBU1NFUlQoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRl
cm5zKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwg
KHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YoaW50KSkpOworICAgIH0KKworICAgIC8vIFdlIHVz
ZSBvbmUgb2YgdGhyZWUgZGlmZmVyZW50IHN0cmF0ZWdpZXMgdG8gdHJhY2sgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IG1hdGNoLAorICAgIC8vIHdoaWxlIG1hdGNoaW5nLgorICAgIC8vIDEpIElm
IHRoZSBwYXR0ZXJuIGhhcyBhIGZpeGVkIHNpemUsIGRvIG5vdGhpbmchIC0gd2UgY2FsY3VsYXRl
IHRoZSB2YWx1ZSBsYXppbHkKKyAgICAvLyAgICBhdCB0aGUgZW5kIG9mIG1hdGNoaW5nLiAgVGhp
cyBpcyBpcnJlc3BlY3RpdmUgb2YgY29tcGlsZU1vZGUsIGFuZCBpbiB0aGlzIGNhc2UKKyAgICAv
LyAgICB0aGVzZSBtZXRob2RzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQuCisgICAgLy8gMikgSWYg
d2UncmUgY29tcGlsaW5nIEluY2x1ZGVTdWJwYXR0ZXJucywgJ291dHB1dCcgY29udGFpbnMgYSBw
b2ludGVyIHRvIGFuIG91dHB1dAorICAgIC8vICAgIHZlY3Rvciwgc3RvcmUgdGhlIG1hdGNoIHN0
YXJ0IGluIHRoZSBvdXRwdXQgdmVjdG9yLgorICAgIC8vIDMpIElmIHdlJ3JlIGNvbXBpbGluZyBN
YXRjaE9ubHksICdvdXRwdXQnIGlzIHVudXNlZCwgc3RvcmUgdGhlIG1hdGNoIHN0YXJ0IGRpcmVj
dGx5CisgICAgLy8gICAgaW4gdGhpcyByZWdpc3Rlci4KKyAgICB2b2lkIHNldE1hdGNoU3RhcnQo
UmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2JvZHkt
Pm1faGFzRml4ZWRTaXplKTsKKyAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJw
YXR0ZXJucykKKyAgICAgICAgICAgIHN0b3JlMzIocmVnLCBvdXRwdXQpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtb3ZlKHJlZywgb3V0cHV0KTsKKyAgICB9CisgICAgdm9pZCBnZXRNYXRj
aFN0YXJ0KFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4u
bV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSk7CisgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNs
dWRlU3VicGF0dGVybnMpCisgICAgICAgICAgICBsb2FkMzIob3V0cHV0LCByZWcpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtb3ZlKG91dHB1dCwgcmVnKTsKKyAgICB9CisKICAgICBlbnVt
IFlhcnJPcENvZGUgewogICAgICAgICAvLyBUaGVzZSBub2RlcyB3cmFwIGJvZHkgYWx0ZXJuYXRp
dmVzIC0gdGhvc2UgaW4gdGhlIG1haW4gZGlzanVuY3Rpb24sCiAgICAgICAgIC8vIHJhdGhlciB0
aGFuIHN1YnBhdHRlcm5zIG9yIGFzc2VydGlvbnMuIFRoZXNlIGFyZSBjaGFpbmVkIHRvZ2V0aGVy
IGluCkBAIC0xMDY5LDExICsxMTM0LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlbQogICAgICAgICBKdW1wTGlzdCBzYXZlU3RhcnRJbmRleDsKICAgICAgICAgSnVt
cExpc3QgZm91bmRFbmRpbmdOZXdMaW5lOwogCi0gICAgICAgIGlmIChtX3BhdHRlcm4ubV9ib2R5
LT5tX2hhc0ZpeGVkU2l6ZSkgewotICAgICAgICAgICAgbW92ZShpbmRleCwgbWF0Y2hQb3MpOwot
ICAgICAgICAgICAgc3ViMzIoSW1tMzIobV9jaGVja2VkKSwgbWF0Y2hQb3MpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCksIG1hdGNoUG9zKTsKKyAg
ICAgICAgQVNTRVJUKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSk7CisgICAgICAg
IGdldE1hdGNoU3RhcnQobWF0Y2hQb3MpOwogCiAgICAgICAgIHNhdmVTdGFydEluZGV4LmFwcGVu
ZChicmFuY2hUZXN0MzIoWmVybywgbWF0Y2hQb3MpKTsKICAgICAgICAgTGFiZWwgZmluZEJPTExv
b3AodGhpcyk7CkBAIC0xMDkzLDcgKzExNTUsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJp
dmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fbXVsdGlsaW5lICYmIHRl
cm0tPmFuY2hvcnMuYm9sQW5jaG9yKQogICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoYnJh
bmNoVGVzdDMyKE5vblplcm8sIG1hdGNoUG9zKSk7CiAKLSAgICAgICAgc3RvcmUzMihtYXRjaFBv
cywgQWRkcmVzcyhvdXRwdXQpKTsKKyAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4ubV9ib2R5LT5t
X2hhc0ZpeGVkU2l6ZSk7CisgICAgICAgIHNldE1hdGNoU3RhcnQobWF0Y2hQb3MpOwogCiAgICAg
ICAgIG1vdmUoaW5kZXgsIG1hdGNoUG9zKTsKIApAQCAtMTMxNSw4ICsxMzc4LDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgIC8vIElm
IHdlIGdldCBoZXJlLCB0aGUgcHJpb3IgYWx0ZXJuYXRpdmUgbWF0Y2hlZCAtIHJldHVybiBzdWNj
ZXNzLgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgc3Rh
Y2sgcG9pbnRlciB0byByZW1vdmUgdGhlIHBhdHRlcm4ncyBmcmFtZS4KLSAgICAgICAgICAgICAg
ICBpZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQotICAgICAgICAgICAgICAg
ICAgICBhZGRQdHIoSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplICogc2l6
ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICByZW1v
dmVDYWxsRnJhbWUoKTsKIAogICAgICAgICAgICAgICAgIC8vIExvYWQgYXBwcm9wcmlhdGUgdmFs
dWVzIGludG8gdGhlIHJldHVybiByZWdpc3RlciBhbmQgdGhlIGZpcnN0IG91dHB1dAogICAgICAg
ICAgICAgICAgIC8vIHNsb3QsIGFuZCByZXR1cm4uIEluIHRoZSBjYXNlIG9mIHBhdHRlcm4gd2l0
aCBhIGZpeGVkIHNpemUsIHdlIHdpbGwKQEAgLTEzMjYsMTAgKzEzODgsMTQgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgICAgICBtb3Zl
KGluZGV4LCByZXR1cm5SZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmlvckFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIo
SW1tMzIocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJldHVyblJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihyZXR1cm5SZWdpc3Rlciwgb3V0cHV0KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmV0dXJuUmVnaXN0ZXIsIG91dHB1dCk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dCksIHJldHVyblJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBzdG9yZTMyKGlu
ZGV4LCBBZGRyZXNzKG91dHB1dCwgNCkpOworICAgICAgICAgICAgICAgICAgICBnZXRNYXRjaFN0
YXJ0KHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0g
SW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBB
ZGRyZXNzKG91dHB1dCwgNCkpOworICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJl
Z2lzdGVyMik7CisKICAgICAgICAgICAgICAgICBnZW5lcmF0ZVJldHVybigpOwogCiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGl2aWRlIGJldHdlZW4gdGhlIHRhaWwgb2YgdGhlIHBy
aW9yIGFsdGVybmF0aXZlLCBhYm92ZSwgYW5kCkBAIC0xNTEyLDE3ICsxNTc4LDE2IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogY291bGQgYXZvaWQgb2Zmc2V0dGluZyB0aGlzIHZhbHVlIGluIEpJVCBjb2RlLCBhcHBs
eQogICAgICAgICAgICAgICAgIC8vIG9mZnNldHMgb25seSBhZnRlcndhcmRzLCBhdCB0aGUgcG9p
bnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKICAgICAgICAgICAgICAgICAvLyBiZWluZyBhY2Nlc3Nl
ZC4KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGludCBvZmZzZXRJZCA9IHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCA8PCAx
OworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0g
SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dE9mZnNl
dCA9IHRlcm0tPmlucHV0UG9zaXRpb24gLSBtX2NoZWNrZWQ7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCAtPSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5j
dGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRleFRlbXBvcmFyeSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihpbnB1dE9mZnNldCksIGluZGV4
VGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXhUZW1wb3Jh
cnksIEFkZHJlc3Mob3V0cHV0LCBvZmZzZXRJZCAqIHNpemVvZihpbnQpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhUZW1wb3JhcnksIHRlcm0tPnBh
cmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQsIG9mZnNl
dElkICogc2l6ZW9mKGludCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRl
cm5TdGFydChpbmRleCwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNTQ4
LDE1ICsxNjEzLDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0K
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogY291bGQgYXZvaWQgb2Zmc2V0dGluZyB0aGlzIHZh
bHVlIGluIEpJVCBjb2RlLCBhcHBseQogICAgICAgICAgICAgICAgIC8vIG9mZnNldHMgb25seSBh
ZnRlcndhcmRzLCBhdCB0aGUgcG9pbnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKICAgICAgICAgICAg
ICAgICAvLyBiZWluZyBhY2Nlc3NlZC4KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVy
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXRJZCA9ICh0ZXJtLT5wYXJlbnRo
ZXNlcy5zdWJwYXR0ZXJuSWQgPDwgMSkgKyAxOworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5j
YXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dE9mZnNldCA9IHRlcm0tPmlucHV0UG9zaXRpb24gLSBtX2No
ZWNrZWQ7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4VGVtcG9yYXJ5LCBBZGRyZXNzKG91
dHB1dCwgb2Zmc2V0SWQgKiBzaXplb2YoaW50KSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3VicGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0
dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCwgb2Zmc2V0SWQgKiBzaXplb2YoaW50
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChpbmRleCwgdGVy
bS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgcGFyZW50aGVzZXMgYXJlIHF1YW50aWZpZWQgR3JlZWR5IHRo
ZW4gYWRkIGEgbGFiZWwgdG8ganVtcCBiYWNrCkBAIC0xNjQ2LDkgKzE3MTAsOSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGNhc2UgT3BNYXRjaEZhaWxlZDoKLSAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJu
Lm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQotICAgICAgICAgICAgICAgICAgICBhZGRQdHIoSW1t
MzIobV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplICogc2l6ZW9mKHZvaWQqKSksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigt
MSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDYWxsRnJhbWUoKTsK
KyAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKVdURjo6bm90Rm91bmQp
LCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCks
IHJldHVyblJlZ2lzdGVyMik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVSZXR1cm4oKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE3NDMsMTQgKzE4MDcsMTQg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3Rv
cmUgdGhlIHN0YXJ0IGluZGV4LCBmb3IgdXNlIGlmIHdlIG1hdGNoLgogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA9PSAx
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNz
KG91dHB1dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0
KGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTMy
KHJlZ1QwLCBBZGRyZXNzKG91dHB1dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4MzYsNyArMTkwMCw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICAvLyBkaXNq
dW5jdGlvbiBpcyAwLCBlLmcuIC9hKnxiLykuCiAgICAgICAgICAgICAgICAgaWYgKG5lZWRzVG9V
cGRhdGVNYXRjaFN0YXJ0ICYmIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IDEpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gaW5kZXggaXMgYWxyZWFkeSBpbmNyZW1lbnRlZCBieSAxLCBz
byBqdXN0IHN0b3JlIGl0IG5vdyEKLSAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwg
QWRkcmVzcyhvdXRwdXQpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRl
eCk7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzVG9VcGRhdGVNYXRjaFN0YXJ0ID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xODYwLDExICsxOTI0LDExIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KIAogICAgICAgICAgICAgICAgIGlmIChuZWVk
c1RvVXBkYXRlTWF0Y2hTdGFydCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVy
bi5tX2JvZHktPm1fbWluaW11bVNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTMy
KGluZGV4LCBBZGRyZXNzKG91dHB1dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0
Y2hTdGFydChpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAg
c3ViMzIoSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSksIHJlZ1QwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Mob3V0cHV0KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtMTg4Niw5ICsxOTUwLDkgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgIC8v
IHJ1biBhbnkgbWF0Y2hlcywgYW5kIG5lZWQgdG8gcmV0dXJuIGEgZmFpbHVyZSBzdGF0ZSBmcm9t
IEpJVCBjb2RlLgogICAgICAgICAgICAgICAgIG1hdGNoRmFpbGVkLmxpbmsodGhpcyk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQotICAg
ICAgICAgICAgICAgICAgICBhZGRQdHIoSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJh
bWVTaXplICogc2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigtMSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICByZW1vdmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoKHZvaWQqKVdURjo6bm90Rm91bmQpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJldHVyblJlZ2lzdGVyMik7CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVSZXR1cm4oKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTIwNTUsMTIgKzIxMTksMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZh
dGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eUNvdW50
ID09IDEpOwogCiAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGJhY2t0cmFjayB0
byB0aGlzcG9pbnQgaWYgY2FwdHVyaW5nIG9yIGdyZWVkeS4KLSAgICAgICAgICAgICAgICBpZiAo
dGVybS0+Y2FwdHVyZSgpIHx8IHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5
KSB7CisgICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUg
PT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB8fCB0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
ckdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmso
dGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FwdHVyaW5nLCBjbGVhciB0aGUg
Y2FwdHVyZSAod2Ugb25seSBuZWVkIHRvIHJlc2V0IHN0YXJ0KS4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKC0xKSwgQWRkcmVzcyhvdXRwdXQsICh0ZXJtLT5wYXJlbnRoZXNlcy5zdWJw
YXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
dGVybS0+Y2FwdHVyZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU3VicGF0dGVyblN0YXJ0KHRlcm0tPnBhcmVudGhl
c2VzLnN1YnBhdHRlcm5JZCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgR3JlZWR5LCBq
dW1wIHRvIHRoZSBlbmQuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5
cGUgPT0gUXVhbnRpZmllckdyZWVkeSkgewpAQCAtMjQ1MCw5ICsyNTE0LDExIEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KFg4NlJlZ2lzdGVyczo6ZWJwLCAyICogc2l6ZW9mKHZvaWQqKSksIGlucHV0KTsKICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWJwLCAzICogc2l6ZW9mKHZvaWQqKSksIGlu
ZGV4KTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWJwLCA0ICogc2l6
ZW9mKHZvaWQqKSksIGxlbmd0aCk7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhYODZSZWdpc3Rl
cnM6OmVicCwgNSAqIHNpemVvZih2b2lkKikpLCBvdXRwdXQpOworICAgICAgICBpZiAoY29tcGls
ZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KFg4NlJlZ2lzdGVyczo6ZWJwLCA1ICogc2l6ZW9mKHZvaWQqKSksIG91dHB1dCk7CiAgICAgI2Vs
c2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWJwLCAyICogc2l6ZW9m
KHZvaWQqKSksIG91dHB1dCk7CisgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3Vi
cGF0dGVybnMpCisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAs
IDIgKiBzaXplb2Yodm9pZCopKSwgb3V0cHV0KTsKICAgICAjZW5kaWYKICNlbGlmIENQVShBUk0p
CiAgICAgICAgIHB1c2goQVJNUmVnaXN0ZXJzOjpyNCk7CkBAIC0yNDYxLDcgKzI1MjcsOCBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAjaWYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKICAgICAgICAgcHVzaChBUk1SZWdpc3RlcnM6OnI4KTsgLy8gc2NyYXRjaCByZWdp
c3RlcgogI2VuZGlmCi0gICAgICAgIG1vdmUoQVJNUmVnaXN0ZXJzOjpyMywgb3V0cHV0KTsKKyAg
ICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgICAg
IG1vdmUoQVJNUmVnaXN0ZXJzOjpyMywgb3V0cHV0KTsKICNlbGlmIENQVShTSDQpCiAgICAgICAg
IHB1c2goU0g0UmVnaXN0ZXJzOjpyMTEpOwogICAgICAgICBwdXNoKFNINFJlZ2lzdGVyczo6cjEz
KTsKQEAgLTI1MTEsMTggKzI1NzgsMjAgQEAgcHVibGljOgogICAgICAgICBnZW5lcmF0ZUVudGVy
KCk7CiAKICAgICAgICAgSnVtcCBoYXNJbnB1dCA9IGNoZWNrSW5wdXQoKTsKLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIoLTEpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigodm9pZCopV1RGOjpub3RGb3VuZCksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMCksIHJldHVyblJlZ2lzdGVyMik7CiAgICAgICAgIGdlbmVyYXRl
UmV0dXJuKCk7CiAgICAgICAgIGhhc0lucHV0LmxpbmsodGhpcyk7CiAKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMTsgKytpKQot
ICAgICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwgKGkg
PDwgMSkgKiBzaXplb2YoaW50KSkpOworICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVk
ZVN1YnBhdHRlcm5zKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9w
YXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCisgICAgICAgICAgICAgICAgc3RvcmUz
MihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwgKGkgPDwgMSkgKiBzaXplb2YoaW50
KSkpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0Zp
eGVkU2l6ZSkKLSAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0cHV0KSk7Cisg
ICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKIAotICAgICAgICBpZiAobV9wYXR0ZXJu
Lm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQotICAgICAgICAgICAgc3ViUHRyKEltbTMyKG1fcGF0
dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSAqIHNpemVvZih2b2lkKikpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgICAgIGluaXRDYWxsRnJhbWUoKTsKIAogICAgICAgICAvLyBDb21w
aWxlIHRoZSBwYXR0ZXJuIHRvIHRoZSBpbnRlcm5hbCAnWWFyck9wJyByZXByZXNlbnRhdGlvbi4K
ICAgICAgICAgb3BDb21waWxlQm9keShtX3BhdHRlcm4ubV9ib2R5KTsKQEAgLTI1NDAsMTAgKzI2
MDksMTggQEAgcHVibGljOgogICAgICAgICAvLyBMaW5rICYgZmluYWxpemUgdGhlIGNvZGUuCiAg
ICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqZ2xvYmFsRGF0YSwgdGhpcywgUkVHRVhQX0NP
REVfSUQpOwogICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtEYXRhTGFiZWxzKGxpbmtC
dWZmZXIpOwotICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAgICAgICAgIGpp
dE9iamVjdC5zZXQ4Qml0Q29kZShsaW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZShsaW5rQnVmZmVyLmZpbmFs
aXplQ29kZSgpKTsKKworICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gTWF0Y2hPbmx5KSB7Cisg
ICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKKyAgICAgICAgICAgICAgICBqaXRP
YmplY3Quc2V0OEJpdENvZGVNYXRjaE9ubHkobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZU1h
dGNoT25seShsaW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQorICAgICAgICAgICAgICAgIGppdE9i
amVjdC5zZXQ4Qml0Q29kZShsaW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0MTZCaXRDb2RlKGxpbmtCdWZmZXIu
ZmluYWxpemVDb2RlKCkpOworICAgICAgICB9CiAgICAgICAgIGppdE9iamVjdC5zZXRGYWxsQmFj
ayhtX3Nob3VsZEZhbGxCYWNrKTsKICAgICB9CiAKQEAgLTI1NzcsOSArMjY1NCwxMiBAQCBwcml2
YXRlOgogICAgIEJhY2t0cmFja2luZ1N0YXRlIG1fYmFja3RyYWNraW5nU3RhdGU7CiB9OwogCi12
b2lkIGppdENvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIFlhcnJDaGFyU2l6ZSBjaGFyU2l6
ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBZYXJyQ29kZUJsb2NrJiBqaXRPYmplY3QpCit2
b2lkIGppdENvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIFlhcnJDaGFyU2l6ZSBjaGFyU2l6
ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBZYXJyQ29kZUJsb2NrJiBqaXRPYmplY3QsIFlh
cnJKSVRDb21waWxlTW9kZSBtb2RlKQogewotICAgIFlhcnJHZW5lcmF0b3IocGF0dGVybiwgY2hh
clNpemUpLmNvbXBpbGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKKyAgICBpZiAobW9kZSA9PSBN
YXRjaE9ubHkpCisgICAgICAgIFlhcnJHZW5lcmF0b3I8TWF0Y2hPbmx5PihwYXR0ZXJuLCBjaGFy
U2l6ZSkuY29tcGlsZShnbG9iYWxEYXRhLCBqaXRPYmplY3QpOworICAgIGVsc2UKKyAgICAgICAg
WWFyckdlbmVyYXRvcjxJbmNsdWRlU3VicGF0dGVybnM+KHBhdHRlcm4sIGNoYXJTaXplKS5jb21w
aWxlKGdsb2JhbERhdGEsIGppdE9iamVjdCk7CiB9CiAKIH19CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5oCShyZXZpc2lvbiAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDggQEAKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCiAKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKLSNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgor
I2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUg
IllhcnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgpAQCAtNDgsOCArNDksMTcgQEAgY2xh
c3MgRXhlY3V0YWJsZVBvb2w7CiBuYW1lc3BhY2UgWWFyciB7CiAKIGNsYXNzIFlhcnJDb2RlQmxv
Y2sgewotICAgIHR5cGVkZWYgaW50ICgqWWFyckpJVENvZGU4KShjb25zdCBMQ2hhciogaW5wdXQs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KSBZQVJSX0NBTEw7
Ci0gICAgdHlwZWRlZiBpbnQgKCpZYXJySklUQ29kZTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KSBZQVJSX0NBTEw7Cisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGU4KShj
b25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCog
b3V0cHV0KSBZQVJSX0NBTEw7CisgICAgdHlwZWRlZiBNYXRjaFJlc3VsdCAoKllhcnJKSVRDb2Rl
MTYpKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwg
aW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsKKyAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJ
VENvZGVNYXRjaE9ubHk4KShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgpIFlBUlJfQ0FMTDsKKyAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJ
VENvZGVNYXRjaE9ubHkxNikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoKSBZQVJSX0NBTEw7CisjZWxzZQorICAgIHR5cGVkZWYgRW5jb2RlZE1hdGNo
UmVzdWx0ICgqWWFyckpJVENvZGU4KShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KSBZQVJSX0NBTEw7CisgICAgdHlwZWRlZiBF
bmNvZGVkTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KSBZQVJSX0NBTEw7Cisg
ICAgdHlwZWRlZiBFbmNvZGVkTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25seTgpKGNv
bnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkgWUFSUl9D
QUxMOworICAgIHR5cGVkZWYgRW5jb2RlZE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGVNYXRjaE9u
bHkxNikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
KSBZQVJSX0NBTEw7CisjZW5kaWYKIAogcHVibGljOgogICAgIFlhcnJDb2RlQmxvY2soKQpAQCAt
NjMsNDMgKzczLDY3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RmFsbEJhY2soYm9vbCBmYWxs
YmFjaykgeyBtX25lZWRGYWxsQmFjayA9IGZhbGxiYWNrOyB9CiAgICAgYm9vbCBpc0ZhbGxCYWNr
KCkgeyByZXR1cm4gbV9uZWVkRmFsbEJhY2s7IH0KKwogICAgIGJvb2wgaGFzOEJpdENvZGUoKSB7
IHJldHVybiBtX3JlZjguc2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGUoKSB7IHJldHVy
biBtX3JlZjE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXI6
OkNvZGVSZWYgcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1h
Y3JvQXNzZW1ibGVyOjpDb2RlUmVmIHJlZikgeyBtX3JlZjE2ID0gcmVmOyB9CisgICAgdm9pZCBz
ZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQor
ICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWYpIHsgbV9yZWYx
NiA9IHJlZjsgfQorCisgICAgYm9vbCBoYXM4Qml0Q29kZU1hdGNoT25seSgpIHsgcmV0dXJuIG1f
bWF0Y2hPbmx5OC5zaXplKCk7IH0KKyAgICBib29sIGhhczE2Qml0Q29kZU1hdGNoT25seSgpIHsg
cmV0dXJuIG1fbWF0Y2hPbmx5MTYuc2l6ZSgpOyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNo
T25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1h
dGNoT25seTsgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHkxNiA9IG1hdGNoT25seTsgfQogCi0gICAg
aW50IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoLCBpbnQqIG91dHB1dCkKKyAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFy
KiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGUoKSk7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFlhcnJKSVRDb2RlOD4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIE1hdGNo
UmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8WWFyckpJVENvZGU4PihtX3JlZjguY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpKTsKICAgICB9CiAK
LSAgICBpbnQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIGludCogb3V0cHV0KQorICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3Qg
VUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFlhcnJKSVRDb2RlMTY+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpOworICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxZYXJySklUQ29kZTE2PihtX3JlZjE2LmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0KSk7
CisgICAgfQorCisgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
OEJpdENvZGVNYXRjaE9ubHkoKSk7CisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdChyZWludGVy
cHJldF9jYXN0PFlhcnJKSVRDb2RlTWF0Y2hPbmx5OD4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCkpOworICAgIH0KKworICAgIE1h
dGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25s
eSgpKTsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8WWFyckpJ
VENvZGVNYXRjaE9ubHkxNj4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgpKTsKICAgICB9CisKICNpZiBFTkFCTEUoUkVHRVhQX1RS
QUNJTkcpCiAgICAgdm9pZCAqZ2V0QWRkcigpIHsgcmV0dXJuIG1fcmVmLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAg
ICAgbV9yZWY4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCk7CisgICAgICAgIG1fcmVmMTYgPSBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYoKTsKKyAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmKCk7CisgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYoKTsKKyAgICAgICAgbV9uZWVkRmFsbEJhY2sgPSBmYWxzZTsKKyAgICB9CisKIHByaXZh
dGU6Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OkNvZGVSZWYgbV9yZWY4OwotICAgIE1hY3JvQXNzZW1i
bGVyOjpDb2RlUmVmIG1fcmVmMTY7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fcmVmODsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9yZWYxNjsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbV9tYXRjaE9ubHk4OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX21hdGNoT25s
eTE2OwogICAgIGJvb2wgbV9uZWVkRmFsbEJhY2s7CiB9OwogCi12b2lkIGppdENvbXBpbGUoWWFy
clBhdHRlcm4mLCBZYXJyQ2hhclNpemUsIEpTR2xvYmFsRGF0YSosIFlhcnJDb2RlQmxvY2smIGpp
dE9iamVjdCk7Ci0KLWlubGluZSBpbnQgZXhlY3V0ZShZYXJyQ29kZUJsb2NrJiBqaXRPYmplY3Qs
IGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50
KiBvdXRwdXQpCi17Ci0gICAgcmV0dXJuIGppdE9iamVjdC5leGVjdXRlKGlucHV0LCBzdGFydCwg
bGVuZ3RoLCBvdXRwdXQpOwotfQotCi1pbmxpbmUgaW50IGV4ZWN1dGUoWWFyckNvZGVCbG9jayYg
aml0T2JqZWN0LCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIGludCogb3V0cHV0KQotewotICAgIHJldHVybiBqaXRPYmplY3QuZXhlY3V0ZShpbnB1
dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0KTsKLX0KK2VudW0gWWFyckpJVENvbXBpbGVNb2RlIHsK
KyAgICBNYXRjaE9ubHksCisgICAgSW5jbHVkZVN1YnBhdHRlcm5zCit9Owordm9pZCBqaXRDb21w
aWxlKFlhcnJQYXR0ZXJuJiwgWWFyckNoYXJTaXplLCBKU0dsb2JhbERhdGEqLCBZYXJyQ29kZUJs
b2NrJiBqaXRPYmplY3QsIFlhcnJKSVRDb21waWxlTW9kZSA9IEluY2x1ZGVTdWJwYXR0ZXJucyk7
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDExMjQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTAzLTI4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdo
QGFwcGxlLmNvbT4KKworICAgICAgICBZYXJyOiBpZiB3ZSdyZSBub3QgdXNpbmcgdGhlIG91dHB1
dCBhcnJheSwgZG9uJ3QgcG9wdWxhdGUgaXQhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MjUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9NYXRjaFJlc3Vs
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy95YXJyL1lhcnJKSVQuaDog
QWRkZWQuCisgICAgICAgICAgICAtIEFkZGVkIGZvcndhcmRpbmcgaGVhZGVycy4KKwogMjAxMi0w
My0yNiAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIGxheWVyLT5jbGlwUmVjdCgpIGlzIG5vdCBpbml0aWFsaXplZCBmb3IgbGF5ZXJz
IHRoYXQgY3JlYXRlIGEgcmVuZGVyU3VyZmFjZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL01hdGNoUmVzdWx0LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL01hdGNoUmVz
dWx0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9N
YXRjaFJlc3VsdF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX01hdGNoUmVzdWx0X2gKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9NYXRjaFJlc3VsdC5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy95YXJyL1lhcnJKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy95YXJyL1lhcnJKSVQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3lhcnIvWWFyckpJVC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfWWFyckpJVF9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX1lhcnJKSVRfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lh
cnJKSVQuaD4KKyNlbmRpZgorCg==
</data>
<flag name="commit-queue"
          id="138638"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134403</attachid>
            <date>2012-03-28 14:30:50 -0700</date>
            <delta_ts>2012-03-28 14:58:09 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>82519.2.patch</filename>
            <type>text/plain</type>
            <size>57645</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyNDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEyLTAzLTI4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBZYXJyOiBpZiB3ZSdyZSBub3QgdXNpbmcgdGhlIG91dHB1dCBhcnJheSwgZG9u
J3QgcG9wdWxhdGUgaXQhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MjUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB2YXJpYW50IG9mIHRoZSBtYXRjaCBtZXRob2QgdG8gUmVnRXhwIHRo
YXQgcmV0dXJucyBhIE1hdGNoUmVzdWx0LAorICAgICAgICBhbmQgbW9kaWZ5IFlhcnJKSVQgdG8g
YmUgYWJsZSB0byBjb21waWxlIGNvZGUgdGhhdCBkb2Vzbid0IHVzZSBhbiBvdXRwdXQgdmVjdG9y
LgorCisgICAgICAgIFRoaXMgaXMgYSAzJSBwcm9ncmVzc2lvbiBvbiB2OC1yZWdleHAuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAgICAgLSBNb3ZlZCBNYXRjaFJlc3VsdCBpbnRvIGl0cyBvd24gaGVhZGVyLgorICAgICAgICAq
IGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgICAgICAtIEFkZGVk
IG1pc3NpbmcgaW5jbHVkZS4KKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVzdWx0Lmg6IEFkZGVk
LgorICAgICAgICAoTWF0Y2hSZXN1bHQ6Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKE1hdGNoUmVz
dWx0KToKKyAgICAgICAgKE1hdGNoUmVzdWx0OjpmYWlsZWQpOgorICAgICAgICAoTWF0Y2hSZXN1
bHQ6Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAoTWF0Y2hSZXN1bHQ6OmVtcHR5KToKKyAgICAg
ICAgICAgIC0gTW92ZWQgTWF0Y2hSZXN1bHQgaW50byBpdHMgb3duIGhlYWRlci4KKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaCk6CisgICAgICAgICAgICAtIENoYW5nZWQgZHVlIHRvIGV4ZWN1dGUgJiBy
ZXByZXNlbnRhdGlvbiBjaGFuZ2VzLgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVNYXRj
aE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25s
eSk6CisgICAgICAgICAgICAtIEFkZGVkIGhlbHBlciB0byBjb21waWxlIE1hdGNoT25seSBjb2Rl
LgorICAgICAgICAoSlNDOjpSZWdFeHA6OmludmFsaWRhdGVDb2RlKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpSZWdF
eHA6OnByaW50VHJhY2VEYXRhKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCBkdWUgcmVwcmVzZW50
YXRpb24gY2hhbmdlcy4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAoUmVn
RXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNDb2RlKToKKyAgICAgICAgICAgIC0gTWFk
ZSBZYXJyQ29kZUJsb2NrIGEgbWVtYmVyLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6CisgICAgICAgICAgICAtIEFkZGVkIG5vLW92
ZWN0b3IgZm9ybS4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0aWVzKToKKyAg
ICAgICAgICAgIC0gTWF0Y2ggbm93IHRha2VzIGEgcmVmZXJlbmNlIHRvIG92ZWN0b3IsIG5vdCBh
IHBvaW50ZXIuCisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICAgICAtIE1vdmVkIE1hdGNoUmVzdWx0IGludG8gaXRzIG93biBoZWFkZXIu
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNTcGxpdCk6CisgICAgICAgICAgICAtIE1hdGNoIG5vdyB0YWtlcyBhIHJl
ZmVyZW5jZSB0byBvdmVjdG9yLCBub3QgYSBwb2ludGVyLgorICAgICAgICAqIHRlc3RSZWdFeHAu
Y3BwOgorICAgICAgICAodGVzdE9uZVJlZ0V4cCk6CisgICAgICAgICAgICAtIE1hdGNoIG5vdyB0
YWtlcyBhIHJlZmVyZW5jZSB0byBvdmVjdG9yLCBub3QgYSBwb2ludGVyLgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChZYXJyKToKKyAgICAgICAgKFlhcnJHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjppbml0Q2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6cmVtb3ZlQ2FsbEZyYW1lKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6c2V0U3VicGF0dGVyblN0YXJ0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6c2V0U3VicGF0dGVybkVuZCk6CisgICAgICAg
IChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNsZWFyU3VicGF0dGVyblN0YXJ0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6c2V0TWF0Y2hTdGFydCk6CisgICAgICAgIChK
U0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdldE1hdGNoU3RhcnQpOgorICAgICAgICAgICAgLSBB
ZGRlZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGludGVybWVkaWF0ZSBhY2Nlc3MgdG8gb3V0cHV0Lgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZURvdFN0YXJFbmNsb3N1
cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAg
ICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJhY2t0cmFjayk6CisgICAgICAgIChKU0M6
OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRlRW50ZXIpOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyR2VuZXJhdG9yOjpjb21waWxlKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2Ug
dGhlIG5ldyBoZWxwZXJzLCBvbmx5IGdlbmVyYXRlIHN1YnBhdHRlcm5zIGlmIEluY2x1ZGVTdWJw
YXR0ZXJucy4KKyAgICAgICAgKEpTQzo6WWFycjo6aml0Q29tcGlsZSk6CisgICAgICAgICAgICAt
IE5lZWRzIHRvIHRlbXBsYXRlIG9mIE1hdGNoT25seSBvciBJbmNsdWRlU3VicGF0dGVybnMuCisg
ICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChZYXJyQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGUpOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyQ29kZUJsb2NrOjpoYXM4Qml0Q29kZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJDb2RlQmxvY2s6OmhhczE2Qml0Q29kZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6
OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJDb2RlQmxvY2s6OmNsZWFyKToKKyAgICAgICAgICAgIC0gQWRkZWQgYSBzZWNvbmQgc2V0
IG9mIENvZGVSZWZzLCBzbyB0aGF0IHdlIGNhbiBjb21waWxlIFJleEV4cHMgd2l0aC93aXRob3V0
IHN1YnBhdHRlcm4gbWF0Y2hpbmcuCisKIDIwMTItMDMtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgT1NSIGV4aXQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBh
biBleGl0IGZvciB2YXJpYWJsZXMgb2YgaW5saW5lZXMgaWYgdGhlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RSZWdFeHAuY3BwCShyZXZpc2lvbiAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBA
QCBzdGF0aWMgYm9vbCB0ZXN0T25lUmVnRXhwKEpTR2xvYmFsRGF0YSYgCiAgICAgYm9vbCByZXN1
bHQgPSB0cnVlOwogICAgIFZlY3RvcjxpbnQsIDMyPiBvdXRWZWN0b3I7CiAgICAgb3V0VmVjdG9y
LnJlc2l6ZShyZWdFeHBUZXN0LT5leHBlY3RWZWN0b3Iuc2l6ZSgpKTsKLSAgICBpbnQgbWF0Y2hS
ZXN1bHQgPSByZWdleHAtPm1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cFRlc3QtPnN1YmplY3QsIHJl
Z0V4cFRlc3QtPm9mZnNldCwgJm91dFZlY3Rvcik7CisgICAgaW50IG1hdGNoUmVzdWx0ID0gcmVn
ZXhwLT5tYXRjaChnbG9iYWxEYXRhLCByZWdFeHBUZXN0LT5zdWJqZWN0LCByZWdFeHBUZXN0LT5v
ZmZzZXQsIG91dFZlY3Rvcik7CiAKICAgICBpZiAobWF0Y2hSZXN1bHQgIT0gcmVnRXhwVGVzdC0+
cmVzdWx0KSB7CiAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDExMjE0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4
LDYgQEAgRVhQT1JUUwogICAgID9sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgP2xvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgP2xvY2tDb3VudEBK
U0xvY2tASlNDQEBTQUhYWgotICAgID9tYXRjaEBSZWdFeHBASlNDQEBRQUVIQUFWSlNHbG9iYWxE
YXRhQDJAQUJWVVN0cmluZ0AyQElQQVY/JFZlY3RvckBIJDBDQUBAV1RGQEBAWgogICAgID9tYXRl
cmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFBRVhBQVZKU0dsb2JhbERhdGFAMkBA
WgogICAgID9tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVAV1RGQEBZQU5YWgogICAgID9tb250
aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcs
NiArMzM3LDcgQEAKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAq
LzsgfTsKIAkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwNEY1MDMxNDNDRTFD
MTAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5z
aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2
NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyog
TWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2M0IyM0UwMEZDNjExODkw
MDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6
ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLzsg
fTsKIAkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY3NUVGQjE1
MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAqLzsgfTsKQEAgLTM1MCw3
ICszNTEsNyBAQAogCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjdEMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwICovOyB9OwogCQk4Njcw
NEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI3RTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCN0YxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwICovOyB9OwotCQk4NjcwNEI4NzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAq
LzsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDYzLDcgKzQ2NCw3IEBACiAJCUE3NTIxRTEzMTQyOTE2OUEw
MDNDOEQwQyAvKiBDYXJkU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzUyMUUxMjE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NTcwNkRFMTE4QTJC
Q0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJ
VEFyaXRobWV0aWMzMl82NC5jcHAgKi87IH07CiAJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAv
KiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9j
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1
QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi87IH07CisJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIw
NSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc2RjU0
QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8q
IEpJVFdyaXRlQmFycmllci5oICovOyB9OwogCQlBNzgxRTM1OTE0MTk3MEM3MDAwOTREOTAgLyog
U3RvcmFnZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3ODFFMzU4MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdlQmFycmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjYxMTFE
MTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRl
ci5oICovOyB9OwpAQCAtOTc2LDYgKzk3Nyw3IEBACiAJCTg2MDNDRUYzMTRDNzU0NjQwMEFFNTlF
MyAvKiBDb2RlUHJvZmlsaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
ZGVQcm9maWxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNEY0RjIxNDNB
NkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDaGFuZ2VMb2c7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2MDRGNTAzMTQzQ0UxQzEwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxUaGlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRj
aFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRjaFJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQg
LyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIu
Y3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2Fs
aXplVUNTMi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyQ2Fub25pY2Fs
aXplVUNTMi5oOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NSwxNSArMTQ4NywxMiBAQAogCQkxNDI5RDkyQzBFRDIy
RDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQkwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZv
cnQuaCAqLywKLQkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAgKi8sCi0JCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuaCAqLywKLQkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5jcHAgKi8sCi0JCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVN
YXAuaCAqLywKIAkJCQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAgKi8sCiAJCQkJQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVB
bGxvY2F0b3IuaCAqLywKIAkJCQk4NkRCNjQ2MzBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCAqLywKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkxNDI5RDkyRDBFRDIyRDcw
MDBCODk2MTkgLyogSklULmNwcCAqLywKIAkJCQkxNDI5RDkyRTBFRDIyRDcwMDBCODk2MTkgLyog
SklULmggKi8sCiAJCQkJODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMu
Y3BwICovLApAQCAtMTUwMSw3ICsxNTAwLDEwIEBACiAJCQkJODZDQzg1QTIwRUU3OUI3NDAwMjg4
NjgyIC8qIEpJVENhbGwuY3BwICovLAogCQkJCTE0NkZFNTExMTFBNzEwNDMwMDg3QUU2NiAvKiBK
SVRDYWxsMzJfNjQuY3BwICovLAogCQkJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRD
b2RlLmggKi8sCisJCQkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9u
RWZmb3J0LmggKi8sCiAJCQkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5o
ICovLAorCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAq
LywKKwkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAog
CQkJCTg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVNZXRob2RzLmggKi8sCiAJ
CQkJQkNERDUxRTkwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9wY29kZXMuY3BwICovLAogCQkJCUE3
MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovLApAQCAtMTg1
MSw2ICsxODUzLDcgQEAKIAkJCQlBN0UyRUE2OTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBh
cnNlci5oICovLAogCQkJCUY2OTJBODY4MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuY3BwICov
LAogCQkJCUY2OTJBODY5MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuaCAqLywKKwkJCQk4NjEy
RTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLywKIAkJCQlGNjkyQTg2QTAy
NTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5jcHAgKi8sCiAJCQkJRjY5MkE4NkIwMjU1NTk3
RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuaCAqLywKIAkJCQk5MDIxM0UzQjEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi8sCkBAIC0yNTEyLDYgKzI1MTUsNyBAQAogCQkJ
CTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCREMyQzE1MUZERTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTEyMTQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcl9oCiAjZGVmaW5lIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJfaAogCisjaW5j
bHVkZSAiQXNzZW1ibGVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRjaFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGNoUmVzdWx0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRjaFJlc3VsdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWF0Y2hS
ZXN1bHRfaAorI2RlZmluZSBNYXRjaFJlc3VsdF9oCisKK3R5cGVkZWYgdWludDY0X3QgRW5jb2Rl
ZE1hdGNoUmVzdWx0OworCitzdHJ1Y3QgTWF0Y2hSZXN1bHQgeworICAgIEFMV0FZU19JTkxJTkUg
TWF0Y2hSZXN1bHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQorICAgICAgICA6IHN0YXJ0KHN0
YXJ0KQorICAgICAgICAsIGVuZChlbmQpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IEFM
V0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQoRW5jb2RlZE1hdGNoUmVzdWx0IGVuY29kZWQpCisgICAg
eworICAgICAgICB1bmlvbiB1IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGVuY29kZWQ7CisgICAg
ICAgICAgICBzdHJ1Y3QgcyB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHN0YXJ0OworICAgICAg
ICAgICAgICAgIHNpemVfdCBlbmQ7CisgICAgICAgICAgICB9IHNwbGl0OworICAgICAgICB9IHZh
bHVlOworICAgICAgICB2YWx1ZS5lbmNvZGVkID0gZW5jb2RlZDsKKyAgICAgICAgc3RhcnQgPSB2
YWx1ZS5zcGxpdC5zdGFydDsKKyAgICAgICAgZW5kID0gdmFsdWUuc3BsaXQuZW5kOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCisgICAgewor
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQoV1RGOjpub3RGb3VuZCwgMCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSBvcGVyYXRvciBib29sKCkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGFydCAhPSBXVEY6Om5vdEZvdW5kOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBl
bXB0eSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOworICAgIH0KKworICAg
IHNpemVfdCBzdGFydDsKKyAgICBzaXplX3QgZW5kOworfTsKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDExMjE0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxOCwxMCArMjE4LDYgQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6
b3V0cAogI2VuZGlmCiAKIHN0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbiB7Ci0jaWYgRU5BQkxF
KFlBUlJfSklUKQotICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwotI2Vu
ZGlmCi0gICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRlY29kZTsK
IH07CiAKIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCkBAIC0yNzksMjMgKzI3NSwy
MiBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZShKU0dsb2JhbERhdGEqIGdsb2JhCiAgICAgfQogICAg
IEFTU0VSVChtX251bVN1YnBhdHRlcm5zID09IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyk7CiAK
LSAgICBpZiAoIW1fcmVwcmVzZW50YXRpb24pIHsKKyAgICBpZiAoIWhhc0NvZGUoKSkgewogICAg
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBOb3RDb21waWxlZCk7Ci0gICAgICAgIG1fcmVwcmVzZW50
YXRpb24gPSBhZG9wdFB0cihuZXcgUmVnRXhwUmVwcmVzZW50YXRpb24pOwogICAgICAgICBnbG9i
YWxEYXRhLT5yZWdFeHBDYWNoZSgpLT5hZGRUb1N0cm9uZ0NhY2hlKHRoaXMpOwogICAgICAgICBt
X3N0YXRlID0gQnl0ZUNvZGU7CiAgICAgfQogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgIGlm
ICghcGF0dGVybi5tX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMgJiYgZ2xvYmFsRGF0YS0+Y2FuVXNl
SklUKCkpIHsKLSAgICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBjaGFyU2l6ZSwgZ2xv
YmFsRGF0YSwgbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlKTsKKyAgICAgICAgWWFy
cjo6aml0Q29tcGlsZShwYXR0ZXJuLCBjaGFyU2l6ZSwgZ2xvYmFsRGF0YSwgbV9yZWdFeHBKSVRD
b2RlKTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCi0gICAgICAgIGlmICghbV9yZXByZXNl
bnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJhY2soKSkKKyAgICAgICAgaWYgKCFtX3Jl
Z0V4cEpJVENvZGUuaXNGYWxsQmFjaygpKQogICAgICAgICAgICAgbV9zdGF0ZSA9IEpJVENvZGU7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fc3RhdGUgPSBCeXRlQ29kZTsKICNlbHNlCi0g
ICAgICAgIGlmICghbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJhY2so
KSkgeworICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZS5pc0ZhbGxCYWNrKCkpIHsKICAgICAg
ICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zMDUsMjIgKzMwMCwxOCBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZShKU0dsb2JhbERhdGEq
IGdsb2JhCiAgICAgVU5VU0VEX1BBUkFNKGNoYXJTaXplKTsKICNlbmRpZgogCi0gICAgbV9yZXBy
ZXNlbnRhdGlvbi0+bV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4s
ICZnbG9iYWxEYXRhLT5tX3JlZ0V4cEFsbG9jYXRvcik7CisgICAgbV9yZWdFeHBCeXRlY29kZSA9
IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4sICZnbG9iYWxEYXRhLT5tX3JlZ0V4cEFsbG9jYXRv
cik7CiB9CiAKIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7Ci0gICAgLy8gSWYgdGhl
IHN0YXRlIGlzIE5vdENvbXBpbGVkIG9yIFBhcnNlRXJyb3IsIHRoZW4gdGhlcmUgaXMgbm8gcmVw
cmVzZW50YXRpb24uCi0gICAgLy8gSWYgdGhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiwgYW5kIHRo
ZSBzdGF0ZSBtdXN0IGJlIGVpdGhlciBKSVRDb2RlIG9yIEJ5dGVDb2RlLgotICAgIEFTU0VSVCgh
IW1fcmVwcmVzZW50YXRpb24gPT0gKG1fc3RhdGUgPT0gSklUQ29kZSB8fCBtX3N0YXRlID09IEJ5
dGVDb2RlKSk7Ci0gICAgCi0gICAgaWYgKG1fcmVwcmVzZW50YXRpb24pIHsKKyAgICBpZiAoaGFz
Q29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAhPSBK
SVRDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoKGNoYXJTaXplID09IFlh
cnI6OkNoYXI4KSAmJiAobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLmhhczhCaXRD
b2RlKCkpKQorICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdF
eHBKSVRDb2RlLmhhczhCaXRDb2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVn
RXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFy
cjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgpKSkKICAgICAgICAg
ICAgIHJldHVybjsKICNlbHNlCiAgICAgICAgIHJldHVybjsKQEAgLTMzMCw3ICszMjEsNyBAQCB2
b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KEpTR2xvYmFsCiAgICAgY29tcGlsZSgmZ2xv
YmFsRGF0YSwgY2hhclNpemUpOwogfQogCi1pbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0
b3I8aW50LCAzMj4qIG92ZWN0b3IpCitpbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8
aW50LCAzMj4mIG92ZWN0b3IpCiB7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIG1f
cnRNYXRjaENhbGxDb3VudCsrOwpAQCAtMzQwLDMwICszMzEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0
Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYQogICAgIGNvbXBpbGVJZk5lY2Vzc2FyeShnbG9iYWxE
YXRhLCBzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpOwogCiAgICAgaW50
IG9mZnNldFZlY3RvclNpemUgPSAobV9udW1TdWJwYXR0ZXJucyArIDEpICogMjsKLSAgICBpbnQq
IG9mZnNldFZlY3RvcjsKLSAgICBWZWN0b3I8aW50LCAzMj4gbm9uUmV0dXJuZWRPdmVjdG9yOwot
ICAgIGlmIChvdmVjdG9yKSB7Ci0gICAgICAgIG92ZWN0b3ItPnJlc2l6ZShvZmZzZXRWZWN0b3JT
aXplKTsKLSAgICAgICAgb2Zmc2V0VmVjdG9yID0gb3ZlY3Rvci0+ZGF0YSgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG5vblJldHVybmVkT3ZlY3Rvci5yZXNpemUob2Zmc2V0VmVjdG9yU2l6ZSk7
Ci0gICAgICAgIG9mZnNldFZlY3RvciA9IG5vblJldHVybmVkT3ZlY3Rvci5kYXRhKCk7Ci0gICAg
fQotICAgIEFTU0VSVChvZmZzZXRWZWN0b3IpOworICAgIG92ZWN0b3IucmVzaXplKG9mZnNldFZl
Y3RvclNpemUpOworICAgIGludCogb2Zmc2V0VmVjdG9yID0gb3ZlY3Rvci5kYXRhKCk7CiAKICAg
ICBpbnQgcmVzdWx0OwogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBpZiAobV9zdGF0ZSA9PSBK
SVRDb2RlKSB7CiAgICAgICAgIGlmIChzLmlzOEJpdCgpKQotICAgICAgICAgICAgcmVzdWx0ID0g
WWFycjo6ZXhlY3V0ZShtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFj
dGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rvcik7CisgICAgICAg
ICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0
YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpLnN0YXJ0OwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXN1bHQgPSBZYXJyOjpleGVjdXRlKG1fcmVwcmVzZW50YXRpb24tPm1f
cmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCks
IG9mZnNldFZlY3Rvcik7CisgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUuZXhl
Y3V0ZShzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVj
dG9yKS5zdGFydDsKICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCiAgICAgICAgIG1hdGNoQ29t
cGFyZVdpdGhJbnRlcnByZXRlcihzLCBzdGFydE9mZnNldCwgb2Zmc2V0VmVjdG9yLCByZXN1bHQp
OwogI2VuZGlmCiAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gWWFycjo6aW50
ZXJwcmV0KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMsIHN0YXJ0
T2Zmc2V0LCBzLmxlbmd0aCgpLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4ob2Zmc2V0VmVj
dG9yKSk7CisgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVjb2Rl
LmdldCgpLCBzLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCo+KG9mZnNldFZlY3RvcikpOwogCiAgICAgLy8gRklYTUU6IFRoZSBZQVJSIGVuZ2luZSBz
aG91bGQgaGFuZGxlIHVuc2lnbmVkIG9yIHNpemVfdCBsZW5ndGggbWF0Y2hlcy4KICAgICAvLyBU
aGUgWUFSUiBJbnRlcnByZXRlciBpcyAidW5zaWduZWQiIGNsZWFuLCB3aGlsZSB0aGUgWUFSUiBK
SVQgaGFzbid0IGJlZW4gYWRkcmVzc2VkLgpAQCAtNDA0LDEyICszODcsMTExIEBAIGludCBSZWdF
eHA6Om1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGEKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Cit2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBZYXJyOjpZYXJyUGF0dGVybiBw
YXR0ZXJuKG1fcGF0dGVyblN0cmluZywgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSwgJm1fY29u
c3RydWN0aW9uRXJyb3IpOworICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBtX3N0YXRlID0gUGFyc2VFcnJvcjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQobV9udW1TdWJwYXR0ZXJucyA9PSBwYXR0
ZXJuLm1fbnVtU3VicGF0dGVybnMpOworCisgICAgaWYgKCFoYXNDb2RlKCkpIHsKKyAgICAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gTm90Q29tcGlsZWQpOworICAgICAgICBnbG9iYWxEYXRhLT5yZWdF
eHBDYWNoZSgpLT5hZGRUb1N0cm9uZ0NhY2hlKHRoaXMpOworICAgICAgICBtX3N0YXRlID0gQnl0
ZUNvZGU7CisgICAgfQorCisjaWYgRU5BQkxFKFlBUlJfSklUKQorICAgIGlmICghcGF0dGVybi5t
X2NvbnRhaW5zQmFja3JlZmVyZW5jZXMgJiYgZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBjaGFyU2l6ZSwgZ2xvYmFsRGF0YSwgbV9y
ZWdFeHBKSVRDb2RlLCBZYXJyOjpNYXRjaE9ubHkpOworI2lmIEVOQUJMRShZQVJSX0pJVF9ERUJV
RykKKyAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUuaXNGYWxsQmFjaygpKQorICAgICAgICAg
ICAgbV9zdGF0ZSA9IEpJVENvZGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RhdGUg
PSBCeXRlQ29kZTsKKyNlbHNlCisgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJh
Y2soKSkgeworICAgICAgICAgICAgbV9zdGF0ZSA9IEpJVENvZGU7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNo
YXJTaXplKTsKKyNlbmRpZgorCisgICAgbV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21w
aWxlKHBhdHRlcm4sICZnbG9iYWxEYXRhLT5tX3JlZ0V4cEFsbG9jYXRvcik7Cit9CisKK3ZvaWQg
UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGUoKSkg
eworI2lmIEVOQUJMRShZQVJSX0pJVCkKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
OCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmICht
X3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpKQorICAgICAgICAgICAgcmV0
dXJuOworI2Vsc2UKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgfQorCisgICAgY29tcGls
ZU1hdGNoT25seSgmZ2xvYmFsRGF0YSwgY2hhclNpemUpOworfQorCitNYXRjaFJlc3VsdCBSZWdF
eHA6Om1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgc3RhcnRPZmZzZXQpCit7CisjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQorICAgIG1f
cnRNYXRjaENhbGxDb3VudCsrOworI2VuZGlmCisKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBQYXJz
ZUVycm9yKTsKKyAgICBjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoZ2xvYmFsRGF0YSwgcy5p
czhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KTsKKworI2lmIEVOQUJMRShZQVJS
X0pJVCkKKyAgICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7CisgICAgICAgIE1hdGNoUmVzdWx0
IHJlc3VsdCA9IHMuaXM4Qml0KCkgPworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlLmV4ZWN1
dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSkgOgorICAgICAgICAg
ICAgbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQs
IHMubGVuZ3RoKCkpOworI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKKyAgICAgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgICAgICBtX3J0TWF0Y2hGb3VuZENvdW50Kys7CisjZW5kaWYKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisjZW5kaWYKKworICAgIGludCBvZmZzZXRWZWN0b3JT
aXplID0gKG1fbnVtU3VicGF0dGVybnMgKyAxKSAqIDI7CisgICAgaW50KiBvZmZzZXRWZWN0b3I7
CisgICAgVmVjdG9yPGludCwgMzI+IG5vblJldHVybmVkT3ZlY3RvcjsKKyAgICBub25SZXR1cm5l
ZE92ZWN0b3IucmVzaXplKG9mZnNldFZlY3RvclNpemUpOworICAgIG9mZnNldFZlY3RvciA9IG5v
blJldHVybmVkT3ZlY3Rvci5kYXRhKCk7CisgICAgaW50IHIgPSBZYXJyOjppbnRlcnByZXQobV9y
ZWdFeHBCeXRlY29kZS5nZXQoKSwgcywgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQqPihvZmZzZXRWZWN0b3IpKTsKKyNpZiBSRUdFWFBfRlVOQ19URVNU
X0RBVEFfR0VOCisgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpLT5vdXRw
dXRPbmVUZXN0KHRoaXMsIHMsIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIHJlc3VsdCk7Cisj
ZW5kaWYKKworICAgIGlmIChyID49IDApIHsKKyNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCisg
ICAgICAgIG1fcnRNYXRjaEZvdW5kQ291bnQrKzsKKyNlbmRpZgorICAgICAgICByZXR1cm4gTWF0
Y2hSZXN1bHQociwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG9mZnNldFZlY3RvcilbMV0p
OworICAgIH0KKworICAgIHJldHVybiBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7Cit9CisKIHZvaWQg
UmVnRXhwOjppbnZhbGlkYXRlQ29kZSgpCiB7Ci0gICAgaWYgKCFtX3JlcHJlc2VudGF0aW9uKQor
ICAgIGlmICghaGFzQ29kZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENv
bXBpbGVkOwotICAgIG1fcmVwcmVzZW50YXRpb24uY2xlYXIoKTsKKyAgICBtX3JlZ0V4cEpJVENv
ZGUuY2xlYXIoKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlLmNsZWFyKCk7CiB9CiAKICNpZiBFTkFC
TEUoWUFSUl9KSVRfREVCVUcpCkBAIC00MjgsNyArNTEwLDcgQEAgdm9pZCBSZWdFeHA6Om1hdGNo
Q29tcGFyZVdpdGhJbnRlcnByZXRlcgogICAgIGZvciAodW5zaWduZWQgaiA9IDAsIGkgPSAwOyBp
IDwgbV9udW1TdWJwYXR0ZXJucyArIDE7IGogKz0gMiwgaSsrKQogICAgICAgICBpbnRlcnByZXRl
ck9mZnNldFZlY3RvcltqXSA9IC0xOwogCi0gICAgaW50ZXJwcmV0ZXJSZXN1bHQgPSBZYXJyOjpp
bnRlcnByZXQobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBCeXRlY29kZS5nZXQoKSwgcywgc3Rh
cnRPZmZzZXQsIHMubGVuZ3RoKCksIGludGVycHJldGVyT2Zmc2V0VmVjdG9yKTsKKyAgICBpbnRl
cnByZXRlclJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBz
LCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgaW50ZXJwcmV0ZXJPZmZzZXRWZWN0b3IpOwogCiAg
ICAgaWYgKGppdFJlc3VsdCAhPSBpbnRlcnByZXRlclJlc3VsdCkKICAgICAgICAgZGlmZmVyZW5j
ZXMrKzsKQEAgLTQ3Nyw3ICs1NTksNyBAQCB2b2lkIFJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aElu
dGVycHJldGVyCiAgICAgICAgIHNucHJpbnRmKGZvcm1hdHRlZFBhdHRlcm4sIDQxLCAocGF0dExl
biA8PSAzOCkgPyAiLyUuMzhzLyIgOiAiLyUuMzZzLi4uIiwgcmF3UGF0dGVybik7CiAKICNpZiBF
TkFCTEUoWUFSUl9KSVQpCi0gICAgICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGNvZGVCbG9jayA9
IG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZTsKKyAgICAgICAgWWFycjo6WWFyckNv
ZGVCbG9jayYgY29kZUJsb2NrID0gbV9yZWdFeHBKSVRDb2RlOwogCiAgICAgICAgIGNvbnN0IHNp
emVfdCBqaXRBZGRyU2l6ZSA9IDIwOwogICAgICAgICBjaGFyIGppdEFkZHJbaml0QWRkclNpemVd
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDEx
MjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiwxNCArMjIsMTkgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVn
RXhwX2gKIAotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIK
ICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAieWFyci9ZYXJyLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKFlBUlJfSklU
KQorI2luY2x1ZGUgInlhcnIvWWFyckpJVC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uOwpAQCAtNTMsMTIgKzU4LDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9j
b25zdHJ1Y3Rpb25FcnJvciAmJiBtX2ZsYWdzICE9IEludmFsaWRGbGFnczsgfQogICAgICAgICBj
b25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlvbkVy
cm9yOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKEpTR2xvYmFsRGF0
YSYsIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+
KiBvdmVjdG9yID0gMCk7CisgICAgICAgIGludCBtYXRjaChKU0dsb2JhbERhdGEmLCBjb25zdCBV
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CisgICAgICAgIE1hdGNoUmVzdWx0IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcm
LCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5z
KCkgY29uc3QgeyByZXR1cm4gbV9udW1TdWJwYXR0ZXJuczsgfQogCiAgICAgICAgIGJvb2wgaGFz
Q29kZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uOwor
ICAgICAgICAgICAgcmV0dXJuIG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGludmFsaWRhdGVDb2RlKCk7CkBAIC05NSw2ICsxMDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBjb21waWxlKEpTR2xvYmFsRGF0YSosIFlhcnI6OllhcnJD
aGFyU2l6ZSk7CiAgICAgICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYs
IFlhcnI6OllhcnJDaGFyU2l6ZSk7CiAKKyAgICAgICAgdm9pZCBjb21waWxlTWF0Y2hPbmx5KEpT
R2xvYmFsRGF0YSosIFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgICAgIHZvaWQgY29tcGlsZUlm
TmVjZXNzYXJ5TWF0Y2hPbmx5KEpTR2xvYmFsRGF0YSYsIFlhcnI6OllhcnJDaGFyU2l6ZSk7CisK
ICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCiAgICAgICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0
aEludGVycHJldGVyKGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0
VmVjdG9yLCBpbnQgaml0UmVzdWx0KTsKICNlbmRpZgpAQCAtMTA4LDcgKzExNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRDb3VudDsKICNlbmRp
ZgogCi0gICAgICAgIE93blB0cjxSZWdFeHBSZXByZXNlbnRhdGlvbj4gbV9yZXByZXNlbnRhdGlv
bjsKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisgICAgICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9y
ZWdFeHBKSVRDb2RlOworI2VuZGlmCisgICAgICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRl
cm4+IG1fcmVnRXhwQnl0ZWNvZGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAg
ICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4cCosIEpT
U3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3RvciA9
IDApOworICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRhJiwgUmVn
RXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqKiBv
dmVjdG9yKTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYs
IFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCk7CiAK
ICAgICAgICAgdm9pZCBzZXRNdWx0aWxpbmUoYm9vbCBtdWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUg
PSBtdWx0aWxpbmU7IH0KICAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X211bHRpbGluZTsgfQpAQCAtMTAyLDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICov
CiAgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9y
bU1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5n
KiBzdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92
ZWN0b3IpCiAgICAgewotICAgICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKGdsb2Jh
bERhdGEsIGlucHV0LCBzdGFydE9mZnNldCwgJm1fb3ZlY3Rvcik7CisgICAgICAgIGludCBwb3Np
dGlvbiA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwgaW5wdXQsIHN0YXJ0T2Zmc2V0LCBtX292
ZWN0b3IpOwogCiAgICAgICAgIGlmIChvdmVjdG9yKQogICAgICAgICAgICAgKm92ZWN0b3IgPSBt
X292ZWN0b3IuZGF0YSgpOwpAQCAtMTE5LDYgKzEyMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQocG9zaXRpb24sIGVuZCk7CiAgICAgfQorICAgIEFM
V0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4cCogcmVnRXhwLCBKU1N0cmluZyogc3RyaW5n
LCBjb25zdCBVU3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0T2Zmc2V0KQorICAgIHsKKyAgICAgICAg
TWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwLT5tYXRjaChnbG9iYWxEYXRhLCBpbnB1dCwgc3Rh
cnRPZmZzZXQpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgbV9jYWNoZWRSZXN1
bHQucmVjb3JkKGdsb2JhbERhdGEsIHRoaXMsIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmNwcAkocmV2aXNpb24gMTEyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlBbGxQcm9wZXJ0CiAKICAgICBpZiAodW5z
aWduZWQgbnVtU3VicGF0dGVybnMgPSBtX3JlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewogICAg
ICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgIGludCBwb3Np
dGlvbiA9IG1fcmVnRXhwLT5tYXRjaChleGVjLT5nbG9iYWxEYXRhKCksIG1faW5wdXQtPnZhbHVl
KGV4ZWMpLCBtX3Jlc3VsdC5zdGFydCwgJnN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgaW50
IHBvc2l0aW9uID0gbV9yZWdFeHAtPm1hdGNoKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9pbnB1dC0+
dmFsdWUoZXhlYyksIG1fcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6
ZV90Pihwb3NpdGlvbikgPT0gbV9yZXN1bHQuc3RhcnQpOwogICAgICAgICBBU1NFUlQobV9yZXN1
bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOwog
ICAgICAgICBBU1NFUlQobV9yZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0
dGVyblJlc3VsdHNbMV0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMTIxNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjggKzI2LDYg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0gICAgc3RydWN0IE1hdGNoUmVzdWx0IHsKLSAg
ICAgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQp
Ci0gICAgICAgICAgICA6IHN0YXJ0KHN0YXJ0KQotICAgICAgICAgICAgLCBlbmQoZW5kKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgTWF0Y2hSZXN1
bHQgZmFpbGVkKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KFdU
Rjo6bm90Rm91bmQsIDApOwotICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0
b3IgYm9vbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydCAhPSBXVEY6Om5v
dEZvdW5kOwotICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbXB0eSgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgc2l6ZV90IHN0YXJ0OwotICAgICAgICBzaXplX3QgZW5kOwotICAgIH07Ci0gICAgCiAg
ICAgY2xhc3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAvLyBjLiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgIjAiLAogICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1d
OiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgogICAgICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCi0g
ICAgICAgICAgICBpZiAocmVnLT5tYXRjaCgqZ2xvYmFsRGF0YSwgaW5wdXQsIDApIDwgMCkKKyAg
ICAgICAgICAgIGlmICghcmVnLT5tYXRjaCgqZ2xvYmFsRGF0YSwgaW5wdXQsIDApKQogICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1
c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtOTc0LDcgKzk3NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgd2hpbGUgKG1h
dGNoUG9zaXRpb24gPCBpbnB1dC5sZW5ndGgoKSkgewogICAgICAgICAgICAgLy8gYS4gQ2FsbCBT
cGxpdE1hdGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0Lgog
ICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7Ci0gICAgICAgICAgICBpbnQgbXBv
cyA9IHJlZy0+bWF0Y2goKmdsb2JhbERhdGEsIGlucHV0LCBtYXRjaFBvc2l0aW9uLCAmb3ZlY3Rv
cik7CisgICAgICAgICAgICBpbnQgbXBvcyA9IHJlZy0+bWF0Y2goKmdsb2JhbERhdGEsIGlucHV0
LCBtYXRjaFBvc2l0aW9uLCBvdmVjdG9yKTsKICAgICAgICAgICAgIC8vIGIuIElmIHogaXMgZmFp
bHVyZSwgdGhlbiBsZXQgcSA9IHEgKyAxLgogICAgICAgICAgICAgaWYgKG1wb3MgPCAwKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKK3RlbXBsYXRlPFlh
cnJKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZT4KIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICBmcmllbmQgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFs
RGF0YSosIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
dW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIGJvb2wgaWdub3Jl
Q2FzZSwgYm9vbCBtdWx0aWxpbmUpOwogCkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZXR1cm5SZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmV0dXJuUmVnaXN0ZXIyID0gQVJNUmVnaXN0ZXJzOjpyMTsKICNlbGlmIENQVShNSVBT
KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gTUlQU1JlZ2lzdGVyczo6YTA7
CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBNSVBTUmVnaXN0ZXJzOjphMTsK
QEAgLTYwLDYgKzYyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6dDU7
CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IE1JUFNSZWdp
c3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9
IE1JUFNSZWdpc3RlcnM6OnYxOwogI2VsaWYgQ1BVKFNINCkKICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBpbnB1dCA9IFNINFJlZ2lzdGVyczo6cjQ7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgaW5kZXggPSBTSDRSZWdpc3RlcnM6OnI1OwpAQCAtNzAsNiArNzMsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDEgPSBTSDRSZWdpc3RlcnM6OnIxOwogCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmV0dXJuUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOworICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9IFNINFJlZ2lzdGVyczo6cjE7CiAjZWxpZiBD
UFUoWDg2KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gWDg2UmVnaXN0ZXJz
OjplYXg7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBYODZSZWdpc3RlcnM6
OmVkeDsKQEAgLTgwLDYgKzg0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlbQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVnaXN0ZXJz
Ojplc2k7CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lz
dGVyMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OwogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBpbnB1dCA9IFg4NlJlZ2lzdGVyczo6ZWRpOwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGluZGV4ID0gWDg2UmVnaXN0ZXJzOjplc2k7CkBAIC05MCw2ICs5NSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwogCiAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlcjIgPSBYODZSZWdpc3RlcnM6
OmVkeDsKICNlbmRpZgogCiAgICAgdm9pZCBvcHRpbWl6ZUFsdGVybmF0aXZlKFBhdHRlcm5BbHRl
cm5hdGl2ZSogYWx0ZXJuYXRpdmUpCkBAIC0zMDUsNiArMzExLDY1IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAganVtcChBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBmcmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQqKSkpOwogICAgIH0KIAor
ICAgIHZvaWQgaW5pdENhbGxGcmFtZSgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBjYWxsRnJh
bWVTaXplID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplOworICAgICAgICBpZiAo
Y2FsbEZyYW1lU2l6ZSkKKyAgICAgICAgICAgIHN1YlB0cihJbW0zMihjYWxsRnJhbWVTaXplICog
c2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICB9CisgICAgdm9pZCBy
ZW1vdmVDYWxsRnJhbWUoKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2FsbEZyYW1lU2l6ZSA9
IG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZTsKKyAgICAgICAgaWYgKGNhbGxGcmFt
ZVNpemUpCisgICAgICAgICAgICBhZGRQdHIoSW1tMzIoY2FsbEZyYW1lU2l6ZSAqIHNpemVvZih2
b2lkKikpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gVXNlZCB0byBy
ZWNvcmQgc3VicGF0dGVycywgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGNvbXBpbGVNb2RlIGlz
IEluY2x1ZGVTdWJwYXR0ZXJucy4KKyAgICB2b2lkIHNldFN1YnBhdHRlcm5TdGFydChSZWdpc3Rl
cklEIHJlZywgdW5zaWduZWQgc3VicGF0dGVybikKKyAgICB7CisgICAgICAgIEFTU0VSVChzdWJw
YXR0ZXJuKTsKKyAgICAgICAgQVNTRVJUKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJu
cyk7CisgICAgICAgIHN0b3JlMzIocmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwg
MSkgKiBzaXplb2YoaW50KSkpOworICAgIH0KKyAgICB2b2lkIHNldFN1YnBhdHRlcm5FbmQoUmVn
aXN0ZXJJRCByZWcsIHVuc2lnbmVkIHN1YnBhdHRlcm4pCisgICAgeworICAgICAgICBBU1NFUlQo
c3VicGF0dGVybik7CisgICAgICAgIEFTU0VSVChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0
dGVybnMpOworICAgICAgICBzdG9yZTMyKHJlZywgQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVy
biA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpKTsKKyAgICB9CisgICAgdm9pZCBjbGVhclN1YnBh
dHRlcm5TdGFydCh1bnNpZ25lZCBzdWJwYXR0ZXJuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN1
YnBhdHRlcm4pOworICAgICAgICBBU1NFUlQoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRl
cm5zKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwg
KHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YoaW50KSkpOworICAgIH0KKworICAgIC8vIFdlIHVz
ZSBvbmUgb2YgdGhyZWUgZGlmZmVyZW50IHN0cmF0ZWdpZXMgdG8gdHJhY2sgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IG1hdGNoLAorICAgIC8vIHdoaWxlIG1hdGNoaW5nLgorICAgIC8vIDEpIElm
IHRoZSBwYXR0ZXJuIGhhcyBhIGZpeGVkIHNpemUsIGRvIG5vdGhpbmchIC0gd2UgY2FsY3VsYXRl
IHRoZSB2YWx1ZSBsYXppbHkKKyAgICAvLyAgICBhdCB0aGUgZW5kIG9mIG1hdGNoaW5nLiBUaGlz
IGlzIGlycmVzcGVjdGl2ZSBvZiBjb21waWxlTW9kZSwgYW5kIGluIHRoaXMgY2FzZQorICAgIC8v
ICAgIHRoZXNlIG1ldGhvZHMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZC4KKyAgICAvLyAyKSBJZiB3
ZSdyZSBjb21waWxpbmcgSW5jbHVkZVN1YnBhdHRlcm5zLCAnb3V0cHV0JyBjb250YWlucyBhIHBv
aW50ZXIgdG8gYW4gb3V0cHV0CisgICAgLy8gICAgdmVjdG9yLCBzdG9yZSB0aGUgbWF0Y2ggc3Rh
cnQgaW4gdGhlIG91dHB1dCB2ZWN0b3IuCisgICAgLy8gMykgSWYgd2UncmUgY29tcGlsaW5nIE1h
dGNoT25seSwgJ291dHB1dCcgaXMgdW51c2VkLCBzdG9yZSB0aGUgbWF0Y2ggc3RhcnQgZGlyZWN0
bHkKKyAgICAvLyAgICBpbiB0aGlzIHJlZ2lzdGVyLgorICAgIHZvaWQgc2V0TWF0Y2hTdGFydChS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLm1fYm9keS0+
bV9oYXNGaXhlZFNpemUpOworICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBh
dHRlcm5zKQorICAgICAgICAgICAgc3RvcmUzMihyZWcsIG91dHB1dCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1vdmUocmVnLCBvdXRwdXQpOworICAgIH0KKyAgICB2b2lkIGdldE1hdGNo
U3RhcnQoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5t
X2JvZHktPm1faGFzRml4ZWRTaXplKTsKKyAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1
ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgICAgIGxvYWQzMihvdXRwdXQsIHJlZyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1vdmUob3V0cHV0LCByZWcpOworICAgIH0KKwogICAgIGVudW0g
WWFyck9wQ29kZSB7CiAgICAgICAgIC8vIFRoZXNlIG5vZGVzIHdyYXAgYm9keSBhbHRlcm5hdGl2
ZXMgLSB0aG9zZSBpbiB0aGUgbWFpbiBkaXNqdW5jdGlvbiwKICAgICAgICAgLy8gcmF0aGVyIHRo
YW4gc3VicGF0dGVybnMgb3IgYXNzZXJ0aW9ucy4gVGhlc2UgYXJlIGNoYWluZWQgdG9nZXRoZXIg
aW4KQEAgLTEwNjksMTEgKzExMzQsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtCiAgICAgICAgIEp1bXBMaXN0IHNhdmVTdGFydEluZGV4OwogICAgICAgICBKdW1w
TGlzdCBmb3VuZEVuZGluZ05ld0xpbmU7CiAKLSAgICAgICAgaWYgKG1fcGF0dGVybi5tX2JvZHkt
Pm1faGFzRml4ZWRTaXplKSB7Ci0gICAgICAgICAgICBtb3ZlKGluZGV4LCBtYXRjaFBvcyk7Ci0g
ICAgICAgICAgICBzdWIzMihJbW0zMihtX2NoZWNrZWQpLCBtYXRjaFBvcyk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0KSwgbWF0Y2hQb3MpOworICAg
ICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKTsKKyAgICAgICAg
Z2V0TWF0Y2hTdGFydChtYXRjaFBvcyk7CiAKICAgICAgICAgc2F2ZVN0YXJ0SW5kZXguYXBwZW5k
KGJyYW5jaFRlc3QzMihaZXJvLCBtYXRjaFBvcykpOwogICAgICAgICBMYWJlbCBmaW5kQk9MTG9v
cCh0aGlzKTsKQEAgLTEwOTMsNyArMTE1NSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZW0KICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9tdWx0aWxpbmUgJiYgdGVy
bS0+YW5jaG9ycy5ib2xBbmNob3IpCiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChicmFu
Y2hUZXN0MzIoTm9uWmVybywgbWF0Y2hQb3MpKTsKIAotICAgICAgICBzdG9yZTMyKG1hdGNoUG9z
LCBBZGRyZXNzKG91dHB1dCkpOworICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2JvZHktPm1f
aGFzRml4ZWRTaXplKTsKKyAgICAgICAgc2V0TWF0Y2hTdGFydChtYXRjaFBvcyk7CiAKICAgICAg
ICAgbW92ZShpbmRleCwgbWF0Y2hQb3MpOwogCkBAIC0xMzE1LDggKzEzNzgsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAgICAgLy8gSWYg
d2UgZ2V0IGhlcmUsIHRoZSBwcmlvciBhbHRlcm5hdGl2ZSBtYXRjaGVkIC0gcmV0dXJuIHN1Y2Nl
c3MuCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSBzdGFj
ayBwb2ludGVyIHRvIHJlbW92ZSB0aGUgcGF0dGVybidzIGZyYW1lLgotICAgICAgICAgICAgICAg
IGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxGcmFtZVNpemUpCi0gICAgICAgICAgICAgICAg
ICAgIGFkZFB0cihJbW0zMihtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxGcmFtZVNpemUgKiBzaXpl
b2Yodm9pZCopKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIHJlbW92
ZUNhbGxGcmFtZSgpOwogCiAgICAgICAgICAgICAgICAgLy8gTG9hZCBhcHByb3ByaWF0ZSB2YWx1
ZXMgaW50byB0aGUgcmV0dXJuIHJlZ2lzdGVyIGFuZCB0aGUgZmlyc3Qgb3V0cHV0CiAgICAgICAg
ICAgICAgICAgLy8gc2xvdCwgYW5kIHJldHVybi4gSW4gdGhlIGNhc2Ugb2YgcGF0dGVybiB3aXRo
IGEgZml4ZWQgc2l6ZSwgd2Ugd2lsbApAQCAtMTMyNiwxMCArMTM4OCwxNCBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAgICAgICAgIG1vdmUo
aW5kZXgsIHJldHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW9yQWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmV0dXJuUmVnaXN0ZXIpOwot
ICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKHJldHVyblJlZ2lzdGVyLCBvdXRwdXQpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihyZXR1cm5SZWdpc3Rlciwgb3V0cHV0KTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Mob3V0cHV0KSwgcmV0dXJuUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5k
ZXgsIEFkZHJlc3Mob3V0cHV0LCA0KSk7CisgICAgICAgICAgICAgICAgICAgIGdldE1hdGNoU3Rh
cnQocmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJ
bmNsdWRlU3VicGF0dGVybnMpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFk
ZHJlc3Mob3V0cHV0LCA0KSk7CisgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVn
aXN0ZXIyKTsKKwogICAgICAgICAgICAgICAgIGdlbmVyYXRlUmV0dXJuKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXZpZGUgYmV0d2VlbiB0aGUgdGFpbCBvZiB0aGUgcHJp
b3IgYWx0ZXJuYXRpdmUsIGFib3ZlLCBhbmQKQEAgLTE1MTIsMTcgKzE1NzgsMTYgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBjb3VsZCBhdm9pZCBvZmZzZXR0aW5nIHRoaXMgdmFsdWUgaW4gSklUIGNvZGUsIGFwcGx5
CiAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0cyBvbmx5IGFmdGVyd2FyZHMsIGF0IHRoZSBwb2lu
dCB0aGUgcmVzdWx0cyBhcnJheSBpcwogICAgICAgICAgICAgICAgIC8vIGJlaW5nIGFjY2Vzc2Vk
LgotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW50IG9mZnNldElkID0gdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkIDw8IDE7
CisgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJ
bmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0T2Zmc2V0
ID0gdGVybS0+aW5wdXRQb3NpdGlvbiAtIG1fY2hlY2tlZDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0IC09IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhU
ZW1wb3JhcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleFRlbXBvcmFy
eSwgQWRkcmVzcyhvdXRwdXQsIG9mZnNldElkICogc2l6ZW9mKGludCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFydChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFy
ZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCwgb2Zmc2V0
SWQgKiBzaXplb2YoaW50KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVy
blN0YXJ0KGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE1NDgs
MTUgKzE2MTMsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjb3VsZCBhdm9pZCBvZmZzZXR0aW5nIHRoaXMgdmFs
dWUgaW4gSklUIGNvZGUsIGFwcGx5CiAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0cyBvbmx5IGFm
dGVyd2FyZHMsIGF0IHRoZSBwb2ludCB0aGUgcmVzdWx0cyBhcnJheSBpcwogICAgICAgICAgICAg
ICAgIC8vIGJlaW5nIGFjY2Vzc2VkLgotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldElkID0gKHRlcm0tPnBhcmVudGhl
c2VzLnN1YnBhdHRlcm5JZCA8PCAxKSArIDE7CisgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNh
cHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0T2Zmc2V0ID0gdGVybS0+aW5wdXRQb3NpdGlvbiAtIG1fY2hl
Y2tlZDsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGQzMihJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXhUZW1wb3JhcnksIEFkZHJlc3Mob3V0
cHV0LCBvZmZzZXRJZCAqIHNpemVvZihpbnQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdWJwYXR0ZXJuRW5kKGluZGV4VGVtcG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0
ZXJuSWQpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0cHV0LCBvZmZzZXRJZCAqIHNpemVvZihpbnQp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5kKGluZGV4LCB0ZXJt
LT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRoZXNlcyBhcmUgcXVhbnRpZmllZCBHcmVlZHkgdGhl
biBhZGQgYSBsYWJlbCB0byBqdW1wIGJhY2sKQEAgLTE2NDYsOSArMTcxMCw5IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgY2FzZSBPcE1hdGNoRmFpbGVkOgotICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4u
bV9ib2R5LT5tX2NhbGxGcmFtZVNpemUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFB0cihJbW0z
MihtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxGcmFtZVNpemUgKiBzaXplb2Yodm9pZCopKSwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKC0x
KSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIHJlbW92ZUNhbGxGcmFtZSgpOwor
ICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigodm9pZCopV1RGOjpub3RGb3VuZCks
IHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwg
cmV0dXJuUmVnaXN0ZXIyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0ZVJldHVybigpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTc0MywxNCArMTgwNywxNCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9y
ZSB0aGUgc3RhcnQgaW5kZXgsIGZvciB1c2UgaWYgd2UgbWF0Y2guCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IDEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mo
b3V0cHV0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQo
aW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCByZWdUMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGFsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplIC0gMSksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIo
cmVnVDAsIEFkZHJlc3Mob3V0cHV0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE1hdGNoU3RhcnQocmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMTgzNiw3ICsxOTAwLDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgIC8vIGRpc2p1
bmN0aW9uIGlzIDAsIGUuZy4gL2EqfGIvKS4KICAgICAgICAgICAgICAgICBpZiAobmVlZHNUb1Vw
ZGF0ZU1hdGNoU3RhcnQgJiYgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBpbmRleCBpcyBhbHJlYWR5IGluY3JlbWVudGVkIGJ5IDEsIHNv
IGp1c3Qgc3RvcmUgaXQgbm93IQotICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBB
ZGRyZXNzKG91dHB1dCkpOworICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4
KTsKICAgICAgICAgICAgICAgICAgICAgbmVlZHNUb1VwZGF0ZU1hdGNoU3RhcnQgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NjAsMTEgKzE5MjQsMTEgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogCiAgICAgICAgICAgICAgICAgaWYgKG5lZWRz
VG9VcGRhdGVNYXRjaFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJu
Lm1fYm9keS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIo
aW5kZXgsIEFkZHJlc3Mob3V0cHV0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRj
aFN0YXJ0KGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3ZlKGluZGV4LCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
dWIzMihJbW0zMihtX3BhdHRlcm4ubV9ib2R5LT5tX21pbmltdW1TaXplKSwgcmVnVDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhvdXRwdXQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVnVDApOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xODg2LDkgKzE5NTAsOSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAgICAgLy8g
cnVuIGFueSBtYXRjaGVzLCBhbmQgbmVlZCB0byByZXR1cm4gYSBmYWlsdXJlIHN0YXRlIGZyb20g
SklUIGNvZGUuCiAgICAgICAgICAgICAgICAgbWF0Y2hGYWlsZWQubGluayh0aGlzKTsKIAotICAg
ICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxGcmFtZVNpemUpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFB0cihJbW0zMihtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxGcmFt
ZVNpemUgKiBzaXplb2Yodm9pZCopKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKC0xKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAg
ICAgICAgIHJlbW92ZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cigodm9pZCopV1RGOjpub3RGb3VuZCksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIyKTsKICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZVJldHVybigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtMjA1NSwxMiArMjExOSwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0
ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50aXR5Q291bnQg
PT0gMSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gYmFja3RyYWNrIHRv
IHRoaXNwb2ludCBpZiBjYXB0dXJpbmcgb3IgZ3JlZWR5LgotICAgICAgICAgICAgICAgIGlmICh0
ZXJtLT5jYXB0dXJlKCkgfHwgdGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9
PSBJbmNsdWRlU3VicGF0dGVybnMpIHx8IHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVy
R3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0
aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJZiBjYXB0dXJpbmcsIGNsZWFyIHRoZSBj
YXB0dXJlICh3ZSBvbmx5IG5lZWQgdG8gcmVzZXQgc3RhcnQpLgotICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybS0+Y2FwdHVyZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihU
cnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwgKHRlcm0tPnBhcmVudGhlc2VzLnN1YnBh
dHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJTdWJwYXR0ZXJuU3RhcnQodGVybS0+cGFyZW50aGVz
ZXMuc3VicGF0dGVybklkKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJZiBHcmVlZHksIGp1
bXAgdG8gdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlw
ZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CkBAIC0yNDUwLDkgKzI1MTQsMTEgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjplYnAsIDIgKiBzaXplb2Yodm9pZCopKSwgaW5wdXQpOwogICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAsIDMgKiBzaXplb2Yodm9pZCopKSwgaW5k
ZXgpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAsIDQgKiBzaXpl
b2Yodm9pZCopKSwgbGVuZ3RoKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lzdGVy
czo6ZWJwLCA1ICogc2l6ZW9mKHZvaWQqKSksIG91dHB1dCk7CisgICAgICAgIGlmIChjb21waWxl
TW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpCisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjplYnAsIDUgKiBzaXplb2Yodm9pZCopKSwgb3V0cHV0KTsKICAgICAjZWxz
ZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAsIDIgKiBzaXplb2Yo
dm9pZCopKSwgb3V0cHV0KTsKKyAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJw
YXR0ZXJucykKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVicCwg
MiAqIHNpemVvZih2b2lkKikpLCBvdXRwdXQpOwogICAgICNlbmRpZgogI2VsaWYgQ1BVKEFSTSkK
ICAgICAgICAgcHVzaChBUk1SZWdpc3RlcnM6OnI0KTsKQEAgLTI0NjEsNyArMjUyNyw4IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICNpZiBDUFUoQVJNX1RSQURJ
VElPTkFMKQogICAgICAgICBwdXNoKEFSTVJlZ2lzdGVyczo6cjgpOyAvLyBzY3JhdGNoIHJlZ2lz
dGVyCiAjZW5kaWYKLSAgICAgICAgbW92ZShBUk1SZWdpc3RlcnM6OnIzLCBvdXRwdXQpOworICAg
ICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAg
bW92ZShBUk1SZWdpc3RlcnM6OnIzLCBvdXRwdXQpOwogI2VsaWYgQ1BVKFNINCkKICAgICAgICAg
cHVzaChTSDRSZWdpc3RlcnM6OnIxMSk7CiAgICAgICAgIHB1c2goU0g0UmVnaXN0ZXJzOjpyMTMp
OwpAQCAtMjUxMSwxOCArMjU3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGdlbmVyYXRlRW50ZXIo
KTsKIAogICAgICAgICBKdW1wIGhhc0lucHV0ID0gY2hlY2tJbnB1dCgpOwotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW0zMigtMSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKCh2b2lkKilXVEY6Om5vdEZvdW5kKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICBt
b3ZlKFRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIyKTsKICAgICAgICAgZ2VuZXJhdGVS
ZXR1cm4oKTsKICAgICAgICAgaGFzSW5wdXQubGluayh0aGlzKTsKIAotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCi0g
ICAgICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8
PCAxKSAqIHNpemVvZihpbnQpKSk7CisgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRl
U3VicGF0dGVybnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Bh
dHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDE7ICsraSkKKyAgICAgICAgICAgICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8PCAxKSAqIHNpemVvZihpbnQp
KSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4
ZWRTaXplKQotICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQpKTsKKyAg
ICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwogCi0gICAgICAgIGlmIChtX3BhdHRlcm4u
bV9ib2R5LT5tX2NhbGxGcmFtZVNpemUpCi0gICAgICAgICAgICBzdWJQdHIoSW1tMzIobV9wYXR0
ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplICogc2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAgICAgaW5pdENhbGxGcmFtZSgpOwogCiAgICAgICAgIC8vIENvbXBp
bGUgdGhlIHBhdHRlcm4gdG8gdGhlIGludGVybmFsICdZYXJyT3AnIHJlcHJlc2VudGF0aW9uLgog
ICAgICAgICBvcENvbXBpbGVCb2R5KG1fcGF0dGVybi5tX2JvZHkpOwpAQCAtMjU0MCwxMCArMjYw
OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIExpbmsgJiBmaW5hbGl6ZSB0aGUgY29kZS4KICAg
ICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpnbG9iYWxEYXRhLCB0aGlzLCBSRUdFWFBfQ09E
RV9JRCk7CiAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua0RhdGFMYWJlbHMobGlua0J1
ZmZlcik7Ci0gICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQotICAgICAgICAgICAgaml0
T2JqZWN0LnNldDhCaXRDb2RlKGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBqaXRPYmplY3Quc2V0MTZCaXRDb2RlKGxpbmtCdWZmZXIuZmluYWxp
emVDb2RlKCkpOworCisgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBNYXRjaE9ubHkpIHsKKyAg
ICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQorICAgICAgICAgICAgICAgIGppdE9i
amVjdC5zZXQ4Qml0Q29kZU1hdGNoT25seShsaW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0MTZCaXRDb2RlTWF0
Y2hPbmx5KGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhcjgpCisgICAgICAgICAgICAgICAgaml0T2Jq
ZWN0LnNldDhCaXRDb2RlKGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCkpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGppdE9iamVjdC5zZXQxNkJpdENvZGUobGlua0J1ZmZlci5m
aW5hbGl6ZUNvZGUoKSk7CisgICAgICAgIH0KICAgICAgICAgaml0T2JqZWN0LnNldEZhbGxCYWNr
KG1fc2hvdWxkRmFsbEJhY2spOwogICAgIH0KIApAQCAtMjU3Nyw5ICsyNjU0LDEyIEBAIHByaXZh
dGU6CiAgICAgQmFja3RyYWNraW5nU3RhdGUgbV9iYWNrdHJhY2tpbmdTdGF0ZTsKIH07CiAKLXZv
aWQgaml0Q29tcGlsZShZYXJyUGF0dGVybiYgcGF0dGVybiwgWWFyckNoYXJTaXplIGNoYXJTaXpl
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCkKK3Zv
aWQgaml0Q29tcGlsZShZYXJyUGF0dGVybiYgcGF0dGVybiwgWWFyckNoYXJTaXplIGNoYXJTaXpl
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgWWFy
ckpJVENvbXBpbGVNb2RlIG1vZGUpCiB7Ci0gICAgWWFyckdlbmVyYXRvcihwYXR0ZXJuLCBjaGFy
U2l6ZSkuY29tcGlsZShnbG9iYWxEYXRhLCBqaXRPYmplY3QpOworICAgIGlmIChtb2RlID09IE1h
dGNoT25seSkKKyAgICAgICAgWWFyckdlbmVyYXRvcjxNYXRjaE9ubHk+KHBhdHRlcm4sIGNoYXJT
aXplKS5jb21waWxlKGdsb2JhbERhdGEsIGppdE9iamVjdCk7CisgICAgZWxzZQorICAgICAgICBZ
YXJyR2VuZXJhdG9yPEluY2x1ZGVTdWJwYXR0ZXJucz4ocGF0dGVybiwgY2hhclNpemUpLmNvbXBp
bGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKIH0KIAogfX0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmgJKHJldmlzaW9uIDExMjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOCBAQAogI2lm
IEVOQUJMRShZQVJSX0pJVCkKIAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgotI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisj
aW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAi
WWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCkBAIC00OCw4ICs0OSwxNyBAQCBjbGFz
cyBFeGVjdXRhYmxlUG9vbDsKIG5hbWVzcGFjZSBZYXJyIHsKIAogY2xhc3MgWWFyckNvZGVCbG9j
ayB7Ci0gICAgdHlwZWRlZiBpbnQgKCpZYXJySklUQ29kZTgpKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsK
LSAgICB0eXBlZGVmIGludCAoKllhcnJKSVRDb2RlMTYpKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsKKyNp
ZiBDUFUoWDg2XzY0KQorICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZTgpKGNv
bnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBv
dXRwdXQpIFlBUlJfQ0FMTDsKKyAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGUx
NikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBp
bnQqIG91dHB1dCkgWUFSUl9DQUxMOworICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklU
Q29kZU1hdGNoT25seTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCkgWUFSUl9DQUxMOworICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklU
Q29kZU1hdGNoT25seTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgpIFlBUlJfQ0FMTDsKKyNlbHNlCisgICAgdHlwZWRlZiBFbmNvZGVkTWF0Y2hS
ZXN1bHQgKCpZYXJySklUQ29kZTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsKKyAgICB0eXBlZGVmIEVu
Y29kZWRNYXRjaFJlc3VsdCAoKllhcnJKSVRDb2RlMTYpKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsKKyAg
ICB0eXBlZGVmIEVuY29kZWRNYXRjaFJlc3VsdCAoKllhcnJKSVRDb2RlTWF0Y2hPbmx5OCkoY29u
c3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKSBZQVJSX0NB
TEw7CisgICAgdHlwZWRlZiBFbmNvZGVkTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25s
eTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
IFlBUlJfQ0FMTDsKKyNlbmRpZgogCiBwdWJsaWM6CiAgICAgWWFyckNvZGVCbG9jaygpCkBAIC02
Myw0MyArNzMsNjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGYWxsQmFjayhib29sIGZhbGxi
YWNrKSB7IG1fbmVlZEZhbGxCYWNrID0gZmFsbGJhY2s7IH0KICAgICBib29sIGlzRmFsbEJhY2so
KSB7IHJldHVybiBtX25lZWRGYWxsQmFjazsgfQorCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsg
cmV0dXJuIG1fcmVmOC5zaXplKCk7IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJu
IG1fcmVmMTYuc2l6ZSgpOyB9Ci0gICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlcjo6
Q29kZVJlZiByZWYpIHsgbV9yZWY4ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFj
cm9Bc3NlbWJsZXI6OkNvZGVSZWYgcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0KKyAgICB2b2lkIHNl
dDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWYpIHsgbV9yZWY4ID0gcmVmOyB9Cisg
ICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJlZikgeyBtX3JlZjE2
ID0gcmVmOyB9CisKKyAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9t
YXRjaE9ubHk4LnNpemUoKTsgfQorICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkgeyBy
ZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hP
bmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0
Y2hPbmx5OyB9CisgICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9CiAKLSAgICBp
bnQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIGludCogb3V0cHV0KQorICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIq
IGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8WWFyckpJVENvZGU4PihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpOworICAgICAgICByZXR1cm4gTWF0Y2hS
ZXN1bHQocmVpbnRlcnByZXRfY2FzdDxZYXJySklUQ29kZTg+KG1fcmVmOC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCkpOwogICAgIH0KIAot
ICAgIGludCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpCisgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBV
Q2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZSgpKTsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8WWFyckpJVENvZGUxNj4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCk7CisgICAgICAgIHJldHVy
biBNYXRjaFJlc3VsdChyZWludGVycHJldF9jYXN0PFlhcnJKSVRDb2RlMTY+KG1fcmVmMTYuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpKTsK
KyAgICB9CisKKyAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXM4
Qml0Q29kZU1hdGNoT25seSgpKTsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHJlaW50ZXJw
cmV0X2Nhc3Q8WWFyckpJVENvZGVNYXRjaE9ubHk4PihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoKSk7CisgICAgfQorCisgICAgTWF0
Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5
KCkpOworICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxZYXJySklU
Q29kZU1hdGNoT25seTE2PihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KShpbnB1dCwgc3RhcnQsIGxlbmd0aCkpOwogICAgIH0KKwogI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKICAgICB2b2lkICpnZXRBZGRyKCkgeyByZXR1cm4gbV9yZWYuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7IH0KICNlbmRpZgogCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAg
ICBtX3JlZjggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKTsKKyAgICAgICAgbV9yZWYxNiA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZigpOworICAgICAgICBtX21hdGNoT25seTggPSBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYoKTsKKyAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZigpOworICAgICAgICBtX25lZWRGYWxsQmFjayA9IGZhbHNlOworICAgIH0KKwogcHJpdmF0
ZToKLSAgICBNYWNyb0Fzc2VtYmxlcjo6Q29kZVJlZiBtX3JlZjg7Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6OkNvZGVSZWYgbV9yZWYxNjsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9yZWY4Owor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX3JlZjE2OworICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBtX21hdGNoT25seTg7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fbWF0Y2hPbmx5
MTY7CiAgICAgYm9vbCBtX25lZWRGYWxsQmFjazsKIH07CiAKLXZvaWQgaml0Q29tcGlsZShZYXJy
UGF0dGVybiYsIFlhcnJDaGFyU2l6ZSwgSlNHbG9iYWxEYXRhKiwgWWFyckNvZGVCbG9jayYgaml0
T2JqZWN0KTsKLQotaW5saW5lIGludCBleGVjdXRlKFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwg
Y29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQq
IG91dHB1dCkKLXsKLSAgICByZXR1cm4gaml0T2JqZWN0LmV4ZWN1dGUoaW5wdXQsIHN0YXJ0LCBs
ZW5ndGgsIG91dHB1dCk7Ci19Ci0KLWlubGluZSBpbnQgZXhlY3V0ZShZYXJyQ29kZUJsb2NrJiBq
aXRPYmplY3QsIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgaW50KiBvdXRwdXQpCi17Ci0gICAgcmV0dXJuIGppdE9iamVjdC5leGVjdXRlKGlucHV0
LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpOwotfQorZW51bSBZYXJySklUQ29tcGlsZU1vZGUgewor
ICAgIE1hdGNoT25seSwKKyAgICBJbmNsdWRlU3VicGF0dGVybnMKK307Cit2b2lkIGppdENvbXBp
bGUoWWFyclBhdHRlcm4mLCBZYXJyQ2hhclNpemUsIEpTR2xvYmFsRGF0YSosIFlhcnJDb2RlQmxv
Y2smIGppdE9iamVjdCwgWWFyckpJVENvbXBpbGVNb2RlID0gSW5jbHVkZVN1YnBhdHRlcm5zKTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTEyNDM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDMtMjggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgorCisgICAgICAgIFlhcnI6IGlmIHdlJ3JlIG5vdCB1c2luZyB0aGUgb3V0cHV0
IGFycmF5LCBkb24ndCBwb3B1bGF0ZSBpdCEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL01hdGNoUmVzdWx0
Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3lhcnIvWWFyckpJVC5oOiBB
ZGRlZC4KKyAgICAgICAgICAgIC0gQWRkZWQgZm9yd2FyZGluZyBoZWFkZXJzLgorCiAyMDEyLTAz
LTI2ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gbGF5ZXItPmNsaXBSZWN0KCkgaXMgbm90IGluaXRpYWxpemVkIGZvciBsYXllcnMg
dGhhdCBjcmVhdGUgYSByZW5kZXJTdXJmYWNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9NYXRjaFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvTWF0Y2hSZXN1
bHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX01h
dGNoUmVzdWx0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfTWF0Y2hSZXN1bHRfaAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL01hdGNoUmVzdWx0Lmg+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3lhcnIvWWFyckpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3lhcnIvWWFyckpJVC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMveWFyci9ZYXJySklULmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNSBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9ZYXJySklUX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfWWFyckpJVF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFy
ckpJVC5oPgorI2VuZGlmCisK
</data>
<flag name="review"
          id="138645"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="138652"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>