<?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>200292</bug_id>
          
          <creation_ts>2019-07-30 22:10:58 -0700</creation_ts>
          <short_desc>[ARM64E] Harden the diversity of the DOMJIT::Signature::unsafeFunction pointer.</short_desc>
          <delta_ts>2019-08-02 17:32:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>200323</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1557184</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-30 22:10:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/53706881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557185</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-30 22:12:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/53745182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557186</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-30 22:13:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/53706881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557190</commentid>
    <comment_count>3</comment_count>
      <attachid>375206</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-30 22:24:29 -0700</bug_when>
    <thetext>Created attachment 375206
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557191</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-30 22:28:03 -0700</bug_when>
    <thetext>Attachment 375206 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 8 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>1557192</commentid>
    <comment_count>5</comment_count>
      <attachid>375207</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-30 22:29:43 -0700</bug_when>
    <thetext>Created attachment 375207
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557193</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-30 22:31:09 -0700</bug_when>
    <thetext>Attachment 375207 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 8 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>1557198</commentid>
    <comment_count>7</comment_count>
      <attachid>375209</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-30 22:41:44 -0700</bug_when>
    <thetext>Created attachment 375209
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557344</commentid>
    <comment_count>8</comment_count>
      <attachid>375209</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-07-31 13:33:11 -0700</bug_when>
    <thetext>Comment on attachment 375209
proposed patch.

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

&gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:44
&gt; +    __ptrauth(ptrauth_key_process_independent_code, true, WTF_PTRTAG_HASH(DOMJITUnsafeFunctionPtrTag))

It seems reasonable to comment that we need to use the process independent key here because Signature represents a read-only data structure in a shared library.

&gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:62
&gt; +    DOM_JIT_UNSAFE_FUNCTION UnsafeFunctionPtr unsafeFunction;

Can you make a named type that combines the attributes of DOM_JIT_UNSAFE_FUNCTION and UnsafeFunctionPtr?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:12584
&gt; +        DOMJIT::UnsafeFunctionPtr unsafeFunctionPtr = signature-&gt;unsafeFunction;

Read aloud as an English sentence, this line of code does not make sense to me.

It&apos;s very subtle and surprising that assigning from one thing called &quot;unsafe&quot; to another thing called &quot;unsafe&quot; actually has the result of increasing safety in a specifically intended way. It&apos;s also subtle and surprising that these things called unsafe have very specific safety properties, which are not the same. That says to me that these are not great names, and possibly not great abstractions.

I think signature-&gt;unsafeFunction is a function pointer signed in a certain special way. Is that right? Let&apos;s come up with a name for that.

I think unsafeFunctionPtr is a function pointer signed in the C function way. Is that right? Let&apos;s come up with a name for that.

Meanwhile, I don&apos;t understand why assigning from a specially signed value to a C signed value *increases* security, or why our type system should even allow this kind of assignment, which seems to lose information. It seems to me that losing information should require an explicit constructor or cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557416</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2019-07-31 15:23:05 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; Comment on attachment 375209 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375209&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:44
&gt; &gt; +    __ptrauth(ptrauth_key_process_independent_code, true, WTF_PTRTAG_HASH(DOMJITUnsafeFunctionPtrTag))
&gt; 
&gt; It seems reasonable to comment that we need to use the process independent
&gt; key here because Signature represents a read-only data structure in a shared
&gt; library.
&gt; 
&gt; &gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:62
&gt; &gt; +    DOM_JIT_UNSAFE_FUNCTION UnsafeFunctionPtr unsafeFunction;
&gt; 
&gt; Can you make a named type that combines the attributes of
&gt; DOM_JIT_UNSAFE_FUNCTION and UnsafeFunctionPtr?
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:12584
&gt; &gt; +        DOMJIT::UnsafeFunctionPtr unsafeFunctionPtr = signature-&gt;unsafeFunction;
&gt; 
&gt; Read aloud as an English sentence, this line of code does not make sense to
&gt; me.
&gt; 
&gt; It&apos;s very subtle and surprising that assigning from one thing called
&gt; &quot;unsafe&quot; to another thing called &quot;unsafe&quot; actually has the result of
&gt; increasing safety in a specifically intended way. 

Is it the case that this assignment does something security related?

My understanding is that the only “safe” thing here is that the ptrs had already been signed. 

&gt; It&apos;s also subtle and
&gt; surprising that these things called unsafe have very specific safety
&gt; properties, which are not the same. That says to me that these are not great
&gt; names, and possibly not great abstractions.

I think that if you remove “unsafe” from these names then you end up with names that are more accurate but not perfect. 

Based on that I think we should just remove “unsafe” from the names. 

&gt; 
&gt; I think signature-&gt;unsafeFunction is a function pointer signed in a certain
&gt; special way. Is that right? Let&apos;s come up with a name for that.

Or just call it “function”. 

&gt; 
&gt; I think unsafeFunctionPtr is a function pointer signed in the C function
&gt; way. Is that right? Let&apos;s come up with a name for that.
&gt; 
&gt; Meanwhile, I don&apos;t understand why assigning from a specially signed value to
&gt; a C signed value *increases* security, or why our type system should even
&gt; allow this kind of assignment, which seems to lose information. It seems to
&gt; me that losing information should require an explicit constructor or cast.

I don’t think that C signing increases security. I think that it so happens that we resign with C tag as part of doing what clang wants us to do. As Mark explained, that’s ok, so long as the C function pointers don’t end up in the heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557843</commentid>
    <comment_count>10</comment_count>
      <attachid>375384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-01 19:48:31 -0700</bug_when>
    <thetext>Created attachment 375384
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557847</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-01 19:51:05 -0700</bug_when>
    <thetext>Attachment 375384 did not pass style-queue:


ERROR: Source/JavaScriptCore/domjit/DOMJITSignature.h:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:46:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:49:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:52:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:55:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:58:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:61:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:64:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:67:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:70:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:73:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:76:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:79:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:82:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:85:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:88:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:91:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:93:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:94:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:97:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:100:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:103:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:106:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:109:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:112:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:115:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:118:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:121:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:124:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:127:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/ClassInfo.h:130:  METHOD_TABLE_ENTRY is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 31 in 13 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>1558205</commentid>
    <comment_count>12</comment_count>
      <attachid>375384</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-08-02 16:46:27 -0700</bug_when>
    <thetext>Comment on attachment 375384
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:71
&gt; +        : m_ptr((Ptr)&amp;ptr)

Should be static cast

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:76
&gt; +        : m_ptr((Ptr)ptr)

Should be static cast

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:112
&gt; +    constexpr Ptr ptr() const { return m_ptr; }

Smart pointers in WebKit usually call this function get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558221</commentid>
    <comment_count>13</comment_count>
      <attachid>375384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-02 17:19:57 -0700</bug_when>
    <thetext>Comment on attachment 375384
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:71
&gt;&gt; +        : m_ptr((Ptr)&amp;ptr)
&gt; 
&gt; Should be static cast

Clang says:
... error: static_cast from &apos;long long (*)(JSC::ExecState *, (anonymous namespace)::DOMJITNode *)&apos; to &apos;JSC::CFunctionPtr::Ptr&apos; (aka &apos;void (*)()&apos;) is not allowed
        : m_ptr(static_cast&lt;Ptr&gt;(&amp;ptr))

Basically, we cannot static cast functions of one prototype into another prototype.

I thought we cannot use reinterpret_cast here either because it breaks constexpr, but I&apos;m wrong.  I just retested it, and Clang is happy with the reinterpret_cast.  So, I&apos;ll go with that.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:112
&gt;&gt; +    constexpr Ptr ptr() const { return m_ptr; }
&gt; 
&gt; Smart pointers in WebKit usually call this function get()

I changed this to get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558224</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-02 17:32:19 -0700</bug_when>
    <thetext>Landed in r248192: &lt;http://trac.webkit.org/r248192&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375206</attachid>
            <date>2019-07-30 22:24:29 -0700</date>
            <delta_ts>2019-07-30 22:28:56 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200292.patch</filename>
            <type>text/plain</type>
            <size>10191</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA3LTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
QVJNNjRFXSBIYXJkZW4gdGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVu
c2FmZUZ1bmN0aW9uIHBvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDoKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OlNpZ25hdHVyZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1B0clRhZy5oOgorICAg
ICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorCiAyMDE5LTA3LTMwICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRW1pdCB3cml0ZSBiYXJyaWVy
IGFmdGVyIHN0b3JpbmcgaW5zdGVhZCBvZiBiZWZvcmUgc3RvcmluZwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI0
ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NDE0LDE3ICs5NDE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgYXNzZXJ0SXNUYWdnZWRX
aXRoKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBD
RnVuY3Rpb25QdHJUYWcpOwogICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICBET01KSVQ6OlVuc2FmZUZ1bmN0
aW9uUHRyIHVuc2FmZUZ1bmN0aW9uUHRyID0gc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbjsKKyAg
ICBhc3NlcnRJc1RhZ2dlZFdpdGgodW5zYWZlRnVuY3Rpb25QdHIsIENGdW5jdGlvblB0clRhZyk7
CiAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgIGNhc2UgMToK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQ
PihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwg
cmVnc1swXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUD4odW5zYWZlRnVuY3Rpb25QdHIpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3Mp
LCByZWdzWzBdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxsT3Bl
cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVu
c2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sx
XSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlv
bl9FUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVn
c1swXSwgcmVnc1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVy
ZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdLCBy
ZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0
PEpfSklUT3BlcmF0aW9uX0VQUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSwgZXh0cmFjdFJlc3VsdChy
ZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgJKHJl
dmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2ln
bmF0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTAgKzM3LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKICNkZWZpbmUgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VN
RU5UUyAyCiAjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVE
SU5HX1RISVMgKDEgKyBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTKQogCit1c2lu
ZyBVbnNhZmVGdW5jdGlvblB0ciA9IHZvaWQgKCopKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorI2Rl
ZmluZSBET01fSklUX1VOU0FGRV9GVU5DVElPTiBcCisgICAgX19wdHJhdXRoKHB0cmF1dGhfa2V5
X3Byb2Nlc3NfaW5kZXBlbmRlbnRfY29kZSwgdHJ1ZSwgV1RGX1BUUlRBR19IQVNIKERPTUpJVFVu
c2FmZUZ1bmN0aW9uUHRyVGFnKSkKKyNlbHNlCisjZGVmaW5lIERPTV9KSVRfVU5TQUZFX0ZVTkNU
SU9OKG1ldGhvZCkKKyNlbmRpZgorCiBjbGFzcyBTaWduYXR1cmUgewogcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBjb25zdGV4cHIgU2lnbmF0dXJlKHVp
bnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVmZmVj
dCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykK
KyAgICBjb25zdGV4cHIgU2lnbmF0dXJlKFVuc2FmZUZ1bmN0aW9uUHRyIHVuc2FmZUZ1bmN0aW9u
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3VsYXRlZFR5
cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQogICAgICAgICA6IHVuc2FmZUZ1bmN0
aW9uKHVuc2FmZUZ1bmN0aW9uKQogICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAg
ICAgICwgcmVzdWx0KHJlc3VsdCkKQEAgLTUwLDcgKzU5LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAgRE9NX0pJVF9VTlNBRkVf
RlVOQ1RJT04gVW5zYWZlRnVuY3Rpb25QdHIgdW5zYWZlRnVuY3Rpb247CiAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjb25zdCBjbGFzc0luZm87CiAgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgcmVzdWx0
OwogICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50c1tKU0NfRE9NSklUX1NJR05BVFVS
RV9NQVhfQVJHVU1FTlRTXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1ODEsMTYg
KzEyNTgxLDE3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwogICAgICAgICBMVmFs
dWUgcmVzdWx0OwotICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbiksIENGdW5jdGlvblB0clRhZyk7CisgICAg
ICAgIERPTUpJVDo6VW5zYWZlRnVuY3Rpb25QdHIgdW5zYWZlRnVuY3Rpb25QdHIgPSBzaWduYXR1
cmUtPnVuc2FmZUZ1bmN0aW9uOworICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgodW5zYWZlRnVu
Y3Rpb25QdHIsIENGdW5jdGlvblB0clRhZyk7CiAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgcmVzdWx0ID0g
dm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJh
dGlvbl9FUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFu
ZHNbMF0pOworICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRp
b24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUD4odW5zYWZlRnVuY3Rpb25QdHIp
KSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIDI6Ci0gICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNh
ZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPih1bnNhZmVGdW5jdGlvblB0cikpLCBtX2NhbGxG
cmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIDM6Ci0gICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+
dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwg
b3BlcmFuZHNbMl0pOworICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPih1bnNhZmVGdW5j
dGlvblB0cikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5k
c1syXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQdHJUYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQdHJUYWcuaAkocmV2aXNpb24gMjQ4MDA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDcgQEAgdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAgICAgdihCM0NvbXBpbGF0aW9uUHRy
VGFnKSBcCiAgICAgdihCeXRlY29kZVB0clRhZykgXAogICAgIHYoQ29weUZ1bmN0aW9uUHRyVGFn
KSBcCisgICAgdihET01KSVRVbnNhZmVGdW5jdGlvblB0clRhZykgXAogICAgIHYoRGlzYXNzZW1i
bHlQdHJUYWcpIFwKICAgICB2KEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpIFwKICAgICB2KEV4ZWN1
dGFibGVNZW1vcnlQdHJUYWcpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyNiw3ICs4MjYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCop
OwogfTsKIAotc3RhdGljIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlIERPTUpJVEZ1bmN0aW9uT2Jq
ZWN0U2lnbmF0dXJlKCh1aW50cHRyX3QpRE9NSklURnVuY3Rpb25PYmplY3Q6OnVuc2FmZUZ1bmN0
aW9uLCBET01KSVRGdW5jdGlvbk9iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVh
ZChET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKK3N0YXRpYyBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRGdW5jdGlvbk9iamVjdFNpZ25hdHVyZSgoRE9NSklU
OjpVbnNhZmVGdW5jdGlvblB0cilET01KSVRGdW5jdGlvbk9iamVjdDo6dW5zYWZlRnVuY3Rpb24s
IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERP
TUpJVDo6SGVhcFJhbmdlOjp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOwogCiB2b2lkIERPTUpJVEZ1
bmN0aW9uT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7CkBAIC04ODAsNyArODgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKLXN0YXRpYyBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0U2lnbmF0dXJlKCh1aW50cHRy
X3QpRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6dW5zYWZlRnVuY3Rpb24sIERPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpI
ZWFwUmFuZ2U6OnRvcCgpKSwgU3BlY0ludDMyT25seSk7CitzdGF0aWMgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdFNpZ25hdHVyZSgoRE9NSklUOjpVbnNh
ZmVGdW5jdGlvblB0cilET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwg
RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVh
ZChET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKIAogdm9pZCBET01K
SVRDaGVja1N1YkNsYXNzT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDgwMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxOS0wNy0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBV
UkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisK
IDIwMTktMDctMjkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkIGNsYWltcyBGTEFDLWluLU1QNCBzdXBw
b3J0IG9uIGlPUyBhbmQgbWFjT1MsIGJ1dCBwbGF5cyBzaWxlbmNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjQ4MDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQwMDksNyArNDAwOSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJE
T01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpOwogICAgICAgICAgICAgbXkgJGNsYXNz
SW5mbyA9ICJKUyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIjo6aW5mbygpIjsKICAgICAg
ICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAk
b3BlcmF0aW9uLT50eXBlKTsKLSAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVIZWFkZXIg
PSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtkb21KSVRTaWduYXR1cmVO
YW1lfSgodWludHB0cl90KSR7dW5zYWZlRnVuY3Rpb25OYW1lfSwiOworICAgICAgICAgICAgbXkg
JGRvbUpJVFNpZ25hdHVyZUhlYWRlciA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25h
dHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KChKU0M6OkRPTUpJVDo6VW5zYWZlRnVuY3Rpb25Q
dHIpJHt1bnNhZmVGdW5jdGlvbk5hbWV9LCI7CiAgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0
dXJlRm9vdGVyID0gIiRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jlc3VsdFR5cGV9IjsKICAgICAg
ICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30pIHsK
ICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375207</attachid>
            <date>2019-07-30 22:29:43 -0700</date>
            <delta_ts>2019-07-30 22:32:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200292.patch</filename>
            <type>text/plain</type>
            <size>10183</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA3LTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
QVJNNjRFXSBIYXJkZW4gdGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVu
c2FmZUZ1bmN0aW9uIHBvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDoKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OlNpZ25hdHVyZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBydW50aW1lL0pTQ1B0clRhZy5oOgorICAg
ICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorCiAyMDE5LTA3LTMwICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRW1pdCB3cml0ZSBiYXJyaWVy
IGFmdGVyIHN0b3JpbmcgaW5zdGVhZCBvZiBiZWZvcmUgc3RvcmluZwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI0
ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NDE0LDE3ICs5NDE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgYXNzZXJ0SXNUYWdnZWRX
aXRoKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBD
RnVuY3Rpb25QdHJUYWcpOwogICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICBET01KSVQ6OlVuc2FmZUZ1bmN0
aW9uUHRyIHVuc2FmZUZ1bmN0aW9uUHRyID0gc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbjsKKyAg
ICBhc3NlcnRJc1RhZ2dlZFdpdGgodW5zYWZlRnVuY3Rpb25QdHIsIENGdW5jdGlvblB0clRhZyk7
CiAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgIGNhc2UgMToK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQ
PihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwg
cmVnc1swXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUD4odW5zYWZlRnVuY3Rpb25QdHIpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3Mp
LCByZWdzWzBdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxsT3Bl
cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVu
c2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sx
XSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlv
bl9FUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVn
c1swXSwgcmVnc1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVy
ZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdLCBy
ZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0
PEpfSklUT3BlcmF0aW9uX0VQUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSwgZXh0cmFjdFJlc3VsdChy
ZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgJKHJl
dmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2ln
bmF0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTAgKzM3LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKICNkZWZpbmUgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VN
RU5UUyAyCiAjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVE
SU5HX1RISVMgKDEgKyBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTKQogCit1c2lu
ZyBVbnNhZmVGdW5jdGlvblB0ciA9IHZvaWQgKCopKCk7CisKKyNpZiBDUFUoQVJNNjRFKQorI2Rl
ZmluZSBET01fSklUX1VOU0FGRV9GVU5DVElPTiBcCisgICAgX19wdHJhdXRoKHB0cmF1dGhfa2V5
X3Byb2Nlc3NfaW5kZXBlbmRlbnRfY29kZSwgdHJ1ZSwgV1RGX1BUUlRBR19IQVNIKERPTUpJVFVu
c2FmZUZ1bmN0aW9uUHRyVGFnKSkKKyNlbHNlCisjZGVmaW5lIERPTV9KSVRfVU5TQUZFX0ZVTkNU
SU9OCisjZW5kaWYKKwogY2xhc3MgU2lnbmF0dXJlIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgY29uc3RleHByIFNpZ25hdHVyZSh1aW50cHRyX3Qg
dW5zYWZlRnVuY3Rpb24sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0
LCBTcGVjdWxhdGVkVHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgY29u
c3RleHByIFNpZ25hdHVyZShVbnNhZmVGdW5jdGlvblB0ciB1bnNhZmVGdW5jdGlvbiwgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8sIEVmZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNh
ZmVGdW5jdGlvbikKICAgICAgICAgLCBjbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICAgICAsIHJl
c3VsdChyZXN1bHQpCkBAIC01MCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgdWludHB0cl90IHVuc2FmZUZ1bmN0aW9uOworICAgIERPTV9KSVRfVU5TQUZFX0ZVTkNUSU9O
IFVuc2FmZUZ1bmN0aW9uUHRyIHVuc2FmZUZ1bmN0aW9uOwogICAgIGNvbnN0IENsYXNzSW5mbyog
Y29uc3QgY2xhc3NJbmZvOwogICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKICAgICBj
b25zdCBTcGVjdWxhdGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FS
R1VNRU5UU107CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyNDgwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTgxLDE2ICsxMjU4MSwx
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKICAgICAgICAgTFZhbHVlIHJlc3Vs
dDsKLSAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNp
Z25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBDRnVuY3Rpb25QdHJUYWcpOworICAgICAgICBET01K
SVQ6OlVuc2FmZUZ1bmN0aW9uUHRyIHVuc2FmZUZ1bmN0aW9uUHRyID0gc2lnbmF0dXJlLT51bnNh
ZmVGdW5jdGlvbjsKKyAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoKHVuc2FmZUZ1bmN0aW9uUHRy
LCBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+
KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50
ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHVuc2FmZUZ1bmN0aW9uUHRyKSksIG1fY2Fs
bEZyYW1lLCBvcGVyYW5kc1swXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVp
bnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rp
b24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7CisgICAgICAgICAg
ICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0
PEpfSklUT3BlcmF0aW9uX0VQUD4odW5zYWZlRnVuY3Rpb25QdHIpKSwgbV9jYWxsRnJhbWUsIG9w
ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRz
WzJdKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4odW5zYWZlRnVuY3Rpb25QdHIp
KSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUHRyVGFnLmgJKHJldmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1B0clRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHVz
aW5nIFB0clRhZyA9IFdURjo6UHRyVGFnOwogICAgIHYoQjNDb21waWxhdGlvblB0clRhZykgXAog
ICAgIHYoQnl0ZWNvZGVQdHJUYWcpIFwKICAgICB2KENvcHlGdW5jdGlvblB0clRhZykgXAorICAg
IHYoRE9NSklUVW5zYWZlRnVuY3Rpb25QdHJUYWcpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFn
KSBcCiAgICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnKSBcCiAgICAgdihFeGVjdXRhYmxlTWVt
b3J5UHRyVGFnKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCShyZXZpc2lvbiAyNDgwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MjYsNyArODI2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAK
LXN0YXRpYyBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRGdW5jdGlvbk9iamVjdFNpZ25h
dHVyZSgodWludHB0cl90KURPTUpJVEZ1bmN0aW9uT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9N
SklURnVuY3Rpb25PYmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklU
OjpIZWFwUmFuZ2U6OnRvcCgpKSwgU3BlY0ludDMyT25seSk7CitzdGF0aWMgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUgRE9NSklURnVuY3Rpb25PYmplY3RTaWduYXR1cmUoKERPTUpJVDo6VW5zYWZl
RnVuY3Rpb25QdHIpRE9NSklURnVuY3Rpb25PYmplY3Q6OnVuc2FmZUZ1bmN0aW9uLCBET01KSVRG
dW5jdGlvbk9iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKIAogdm9pZCBET01KSVRGdW5jdGlvbk9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewpAQCAtODgwLDcgKzg4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1zdGF0aWMgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdFNpZ25hdHVyZSgodWludHB0cl90KURPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3Q6OnVuc2FmZUZ1bmN0aW9uLCBET01KSVRDaGVja1N1YkNsYXNz
T2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6SGVhcFJhbmdl
Ojp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOworc3RhdGljIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3RTaWduYXR1cmUoKERPTUpJVDo6VW5zYWZlRnVuY3Rp
b25QdHIpRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6dW5zYWZlRnVuY3Rpb24sIERPTUpJVENo
ZWNrU3ViQ2xhc3NPYmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklU
OjpIZWFwUmFuZ2U6OnRvcCgpKSwgU3BlY0ludDMyT25seSk7CiAKIHZvaWQgRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MDA0KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTkt
MDctMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BT
ISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDE5LTA3
LTI5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCBjbGFpbXMgRkxBQy1pbi1NUDQgc3VwcG9ydCBvbiBp
T1MgYW5kIG1hY09TLCBidXQgcGxheXMgc2lsZW5jZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI0ODAw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC00MDA5LDcgKzQwMDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZU5hbWUgPSAiRE9NSklUU2ln
bmF0dXJlRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkb3BlcmF0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAi
SlMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICI6OmluZm8oKSI7CiAgICAgICAgICAgICBt
eSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJG9wZXJhdGlv
bi0+dHlwZSk7Ci0gICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlSGVhZGVyID0gInN0YXRp
YyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVp
bnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIjsKKyAgICAgICAgICAgIG15ICRkb21KSVRT
aWduYXR1cmVIZWFkZXIgPSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtk
b21KSVRTaWduYXR1cmVOYW1lfSgoSlNDOjpET01KSVQ6OlVuc2FmZUZ1bmN0aW9uUHRyKSR7dW5z
YWZlRnVuY3Rpb25OYW1lfSwiOwogICAgICAgICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZUZvb3Rl
ciA9ICIkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBlfSI7CiAgICAgICAgICAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAg
ICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375209</attachid>
            <date>2019-07-30 22:41:44 -0700</date>
            <delta_ts>2019-08-01 19:48:31 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200292.patch</filename>
            <type>text/plain</type>
            <size>14798</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE5LTA3LTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
QVJNNjRFXSBIYXJkZW4gdGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVu
c2FmZUZ1bmN0aW9uIHBvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3Vz
bHksIERPTUpJVDo6U2lnbmF0dXJlOjp1bnNhZmVGdW5jdGlvbiB3YXMgc2lnbmVkIGFzIGEgQyBm
dW5jdGlvbiBwb2ludGVyLgorICAgICAgICBXZSBjYW4gZG8gYmV0dGVyIGJ5IHNpZ25pbmcgaXQg
bGlrZSBhIHZ0YmwgZnVuY3Rpb24gcG9pbnRlci4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6CisgICAgICAgIChK
U0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbERPTSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNLmNwcDoKKwogMjAxOS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEVtaXQgd3JpdGUgYmFycmllciBhZnRlciBz
dG9yaW5nIGluc3RlYWQgb2YgYmVmb3JlIHN0b3JpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNDgwMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQxNCwxNyArOTQxNCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2FsbERPTShOb2RlCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGFzc2VydElzVGFnZ2VkV2l0aChyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgQ0Z1bmN0aW9u
UHRyVGFnKTsKICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25h
dHVyZS0+YXJndW1lbnRDb3VudCArIDE7CisgICAgRE9NSklUOjpVbnNhZmVGdW5jdGlvblB0ciB1
bnNhZmVGdW5jdGlvblB0ciA9IHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb247CisgICAgYXNzZXJ0
SXNUYWdnZWRXaXRoKHVuc2FmZUZ1bmN0aW9uUHRyLCBDRnVuY3Rpb25QdHJUYWcpOwogICAgIHN3
aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICBjYXNlIDE6Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUD4oc2lnbmF0
dXJlLT51bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0p
OworICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25f
RVA+KHVuc2FmZUZ1bmN0aW9uUHRyKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1sw
XSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5j
dGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3NbMV0pOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPih1
bnNhZmVGdW5jdGlvblB0ciksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJl
Z3NbMV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2Fm
ZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwg
cmVnc1syXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUFBQPih1bnNhZmVGdW5jdGlvblB0ciksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVn
cyksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCShyZXZpc2lvbiAy
NDgwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDEwICszNywxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERPTUpJVCB7CiAjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgog
I2RlZmluZSBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElT
ICgxICsgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UUykKIAordXNpbmcgVW5zYWZl
RnVuY3Rpb25QdHIgPSB2b2lkICgqKSgpOworCisjaWYgQ1BVKEFSTTY0RSkKKyNkZWZpbmUgRE9N
X0pJVF9VTlNBRkVfRlVOQ1RJT04gXAorICAgIF9fcHRyYXV0aChwdHJhdXRoX2tleV9wcm9jZXNz
X2luZGVwZW5kZW50X2NvZGUsIHRydWUsIFdURl9QVFJUQUdfSEFTSChET01KSVRVbnNhZmVGdW5j
dGlvblB0clRhZykpCisjZWxzZQorI2RlZmluZSBET01fSklUX1VOU0FGRV9GVU5DVElPTgorI2Vu
ZGlmCisKIGNsYXNzIFNpZ25hdHVyZSB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotICAgIGNvbnN0ZXhwciBTaWduYXR1cmUodWludHB0cl90IHVuc2FmZUZ1
bmN0aW9uLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3Vs
YXRlZFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgIGNvbnN0ZXhwciBT
aWduYXR1cmUoVW5zYWZlRnVuY3Rpb25QdHIgdW5zYWZlRnVuY3Rpb24sIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlwZSByZXN1bHQsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogdW5zYWZlRnVuY3Rpb24odW5zYWZlRnVuY3Rp
b24pCiAgICAgICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAgICAgLCByZXN1bHQocmVz
dWx0KQpAQCAtNTAsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnRw
dHJfdCB1bnNhZmVGdW5jdGlvbjsKKyAgICBET01fSklUX1VOU0FGRV9GVU5DVElPTiBVbnNhZmVG
dW5jdGlvblB0ciB1bnNhZmVGdW5jdGlvbjsKICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNs
YXNzSW5mbzsKICAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSByZXN1bHQ7CiAgICAgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNd
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkocmV2aXNpb24gMjQ4MDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU4MSwxNiArMTI1ODEsMTcgQEAgcHJp
dmF0ZToKIAogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCArIDE7CiAgICAgICAgIExWYWx1ZSByZXN1bHQ7Ci0gICAg
ICAgIGFzc2VydElzVGFnZ2VkV2l0aChyZWludGVycHJldF9jYXN0PHZvaWQqPihzaWduYXR1cmUt
PnVuc2FmZUZ1bmN0aW9uKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICAgICAgRE9NSklUOjpVbnNh
ZmVGdW5jdGlvblB0ciB1bnNhZmVGdW5jdGlvblB0ciA9IHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rp
b247CisgICAgICAgIGFzc2VydElzVGFnZ2VkV2l0aCh1bnNhZmVGdW5jdGlvblB0ciwgQ0Z1bmN0
aW9uUHRyVGFnKTsKICAgICAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
ewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihzaWduYXR1
cmUtPnVuc2FmZUZ1bmN0aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSk7CisgICAgICAg
ICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9j
YXN0PEpfSklUT3BlcmF0aW9uX0VQPih1bnNhZmVGdW5jdGlvblB0cikpLCBtX2NhbGxGcmFtZSwg
b3BlcmFuZHNbMF0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0
X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSksIG1f
Y2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOworICAgICAgICAgICAgcmVzdWx0
ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1sw
XSwgb3BlcmFuZHNbMV0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikp
LCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Cisg
ICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVy
cHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHVuc2FmZUZ1bmN0aW9uUHRyKSksIG1fY2Fs
bEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0
clRhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0
clRhZy5oCShyZXZpc2lvbiAyNDgwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NQdHJUYWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCB1c2luZyBQdHJU
YWcgPSBXVEY6OlB0clRhZzsKICAgICB2KEIzQ29tcGlsYXRpb25QdHJUYWcpIFwKICAgICB2KEJ5
dGVjb2RlUHRyVGFnKSBcCiAgICAgdihDb3B5RnVuY3Rpb25QdHJUYWcpIFwKKyAgICB2KERPTUpJ
VFVuc2FmZUZ1bmN0aW9uUHRyVGFnKSBcCiAgICAgdihEaXNhc3NlbWJseVB0clRhZykgXAogICAg
IHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZykgXAogICAgIHYoRXhlY3V0YWJsZU1lbW9yeVB0clRh
ZykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAko
cmV2aXNpb24gMjQ4MDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODI2LDcgKzgyNiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCi1zdGF0aWMg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUgRE9NSklURnVuY3Rpb25PYmplY3RTaWduYXR1cmUoKHVp
bnRwdHJfdClET01KSVRGdW5jdGlvbk9iamVjdDo6dW5zYWZlRnVuY3Rpb24sIERPTUpJVEZ1bmN0
aW9uT2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6SGVhcFJh
bmdlOjp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOworc3RhdGljIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlIERPTUpJVEZ1bmN0aW9uT2JqZWN0U2lnbmF0dXJlKChET01KSVQ6OlVuc2FmZUZ1bmN0aW9u
UHRyKURPTUpJVEZ1bmN0aW9uT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklURnVuY3Rpb25P
YmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpIZWFwUmFuZ2U6
OnRvcCgpKSwgU3BlY0ludDMyT25seSk7CiAKIHZvaWQgRE9NSklURnVuY3Rpb25PYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKQEAg
LTg4MCw3ICs4ODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOwogfTsKIAotc3RhdGljIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlIERP
TUpJVENoZWNrU3ViQ2xhc3NPYmplY3RTaWduYXR1cmUoKHVpbnRwdHJfdClET01KSVRDaGVja1N1
YkNsYXNzT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6
aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkp
LCBTcGVjSW50MzJPbmx5KTsKK3N0YXRpYyBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRD
aGVja1N1YkNsYXNzT2JqZWN0U2lnbmF0dXJlKChET01KSVQ6OlVuc2FmZUZ1bmN0aW9uUHRyKURP
TUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OnVuc2FmZUZ1bmN0aW9uLCBET01KSVRDaGVja1N1YkNs
YXNzT2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6SGVhcFJh
bmdlOjp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOwogCiB2b2lkIERPTUpJVENoZWNrU3ViQ2xhc3NP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA3LTMwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbQVJNNjRFXSBIYXJkZW4g
dGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVuc2FmZUZ1bmN0aW9uIHBv
aW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAtIEp1c3QgcmViYXNpbmcgdGhlIHRlc3QgcmVzdWx0cy4KKwogMjAxOS0wNy0yOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVNvdXJjZS5p
c1R5cGVTdXBwb3J0ZWQgY2xhaW1zIEZMQUMtaW4tTVA0IHN1cHBvcnQgb24gaU9TIGFuZCBtYWNP
UywgYnV0IHBsYXlzIHNpbGVuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNDgwMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBj
b3B5KQpAQCAtNDAwOSw3ICs0MDA5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIg
LiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9w
ZXJhdGlvbi0+bmFtZSk7CiAgICAgICAgICAgICBteSAkY2xhc3NJbmZvID0gIkpTIiAuICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgLiAiOjppbmZvKCkiOwogICAgICAgICAgICAgbXkgJHJlc3VsdFR5
cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRvcGVyYXRpb24tPnR5cGUpOwot
ICAgICAgICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZUhlYWRlciA9ICJzdGF0aWMgY29uc3QgSlND
OjpET01KSVQ6OlNpZ25hdHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1
bnNhZmVGdW5jdGlvbk5hbWV9LCI7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlSGVh
ZGVyID0gInN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0
dXJlTmFtZX0oKEpTQzo6RE9NSklUOjpVbnNhZmVGdW5jdGlvblB0cikke3Vuc2FmZUZ1bmN0aW9u
TmFtZX0sIjsKICAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVGb290ZXIgPSAiJGNsYXNz
SW5mbywgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6OkRPTSksICR7cmVzdWx0VHlwZX0iOwogICAgICAgICAgICAgZm9yZWFjaCBteSAk
YXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9u
IDI0ODAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTUgKzEwNSwxNSBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAotc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpT
aWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0ZSgodWludHB0
cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExOdWxsYWJsZTxJRExET01TdHJpbmc+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKTsKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUoKEpTQzo6
RE9NSklUOjpVbnNhZmVGdW5jdGlvblB0cil1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZSwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj46OnZhbHVlLCBE
T01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSk7CiAKLXN0
YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RE
T01KSVRJdGVtKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25J
dGVtLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0
ZXI8SURMVW5zaWduZWRTaG9ydD46OnZhbHVlLCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRl
cjxJRExVbnNpZ25lZFNob3J0Pjo6dmFsdWUpOworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpT
aWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEl0ZW0oKEpTQzo6RE9NSklUOjpV
bnNhZmVGdW5jdGlvblB0cil1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0s
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETERPTVN0cmluZz46OnZhbHVlLCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJ
RExVbnNpZ25lZFNob3J0Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElE
TFVuc2lnbmVkU2hvcnQ+Ojp2YWx1ZSk7CiAKLXN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRIYXNBdHRyaWJ1dGUoKHVpbnRwdHJf
dCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZSwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
Qm9vbGVhbj46OnZhbHVlKTsKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERP
TUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRIYXNBdHRyaWJ1dGUoKEpTQzo6RE9NSklUOjpVbnNh
ZmVGdW5jdGlvblB0cil1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJp
YnV0ZSwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQo
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQm9vbGVhbj46OnZhbHVlKTsKIAotc3RhdGljIGNvbnN0IEpTQzo6RE9NSklU
OjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKCh1
aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJ
ZCwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRU
eXBlRmlsdGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+Pjo6dmFsdWUpOworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklU
U2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKChKU0M6OkRPTUpJVDo6VW5zYWZl
RnVuY3Rpb25QdHIpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50
QnlJZCwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQo
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1l
bnRUeXBlRmlsdGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01T
dHJpbmc+Pjo6dmFsdWUpOwogCi1zdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBE
T01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVudHNCeU5hbWUoKHVpbnRwdHJfdCl1
bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmls
dGVyPElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+Ojp2YWx1ZSk7CitzdGF0aWMg
Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklU
R2V0RWxlbWVudHNCeU5hbWUoKEpTQzo6RE9NSklUOjpVbnNhZmVGdW5jdGlvblB0cil1bnNhZmVK
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJbnRl
cmZhY2U8Tm9kZUxpc3Q+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElE
TEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+Ojp2YWx1ZSk7CiAKIHN0YXRpYyBjb25z
dCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIERPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRB
bnlBdHRyIHsKICAgICBqc1Rlc3RET01KSVRBbnlBdHRyLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375384</attachid>
            <date>2019-08-01 19:48:31 -0700</date>
            <delta_ts>2019-08-02 16:46:27 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200292b.patch</filename>
            <type>text/plain</type>
            <size>29210</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE5LTA4LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
QVJNNjRFXSBIYXJkZW4gdGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVu
c2FmZUZ1bmN0aW9uIHBvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3Vz
bHksIERPTUpJVDo6U2lnbmF0dXJlOjpmdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgd2FzIHNpZ25l
ZCBhcyBhIEMgZnVuY3Rpb24KKyAgICAgICAgcG9pbnRlci4gIFdlIGNhbiBkbyBiZXR0ZXIgYnkg
c2lnbmluZyBpdCBsaWtlIGEgdnRibCBmdW5jdGlvbiBwb2ludGVyLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBuZWVkZWQuICBUaGUgRE9NSklUIG1lY2hhbmlzbSBpcyBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgIEkgYWxzbyBtYW51YWxseSBjb25maXJtZWQgdGhhdCBET01K
SVQ6OlNpZ25hdHVyZTo6ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrIGlzIHNpZ25lZAorICAgICAg
ICBleGFjdGx5IGFzIGV4cGVjdGVkIGJ5IHJlYWRpbmcgaXRzIGJpdHMgb3V0IG9mIG1lbW9yeSAo
bm90IGxldHRpbmcgQ2xhbmcgaGF2ZSBhCisgICAgICAgIGNoYW5jZSB0byByZXNpZ24gaXQgaW50
byBhIEMgZnVuY3Rpb24gcG9pbnRlcikgYW5kIGNvbXBhcmluZyBpdCBhZ2FpbnN0IG1hbnVhbGx5
CisgICAgICAgIHNpZ25lZCBiaXRzIHdpdGggdGhlIGV4cGVjdGVkIGRpdmVyc2lmaWVyLgorCisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlND
OjpDRnVuY3Rpb25QdHI6OkNGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkNGdW5jdGlvblB0
cjo6cHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q0Z1bmN0aW9uUHRyOjphZGRyZXNzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q0Z1bmN0aW9uUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Q0Z1bmN0aW9uUHRyOjpvcGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlND
OjpDRnVuY3Rpb25QdHI6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpDRnVuY3Rp
b25QdHI6Om9wZXJhdG9yIT0gY29uc3QpOgorCisgICAgICAgIC0gSW50cm9kdWNlIGEgQ0Z1bmN0
aW9uUHRyIGFic3RyYWN0aW9uIHRoYXQgaXMgdXNlZCB0byBob2xkIHBvaW50ZXJzIHRvIEMgZnVu
Y3Rpb25zLgorICAgICAgICAgIEl0IGNhbiBpbnN0YW50aWF0ZWQgaW4gNCB3YXlzOgorCisgICAg
ICAgICAgMS4gVGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCisgICAgICAgICAgMi4gQSBjb25zdHJ1
Y3RvciB0aGF0IHRha2VzIGEgbnVsbHB0cl90LgorCisgICAgICAgICAgICAgVGhlc2UgMiBmb3Jt
cyB3aWxsIGluc3RhbnRpYXRlIGEgQ0Z1bmN0aW9uUHRyIHdpdGggYSBudWxscHRyLgorCisgICAg
ICAgICAgMy4gQSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24u
CisgICAgICAgICAgNC4gQSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgZnVuY3Rpb24gcG9pbnRl
ci4KKworICAgICAgICAgICAgICBGb3JtIDMgYWxyZWFkeSBrbm93cyB0aGF0IHdlJ3JlIGluaXRp
YWxpemluZyB3aXRoIGEgcmVhbCBmdW5jdGlvbiwgYW5kCisgICAgICAgICAgICAgIHRoYXQgQ2xh
bmcgd2lsbCBnaXZlIGl0IHRvIHVzZSBzaWduZWQgYXMgYSBDIGZ1bmN0aW9uIHBvaW50ZXIuICBT
bywgaXQKKyAgICAgICAgICAgICAgZG9lc24ndCBkbyBhbnkgYXNzZXJ0aW9ucy4gIFRoaXMgZm9y
bSBpcyB1c2VmdWwgZm9yIGluaXRpYWxpemluZyBDRnVuY3Rpb25QdHJzCisgICAgICAgICAgICAg
IGVtYmVkZGVkIGluIGNvbnN0IGRhdGEgc3RydWN0dXJlcy4KKworICAgICAgICAgICAgICBGb3Jt
IDQgaXMgYW4gZXhwbGljaXQgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhbiBhcmJpdHJhcnkgZnVu
Y3Rpb24KKyAgICAgICAgICAgICAgcG9pbnRlciwgYnV0IGRvZXMgbm90IGtub3cgaWYgdGhhdCBw
b2ludGVyIGlzIGFscmVhZHkgc2lnbmVkIGFzIGEgQyBmdW5jdGlvbgorICAgICAgICAgICAgICBw
b2ludGVyLiAgSGVuY2UsIHRoaXMgZm9ybSB3aWxsIGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB0
aGUgZ2l2ZW4gZnVuY3Rpb24KKyAgICAgICAgICAgICAgcG9pbnRlciBpcyBhY3R1YWxseSBzaWdu
ZWQgYXMgYSBDIGZ1bmN0aW9uIHBvaW50ZXIuCisKKyAgICAgICAgICBPbmNlIGluc3RhbnRpYXRl
ZCwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdCBhIEMgZnVuY3Rpb24gcG9pbnRlciBpcyBlaXRoZXIg
bnVsbAorICAgICAgICAgIG9yIGNvbnRhaW5zIGEgc2lnbmVkIEMgZnVuY3Rpb24gcG9pbnRlci4K
KworICAgICAgICAqIGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpTaWduYXR1cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIC0gU2lnbiBmdW5jdGlvbldpdGhv
dXRUeXBlQ2hlY2sgYXMgV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIKERPTUpJVEZ1bmN0aW9uUHRy
VGFnKS4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAtIFVzZSB0aGUgbmV3IENGdW5jdGlvblB0ciB0
byBkb2N1bWVudCB0aGF0IHRoZSByZXRyaWV2ZWQgc2lnbmF0dXJlLT5mdW5jdGlvbldpdGhvdXRU
eXBlQ2hlY2sKKyAgICAgICAgICBpcyBzaWduZWQgYXMgYSBDIGZ1bmN0aW9uIHBvaW50ZXIuCisK
KyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAtIFVwZGF0ZSBNZXRob2RU
YWJsZSB0byBzaWduIGl0cyBmdW5jdGlvbiBwb2ludGVycyB1c2luZyB0aGUgbmV3IFdURl9WVEJM
X0ZVTkNQVFJfUFRSQVVUSF9TVFIKKyAgICAgICAgICB0byBiZSBjb25zaXN0ZW50LiAgTm8gbG9u
Z2VyIG5lZWQgdG8gcm9sbCBpdHMgb3duIFBUUkFVVEggbWFjcm8uCisKKyAgICAgICAgKiBydW50
aW1lL0pTQ1B0clRhZy5oOgorICAgICAgICAtIEFkZCBET01KSVRGdW5jdGlvblB0clRhZy4KKwor
ICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAtIFVwZGF0ZSB0byB3b3Jr
IHdpdGggdGhlIG5ldyBET01KSVQ6OlNpZ25hdHVyZSBjb25zdHJ1Y3Rvci4KKwogMjAxOS0wOC0w
MSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNyYXNoIGRp
YWdub3N0aWNzIGZvciBkZWJ1Z2dpbmcgdW5leHBlY3RlZCB6YXBwZWQgY2VsbHMuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgJKHJldmlzaW9uIDI0ODE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDcxIEBAIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2QKIAogZW51
bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogCisvLyBDRnVuY3Rpb25QdHIgY2FuIG9ubHkgYmUgdXNl
ZCB0byBob2xkIEMvQysrIGZ1bmN0aW9ucy4KK2NsYXNzIENGdW5jdGlvblB0ciB7CitwdWJsaWM6
CisgICAgdXNpbmcgUHRyID0gdm9pZCgqKSgpOworCisgICAgQ0Z1bmN0aW9uUHRyKCkgeyB9Cisg
ICAgQ0Z1bmN0aW9uUHRyKHN0ZDo6bnVsbHB0cl90KSB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFJldHVyblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgQ0Z1
bmN0aW9uUHRyKFJldHVyblR5cGUoJnB0cikoQXJndW1lbnRzLi4uKSkKKyAgICAgICAgOiBtX3B0
cigoUHRyKSZwdHIpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgZXhwbGljaXQgQ0Z1bmN0aW9uUHRyKFJldHVy
blR5cGUoKnB0cikoQXJndW1lbnRzLi4uKSkKKyAgICAgICAgOiBtX3B0cigoUHRyKXB0cikKKyAg
ICB7CisgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKG1fcHRyKTsKKyAgICB9CisKKyAgICAv
LyBNU1ZDIGRvZXNuJ3Qgc2VlbSB0byB0cmVhdCBmdW5jdGlvbnMgd2l0aCBkaWZmZXJlbnQgY2Fs
bGluZyBjb252ZW50aW9ucyBhcworICAgIC8vIGRpZmZlcmVudCB0eXBlczsgdGhlc2UgbWV0aG9k
cyBhcmUgYWxyZWFkeSBkZWZpbmVkIGZvciBmYXN0Y2FsbCwgYmVsb3cuCisjaWYgQ0FMTElOR19D
T05WRU5USU9OX0lTX1NURENBTEwgJiYgIU9TKFdJTkRPV1MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGNvbnN0ZXhwciBDRnVu
Y3Rpb25QdHIoUmV0dXJuVHlwZShDREVDTCAmcHRyKShBcmd1bWVudHMuLi4pKQorICAgICAgICA6
IG1fcHRyKChQdHIpJnB0cikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVy
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBleHBsaWNpdCBDRnVuY3Rpb25QdHIo
UmV0dXJuVHlwZShDREVDTCAqcHRyKShBcmd1bWVudHMuLi4pKQorICAgICAgICA6IG1fcHRyKChQ
dHIpcHRyKQorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25QdHIobV9wdHIpOworICAg
IH0KKworI2VuZGlmIC8vIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMICYmICFPUyhXSU5E
T1dTKQorCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRkFTVENBTExfQ0FMTElOR19DT05WRU5USU9O
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KKyAgICBjb25zdGV4cHIgQ0Z1bmN0aW9uUHRyKFJldHVyblR5cGUoRkFTVENBTEwgJnB0ciko
QXJndW1lbnRzLi4uKSkKKyAgICAgICAgOiBtX3B0cigoUHRyKSZwdHIpCisgICAgeyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgZXhwbGljaXQgQ0Z1bmN0aW9uUHRyKFJldHVyblR5cGUoRkFTVENBTEwgKnB0cikoQXJndW1l
bnRzLi4uKSkKKyAgICAgICAgOiBtX3B0cigoUHRyKXB0cikKKyAgICB7CisgICAgICAgIGFzc2Vy
dElzQ0Z1bmN0aW9uUHRyKG1fcHRyKTsKKyAgICB9CisjZW5kaWYgLy8gQ09NUElMRVJfU1VQUE9S
VFMoRkFTVENBTExfQ0FMTElOR19DT05WRU5USU9OKQorCisgICAgY29uc3RleHByIFB0ciBwdHIo
KSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorICAgIHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihtX3B0cik7IH0KKworICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9CisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDRnVuY3Rpb25QdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0
cjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDRnVuY3Rpb25QdHImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQorCitwcml2YXRlOgorICAgIFB0ciBt
X3B0ciB7IG51bGxwdHIgfTsKK307CisKKwogLy8gRnVuY3Rpb25QdHI6CiAvLwogLy8gRnVuY3Rp
b25QdHIgc2hvdWxkIGJlIHVzZWQgdG8gd3JhcCBwb2ludGVycyB0byBDL0MrKyBmdW5jdGlvbnMg
aW4gSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjQ4MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MTQsMTggKzk0MTQs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZQogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKLSAgICBET01KSVQ6OkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayBmdW5jdGlvbiA9IHNpZ25h
dHVyZS0+ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrOwotICAgIGFzc2VydElzVGFnZ2VkV2l0aChm
dW5jdGlvbiwgQ0Z1bmN0aW9uUHRyVGFnKTsKKworICAgIGF1dG8gZnVuY3Rpb24gPSBDRnVuY3Rp
b25QdHIoc2lnbmF0dXJlLT5mdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2spOwogICAgIHVuc2lnbmVk
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsg
MTsKICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CiAgICAgY2FzZSAx
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25f
RVA+KGZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUD4oZnVu
Y3Rpb24ucHRyKCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0
X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihmdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0
UmVncyksIHJlZ3NbMF0sIHJlZ3NbMV0pOworICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihmdW5jdGlvbi5wdHIoKSksIGV4dHJhY3RSZXN1
bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3NbMV0pOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIDM6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJh
dGlvbl9FUFBQPihmdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0s
IHJlZ3NbMV0sIHJlZ3NbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nh
c3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oZnVuY3Rpb24ucHRyKCkpLCBleHRyYWN0UmVzdWx0KHJl
c3VsdFJlZ3MpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaAkocmV2
aXNpb24gMjQ4MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWdu
YXR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRE9NSklUIHsKICNkZWZpbmUgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FS
R1VNRU5UUyAyCiAjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5D
TFVESU5HX1RISVMgKDEgKyBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTKQogCi11
c2luZyBGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgPSB2b2lkICgqKSgpOwordXNpbmcgRnVuY3Rp
b25QdHIgPSB2b2lkICgqV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIKERPTUpJVEZ1bmN0aW9uUHRy
VGFnKSkoKTsKIAogY2xhc3MgU2lnbmF0dXJlIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgY29uc3RleHByIFNpZ25hdHVyZShGdW5jdGlvbldpdGhv
dXRUeXBlQ2hlY2sgZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrLCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3VsYXRlZFR5cGUgcmVzdWx0LCBBcmd1bWVudHMu
Li4gYXJndW1lbnRzKQotICAgICAgICA6IGZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayhmdW5jdGlv
bldpdGhvdXRUeXBlQ2hlY2spCisgICAgY29uc3RleHByIFNpZ25hdHVyZShDRnVuY3Rpb25QdHIg
ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgRWZm
ZWN0IGVmZmVjdCwgU3BlY3VsYXRlZFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRz
KQorICAgICAgICA6IGZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayhmdW5jdGlvbldpdGhvdXRUeXBl
Q2hlY2sucHRyKCkpCiAgICAgICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAgICAgLCBy
ZXN1bHQocmVzdWx0KQogICAgICAgICAsIGFyZ3VtZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRl
ZFR5cGU+KGFyZ3VtZW50cykuLi59CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgRnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrIGZ1bmN0aW9uV2l0aG91dFR5cGVD
aGVjazsKKyAgICBjb25zdCBGdW5jdGlvblB0ciBmdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2s7CiAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBjbGFzc0luZm87CiAgICAgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgcmVzdWx0OwogICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50c1tKU0NfRE9N
SklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI0ODE0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI1ODEsMTcgKzEyNTgxLDE2IEBAIHByaXZhdGU6CiAKICAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwog
ICAgICAgICBMVmFsdWUgcmVzdWx0OwotICAgICAgICBET01KSVQ6OkZ1bmN0aW9uV2l0aG91dFR5
cGVDaGVjayBmdW5jdGlvbiA9IHNpZ25hdHVyZS0+ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrOwot
ICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgoZnVuY3Rpb24sIENGdW5jdGlvblB0clRhZyk7Cisg
ICAgICAgIGF1dG8gZnVuY3Rpb24gPSBDRnVuY3Rpb25QdHIoc2lnbmF0dXJlLT5mdW5jdGlvbldp
dGhvdXRUeXBlQ2hlY2spOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KGZ1
bmN0aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSk7CisgICAgICAgICAgICByZXN1bHQg
PSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0VQPihmdW5jdGlvbi5wdHIoKSkpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIHJlc3VsdCA9
IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVy
YXRpb25fRVBQPihmdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRz
WzFdKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihmdW5jdGlvbi5wdHIoKSkpLCBt
X2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KGZ1bmN0
aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJd
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJl
aW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oZnVuY3Rpb24ucHRyKCkpKSwgbV9j
YWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgJKHJldmlzaW9uIDI0ODE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsNyBAQAogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJK
U0Nhc3QuaCIKLQotI2lmIENQVShBUk02NEUpCi0jaW5jbHVkZSA8cHRyYXV0aC5oPgotI2VuZGlm
CisjaW5jbHVkZSA8d3RmL1B0clRhZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFByaW50
U3RyZWFtOwpAQCAtNDEsMTAwICszOCw5NiBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldzsKIGNs
YXNzIFNuaXBwZXQ7CiBzdHJ1Y3QgSGFzaFRhYmxlOwogCi0jaWYgQ1BVKEFSTTY0RSkKLSNkZWZp
bmUgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShtZXRob2QpIFwKLSAgICBfX3B0cmF1dGgocHRyYXV0
aF9rZXlfcHJvY2Vzc19pbmRlcGVuZGVudF9jb2RlLCB0cnVlLCBwdHJhdXRoX3N0cmluZ19kaXNj
cmltaW5hdG9yKCJNZXRob2RUYWJsZS4iICNtZXRob2QpKSBtZXRob2QKLSNlbHNlCi0jZGVmaW5l
IFdURl9NRVRIT0RfVEFCTEVfRU5UUlkobWV0aG9kKSBtZXRob2QKLSNlbmRpZgorI2RlZmluZSBN
RVRIT0RfVEFCTEVfRU5UUlkobWV0aG9kKSBcCisgICAgV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRI
X1NUUigiTWV0aG9kVGFibGUuIiAjbWV0aG9kKSBtZXRob2QKIAogc3RydWN0IE1ldGhvZFRhYmxl
IHsKICAgICB1c2luZyBEZXN0cm95RnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwqKTsKLSAg
ICBEZXN0cm95RnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShkZXN0cm95KTsKKyAg
ICBEZXN0cm95RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlc3Ryb3kpOwogCiAgICAg
dXNpbmcgVmlzaXRDaGlsZHJlbkZ1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKLSAgICBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9F
TlRSWSh2aXNpdENoaWxkcmVuKTsKKyAgICBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgTUVUSE9E
X1RBQkxFX0VOVFJZKHZpc2l0Q2hpbGRyZW4pOwogCiAgICAgdXNpbmcgR2V0Q2FsbERhdGFGdW5j
dGlvblB0ciA9IENhbGxUeXBlICgqKShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIEdldENhbGxE
YXRhRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShnZXRDYWxsRGF0YSk7CisgICAg
R2V0Q2FsbERhdGFGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0Q2FsbERhdGEpOwog
CiAgICAgdXNpbmcgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyID0gQ29uc3RydWN0VHlwZSAo
KikoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlv
blB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldENvbnN0cnVjdERhdGEpOworICAgIEdldENv
bnN0cnVjdERhdGFGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0Q29uc3RydWN0RGF0
YSk7CiAKICAgICB1c2luZyBQdXRGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIFB1dEZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkocHV0KTsKKyAg
ICBQdXRGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkocHV0KTsKIAogICAgIHVzaW5nIFB1
dEJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgUHV0QnlJ
bmRleEZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkocHV0QnlJbmRleCk7CisgICAg
UHV0QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAog
ICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIg
V1RGX01FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CisgICAgRGVsZXRlUHJvcGVy
dHlGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVsZXRlUHJvcGVydHkpOwogCiAgICAg
dXNpbmcgRGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAgRGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rp
b25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOworICAg
IERlbGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgpOwogCiAgICAgdXNpbmcgR2V0T3duUHJvcGVydHlTbG90RnVuY3Rp
b25QdHIgPSBib29sICgqKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIgV1RGX01FVEhP
RF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eVNsb3QpOworICAgIEdldE93blByb3BlcnR5U2xv
dEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eVNsb3QpOwogCiAg
ICAgdXNpbmcgR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKiko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlko
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk7CisgICAgR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KTsKIAogICAgIHVzaW5nIFRvVGhpc0Z1bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgRUNNQU1vZGUpOwotICAgIFRvVGhpc0Z1bmN0aW9uUHRyIFdURl9NRVRIT0Rf
VEFCTEVfRU5UUlkodG9UaGlzKTsKKyAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVf
RU5UUlkodG9UaGlzKTsKIAogICAgIHVzaW5nIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyID0gSlNW
YWx1ZSAoKikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKTsKLSAgICBEZWZhdWx0VmFsdWVGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZ
KGRlZmF1bHRWYWx1ZSk7CisgICAgRGVmYXVsdFZhbHVlRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxF
X0VOVFJZKGRlZmF1bHRWYWx1ZSk7CiAKICAgICB1c2luZyBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVu
Y3Rpb25QdHIgPSB2b2lkICgqKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25Q
dHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKKyAgICBHZXRP
d25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blByb3Bl
cnR5TmFtZXMpOwogCiAgICAgdXNpbmcgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rp
b25QdHIgPSB2b2lkICgqKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBHZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXNGdW5j
dGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyk7CisgICAgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk7CiAKICAgICB1c2luZyBHZXRQ
cm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKLSAgICBHZXRQcm9wZXJ0eU5h
bWVzRnVuY3Rpb25QdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShnZXRQcm9wZXJ0eU5hbWVzKTsK
KyAgICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldFBy
b3BlcnR5TmFtZXMpOwogCiAgICAgdXNpbmcgR2V0RW51bWVyYWJsZUxlbmd0aEZ1bmN0aW9uUHRy
ID0gdWludDMyX3QgKCopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Ci0gICAgR2V0RW51bWVyYWJs
ZUxlbmd0aEZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkoZ2V0RW51bWVyYWJsZUxl
bmd0aCk7CisgICAgR2V0RW51bWVyYWJsZUxlbmd0aEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9F
TlRSWShnZXRFbnVtZXJhYmxlTGVuZ3RoKTsKIAotICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlv
blB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMpOwot
ICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKTsKKyAgICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIg
TUVUSE9EX1RBQkxFX0VOVFJZKGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMpOworICAgIEdldFBy
b3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0R2VuZXJpY1Byb3Bl
cnR5TmFtZXMpOwogCiAgICAgdXNpbmcgQ2xhc3NOYW1lRnVuY3Rpb25QdHIgPSBTdHJpbmcgKCop
KGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsKLSAgICBDbGFzc05hbWVGdW5jdGlvblB0ciBXVEZfTUVU
SE9EX1RBQkxFX0VOVFJZKGNsYXNzTmFtZSk7CisgICAgQ2xhc3NOYW1lRnVuY3Rpb25QdHIgTUVU
SE9EX1RBQkxFX0VOVFJZKGNsYXNzTmFtZSk7CiAKICAgICB1c2luZyBUb1N0cmluZ05hbWVGdW5j
dGlvblB0ciA9IFN0cmluZyAoKikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKLSAgICBU
b1N0cmluZ05hbWVGdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKHRvU3RyaW5nTmFt
ZSk7CisgICAgVG9TdHJpbmdOYW1lRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHRvU3Ry
aW5nTmFtZSk7CiAKICAgICB1c2luZyBDdXN0b21IYXNJbnN0YW5jZUZ1bmN0aW9uUHRyID0gYm9v
bCAoKikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBDdXN0b21IYXNJbnN0
YW5jZUZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2Up
OworICAgIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGN1
c3RvbUhhc0luc3RhbmNlKTsKIAogICAgIHVzaW5nIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7Ci0gICAgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlv
blB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5KTsKKyAgICBEZWZp
bmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWZpbmVPd25Qcm9w
ZXJ0eSk7CiAKICAgICB1c2luZyBQcmV2ZW50RXh0ZW5zaW9uc0Z1bmN0aW9uUHRyID0gYm9vbCAo
KikoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKLSAgICBQcmV2ZW50RXh0ZW5zaW9uc0Z1bmN0aW9u
UHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkocHJldmVudEV4dGVuc2lvbnMpOworICAgIFByZXZl
bnRFeHRlbnNpb25zRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHByZXZlbnRFeHRlbnNp
b25zKTsKIAogICAgIHVzaW5nIElzRXh0ZW5zaWJsZUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNP
YmplY3QqLCBFeGVjU3RhdGUqKTsKLSAgICBJc0V4dGVuc2libGVGdW5jdGlvblB0ciBXVEZfTUVU
SE9EX1RBQkxFX0VOVFJZKGlzRXh0ZW5zaWJsZSk7CisgICAgSXNFeHRlbnNpYmxlRnVuY3Rpb25Q
dHIgTUVUSE9EX1RBQkxFX0VOVFJZKGlzRXh0ZW5zaWJsZSk7CiAKICAgICB1c2luZyBTZXRQcm90
b3R5cGVGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7Ci0gICAgU2V0UHJvdG90eXBlRnVuY3Rpb25Q
dHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWShzZXRQcm90b3R5cGUpOworICAgIFNldFByb3RvdHlw
ZUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShzZXRQcm90b3R5cGUpOwogCiAgICAgdXNp
bmcgR2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgPSBKU1ZhbHVlICgqKShKU09iamVjdCosIEV4ZWNT
dGF0ZSopOwotICAgIEdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5U
UlkoZ2V0UHJvdG90eXBlKTsKKyAgICBHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBNRVRIT0RfVEFC
TEVfRU5UUlkoZ2V0UHJvdG90eXBlKTsKIAogICAgIHVzaW5nIER1bXBUb1N0cmVhbUZ1bmN0aW9u
UHRyID0gdm9pZCAoKikoY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKLSAgICBEdW1wVG9T
dHJlYW1GdW5jdGlvblB0ciBXVEZfTUVUSE9EX1RBQkxFX0VOVFJZKGR1bXBUb1N0cmVhbSk7Cisg
ICAgRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGR1bXBUb1N0cmVh
bSk7CiAKICAgICB1c2luZyBIZWFwU25hcHNob3RGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTQ2Vs
bCosIEhlYXBTbmFwc2hvdEJ1aWxkZXImKTsKLSAgICBIZWFwU25hcHNob3RGdW5jdGlvblB0ciBX
VEZfTUVUSE9EX1RBQkxFX0VOVFJZKGhlYXBTbmFwc2hvdCk7CisgICAgSGVhcFNuYXBzaG90RnVu
Y3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGhlYXBTbmFwc2hvdCk7CiAKICAgICB1c2luZyBF
c3RpbWF0ZWRTaXplRnVuY3Rpb25QdHIgPSBzaXplX3QgKCopKEpTQ2VsbCosIFZNJik7Ci0gICAg
RXN0aW1hdGVkU2l6ZUZ1bmN0aW9uUHRyIFdURl9NRVRIT0RfVEFCTEVfRU5UUlkoZXN0aW1hdGVk
U2l6ZSk7CisgICAgRXN0aW1hdGVkU2l6ZUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShl
c3RpbWF0ZWRTaXplKTsKIAogICAgIHVzaW5nIFZpc2l0T3V0cHV0Q29uc3RyYWludHNQdHIgPSB2
b2lkICgqKShKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotICAgIFZpc2l0T3V0cHV0Q29uc3RyYWlu
dHNQdHIgV1RGX01FVEhPRF9UQUJMRV9FTlRSWSh2aXNpdE91dHB1dENvbnN0cmFpbnRzKTsKKyAg
ICBWaXNpdE91dHB1dENvbnN0cmFpbnRzUHRyIE1FVEhPRF9UQUJMRV9FTlRSWSh2aXNpdE91dHB1
dENvbnN0cmFpbnRzKTsKIH07CiAKICNkZWZpbmUgQ1JFQVRFX01FTUJFUl9DSEVDS0VSKG1lbWJl
cikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgJKHJl
dmlzaW9uIDI0ODE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRh
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHVzaW5nIFB0clRhZyA9IFdURjo6
UHRyVGFnOwogICAgIHYoQjNDb21waWxhdGlvblB0clRhZykgXAogICAgIHYoQnl0ZWNvZGVQdHJU
YWcpIFwKICAgICB2KENvcHlGdW5jdGlvblB0clRhZykgXAorICAgIHYoRE9NSklURnVuY3Rpb25Q
dHJUYWcpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFnKSBcCiAgICAgdihFeGNlcHRpb25IYW5k
bGVyUHRyVGFnKSBcCiAgICAgdihFeGVjdXRhYmxlTWVtb3J5UHRyVGFnKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNDgxNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyNiw3ICs4MjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAotc3RhdGljIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlIERPTUpJVEZ1bmN0aW9uT2JqZWN0U2lnbmF0dXJlKChET01KSVQ6OkZ1bmN0aW9uV2l0
aG91dFR5cGVDaGVjaylET01KSVRGdW5jdGlvbk9iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNo
ZWNrLCBET01KSVRGdW5jdGlvbk9iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVh
ZChET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKK3N0YXRpYyBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRGdW5jdGlvbk9iamVjdFNpZ25hdHVyZShET01KSVRG
dW5jdGlvbk9iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrLCBET01KSVRGdW5jdGlvbk9i
amVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkhlYXBSYW5nZTo6
dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKIAogdm9pZCBET01KSVRGdW5jdGlvbk9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAt
ODgwLDcgKzg4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiB9OwogCi1zdGF0aWMgY29uc3QgRE9NSklUOjpTaWduYXR1cmUgRE9N
SklUQ2hlY2tTdWJDbGFzc09iamVjdFNpZ25hdHVyZSgoRE9NSklUOjpGdW5jdGlvbldpdGhvdXRU
eXBlQ2hlY2spRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNo
ZWNrLCBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOworc3RhdGlj
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3RTaWduYXR1
cmUoRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrLCBE
T01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjppbmZvKCksIERPTUpJVDo6RWZmZWN0Ojpmb3JSZWFk
KERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSksIFNwZWNJbnQzMk9ubHkpOwogCiB2b2lkIERPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDgxNDQpCisrKyBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTAx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbQVJNNjRFXSBIYXJk
ZW4gdGhlIGRpdmVyc2l0eSBvZiB0aGUgRE9NSklUOjpTaWduYXR1cmU6OnVuc2FmZUZ1bmN0aW9u
IHBvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDAyOTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzNzA2ODgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1B0clRhZy5oOgorICAg
ICAgICAtIEludHJvZHVjaW5nIFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSCBhbmQgV1RGX1ZUQkxf
RlVOQ1BUUl9QVFJBVVRIX1NUUiBtYWNyb3MgZm9yCisgICAgICAgICAgZGVmaW5pbmcgdnRibCBm
dW5jdGlvbiBwb2ludGVyIHN0eWxlIHBvaW50ZXIgc2lnbmluZyBtb2RpZmllci4KKwogMjAxOS0w
OC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIE1vdmUgRm9ybURhdGEgemlwIGZpbGUgZ2VuZXJhdGlvbiB0byBOZXR3b3JrUHJvY2VzcyBh
bmQgZW5hYmxlIGl0IGZvciBhbGwgV2ViS2l0IGNsaWVudHMgZm9yIHVwbG9hZGluZyBkaXJlY3Rv
cmllcwpJbmRleDogU291cmNlL1dURi93dGYvUHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUHRyVGFnLmgJKHJldmlzaW9uIDI0ODE0NCkKKysrIFNvdXJjZS9XVEYvd3RmL1B0
clRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDE0IEBAIHZvaWQgYXNzZXJ0SXNO
dWxsT3JUYWdnZWRXaXRoKFB0clR5cGUgcHQKIAogaW5saW5lIGJvb2wgdXNlc1BvaW50ZXJUYWdn
aW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQogCisvLyB2dGJsIGZ1bmN0aW9uIHBvaW50ZXJzIG5lZWQg
dG8gc2lnbiB3aXRoIHB0cmF1dGhfa2V5X3Byb2Nlc3NfaW5kZXBlbmRlbnRfY29kZQorLy8gYmVj
YXVzZSB0aGV5IHJlc2lkZSBpbiBsaWJyYXJ5IGNvZGUgc2hhcmVkIGJ5IG11bHRpcGxlIHByb2Nl
c3Nlcy4KKy8vIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gX19wdHJhdXRoKCkgYmVpbmcgMSBtZWFu
cyB0byB1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHBvaW50ZXIKKy8vIGZvciBkaXZlcnNpZmljYXRp
b24gYXMgd2VsbC4gX19wdHJhdXRoKCkgZXhwZWN0cyBhIGxpdGVyYWwgaW50IGZvciB0aGlzIGFy
Z3VtZW50LgorI2RlZmluZSBXVEZfVlRCTF9GVU5DUFRSX1BUUkFVVEgoZGlzY3JpbWluYXRvcikg
V1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIX1NUUigjZGlzY3JpbWluYXRvcikKKyNkZWZpbmUgV1RG
X1ZUQkxfRlVOQ1BUUl9QVFJBVVRIX1NUUihkaXNjcmltaW5hdG9yU3RyKSBcCisgICAgX19wdHJh
dXRoKHB0cmF1dGhfa2V5X3Byb2Nlc3NfaW5kZXBlbmRlbnRfY29kZSwgMSwgcHRyYXV0aF9zdHJp
bmdfZGlzY3JpbWluYXRvcihkaXNjcmltaW5hdG9yU3RyKSkKKwogI2Vsc2UgLy8gbm90IENQVShB
Uk02NEUpCiAKIGlubGluZSB2b2lkIHJlZ2lzdGVyUHRyVGFnTG9va3VwKFB0clRhZ0xvb2t1cCop
IHsgfQpAQCAtNTQ2LDYgKzU1NCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+IHZvaWQg
YXNzZXJ0SXMKIAogaW5saW5lIGJvb2wgdXNlc1BvaW50ZXJUYWdnaW5nKCkgeyByZXR1cm4gZmFs
c2U7IH0KIAorI2RlZmluZSBXVEZfVlRCTF9GVU5DUFRSX1BUUkFVVEgoZGlzY3JpbWluYXRvcikK
KyNkZWZpbmUgV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIX1NUUihkaXNjcmltaW5hdG9yU3RyKQor
CiAjZW5kaWYgLy8gQ1BVKEFSTTY0RSkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNDgxNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0wOC0wMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgW0FSTTY0RV0gSGFyZGVuIHRoZSBkaXZlcnNpdHkgb2Yg
dGhlIERPTUpJVDo6U2lnbmF0dXJlOjp1bnNhZmVGdW5jdGlvbiBwb2ludGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMjkyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81MzcwNjg4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIC0gVXBkYXRlIHRvIHdv
cmsgd2l0aCB0aGUgbmV3IERPTUpJVDo6U2lnbmF0dXJlIGNvbnN0cnVjdG9yLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6CisgICAgICAgIC0g
UmUtYmFzZSB0ZXN0IHJlc3VsdHMuCisKIDIwMTktMDgtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjcmFzaCBkaWFnbm9zdGljcyBmb3IgZGVidWdnaW5n
IHVuZXhwZWN0ZWQgemFwcGVkIGNlbGxzLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI0ODE0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDA5LDcgKzQwMDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZU5hbWUgPSAiRE9NSklUU2lnbmF0dXJl
Rm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkb3BlcmF0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICI6OmluZm8oKSI7CiAgICAgICAgICAgICBteSAkcmVz
dWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJG9wZXJhdGlvbi0+dHlw
ZSk7Ci0gICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlSGVhZGVyID0gInN0YXRpYyBjb25z
dCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKEpTQzo6RE9N
SklUOjpGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2spJHtuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBl
Q2hlY2t9LCI7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlSGVhZGVyID0gInN0YXRp
YyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oJHtu
YW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2t9LCI7CiAgICAgICAgICAgICBteSAkZG9tSklU
U2lnbmF0dXJlRm9vdGVyID0gIiRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJl
YWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jlc3VsdFR5cGV9IjsK
ICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50
c30pIHsKICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RET01KSVQuY3BwCShyZXZpc2lvbiAyNDgxNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDE1ICsxMDUsMTUgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3Ry
aQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKLXN0
YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RE
T01KSVRHZXRBdHRyaWJ1dGUoKEpTQzo6RE9NSklUOjpGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sp
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNr
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1l
bnRUeXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKTsKK3N0YXRpYyBjb25zdCBKU0M6OkRP
TUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUo
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNr
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1l
bnRUeXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKTsKIAotc3RhdGljIGNvbnN0IEpTQzo6
RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEl0ZW0oKEpTQzo6
RE9NSklUOjpGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2spanNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtV2l0aG91dFR5cGVDaGVjaywgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00p
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUsIERPTUpJ
VDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+Ojp2YWx1ZSwgRE9NSklU
OjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD46OnZhbHVlKTsKK3N0YXRp
YyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01K
SVRJdGVtKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbVdpdGhvdXRUeXBlQ2hlY2ss
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETERPTVN0cmluZz46OnZhbHVlLCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJ
RExVbnNpZ25lZFNob3J0Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElE
TFVuc2lnbmVkU2hvcnQ+Ojp2YWx1ZSk7CiAKLXN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRIYXNBdHRyaWJ1dGUoKEpTQzo6RE9N
SklUOjpGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2spanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25IYXNBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNrLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPjo6dmFsdWUpOwor
c3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVz
dERPTUpJVEhhc0F0dHJpYnV0ZShqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJp
YnV0ZVdpdGhvdXRUeXBlQ2hlY2ssIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+Ojp2YWx1ZSk7CiAKLXN0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRH
ZXRFbGVtZW50QnlJZCgoSlNDOjpET01KSVQ6OkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjaylqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkV2l0aG91dFR5cGVDaGVjaywg
SlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+
Pjo6dmFsdWUpOworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2ln
bmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWRXaXRob3V0VHlwZUNoZWNrLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8RWxl
bWVudD4+Ojp2YWx1ZSwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMUmVxdWlyZXNF
eGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+Ojp2YWx1ZSk7CiAKLXN0YXRp
YyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01K
SVRHZXRFbGVtZW50c0J5TmFtZSgoSlNDOjpET01KSVQ6OkZ1bmN0aW9uV2l0aG91dFR5cGVDaGVj
aylqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lV2l0aG91dFR5
cGVDaGVjaywgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJl
YWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj46OnZhbHVlLCBET01KSVQ6OklETEFy
Z3VtZW50VHlwZUZpbHRlcjxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pjo6dmFs
dWUpOworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJl
Rm9yVGVzdERPTUpJVEdldEVsZW1lbnRzQnlOYW1lKGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudHNCeU5hbWVXaXRob3V0VHlwZUNoZWNrLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8Tm9k
ZUxpc3Q+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETEF0b21TdHJp
bmdBZGFwdG9yPElETERPTVN0cmluZz4+Ojp2YWx1ZSk7CiAKIHN0YXRpYyBjb25zdCBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyIERPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRBbnlBdHRyIHsK
ICAgICBqc1Rlc3RET01KSVRBbnlBdHRyLAo=
</data>
<flag name="review"
          id="391173"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>