<?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>73054</bug_id>
          
          <creation_ts>2011-11-23 15:22:07 -0800</creation_ts>
          <short_desc>[V8][Chromium] Add list of transferred ArrayBuffers to SerializedScriptValue::create</short_desc>
          <delta_ts>2011-11-23 21:14:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          
          <blocked>66578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508459</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 15:22:07 -0800</bug_when>
    <thetext>SerializedScriptValue::create needs a list of ArrayBuffers from transfer list to implement their transfer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508466</commentid>
    <comment_count>1</comment_count>
      <attachid>116445</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 15:36:14 -0800</bug_when>
    <thetext>Created attachment 116445
The fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508467</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 15:39:43 -0800</bug_when>
    <thetext>Attachment 116445 did not pass style-queue:

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

Source/WebCore/bindings/v8/V8Utilities.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 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>508469</commentid>
    <comment_count>3</comment_count>
      <attachid>116445</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-23 15:52:29 -0800</bug_when>
    <thetext>Comment on attachment 116445
The fix

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

Just a few comments. I think this will likely be ok with these changes, but I need to take more time to look at it to be sure.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1992
&gt; +                                                                MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,

arrayBuffers is unused. I guess that is next?

Anyway omit the var name for now to avoid build errors on some platforms.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.h:39
&gt; +class ArrayBuffer;

I think in this one case the contents of the namespace is indented -- double check the style guide pls. (Yes stylebot will complain.)

&gt; Source/WebCore/bindings/v8/V8Utilities.cpp:84
&gt; +bool extractTransferables(v8::Local&lt;v8::Value&gt; value, MessagePortArray&amp; ports, ArrayBufferArray&amp; arrayBuffers)

make it static since it is local to a file.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:38
&gt;&gt; +#include &quot;ArrayBuffer.h&quot;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

This seems like an ok error to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508472</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 15:59:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 116445 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116445&amp;action=review
&gt; 
&gt; Just a few comments. I think this will likely be ok with these changes, but I need to take more time to look at it to be sure.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1992
&gt; &gt; +                                                                MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,
&gt; 
&gt; arrayBuffers is unused. I guess that is next?
Yes it is next
&gt; 
&gt; Anyway omit the var name for now to avoid build errors on some platforms.
Done

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.h:39
&gt; &gt; +class ArrayBuffer;
&gt; 
&gt; I think in this one case the contents of the namespace is indented -- double check the style guide pls. (Yes stylebot will complain.)

Checked the style guide - no exceptions.

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Utilities.cpp:84
&gt; &gt; +bool extractTransferables(v8::Local&lt;v8::Value&gt; value, MessagePortArray&amp; ports, ArrayBufferArray&amp; arrayBuffers)
&gt; 
&gt; make it static since it is local to a file.

It is not local.

&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:38
&gt; &gt;&gt; +#include &quot;ArrayBuffer.h&quot;
&gt; &gt; 
&gt; &gt; Alphabetical sorting problem.  [build/include_order] [4]
&gt; 
&gt; This seems like an ok error to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508473</commentid>
    <comment_count>5</comment_count>
      <attachid>116446</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 16:01:32 -0800</bug_when>
    <thetext>Created attachment 116446
CR feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508516</commentid>
    <comment_count>6</comment_count>
      <attachid>116446</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-23 17:21:25 -0800</bug_when>
    <thetext>Comment on attachment 116446
CR feedback

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

Last round.

&gt; Source/WebCore/bindings/v8/V8Utilities.cpp:41
&gt; +#include &lt;v8.h&gt;

&lt; after &quot; (sorry I wasn&apos;t clear about this)

&gt; Source/WebCore/bindings/v8/V8Utilities.cpp:121
&gt; +            ports.append(V8MessagePort::toNative(v8::Handle&lt;v8::Object&gt;::Cast(transferrable)));

Would be nice to move &quot;v8::Handle&lt;v8::Object&gt;::Cast(transferrable)&quot; out of the clauses.

&gt; Source/WebCore/bindings/v8/V8Utilities.h:90
&gt; +    bool getMessagePortArray(v8::Local&lt;v8::Value&gt;, MessagePortArray&amp;);

This function is only used for the current postMessage support, right? (Might be nice to have a small comment to that affect.)

Who calls it anymore in fact?

&gt; Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp:56
&gt; +        SerializedScriptValue::create(args[0],

I wish that we didn&apos;t have to do this same thing at every callsite. Should doTransfer be a parameter?

&gt; Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:63
&gt; +                                      doTransfer ? &amp;ports : 0, doTransfer ? &amp;arrayBuffers : 0,

Might be nice to put the &amp;arrayBuffer arg on a separate line as the current state makes it much harder to read quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508529</commentid>
    <comment_count>7</comment_count>
      <attachid>116446</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-23 17:48:18 -0800</bug_when>
    <thetext>Comment on attachment 116446
CR feedback

Only nits/preferences are left, so r+. Please consider addressing some of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508543</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 18:21:56 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 116446 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116446&amp;action=review
&gt; 
&gt; Last round.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Utilities.cpp:41
&gt; &gt; +#include &lt;v8.h&gt;
&gt; 
&gt; &lt; after &quot; (sorry I wasn&apos;t clear about this)

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Utilities.cpp:121
&gt; &gt; +            ports.append(V8MessagePort::toNative(v8::Handle&lt;v8::Object&gt;::Cast(transferrable)));
&gt; 
&gt; Would be nice to move &quot;v8::Handle&lt;v8::Object&gt;::Cast(transferrable)&quot; out of the clauses.

Can&apos;t. The conditions in ifs determine validity of the cast. 
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Utilities.h:90
&gt; &gt; +    bool getMessagePortArray(v8::Local&lt;v8::Value&gt;, MessagePortArray&amp;);
&gt; 
&gt; This function is only used for the current postMessage support, right? (Might be nice to have a small comment to that affect.)
&gt; 
&gt; Who calls it anymore in fact?

It is used elsewhere (OptionsObject and some other places)
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8MessagePortCustom.cpp:56
&gt; &gt; +        SerializedScriptValue::create(args[0],
&gt; 
&gt; I wish that we didn&apos;t have to do this same thing at every callsite. Should doTransfer be a parameter?

Well, I want to keep it flexible for now (given the way specs are atm - message port transfer is in &quot;ready for implementation&quot; state, while array buffer transfer is a &quot;strawman&quot; - I think we will be in the state where postMessage allow transferring the former but not the latter)
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:63
&gt; &gt; +                                      doTransfer ? &amp;ports : 0, doTransfer ? &amp;arrayBuffers : 0,
&gt; 
&gt; Might be nice to put the &amp;arrayBuffer arg on a separate line as the current state makes it much harder to read quickly.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508546</commentid>
    <comment_count>9</comment_count>
      <attachid>116464</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 18:29:32 -0800</bug_when>
    <thetext>Created attachment 116464
Final</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508549</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 18:31:21 -0800</bug_when>
    <thetext>Attachment 116464 did not pass style-queue:

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

Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 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>508565</commentid>
    <comment_count>11</comment_count>
      <attachid>116464</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 19:08:50 -0800</bug_when>
    <thetext>Comment on attachment 116464
Final

Attachment 116464 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10642173

New failing tests:
fast/events/constructors/message-event-constructor.html
fast/dom/Window/window-postmessage-args.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508594</commentid>
    <comment_count>12</comment_count>
      <attachid>116476</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 20:33:20 -0800</bug_when>
    <thetext>Created attachment 116476
Rebaselined tests

David: I took the liberty to cq+ rebaseline unreviewed, please yell if that is not ok with you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508595</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 20:36:12 -0800</bug_when>
    <thetext>Attachment 116476 did not pass style-queue:

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

Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 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>508607</commentid>
    <comment_count>14</comment_count>
      <attachid>116476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 21:14:42 -0800</bug_when>
    <thetext>Comment on attachment 116476
Rebaselined tests

Clearing flags on attachment: 116476

Committed r101118: &lt;http://trac.webkit.org/changeset/101118&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508608</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 21:14:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116445</attachid>
            <date>2011-11-23 15:36:14 -0800</date>
            <delta_ts>2011-11-23 16:01:32 -0800</delta_ts>
            <desc>The fix</desc>
            <filename>73054.patch</filename>
            <type>text/plain</type>
            <size>25991</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMzAyMzFlLi41NThlMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMTEtMjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAg
ICAgW1Y4XVtDaHJvbWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRv
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OnNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAqIGJpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdFRyYW5zZmVyYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVzc2Fn
ZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9y
eTo6cHVzaFN0YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBs
YWNlU3RhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
UG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKwogMjAx
MS0xMS0yMyAgSm9uYXRoYW4gQmFja2VyICA8YmFja2VyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERyb3Agcm9vdCBsYXllciB0aWxlcyBvbiBwbGF0Zm9ybXMgdGhhdCBjYWNo
ZSB0aGUgZnJvbnQgYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDBiM2Q4OTguLjdhYmU2M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
NDcyLDcgKzE0NzIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgfSBl
bHNpZiAoJHBhcmFtZXRlci0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIik7CiAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBib29sICR7cGFyYW1ldGVy
TmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xuIjsKLSAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIDAsICR7cGFyYW1ldGVyTmFtZX1EaWRU
aHJvdyk7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgMCwgMCwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CiAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoJHtwYXJhbWV0ZXJO
YW1lfURpZFRocm93KVxuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsKICAgICAgICAgfSBlbHNpZiAoVHlw
ZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDkwOGU3NWMu
LmY4ZDY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC03OTksNyArNzk5LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzZXJpYWxpemVkVmFsdWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMi
LCBWOFByb3h5OjpUeXBlRXJyb3IpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgYm9vbCBzZXJpYWxpemVkQXJnRGlkVGhyb3cgPSBm
YWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkQXJnID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgc2VyaWFsaXplZEFyZ0Rp
ZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkQXJn
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgc2VyaWFsaXpl
ZEFyZ0RpZFRocm93KTsKICAgICBpZiAoc2VyaWFsaXplZEFyZ0RpZFRocm93KQogICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGltcC0+c2VyaWFsaXplZFZhbHVlKHNlcmlhbGl6
ZWRBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcApp
bmRleCBmODAyNzBkLi4yYTk3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9PcHRpb25zT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9P
cHRpb25zT2JqZWN0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgot
I2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGMxYTY4MTcuLjIxOTg2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTk4OCw3
ICsxOTg4LDkgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoKICAgICBkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpKTsK
IH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBib29sJiBkaWRUaHJvdykKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJh
eUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgZGlkVGhyb3cpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWUsIG1lc3Nh
Z2VQb3J0cywgZGlkVGhyb3cpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggYzY1YmIyZC4uMWI1NmVkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
QEAgLTM1LDExICszNSwxNiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCAxPiBNZXNzYWdlUG9ydEFycmF5OwordHlwZWRlZiBWZWN0b3I8
UmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFycmF5OwogCiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CkBAIC01Myw3ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICAvLyBiZSB0aHJvd24gdXNpbmcgdjg6OlRocm93RXhjZXB0aW9uKCksIGFuZCBzZXRzIHxkaWRU
aHJvd3wuIEluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBjYWxsZXIgbXVzdCBub3QgaW52b2tlIGFu
eSBWOCBvcGVyYXRpb25zIHVudGlsIGNvbnRyb2wgcmV0dXJucyB0bwogICAgIC8vIFY4LiBXaGVu
IHNlcmlhbGl6YXRpb24gaXMgc3VjY2Vzc2Z1bCwgfGRpZFRocm93fCBpcyBmYWxzZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIE1lc3NhZ2VQb3J0QXJyYXkqLCBib29sJiBkaWRUaHJvdyk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBkaWRUaHJvdyk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZUZyb21XaXJlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBk
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCA0
Zjc4M2I2Li40NDE5NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCkBAIC0zMywxMiArMzMsMTcgQEAKIAogI2luY2x1ZGUgPHY4Lmg+CiAKKyNpbmNsdWRl
ICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKQEAgLTc2LDYgKzgxLDY4IEBAIHZv
aWQgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4KICAgICBjYWNoZUFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5l
dyhjYWNoZUFycmF5LT5MZW5ndGgoKSksIHZhbHVlKTsKIH0KIAorYm9vbCBleHRyYWN0VHJhbnNm
ZXJhYmxlcyh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9y
dHMsIEFycmF5QnVmZmVyQXJyYXkmIGFycmF5QnVmZmVycykKK3sKKyAgICBpZiAoaXNVbmRlZmlu
ZWRPck51bGwodmFsdWUpKSB7CisgICAgICAgIHBvcnRzLnJlc2l6ZSgwKTsKKyAgICAgICAgYXJy
YXlCdWZmZXJzLnJlc2l6ZSgwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
aWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0Vycm9yKCJUcmFuc2ZlckFy
cmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgdWludDMyX3QgbGVuZ3RoID0gMDsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gdHJhbnNmZXJyYWJsZXMgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwor
CisgICAgaWYgKHZhbHVlLT5Jc0FycmF5KCkpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJh
eT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIGxl
bmd0aCA9IGFycmF5LT5MZW5ndGgoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTZXF1ZW5j
ZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQorICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHRyYW5zZmVycmFibGVzLT5HZXQodjg6OlN0
cmluZzo6TmV3KCJsZW5ndGgiKSk7CisgICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IoIlRyYW5zZmVyQXJyYXkgYXJndW1lbnQg
aGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsK
KyAgICB9CisKKyAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHRyYW5zZmVycmFi
bGVzLgorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdHJhbnNmZXJyYWJsZSA9IHRyYW5zZmVycmFibGVz
LT5HZXQoaSk7CisgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVy
IEhUTUw1IHNwZWMgMTAuMy4zLgorICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwodHJhbnNm
ZXJyYWJsZSkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IoREFUQV9DTE9ORV9FUlIpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIFZhbGlkYXRpb24g
b2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4x
LjE1LgorICAgICAgICBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJs
ZSkpCisgICAgICAgICAgICBwb3J0cy5hcHBlbmQoVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkpOworICAgICAgICBlbHNl
IGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh0cmFuc2ZlcnJhYmxlKSkKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVycy5hcHBlbmQoVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHRocm93RXJyb3IoIlRyYW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWlu
IG9ubHkgVHJhbnNmZXJhYmxlcyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIGdldE1lc3NhZ2VQb3J0QXJy
YXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzKQor
eworICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOworICAgIGJvb2wgcmVzdWx0ID0g
ZXh0cmFjdFRyYW5zZmVyYWJsZXModmFsdWUsIHBvcnRzLCBhcnJheUJ1ZmZlcnMpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFycmF5QnVmZmVycy5z
aXplKCkgPiAwKSB7CisgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1l
bnQgbXVzdCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRzIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmVtb3ZlSGlkZGVuRGVwZW5k
ZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGludCBjYWNoZUluZGV4KQogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hl
ID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKaW5kZXggYmVhN2QwZi4uOTk1NmZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCkBAIC0zNiwxMSArMzYsMTYgQEAKIAog
I2luY2x1ZGUgIk93bkhhbmRsZS5oIgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIEFycmF5QnVm
ZmVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudExpc3RlbmVy
OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgTWVzc2FnZVBv
cnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTY3JpcHRT
dGF0ZTsKIApAQCAtNzQsNiArNzksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwogICAgIH07CiAKKyAgICB0eXBl
ZGVmIFdURjo6VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7
CisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1
ZmZlckFycmF5OworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1
ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAg
IC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0
LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIAorICAgIC8vIG9mIHRo
ZSBIVE1MNSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRo
ZSBwYXNzZWQgdmFsdWUgd2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgorICAgIGJvb2wg
ZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3NhZ2VQb3J0QXJy
YXkmLCBBcnJheUJ1ZmZlckFycmF5Jik7IAorICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2
ODo6TG9jYWw8djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOworCiAgICAgLy8gJ0Z1bmN0
aW9uT25seScgaXMgYXNzdW1lZCBmb3IgdGhlIGNyZWF0ZWQgY2FsbGJhY2suCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFY4Q2FsbGJhY2tUeXBlPgogICAgIFBhc3NSZWZQdHI8VjhDYWxsYmFja1R5
cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBib29sJiBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1
ZXMgPSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMTlmN2M1MS4uM2YyZWVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
Y3JlZW4uaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKQEAgLTU3LDcgKzU5LDYgQEAK
ICNpbmNsdWRlICJWOEdDRm9yQ29udGV4dERpc3Bvc2UuaCIKICNpbmNsdWRlICJWOEhpZGRlblBy
b3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJW
OE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC0yOTcsMTEgKzI5OCwxMiBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIC8vIG9yCiAgICAgLy8gICBwb3N0TWVzc2FnZSht
ZXNzYWdlLCB0YXJnZXRPcmlnaW4pOwogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5Owor
ICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheTsKICAgICBTdHJpbmcgdGFyZ2V0
T3JpZ2luOwogICAgIHsKICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKLSAgICAgICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRB
cnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICAgICAgaWYgKCFleHRyYWN0VHJhbnNm
ZXJhYmxlcyhhcmdzWzFdLCBwb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB0YXJnZXRPcmlnaW4g
PSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7CiAgICAg
ICAgIH0gZWxzZQpAQCAtMzEzLDcgKzMxNSwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwog
CiAKICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0s
IGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5IDogMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShhcmdzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6IDAsIGRvVHJhbnNmZXIgPyAmYXJyYXlCdWZmZXJB
cnJheSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFRocm93
KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTVhNjlkNC4uOThi
ZDY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVk
aWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTMzLDEx
ICszMywxMiBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29y
a2VyQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1
c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDUsMTcgKzQ2LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzLCBib29sIGRvVHJhbnNmZXIpCiB7CiAgICAgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CisgICAg
TWVzc2FnZVBvcnRBcnJheSBwb3J0czsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVy
czsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdl
UG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZXh0cmFjdFRyYW5z
ZmVyYWJsZXMoYXJnc1sxXSwgcG9ydHMsIGFycmF5QnVmZmVycykpCiAgICAgICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5IDogMCwgZGlk
VGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPQorICAg
ICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJnBvcnRzIDogMCwgZG9UcmFu
c2ZlciA/ICZhcnJheUJ1ZmZlcnMgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwotICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3b3JrZXJDb250
ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1l
c3NhZ2UucmVsZWFzZSgpLCAmcG9ydHMsIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhp
c3RvcnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlz
dG9yeUN1c3RvbS5jcHAKaW5kZXggYmY5ODE1YS4uODk1NjEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1sw
XSwgMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3Rv
cnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAsIDAsIGRp
ZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKQEAgLTY4LDcgKzY4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6
cHVzaFN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzBdLCAwLCAwLCBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1ZDE3NWUzLi42
NGFiZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRl
ICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4TWVzc2Fn
ZVBvcnQuaCIKLSNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggZGQ5
OTdiMS4uMzc3MzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnQuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAgLTQ2LDEyICs0
NiwxNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIE1lc3NhZ2VQb3J0KiBtZXNz
YWdlUG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZm
ZXJBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRN
ZXNzYWdlUG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZXh0cmFj
dFRyYW5zZmVyYWJsZXMoYXJnc1sxXSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KSkKICAg
ICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGJvb2wgZGlkVGhy
b3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZG9UcmFuc2ZlciA/ICZwb3J0
QXJyYXkgOiAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSA9CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIgPyAmcG9y
dEFycmF5IDogMCwgZG9UcmFuc2ZlciA/ICZhcnJheUJ1ZmZlckFycmF5IDogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJv
dykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKQEAgLTcxLDQ5ICs3NSw0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQ
b3J0Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgcmV0
dXJuIGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soYXJncywgdHJ1ZSk7CiB9CiAKLWJvb2wgZ2V0
TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRB
cnJheSYgcG9ydEFycmF5KQotewotICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsK
LSAgICAgICAgcG9ydEFycmF5LnJlc2l6ZSgwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKCJN
ZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgdWludDMyX3QgbGVuZ3RoID0gMDsKLSAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gcG9ydHMgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OwotCi0gICAgaWYgKHZhbHVlLT5Jc0FycmF5KCkpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpB
cnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7Ci0gICAgICAg
IGxlbmd0aCA9IGFycmF5LT5MZW5ndGgoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBTZXF1
ZW5jZS10eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQotICAgICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRzLT5HZXQodjg6OlN0cmluZzo6
TmV3KCJsZW5ndGgiKSk7Ci0gICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVtYmVyKCkp
IHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFz
IG5vIGxlbmd0aCBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsKLSAg
ICB9Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRzLgotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gcG9ydCA9IHBvcnRzLT5HZXQoaSk7Ci0gICAgICAgIC8vIFZhbGlkYXRp
b24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhUTUw1IHNwZWMgMTAuMy4zLgotICAgICAgICBp
ZiAoaXNVbmRlZmluZWRPck51bGwocG9ydCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoREFU
QV9DTE9ORV9FUlIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBw
ZXIgV2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBpZiAoIVY4TWVzc2FnZVBvcnQ6Okhhc0lu
c3RhbmNlKHBvcnQpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5
IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cyIpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQoVjhNZXNz
YWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwb3J0KSkpOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRD
dXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0
Q3VzdG9tLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYjUwMmIuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0
b20uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMp
IDIwMDgsIDIwMDkgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWOE1l
c3NhZ2VQb3J0Q3VzdG9tX2gKLSNkZWZpbmUgVjhNZXNzYWdlUG9ydEN1c3RvbV9oCi0KLSNpbmNs
dWRlIDx2OC5oPgotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0
IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgotICAgIC8vIEFs
c28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUg
b2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjIGFu
ZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KLSAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUg
d2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgotICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRB
cnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBWOE1lc3NhZ2VQb3J0Q3VzdG9tX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3Bw
CmluZGV4IDQzMDk3MmIuLjAxMTRiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtMzUsMTEgKzM1LDExIEBACiAK
ICNpbmNsdWRlICJXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhN
ZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKQEAgLTUxLDE3ICs1MSwyMSBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5w
b3N0TWVzc2FnZSIpOwogICAgIFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydHM7CisgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRB
cnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWV4dHJhY3RUcmFuc2ZlcmFi
bGVzKGFyZ3NbMV0sIHBvcnRzLCBhcnJheUJ1ZmZlcnMpKQogICAgICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKICAgICB9CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6IDAsIGRpZFRocm93
KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KKyAgICAgICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0cyA6IDAsIGRvVHJhbnNmZXIg
PyAmYXJyYXlCdWZmZXJzIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3b3JrZXItPnBvc3RNZXNz
YWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCBlYyk7CisgICAgd29ya2VyLT5wb3N0
TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRzLCBlYyk7CiAgICAgcmV0dXJuIHRocm93
RXJyb3IoZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg5YjlkZDEuLjcy
NWViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MTEtMjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAgICAgW1Y4XVtD
aHJvbWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRvIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKToKKwogMjAx
MS0xMS0yMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogTWlzc2luZyBXRUJLSVRfRVhQT1JUIGluIFdl
Yk1lZGlhU3RyZWFtUmVnaXN0cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDlmM2JjNjMuLjhmNDZiNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmcm9tU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYg
cwogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2Vy
aWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsKICAgICBib29sIGRpZFRocm93
OwotICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2YWx1ZSwgMCwgZGlkVGhyb3cpOworICAgIFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSh2YWx1ZSwgMCwgMCwgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTsKICAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlOwo=
</data>
<flag name="review"
          id="115610"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116446</attachid>
            <date>2011-11-23 16:01:32 -0800</date>
            <delta_ts>2011-11-23 18:29:32 -0800</delta_ts>
            <desc>CR feedback</desc>
            <filename>73054.patch</filename>
            <type>text/plain</type>
            <size>26042</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMzAyMzFlLi41NThlMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMTEtMjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAg
ICAgW1Y4XVtDaHJvbWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRv
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OnNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAqIGJpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdFRyYW5zZmVyYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVzc2Fn
ZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9y
eTo6cHVzaFN0YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBs
YWNlU3RhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
UG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKwogMjAx
MS0xMS0yMyAgSm9uYXRoYW4gQmFja2VyICA8YmFja2VyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERyb3Agcm9vdCBsYXllciB0aWxlcyBvbiBwbGF0Zm9ybXMgdGhhdCBjYWNo
ZSB0aGUgZnJvbnQgYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDBiM2Q4OTguLjdhYmU2M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
NDcyLDcgKzE0NzIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgfSBl
bHNpZiAoJHBhcmFtZXRlci0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIik7CiAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBib29sICR7cGFyYW1ldGVy
TmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xuIjsKLSAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIDAsICR7cGFyYW1ldGVyTmFtZX1EaWRU
aHJvdyk7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgMCwgMCwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CiAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoJHtwYXJhbWV0ZXJO
YW1lfURpZFRocm93KVxuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsKICAgICAgICAgfSBlbHNpZiAoVHlw
ZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDkwOGU3NWMu
LmY4ZDY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC03OTksNyArNzk5LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzZXJpYWxpemVkVmFsdWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMi
LCBWOFByb3h5OjpUeXBlRXJyb3IpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgYm9vbCBzZXJpYWxpemVkQXJnRGlkVGhyb3cgPSBm
YWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkQXJnID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgc2VyaWFsaXplZEFyZ0Rp
ZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkQXJn
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgc2VyaWFsaXpl
ZEFyZ0RpZFRocm93KTsKICAgICBpZiAoc2VyaWFsaXplZEFyZ0RpZFRocm93KQogICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGltcC0+c2VyaWFsaXplZFZhbHVlKHNlcmlhbGl6
ZWRBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcApp
bmRleCBmODAyNzBkLi4yYTk3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9PcHRpb25zT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9P
cHRpb25zT2JqZWN0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgot
I2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGMxYTY4MTcuLmQzYTRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTk4OCw3
ICsxOTg4LDkgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoKICAgICBkZXNlcmlhbGl6ZUFuZFNl
dFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdldCgpKTsK
IH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBib29sJiBkaWRUaHJvdykKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJh
eUJ1ZmZlckFycmF5KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sJiBkaWRUaHJvdykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZSwgbWVzc2FnZVBvcnRzLCBkaWRU
aHJvdykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAppbmRleCBjNjViYjJkLi4xYjU2ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzUsMTEgKzM1
LDE2IEBACiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVzc2FnZVBvcnQ7CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8V1RGOjpB
cnJheUJ1ZmZlcj4sIDE+IEFycmF5QnVmZmVyQXJyYXk7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHsKIHB1YmxpYzoKQEAgLTUzLDcgKzU4LDkgQEAgcHVibGljOgogICAgIC8vIGJlIHRocm93
biB1c2luZyB2ODo6VGhyb3dFeGNlcHRpb24oKSwgYW5kIHNldHMgfGRpZFRocm93fC4gSW4gdGhp
cyBjYXNlCiAgICAgLy8gdGhlIGNhbGxlciBtdXN0IG5vdCBpbnZva2UgYW55IFY4IG9wZXJhdGlv
bnMgdW50aWwgY29udHJvbCByZXR1cm5zIHRvCiAgICAgLy8gVjguIFdoZW4gc2VyaWFsaXphdGlv
biBpcyBzdWNjZXNzZnVsLCB8ZGlkVGhyb3d8IGlzIGZhbHNlLgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwg
TWVzc2FnZVBvcnRBcnJheSosIGJvb2wmIGRpZFRocm93KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2Fn
ZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGRpZFRocm93KTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4IDRmNzgzYjYuLjEyZjUy
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTMx
LDE0ICszMSwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVz
LmgiCiAKLSNpbmNsdWRlIDx2OC5oPgotCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8djguaD4K
KyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0LmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKQEAgLTc2LDYgKzgwLDY4IEBAIHZvaWQgY3Jl
YXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4KICAgICBjYWNoZUFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhjYWNo
ZUFycmF5LT5MZW5ndGgoKSksIHZhbHVlKTsKIH0KIAorYm9vbCBleHRyYWN0VHJhbnNmZXJhYmxl
cyh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEFy
cmF5QnVmZmVyQXJyYXkmIGFycmF5QnVmZmVycykKK3sKKyAgICBpZiAoaXNVbmRlZmluZWRPck51
bGwodmFsdWUpKSB7CisgICAgICAgIHBvcnRzLnJlc2l6ZSgwKTsKKyAgICAgICAgYXJyYXlCdWZm
ZXJzLnJlc2l6ZSgwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCF2
YWx1ZS0+SXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0Vycm9yKCJUcmFuc2ZlckFycmF5IGFy
Z3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgdWludDMyX3QgbGVuZ3RoID0gMDsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdHJh
bnNmZXJyYWJsZXMgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworCisgICAg
aWYgKHZhbHVlLT5Jc0FycmF5KCkpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJy
YXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIGxlbmd0aCA9
IGFycmF5LT5MZW5ndGgoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTZXF1ZW5jZS10eXBl
IG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQorICAgICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHRyYW5zZmVycmFibGVzLT5HZXQodjg6OlN0cmluZzo6
TmV3KCJsZW5ndGgiKSk7CisgICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVtYmVyKCkp
IHsKKyAgICAgICAgICAgIHRocm93RXJyb3IoIlRyYW5zZmVyQXJyYXkgYXJndW1lbnQgaGFzIG5v
IGxlbmd0aCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsKKyAgICB9
CisKKyAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHRyYW5zZmVycmFibGVzLgor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdHJhbnNmZXJyYWJsZSA9IHRyYW5zZmVycmFibGVzLT5HZXQo
aSk7CisgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhUTUw1
IHNwZWMgMTAuMy4zLgorICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwodHJhbnNmZXJyYWJs
ZSkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IoREFUQV9DTE9ORV9FUlIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2Jq
ZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1Lgor
ICAgICAgICBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJsZSkpCisg
ICAgICAgICAgICBwb3J0cy5hcHBlbmQoVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkpOworICAgICAgICBlbHNlIGlmIChW
OEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh0cmFuc2ZlcnJhYmxlKSkKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVycy5hcHBlbmQoVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRocm93RXJyb3IoIlRyYW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkg
VHJhbnNmZXJhYmxlcyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzKQoreworICAg
IEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOworICAgIGJvb2wgcmVzdWx0ID0gZXh0cmFj
dFRyYW5zZmVyYWJsZXModmFsdWUsIHBvcnRzLCBhcnJheUJ1ZmZlcnMpOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFycmF5QnVmZmVycy5zaXplKCkg
PiAwKSB7CisgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVz
dCBjb250YWluIG9ubHkgTWVzc2FnZVBvcnRzIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGludCBjYWNoZUluZGV4KQogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hlID0gb2Jq
ZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VXRpbGl0aWVzLmgKaW5kZXggYmVhN2QwZi4uOTk1NmZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCkBAIC0zNiwxMSArMzYsMTYgQEAKIAogI2luY2x1
ZGUgIk93bkhhbmRsZS5oIgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIEFycmF5QnVmZmVyOwor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOwogICAg
IGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAg
ICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTY3JpcHRTdGF0ZTsK
IApAQCAtNzQsNiArNzksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwogICAgIH07CiAKKyAgICB0eXBlZGVmIFdU
Rjo6VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7CisgICAg
dHlwZWRlZiBXVEY6OlZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXI+LCAxPiBBcnJheUJ1ZmZlckFy
cmF5OworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0
IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAgIC8vIEFs
c28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUg
b2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIAorICAgIC8vIG9mIHRoZSBIVE1M
NSBzcGVjIGFuZCBnZW5lcmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNz
ZWQgdmFsdWUgd2FzIG5vdCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgorICAgIGJvb2wgZXh0cmFj
dFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3NhZ2VQb3J0QXJyYXkmLCBB
cnJheUJ1ZmZlckFycmF5Jik7IAorICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2ODo6TG9j
YWw8djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOworCiAgICAgLy8gJ0Z1bmN0aW9uT25s
eScgaXMgYXNzdW1lZCBmb3IgdGhlIGNyZWF0ZWQgY2FsbGJhY2suCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFY4Q2FsbGJhY2tUeXBlPgogICAgIFBhc3NSZWZQdHI8VjhDYWxsYmFja1R5cGU+IGNy
ZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29s
JiBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1ZXMgPSAw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKaW5kZXggMTlmN2M1MS4uM2YyZWVlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhET01XaW5k
b3cuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIK
QEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKQEAgLTU3LDcgKzU5LDYgQEAKICNpbmNs
dWRlICJWOEdDRm9yQ29udGV4dERpc3Bvc2UuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5
TmFtZS5oIgogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJWOE1lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC0yOTcsMTEgKzI5OCwxMiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncwogICAgIC8vIG9yCiAgICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdl
LCB0YXJnZXRPcmlnaW4pOwogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIEFy
cmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheTsKICAgICBTdHJpbmcgdGFyZ2V0T3JpZ2lu
OwogICAgIHsKICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDIpIHsKLSAgICAgICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShh
cmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxl
cyhhcmdzWzFdLCBwb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpKQogICAgICAgICAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB0YXJnZXRPcmlnaW4gPSB0b1dl
YkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7CiAgICAgICAgIH0g
ZWxzZQpAQCAtMzEzLDcgKzMxNSwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhh
bmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiAKICAg
ICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRvVHJh
bnNmZXIgPyAmcG9ydEFycmF5IDogMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UgPQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShhcmdzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1Ry
YW5zZmVyID8gJnBvcnRBcnJheSA6IDAsIGRvVHJhbnNmZXIgPyAmYXJyYXlCdWZmZXJBcnJheSA6
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFRocm93KTsKICAg
ICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTVhNjlkNC4uOThiZDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTMzLDExICszMywx
MiBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDUsMTcgKzQ2LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzLCBib29sIGRvVHJhbnNmZXIpCiB7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CisgICAgTWVzc2Fn
ZVBvcnRBcnJheSBwb3J0czsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdlUG9ydEFy
cmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJs
ZXMoYXJnc1sxXSwgcG9ydHMsIGFycmF5QnVmZmVycykpCiAgICAgICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5IDogMCwgZGlkVGhyb3cp
OworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPQorICAgICAgICBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJnBvcnRzIDogMCwgZG9UcmFuc2ZlciA/
ICZhcnJheUJ1ZmZlcnMgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwotICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3b3JrZXJDb250ZXh0LT5w
b3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1lc3NhZ2Uu
cmVsZWFzZSgpLCAmcG9ydHMsIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1
c3RvbS5jcHAKaW5kZXggYmY5ODE1YS4uODk1NjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9y
eTo6cHVzaFN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBi
b29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwg
ZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAsIDAsIGRpZFRocm93
KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
QEAgLTY4LDcgKzY4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0
YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKGFyZ3NbMF0sIDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBd
LCAwLCAwLCBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA1ZDE3NWUzLi42NGFiZTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJWOEJs
b2IuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnQu
aCIKLSNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggZGQ5OTdiMS4u
Mzc3MzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhN
ZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAgLTQ2LDEyICs0NiwxNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9y
dCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIE1lc3NhZ2VQ
b3J0QXJyYXkgcG9ydEFycmF5OworICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJh
eTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgaWYgKCFnZXRNZXNzYWdl
UG9ydEFycmF5KGFyZ3NbMV0sIHBvcnRBcnJheSkpCisgICAgICAgIGlmICghZXh0cmFjdFRyYW5z
ZmVyYWJsZXMoYXJnc1sxXSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KSkKICAgICAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGJvb2wgZGlkVGhyb3cgPSBm
YWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZG9UcmFuc2ZlciA/ICZwb3J0QXJyYXkg
OiAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSA9CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5
IDogMCwgZG9UcmFuc2ZlciA/ICZhcnJheUJ1ZmZlckFycmF5IDogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTcxLDQ5ICs3NSw0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojp3
ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgcmV0dXJuIGhh
bmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soYXJncywgdHJ1ZSk7CiB9CiAKLWJvb2wgZ2V0TWVzc2Fn
ZVBvcnRBcnJheSh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYg
cG9ydEFycmF5KQotewotICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsKLSAgICAg
ICAgcG9ydEFycmF5LnJlc2l6ZSgwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKCJNZXNzYWdl
UG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgdWludDMyX3QgbGVuZ3RoID0gMDsKLSAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gcG9ydHMgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwotCi0g
ICAgaWYgKHZhbHVlLT5Jc0FycmF5KCkpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
YXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7Ci0gICAgICAgIGxlbmd0
aCA9IGFycmF5LT5MZW5ndGgoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBTZXF1ZW5jZS10
eXBlIG9iamVjdCAtIGdldCB0aGUgbGVuZ3RoIGF0dHJpYnV0ZQotICAgICAgICB2ODo6TG9jYWw8
djg6OlZhbHVlPiBzZXF1ZW5jZUxlbmd0aCA9IHBvcnRzLT5HZXQodjg6OlN0cmluZzo6TmV3KCJs
ZW5ndGgiKSk7Ci0gICAgICAgIGlmICghc2VxdWVuY2VMZW5ndGgtPklzTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgIHRocm93RXJyb3IoIk1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxl
bmd0aCBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aC0+VWludDMyVmFsdWUoKTsKLSAgICB9Ci0K
LSAgICAvLyBWYWxpZGF0ZSB0aGUgcGFzc2VkIGFycmF5IG9mIHBvcnRzLgotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gcG9ydCA9IHBvcnRzLT5HZXQoaSk7Ci0gICAgICAgIC8vIFZhbGlkYXRpb24gb2Yg
bm9uLW51bGwgb2JqZWN0cywgcGVyIEhUTUw1IHNwZWMgMTAuMy4zLgotICAgICAgICBpZiAoaXNV
bmRlZmluZWRPck51bGwocG9ydCkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3IoREFUQV9DTE9O
RV9FUlIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIC8v
IFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2Vi
SURMIHNwZWMgNC4xLjE1LgotICAgICAgICBpZiAoIVY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNl
KHBvcnQpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5IGFyZ3Vt
ZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0cyIpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQoVjhNZXNzYWdlUG9y
dDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwb3J0KSkpOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9t
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYjUwMmIuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IDIwMDkgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWOE1lc3NhZ2VQ
b3J0Q3VzdG9tX2gKLSNkZWZpbmUgVjhNZXNzYWdlUG9ydEN1c3RvbV9oCi0KLSNpbmNsdWRlIDx2
OC5oPgotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEg
SlMgc2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgotICAgIC8vIEFsc28gdmFs
aWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhl
IFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjIGFuZCBnZW5l
cmF0ZXMgZXhjZXB0aW9ucyBhcyBhcHByb3ByaWF0ZS4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGFycmF5IHdhcyBmaWxsZWQsIG9yIGZhbHNlIGlmIHRoZSBwYXNzZWQgdmFsdWUgd2FzIG5v
dCBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlLgotICAgIGJvb2wgZ2V0TWVzc2FnZVBvcnRBcnJheSh2
ODo6TG9jYWw8djg6OlZhbHVlPiwgTWVzc2FnZVBvcnRBcnJheSYpOwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBWOE1lc3NhZ2VQb3J0Q3VzdG9tX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4
IDQzMDk3MmIuLjAxMTRiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtMzUsMTEgKzM1LDExIEBACiAKICNpbmNs
dWRlICJXb3JrZXIuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdl
UG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKQEAgLTUxLDE3ICs1MSwyMSBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLldvcmtlci5wb3N0TWVz
c2FnZSIpOwogICAgIFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OworICAgIE1lc3NhZ2VQb3J0
QXJyYXkgcG9ydHM7CisgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShh
cmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWV4dHJhY3RUcmFuc2ZlcmFibGVzKGFy
Z3NbMV0sIHBvcnRzLCBhcnJheUJ1ZmZlcnMpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKICAgICB9CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6IDAsIGRpZFRocm93KTsKKyAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KKyAgICAgICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0cyA6IDAsIGRvVHJhbnNmZXIgPyAmYXJy
YXlCdWZmZXJzIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
VGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB3b3JrZXItPnBvc3RNZXNzYWdlKG1l
c3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCBlYyk7CisgICAgd29ya2VyLT5wb3N0TWVzc2Fn
ZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRzLCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg5YjlkZDEuLjcyNWViYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMjMg
IERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAgICAgW1Y4XVtDaHJvbWl1
bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRvIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKToKKwogMjAxMS0xMS0y
MyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hy
b21pdW1dIE1lZGlhU3RyZWFtIEFQSTogTWlzc2luZyBXRUJLSVRfRVhQT1JUIGluIFdlYk1lZGlh
U3RyZWFtUmVnaXN0cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDlmM2JjNjMuLjhmNDZiNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmcm9tU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgcwogV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXpl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsKICAgICBib29sIGRpZFRocm93OwotICAg
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSh2YWx1ZSwgMCwgZGlkVGhyb3cpOworICAgIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSh2YWx1ZSwgMCwgMCwgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0
dXJuIGNyZWF0ZUludmFsaWQoKTsKICAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlOwo=
</data>
<flag name="review"
          id="115611"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116464</attachid>
            <date>2011-11-23 18:29:32 -0800</date>
            <delta_ts>2011-11-23 20:33:20 -0800</delta_ts>
            <desc>Final</desc>
            <filename>73054.patch</filename>
            <type>text/plain</type>
            <size>26283</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZTE2ZTc4Li4wMmZhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMTEtMjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAg
ICAgW1Y4XVtDaHJvbWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRv
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqSW50ZXJuYWw6OnNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAqIGJpbmRpbmdz
L3Y4L09wdGlvbnNPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFRyYW5zZmVyYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVzc2FnZVBv
cnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6
cHVzaFN0YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBsYWNl
U3RhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKwogMjAxMS0x
MS0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTA2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNDJhNmFlNS4uZmNk
NWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT50eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiKTsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0gZmFsc2U7XG4iOwotICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgMCwgJHtw
YXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAwLCAwLCAke3BhcmFtZXRlck5hbWV9
RGlkVGhyb3cpO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOwogICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4iOwogICAg
ICAgICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKaW5kZXggNjhhOTVkOC4uOTgzNGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTc5OSw3ICs3OTksNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBib29sIHNlcmlhbGl6
ZWRBcmdEaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAw
LCBzZXJpYWxpemVkQXJnRGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBd
LCAwLCAwLCBzZXJpYWxpemVkQXJnRGlkVGhyb3cpOwogICAgIGlmIChzZXJpYWxpemVkQXJnRGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgaW1wLT5zZXJpYWxp
emVkVmFsdWUoc2VyaWFsaXplZEFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09w
dGlvbnNPYmplY3QuY3BwCmluZGV4IGY4MDI3MGQuLjJhOTc0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5j
bHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgorI2luY2x1
ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzFhNjgxNy4uZDNhNGIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0xOTg4LDcgKzE5ODgsOSBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iagogICAg
IGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZSwgdmFsdWUuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIGJvb2wmIGRpZFRocm93KQorUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBt
ZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGRpZFRocm93KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlLCBt
ZXNzYWdlUG9ydHMsIGRpZFRocm93KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGM2NWJiMmQuLjFiNTZlZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0zNSwxMSArMzUsMTYgQEAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKIAogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKK3R5cGVkZWYgVmVj
dG9yPFJlZlB0cjxXVEY6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKIAogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgpAQCAtNTMsNyArNTgsOSBAQCBwdWJsaWM6
CiAgICAgLy8gYmUgdGhyb3duIHVzaW5nIHY4OjpUaHJvd0V4Y2VwdGlvbigpLCBhbmQgc2V0cyB8
ZGlkVGhyb3d8LiBJbiB0aGlzIGNhc2UKICAgICAvLyB0aGUgY2FsbGVyIG11c3Qgbm90IGludm9r
ZSBhbnkgVjggb3BlcmF0aW9ucyB1bnRpbCBjb250cm9sIHJldHVybnMgdG8KICAgICAvLyBWOC4g
V2hlbiBzZXJpYWxpemF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHxkaWRUaHJvd3wgaXMgZmFsc2UuCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5KiwgYm9vbCYgZGlkVGhyb3cpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgZGlkVGhy
b3cpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5k
ZXggNGY3ODNiNi4uYTVjZjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVjhVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgPHY4Lmg+Ci0KKyNpbmNsdWRlICJBcnJh
eUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
KyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0LmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKQEAgLTQ2LDYgKzQ5LDggQEAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkZyYW1lLmgiCiAKKyNpbmNsdWRlIDx2OC5o
PgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFY4TG9jYWxDb250ZXh0OjpWOExvY2FsQ29udGV4
dCgpCkBAIC03Niw2ICs4MSw2OCBAQCB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+CiAgICAgY2FjaGVB
cnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoY2FjaGVBcnJheS0+TGVuZ3RoKCkpLCB2YWx1ZSk7
CiB9CiAKK2Jvb2wgZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZl
cnMpCit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSkgeworICAgICAgICBwb3J0
cy5yZXNpemUoMCk7CisgICAgICAgIGFycmF5QnVmZmVycy5yZXNpemUoMCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpIHsKKyAgICAg
ICAgdGhyb3dFcnJvcigiVHJhbnNmZXJBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHVpbnQzMl90IGxlbmd0aCA9IDA7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHRyYW5zZmVycmFibGVzID0gdjg6OkxvY2FsPHY4
OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIGlmICh2YWx1ZS0+SXNBcnJheSgpKSB7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46
OkNhc3QodmFsdWUpOworICAgICAgICBsZW5ndGggPSBhcnJheS0+TGVuZ3RoKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gU2VxdWVuY2UtdHlwZSBvYmplY3QgLSBnZXQgdGhlIGxlbmd0aCBh
dHRyaWJ1dGUKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2VxdWVuY2VMZW5ndGggPSB0
cmFuc2ZlcnJhYmxlcy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOworICAgICAgICBp
ZiAoIXNlcXVlbmNlTGVuZ3RoLT5Jc051bWJlcigpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9y
KCJUcmFuc2ZlckFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbGVuZ3RoID0gc2VxdWVu
Y2VMZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGhlIHBh
c3NlZCBhcnJheSBvZiB0cmFuc2ZlcnJhYmxlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHRyYW5z
ZmVycmFibGUgPSB0cmFuc2ZlcnJhYmxlcy0+R2V0KGkpOworICAgICAgICAvLyBWYWxpZGF0aW9u
IG9mIG5vbi1udWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDEwLjMuMy4KKyAgICAgICAgaWYg
KGlzVW5kZWZpbmVkT3JOdWxsKHRyYW5zZmVycmFibGUpKSB7CisgICAgICAgICAgICB0aHJvd0Vy
cm9yKERBVEFfQ0xPTkVfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVy
ZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KKyAgICAgICAgaWYgKFY4TWVzc2FnZVBvcnQ6
Okhhc0luc3RhbmNlKHRyYW5zZmVycmFibGUpKQorICAgICAgICAgICAgcG9ydHMuYXBwZW5kKFY4
TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodHJhbnNm
ZXJyYWJsZSkpKTsKKyAgICAgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2Uo
dHJhbnNmZXJyYWJsZSkpCisgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFY4QXJyYXlC
dWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodHJhbnNmZXJyYWJs
ZSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKCJUcmFuc2ZlckFy
cmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IFRyYW5zZmVyYWJsZXMiKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBnZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBN
ZXNzYWdlUG9ydEFycmF5JiBwb3J0cykKK3sKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVm
ZmVyczsKKyAgICBib29sIHJlc3VsdCA9IGV4dHJhY3RUcmFuc2ZlcmFibGVzKHZhbHVlLCBwb3J0
cywgYXJyYXlCdWZmZXJzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChhcnJheUJ1ZmZlcnMuc2l6ZSgpID4gMCkgeworICAgICAgICB0aHJvd0Vycm9y
KCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3NhZ2VQb3J0
cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNo
ZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCmluZGV4IGJl
YTdkMGYuLjk5NTZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
aApAQCAtMzYsMTEgKzM2LDE2IEBACiAKICNpbmNsdWRlICJPd25IYW5kbGUuaCIKIAorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBL
VVJMOworICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgY2xhc3MgU2NyaXB0U3RhdGU7CiAKQEAgLTc0LDYgKzc5LDE2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29u
dGV4dDsKICAgICB9OwogCisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+LCAxPiBNZXNzYWdlUG9ydEFycmF5OworICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8UmVmUHRy
PEFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKKworICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRv
IGEgTWVzc2FnZVBvcnRBcnJheS4KKyAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMg
cGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2Vj
dGlvbiA4LjMuMyAKKyAgICAvLyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2Vw
dGlvbnMgYXMgYXBwcm9wcmlhdGUuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3
YXMgZmlsbGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBw
cm9wcmlhdGUgdHlwZS4KKyAgICBib29sIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHY4OjpMb2NhbDx2
ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5JiwgQXJyYXlCdWZmZXJBcnJheSYpOyAKKyAgICBi
b29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3NhZ2VQb3J0
QXJyYXkmKTsKKwogICAgIC8vICdGdW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRoZSBjcmVh
dGVkIGNhbGxiYWNrLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWOENhbGxiYWNrVHlwZT4KICAg
ICBQYXNzUmVmUHRyPFY4Q2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgc3VjY2VlZGVkLCBDYWxsYmFja0FsbG93
ZWRWYWx1ZUZsYWdzIGFjY2VwdGVkVmFsdWVzID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDE5Zjdj
NTEuLjhiMWYyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmgiCkBAIC01Nyw3ICs1OSw2IEBACiAjaW5jbHVkZSAiVjhHQ0ZvckNvbnRleHREaXNwb3Nl
LmgiCiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhUTUxD
b2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUg
IlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5o
IgpAQCAtMjk3LDExICsyOTgsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5k
bGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAvLyBv
cgogICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTsKICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVy
QXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKICAgICB7CiAgICAgICAgIHY4OjpUcnlD
YXRjaCB0cnlDYXRjaDsKICAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7Ci0gICAgICAg
ICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAgICAg
ICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1sxXSwgcG9ydEFycmF5LCBhcnJh
eUJ1ZmZlckFycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVm
aW5lZENoZWNrKGFyZ3NbMl0pOwogICAgICAgICB9IGVsc2UKQEAgLTMxMyw3ICszMTUsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogCiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwot
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6IDAsIGRp
ZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KKyAg
ICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0QXJyYXkgOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJmFycmF5
QnVmZmVyQXJyYXkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDk1YTY5
ZDQuLmQ3YTRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBA
IC0zMywxMSArMzMsMTIgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKICNpbmNsdWRlICJWOERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4TWVzc2Fn
ZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDE3ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBkb1RyYW5zZmVyKQogewogICAgIERlZGljYXRl
ZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5
OworICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CisgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJh
eUJ1ZmZlcnM7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0
TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWV4dHJh
Y3RUcmFuc2ZlcmFibGVzKGFyZ3NbMV0sIHBvcnRzLCBhcnJheUJ1ZmZlcnMpKQogICAgICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZh
bHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6
IDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
ID0KKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0cyA6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIgPyAmYXJy
YXlCdWZmZXJzIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
VGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLSAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29ya2VyQ29udGV4dC0+cG9zdE1l
c3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVh
c2UoKSwgJnBvcnRzLCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20u
Y3BwCmluZGV4IGJmOTgxNWEuLjg5NTYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1
c2hTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgYm9vbCBk
aWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3Rv
cnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAsIGRpZFRo
cm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAwLCAwLCBkaWRUaHJvdyk7CiAg
ICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC02
OCw3ICs2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzBdLCAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwg
MCwgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNWQxNzVlMy4uNjRhYmU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhCbG9iLmgi
CiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0LmgiCi0j
aW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IGRkOTk3YjEuLmVkNmY3
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4TWVzc2Fn
ZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC00NiwxMiArNDYsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsKICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSBW
OE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBNZXNzYWdlUG9ydEFy
cmF5IHBvcnRBcnJheTsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRB
cnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWV4dHJhY3RUcmFuc2ZlcmFi
bGVzKGFyZ3NbMV0sIHBvcnRBcnJheSwgYXJyYXlCdWZmZXJBcnJheSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5IDogMCwg
ZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPQor
ICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIgPyAmYXJy
YXlCdWZmZXJBcnJheSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC03MSw0OSArNzYsNCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbgogICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNr
KGFyZ3MsIHRydWUpOwogfQogCi1ib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSkKLXsKLSAgICBpZiAo
aXNVbmRlZmluZWRPck51bGwodmFsdWUpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPklzT2JqZWN0
KCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0
IGJlIGFuIG9iamVjdCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHVpbnQz
Ml90IGxlbmd0aCA9IDA7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHBvcnRzID0gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLQotICAgIGlmICh2YWx1ZS0+SXNBcnJheSgp
KSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpB
cnJheT46OkNhc3QodmFsdWUpOwotICAgICAgICBsZW5ndGggPSBhcnJheS0+TGVuZ3RoKCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU2VxdWVuY2UtdHlwZSBvYmplY3QgLSBnZXQgdGhlIGxl
bmd0aCBhdHRyaWJ1dGUKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2VxdWVuY2VMZW5n
dGggPSBwb3J0cy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOwotICAgICAgICBpZiAo
IXNlcXVlbmNlTGVuZ3RoLT5Jc051bWJlcigpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKCJN
ZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIik7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgbGVuZ3RoID0gc2VxdWVu
Y2VMZW5ndGgtPlVpbnQzMlZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy8gVmFsaWRhdGUgdGhlIHBh
c3NlZCBhcnJheSBvZiBwb3J0cy4KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHBvcnQgPSBwb3J0cy0+
R2V0KGkpOwotICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5vbi1udWxsIG9iamVjdHMsIHBlciBI
VE1MNSBzcGVjIDEwLjMuMy4KLSAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHBvcnQpKSB7
Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMg
aW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAgICAg
ICAgaWYgKCFWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZShwb3J0KSkgewotICAgICAgICAgICAg
dGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBN
ZXNzYWdlUG9ydHMiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBwb3J0QXJyYXkuYXBwZW5kKFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QocG9ydCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3YWI1MDJiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuCi0gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgVjhNZXNzYWdlUG9ydEN1c3RvbV9oCi0jZGVmaW5lIFY4
TWVzc2FnZVBvcnRDdXN0b21faAotCi0jaW5jbHVkZSA8djguaD4KLQotI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIC8vIEhlbHBlciBmdW5jdGlv
biB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBpbnRvIGEg
TWVzc2FnZVBvcnRBcnJheS4KLSAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVy
IHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlv
biA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMgYXMgYXBw
cm9wcmlhdGUuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3YXMgZmlsbGVkLCBv
ciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBwcm9wcmlhdGUgdHlw
ZS4KLSAgICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1l
c3NhZ2VQb3J0QXJyYXkmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VjhNZXNzYWdlUG9ydEN1c3RvbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAppbmRleCA0MzA5NzJiLi5mNWNjZGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3Rv
bS5jcHAKQEAgLTM1LDExICszNSwxMSBAQAogCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAKKyNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCkBAIC01MSwxNyArNTEsMjIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKICAgICBXb3JrZXIqIHdv
cmtlciA9IFY4V29ya2VyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBNZXNzYWdlUG9y
dEFycmF5IHBvcnRBcnJheTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOworICAgIEFycmF5
QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkgewot
ICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkKKyAg
ICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdzWzFdLCBwb3J0cywgYXJyYXlCdWZm
ZXJzKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGJv
b2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZG9UcmFuc2Zl
ciA/ICZwb3J0QXJyYXkgOiAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSA9CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGFyZ3NbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNm
ZXIgPyAmcG9ydHMgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b1RyYW5zZmVyID8gJmFycmF5QnVmZmVycyA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29ya2Vy
LT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgIHdv
cmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0cywgZWMpOwogICAgIHJl
dHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
OWI5ZGQxLi5hZjZiYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDExLTExLTIzICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDU0CisgICAg
ICAgIFtWOF1bQ2hyb21pdW1dIEFkZCBsaXN0IG9mIHRyYW5zZmVycmVkIEFycmF5QnVmZmVycyB0
byBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXZpZCBMZXZpbi4KKworICAgICAgICAqIHNyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6
CisKIDIwMTEtMTEtMjMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IE1pc3NpbmcgV0VCS0lUX0VYUE9S
VCBpbiBXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5ZjNiYzYzLi44
ZjQ2YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZnJvbVN0cmluZyhjb25zdCBXZWJT
dHJpbmcmIHMKIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnNlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CiAgICAgYm9vbCBk
aWRUaHJvdzsKLSAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZFZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIDAsIGRpZFRocm93KTsKKyAgICBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUodmFsdWUsIDAsIDAsIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cp
CiAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgcmV0dXJuIHNlcmlhbGl6ZWRW
YWx1ZTsK
</data>
<flag name="commit-queue"
          id="115632"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116476</attachid>
            <date>2011-11-23 20:33:20 -0800</date>
            <delta_ts>2011-11-23 21:14:42 -0800</delta_ts>
            <desc>Rebaselined tests</desc>
            <filename>73054.patch</filename>
            <type>text/plain</type>
            <size>34155</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYTk3NDQ3Li40OGEyNzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEt
MjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQKKyAgICAgICAgW1Y4XVtDaHJv
bWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXJzIHRvIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlLgorICAgICAgICBUZXN0cyByZWJhc2VsaW5lZCB0byByZWZsZWN0
IG5ldyBlcnJvciBtZXNzYWdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0
bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2FnZS1ldmVudC1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6CisKIDIwMTEtMTEtMjMgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmViYXNlbGluZSBDaHJvbWl1bSBhZnRlciByMTAxMDU2LiBVbnJldmlld2VkIGdh
cmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IGIwZDc4ZmIuLjBlODFmOGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1l
c3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApA
QCAtMSwxMSArMSwxMSBAQAogVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93
LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90
IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2gg
JzcnLCBmb2xsb3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93
LgogCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKLVBBU1M6
IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVz
c2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIn
LCApOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50
IG11c3QgYmUgYW4gb2JqZWN0Ci1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCczJywgW29iamVjdCBP
YmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWVzc2FnZVBvcnRBcnJheSBhcmd1
bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMycs
IFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0
QXJyYXkgYXJndW1lbnQgaGFzIG5vIGxlbmd0aCBhdHRyaWJ1dGUKK1BBU1M6IFBvc3RpbmcgbWVz
c2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJBcnJheSBh
cmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEp
OiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IG11c3Qg
YmUgYW4gb2JqZWN0CitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgKTogdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHJhbnNmZXJBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdAor
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsICk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFRyYW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QKK1BBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlCitQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCczJywgW29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHJhbnNmZXJBcnJheSBhcmd1bWVudCBoYXMgbm8gbGVuZ3RoIGF0dHJpYnV0ZQog
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IERP
TVdpbmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNz
YWdlLWV2ZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdlLWV2ZW50LWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dAppbmRleCAzNzE2YmVmLi43ZmU1MjFlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2Fn
ZS1ldmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL21lc3NhZ2UtZXZlbnQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CkBAIC04MCwxOSArODAsMTkgQEAgUEFTUyBuZXcgTWVzc2FnZUV2
ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBbY2hhbm5lbC5wb3J0MSwgY2hhbm5lbC5wb3J0Miwg
Y2hhbm4KIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogW10gfSku
cG9ydHMgaXMgW10KIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czog
dW5kZWZpbmVkIH0pLnBvcnRzIGlzIFtdCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlw
ZScsIHsgcG9ydHM6IG51bGwgfSkucG9ydHMgaXMgW10KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgn
ZXZlbnRUeXBlJywgeyBwb3J0czogWzEsIDIsIDNdIH0pLnBvcnRzWzJdIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBjb250YWluIG9ubHkg
TWVzc2FnZVBvcnRzLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRz
OiB0ZXN0X29iamVjdCB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdl
UG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlLgotUEFTUyBuZXcgTWVz
c2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBkb2N1bWVudCB9KS5wb3J0cyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5n
dGggYXR0cmlidXRlLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRz
OiBmYWxzZSB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFy
cmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdl
dmVudFR5cGUnLCB7IHBvcnRzOiB0cnVlIH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCi1QQVNTIG5l
dyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6ICcnIH0pLnBvcnRzIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBv
YmplY3QuCi1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6ICdjaG9j
b2xhdGUnIH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCi1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcG9ydHM6IDEyMzQ1IH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCi1QQVNTIG5l
dyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1
IH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJn
dW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCi1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlw
ZScsIHsgcG9ydHM6IE5hTiB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNz
YWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LgotUEFTUyBuZXcgTWVzc2Fn
ZUV2ZW50KCdldmVudFR5cGUnLCB7IGdldCBwb3J0cygpIHsgcmV0dXJuIDEyMzsgfSB9KS5wb3J0
cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11
c3QgYmUgYW4gb2JqZWN0LgorUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBv
cnRzOiBbMSwgMiwgM10gfSkucG9ydHNbMl0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHJh
bnNmZXJBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4gb25seSBUcmFuc2ZlcmFibGVzLgorUEFT
UyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiB0ZXN0X29iamVjdCB9KS5w
b3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IGhh
cyBubyBsZW5ndGggYXR0cmlidXRlLgorUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUn
LCB7IHBvcnRzOiBkb2N1bWVudCB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
cmFuc2ZlckFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlLgorUEFTUyBuZXcg
TWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBmYWxzZSB9KS5wb3J0cyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2Jq
ZWN0LgorUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiB0cnVlIH0p
LnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyQXJyYXkgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QuCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsg
cG9ydHM6ICcnIH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyQXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcG9ydHM6ICdjaG9jb2xhdGUnIH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFRyYW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCitQQVNT
IG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IDEyMzQ1IH0pLnBvcnRzIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRyYW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBh
biBvYmplY3QuCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IDE4
NDQ2NzQ0MDczNzA5NTUxNjE1IH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRy
YW5zZmVyQXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuCitQQVNTIG5ldyBNZXNzYWdl
RXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IE5hTiB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LgorUEFT
UyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IGdldCBwb3J0cygpIHsgcmV0dXJuIDEy
MzsgfSB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFy
Z3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LgogUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5
cGUnLCB7IGdldCBwb3J0cygpIHsgdGhyb3cgJ01lc3NhZ2VFdmVudCBFcnJvcic7IH0gfSkgdGhy
ZXcgZXhjZXB0aW9uIE1lc3NhZ2VFdmVudCBFcnJvci4KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgn
ZXZlbnRUeXBlJywgeyBwb3J0czoge3ZhbHVlT2Y6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtjaGFu
bmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyLCBjaGFubmVsLnBvcnQyXTsgfSB9IH0pLnBvcnRzWzBd
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1lc3NhZ2VQb3J0QXJyYXkgYXJndW1lbnQgaGFz
IG5vIGxlbmd0aCBhdHRyaWJ1dGUuCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScs
IHsgcG9ydHM6IHt2YWx1ZU9mOiBmdW5jdGlvbiAoKSB7IHJldHVybiBbY2hhbm5lbC5wb3J0MSwg
Y2hhbm5lbC5wb3J0MiwgY2hhbm5lbC5wb3J0Ml07IH0gfSB9KS5wb3J0c1swXSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUcmFuc2ZlckFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0
cmlidXRlLgogUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRy
dWUsIGNhbmNlbGFibGU6IHRydWUsIGRhdGE6IHRlc3Rfb2JqZWN0LCBvcmlnaW46ICd3b25kZXJm
dWwnLCBsYXN0RXZlbnRJZDogJ2V4Y2VsbGVudCcsIHNvdXJjZTogd2luZG93LCBwb3J0czogW2No
YW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwucG9ydDJdIH0pLmJ1YmJsZXMgaXMg
dHJ1ZQogUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUs
IGNhbmNlbGFibGU6IHRydWUsIGRhdGE6IHRlc3Rfb2JqZWN0LCBvcmlnaW46ICd3b25kZXJmdWwn
LCBsYXN0RXZlbnRJZDogJ2V4Y2VsbGVudCcsIHNvdXJjZTogd2luZG93LCBwb3J0czogW2NoYW5u
ZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwucG9ydDJdIH0pLmNhbmNlbGFibGUgaXMg
dHJ1ZQogUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUs
IGNhbmNlbGFibGU6IHRydWUsIGRhdGE6IHRlc3Rfb2JqZWN0LCBvcmlnaW46ICd3b25kZXJmdWwn
LCBsYXN0RXZlbnRJZDogJ2V4Y2VsbGVudCcsIHNvdXJjZTogd2luZG93LCBwb3J0czogW2NoYW5u
ZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwucG9ydDJdIH0pLmRhdGEgaXMgdGVzdF9v
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1ZTE2ZTc4Li4wMmZhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTEtMTEtMjMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwNTQK
KyAgICAgICAgW1Y4XVtDaHJvbWl1bV0gQWRkIGxpc3Qgb2YgdHJhbnNmZXJyZWQgQXJyYXlCdWZm
ZXJzIHRvIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqSW50ZXJuYWw6OnNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAqIGJp
bmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFRyYW5zZmVyYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVz
c2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlz
dG9yeTo6cHVzaFN0YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5Ojpy
ZXBsYWNlU3RhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3Rv
bS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKwog
MjAxMS0xMS0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTA2OS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNDJhNmFl
NS4uZmNkNWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT50eXBlIGVxICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiKTsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0gZmFsc2U7XG4iOwotICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRl
ck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwg
MCwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAwLCAwLCAke3BhcmFtZXRl
ck5hbWV9RGlkVGhyb3cpO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOwogICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4i
OwogICAgICAgICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKaW5kZXggNjhhOTVkOC4uOTgzNGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTc5OSw3ICs3
OTksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBib29sIHNl
cmlhbGl6ZWRBcmdEaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdz
WzBdLCAwLCBzZXJpYWxpemVkQXJnRGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWzBdLCAwLCAwLCBzZXJpYWxpemVkQXJnRGlkVGhyb3cpOwogICAgIGlmIChzZXJpYWxpemVk
QXJnRGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgaW1wLT5z
ZXJpYWxpemVkVmFsdWUoc2VyaWFsaXplZEFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L09wdGlvbnNPYmplY3QuY3BwCmluZGV4IGY4MDI3MGQuLjJhOTc0NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgor
I2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzFhNjgxNy4uZDNhNGIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCkBAIC0xOTg4LDcgKzE5ODgsOSBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
agogICAgIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZSwgdmFsdWUuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIGJvb2wmIGRpZFRocm93KQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFy
cmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGRpZFRo
cm93KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZh
bHVlLCBtZXNzYWdlUG9ydHMsIGRpZFRocm93KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGM2NWJiMmQuLjFiNTZl
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCkBAIC0zNSwxMSArMzUsMTYgQEAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBBcnJheUJ1ZmZlcjsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNzYWdlUG9ydDsKIAogdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKK3R5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxXVEY6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsK
IAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgpAQCAtNTMsNyArNTgsOSBAQCBw
dWJsaWM6CiAgICAgLy8gYmUgdGhyb3duIHVzaW5nIHY4OjpUaHJvd0V4Y2VwdGlvbigpLCBhbmQg
c2V0cyB8ZGlkVGhyb3d8LiBJbiB0aGlzIGNhc2UKICAgICAvLyB0aGUgY2FsbGVyIG11c3Qgbm90
IGludm9rZSBhbnkgVjggb3BlcmF0aW9ucyB1bnRpbCBjb250cm9sIHJldHVybnMgdG8KICAgICAv
LyBWOC4gV2hlbiBzZXJpYWxpemF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHxkaWRUaHJvd3wgaXMgZmFs
c2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5KiwgYm9vbCYgZGlkVGhyb3cp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYg
ZGlkVGhyb3cpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJpbmcmIGRhdGEpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5j
cHAKaW5kZXggNGY3ODNiNi4uYTVjZjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VXRpbGl0aWVzLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgPHY4Lmg+Ci0KKyNpbmNsdWRl
ICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKQEAgLTQ2LDYgKzQ5LDggQEAKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkZyYW1lLmgiCiAKKyNpbmNsdWRl
IDx2OC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFY4TG9jYWxDb250ZXh0OjpWOExvY2Fs
Q29udGV4dCgpCkBAIC03Niw2ICs4MSw2OCBAQCB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3ko
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+CiAgICAg
Y2FjaGVBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoY2FjaGVBcnJheS0+TGVuZ3RoKCkpLCB2
YWx1ZSk7CiB9CiAKK2Jvb2wgZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBBcnJheUJ1ZmZlckFycmF5JiBhcnJh
eUJ1ZmZlcnMpCit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSkgeworICAgICAg
ICBwb3J0cy5yZXNpemUoMCk7CisgICAgICAgIGFycmF5QnVmZmVycy5yZXNpemUoMCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpIHsK
KyAgICAgICAgdGhyb3dFcnJvcigiVHJhbnNmZXJBcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIG9i
amVjdCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHVpbnQzMl90IGxlbmd0
aCA9IDA7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHRyYW5zZmVycmFibGVzID0gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIGlmICh2YWx1ZS0+SXNBcnJheSgp
KSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpB
cnJheT46OkNhc3QodmFsdWUpOworICAgICAgICBsZW5ndGggPSBhcnJheS0+TGVuZ3RoKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU2VxdWVuY2UtdHlwZSBvYmplY3QgLSBnZXQgdGhlIGxl
bmd0aCBhdHRyaWJ1dGUKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2VxdWVuY2VMZW5n
dGggPSB0cmFuc2ZlcnJhYmxlcy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOworICAg
ICAgICBpZiAoIXNlcXVlbmNlTGVuZ3RoLT5Jc051bWJlcigpKSB7CisgICAgICAgICAgICB0aHJv
d0Vycm9yKCJUcmFuc2ZlckFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIik7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbGVuZ3RoID0g
c2VxdWVuY2VMZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUg
dGhlIHBhc3NlZCBhcnJheSBvZiB0cmFuc2ZlcnJhYmxlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHRyYW5zZmVycmFibGUgPSB0cmFuc2ZlcnJhYmxlcy0+R2V0KGkpOworICAgICAgICAvLyBWYWxp
ZGF0aW9uIG9mIG5vbi1udWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDEwLjMuMy4KKyAgICAg
ICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHRyYW5zZmVycmFibGUpKSB7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFu
IGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KKyAgICAgICAgaWYgKFY4TWVzc2Fn
ZVBvcnQ6Okhhc0luc3RhbmNlKHRyYW5zZmVycmFibGUpKQorICAgICAgICAgICAgcG9ydHMuYXBw
ZW5kKFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
dHJhbnNmZXJyYWJsZSkpKTsKKyAgICAgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5z
dGFuY2UodHJhbnNmZXJyYWJsZSkpCisgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFY4
QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodHJhbnNm
ZXJyYWJsZSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKCJUcmFu
c2ZlckFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IFRyYW5zZmVyYWJsZXMiKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBnZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cykKK3sKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFy
cmF5QnVmZmVyczsKKyAgICBib29sIHJlc3VsdCA9IGV4dHJhY3RUcmFuc2ZlcmFibGVzKHZhbHVl
LCBwb3J0cywgYXJyYXlCdWZmZXJzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChhcnJheUJ1ZmZlcnMuc2l6ZSgpID4gMCkgeworICAgICAgICB0aHJv
d0Vycm9yKCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IG11c3QgY29udGFpbiBvbmx5IE1lc3Nh
Z2VQb3J0cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCiB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKIHsK
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVs
ZChjYWNoZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCmlu
ZGV4IGJlYTdkMGYuLjk5NTZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGls
aXRpZXMuaApAQCAtMzYsMTEgKzM2LDE2IEBACiAKICNpbmNsdWRlICJPd25IYW5kbGUuaCIKIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBGcmFtZTsKICAgICBj
bGFzcyBLVVJMOworICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2NyaXB0U3RhdGU7CiAKQEAgLTc0LDYgKzc5LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+
IG1fY29udGV4dDsKICAgICB9OwogCisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+LCAxPiBNZXNzYWdlUG9ydEFycmF5OworICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8
UmVmUHRyPEFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKKworICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFu
ZCBpbnRvIGEgTWVzc2FnZVBvcnRBcnJheS4KKyAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxl
bWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBh
bmQgc2VjdGlvbiA4LjMuMyAKKyAgICAvLyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVz
IGV4Y2VwdGlvbnMgYXMgYXBwcm9wcmlhdGUuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBh
cnJheSB3YXMgZmlsbGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2Yg
YW4gYXBwcm9wcmlhdGUgdHlwZS4KKyAgICBib29sIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHY4OjpM
b2NhbDx2ODo6VmFsdWU+LCBNZXNzYWdlUG9ydEFycmF5JiwgQXJyYXlCdWZmZXJBcnJheSYpOyAK
KyAgICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE1lc3Nh
Z2VQb3J0QXJyYXkmKTsKKwogICAgIC8vICdGdW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRo
ZSBjcmVhdGVkIGNhbGxiYWNrLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWOENhbGxiYWNrVHlw
ZT4KICAgICBQYXNzUmVmUHRyPFY4Q2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYgc3VjY2VlZGVkLCBDYWxsYmFj
a0FsbG93ZWRWYWx1ZUZsYWdzIGFjY2VwdGVkVmFsdWVzID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4
IDE5ZjdjNTEuLjhiMWYyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAKKyNpbmNsdWRlICJB
cnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCkBAIC00Miw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmgiCkBAIC01Nyw3ICs1OSw2IEBACiAjaW5jbHVkZSAiVjhHQ0ZvckNvbnRleHRE
aXNwb3NlLmgiCiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJW
OEhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2lu
Y2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxp
dGllcy5oIgpAQCAtMjk3LDExICsyOTgsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAg
ICAvLyBvcgogICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTsKICAg
ICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CiAgICAgU3RyaW5nIHRhcmdldE9yaWdpbjsKICAgICB7CiAgICAgICAgIHY4
OjpUcnlDYXRjaCB0cnlDYXRjaDsKICAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7Ci0g
ICAgICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5KSkK
KyAgICAgICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1sxXSwgcG9ydEFycmF5
LCBhcnJheUJ1ZmZlckFycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogICAgICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxP
clVuZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwogICAgICAgICB9IGVsc2UKQEAgLTMxMyw3ICszMTUs
MTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogCiAgICAgYm9vbCBkaWRUaHJvdyA9IGZh
bHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRBcnJheSA6
IDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
ID0KKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0QXJyYXkg
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8g
JmFycmF5QnVmZmVyQXJyYXkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4
IDk1YTY5ZDQuLmQ3YTRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCkBAIC0zMywxMSArMzMsMTIgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKICNpbmNsdWRlICJW
OERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAj
aW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
TWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDE3ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBkb1RyYW5zZmVyKQogewogICAgIERl
ZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERlZGljYXRlZFdvcmtlckNv
bnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9y
dEFycmF5OworICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CisgICAgQXJyYXlCdWZmZXJBcnJh
eSBhcnJheUJ1ZmZlcnM7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlm
ICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAo
IWV4dHJhY3RUcmFuc2ZlcmFibGVzKGFyZ3NbMV0sIHBvcnRzLCBhcnJheUJ1ZmZlcnMpKQogICAg
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICB9CiAgICAgYm9vbCBkaWRUaHJv
dyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCBkb1RyYW5zZmVyID8gJnBvcnRB
cnJheSA6IDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlID0KKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZwb3J0
cyA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIg
PyAmYXJyYXlCdWZmZXJzIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKLSAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd29ya2VyQ29udGV4dC0+
cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNzYWdl
LnJlbGVhc2UoKSwgJnBvcnRzLCBlYyk7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlD
dXN0b20uY3BwCmluZGV4IGJmOTgxNWEuLjg5NTYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rv
cnk6OnB1c2hTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
Ym9vbCBkaWRUaHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAs
IGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3Rh
dGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAwLCAwLCBkaWRUaHJv
dyk7CiAgICAgaWYgKGRpZFRocm93KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
CkBAIC02OCw3ICs2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1c2hT
dGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShhcmdzWzBdLCAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1sw
XSwgMCwgMCwgZGlkVGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNWQxNzVlMy4uNjRhYmU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhC
bG9iLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0
LmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IGRkOTk3YjEu
LmVkNmY3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
TWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC00NiwxMiArNDYsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsKICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBv
cnQgPSBWOE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJy
YXk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIGlmICghZ2V0TWVzc2Fn
ZVBvcnRBcnJheShhcmdzWzFdLCBwb3J0QXJyYXkpKQorICAgICAgICBpZiAoIWV4dHJhY3RUcmFu
c2ZlcmFibGVzKGFyZ3NbMV0sIHBvcnRBcnJheSwgYXJyYXlCdWZmZXJBcnJheSkpCiAgICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0g
ZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIGRvVHJhbnNmZXIgPyAmcG9ydEFycmF5
IDogMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UgPQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJnBvcnRBcnJh
eSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvVHJhbnNmZXIg
PyAmYXJyYXlCdWZmZXJBcnJheSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC03MSw0OSArNzYsNCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6d2Via2l0UG9zdE1lc3NhZ2VD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZUNh
bGxiYWNrKGFyZ3MsIHRydWUpOwogfQogCi1ib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSkKLXsKLSAg
ICBpZiAoaXNVbmRlZmluZWRPck51bGwodmFsdWUpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNp
emUoMCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPklz
T2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVu
dCBtdXN0IGJlIGFuIG9iamVjdCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHVpbnQzMl90IGxlbmd0aCA9IDA7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHBvcnRzID0g
djg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLQotICAgIGlmICh2YWx1ZS0+SXNB
cnJheSgpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2Fs
PHY4OjpBcnJheT46OkNhc3QodmFsdWUpOwotICAgICAgICBsZW5ndGggPSBhcnJheS0+TGVuZ3Ro
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU2VxdWVuY2UtdHlwZSBvYmplY3QgLSBnZXQg
dGhlIGxlbmd0aCBhdHRyaWJ1dGUKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gc2VxdWVu
Y2VMZW5ndGggPSBwb3J0cy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOwotICAgICAg
ICBpZiAoIXNlcXVlbmNlTGVuZ3RoLT5Jc051bWJlcigpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vy
cm9yKCJNZXNzYWdlUG9ydEFycmF5IGFyZ3VtZW50IGhhcyBubyBsZW5ndGggYXR0cmlidXRlIik7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgbGVuZ3RoID0g
c2VxdWVuY2VMZW5ndGgtPlVpbnQzMlZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy8gVmFsaWRhdGUg
dGhlIHBhc3NlZCBhcnJheSBvZiBwb3J0cy4KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHBvcnQgPSBw
b3J0cy0+R2V0KGkpOwotICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5vbi1udWxsIG9iamVjdHMs
IHBlciBIVE1MNSBzcGVjIDEwLjMuMy4KLSAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKHBv
cnQpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9i
amVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4K
LSAgICAgICAgaWYgKCFWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZShwb3J0KSkgewotICAgICAg
ICAgICAgdGhyb3dFcnJvcigiTWVzc2FnZVBvcnRBcnJheSBhcmd1bWVudCBtdXN0IGNvbnRhaW4g
b25seSBNZXNzYWdlUG9ydHMiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QocG9ydCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YWI1MDJiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMu
Ci0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVjhNZXNzYWdlUG9ydEN1c3RvbV9oCi0jZGVm
aW5lIFY4TWVzc2FnZVBvcnRDdXN0b21faAotCi0jaW5jbHVkZSA8djguaD4KLQotI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB3aGljaCBwdWxscyB0aGUgdmFsdWVzIG91dCBvZiBhIEpTIHNlcXVlbmNlIGFuZCBp
bnRvIGEgTWVzc2FnZVBvcnRBcnJheS4KLSAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVu
dHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQg
c2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYyBhbmQgZ2VuZXJhdGVzIGV4Y2VwdGlvbnMg
YXMgYXBwcm9wcmlhdGUuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSB3YXMgZmls
bGVkLCBvciBmYWxzZSBpZiB0aGUgcGFzc2VkIHZhbHVlIHdhcyBub3Qgb2YgYW4gYXBwcm9wcmlh
dGUgdHlwZS4KLSAgICBib29sIGdldE1lc3NhZ2VQb3J0QXJyYXkodjg6OkxvY2FsPHY4OjpWYWx1
ZT4sIE1lc3NhZ2VQb3J0QXJyYXkmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVjhNZXNzYWdlUG9ydEN1c3RvbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAppbmRleCA0MzA5NzJiLi5mNWNjZGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckN1c3RvbS5jcHAKQEAgLTM1LDExICszNSwxMSBAQAogCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAK
KyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCkBAIC01MSwxNyArNTEsMjIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKICAgICBXb3Jr
ZXIqIHdvcmtlciA9IFY4V29ya2VyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOworICAg
IEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
MSkgewotICAgICAgICBpZiAoIWdldE1lc3NhZ2VQb3J0QXJyYXkoYXJnc1sxXSwgcG9ydEFycmF5
KSkKKyAgICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdzWzFdLCBwb3J0cywgYXJy
YXlCdWZmZXJzKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgfQog
ICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgZG9U
cmFuc2ZlciA/ICZwb3J0QXJyYXkgOiAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGFyZ3NbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
VHJhbnNmZXIgPyAmcG9ydHMgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb1RyYW5zZmVyID8gJmFycmF5QnVmZmVycyA6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
d29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOwor
ICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0cywgZWMpOwog
ICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA4OWI5ZGQxLi5hZjZiYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTExLTIzICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDU0
CisgICAgICAgIFtWOF1bQ2hyb21pdW1dIEFkZCBsaXN0IG9mIHRyYW5zZmVycmVkIEFycmF5QnVm
ZmVycyB0byBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBMZXZpbi4KKworICAgICAgICAqIHNyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlh
bGl6ZSk6CisKIDIwMTEtMTEtMjMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5j
b20+CiAKICAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IE1pc3NpbmcgV0VCS0lU
X0VYUE9SVCBpbiBXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5ZjNi
YzYzLi44ZjQ2YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZnJvbVN0cmluZyhjb25z
dCBXZWJTdHJpbmcmIHMKIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OnNlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CiAgICAg
Ym9vbCBkaWRUaHJvdzsKLSAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIDAsIGRpZFRocm93KTsK
KyAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIDAsIDAsIGRpZFRocm93KTsKICAgICBpZiAoZGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7CiAgICAgcmV0dXJuIHNlcmlh
bGl6ZWRWYWx1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>