<?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>189504</bug_id>
          
          <creation_ts>2018-09-11 09:40:52 -0700</creation_ts>
          <short_desc>[Cocoa] Complete support for Paste as Quotation</short_desc>
          <delta_ts>2018-09-12 15:27:21 -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>HTML Editing</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1458483</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-09-11 09:40:52 -0700</bug_when>
    <thetext>WebCore implements custom paste behavior for Paste as Quotation, which is triggered by the presence of a specific class attribute value on the blockquote element being pasted (see isMailPasteAsQuotationNode in ReplaceSeelctionCommand.cpp). This allows clients of the legacy API to create a document fragment that will get pasted as a quotation. To expose the same functionality to clients of the modern WebKit API, we can introduce an explicit Paste as Quotation command, which will take care of creating an enclosing blockquote with the appropriate class. In the future we can do away with using the class attribute to signal the desired behavior altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458484</commentid>
    <comment_count>1</comment_count>
      <attachid>349400</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-11 09:41:41 -0700</bug_when>
    <thetext>Created attachment 349400
macOS-only patch to see what work needs to be done in other ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458486</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-11 09:44:45 -0700</bug_when>
    <thetext>Attachment 349400 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:114:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 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>1458602</commentid>
    <comment_count>3</comment_count>
      <attachid>349426</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-11 13:02:38 -0700</bug_when>
    <thetext>Created attachment 349426
Multi-platform patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458607</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-11 13:05:53 -0700</bug_when>
    <thetext>Attachment 349426 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:97:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 12 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>1458613</commentid>
    <comment_count>5</comment_count>
      <attachid>349432</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-11 13:16:36 -0700</bug_when>
    <thetext>Created attachment 349432
Multi-platform patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458614</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-11 13:18:15 -0700</bug_when>
    <thetext>Attachment 349432 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:97:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 12 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>1458623</commentid>
    <comment_count>7</comment_count>
      <attachid>349436</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-11 13:30:20 -0700</bug_when>
    <thetext>Created attachment 349436
Multi-platform patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458637</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-11 13:45:33 -0700</bug_when>
    <thetext>Attachment 349436 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:97:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 12 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>1458664</commentid>
    <comment_count>9</comment_count>
      <attachid>349454</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-11 14:24:51 -0700</bug_when>
    <thetext>Created attachment 349454
Multi-platform patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458665</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-11 14:26:59 -0700</bug_when>
    <thetext>Attachment 349454 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:97:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 14 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>1459062</commentid>
    <comment_count>11</comment_count>
      <attachid>349574</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-12 13:11:53 -0700</bug_when>
    <thetext>Created attachment 349574
Add PasteAsQuotation command and -[WKWebView _pasteAsQuotation:]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459064</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-12 13:16:26 -0700</bug_when>
    <thetext>Attachment 349574 did not pass style-queue:


ERROR: Source/WebCore/editing/mac/EditorMac.mm:96:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 25 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>1459108</commentid>
    <comment_count>13</comment_count>
      <attachid>349574</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-12 14:50:52 -0700</bug_when>
    <thetext>Comment on attachment 349574
Add PasteAsQuotation command and -[WKWebView _pasteAsQuotation:]

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

r=mews

&gt; Source/WebCore/editing/Editor.h:135
&gt; +        AsQuotation = 2 &lt;&lt; 0,

‽‽‽‽

&gt; LayoutTests/editing/pasteboard/4930986-1-paste-as-quotation.html:17
&gt; +document.addEventListener(&quot;beforecopy&quot;, (event) =&gt; { event.preventDefault(); });

Nit - no need for the { } around the function body.

&gt; LayoutTests/editing/pasteboard/4930986-2-paste-as-quotation.html:13
&gt; +    document.addEventListener(&quot;beforecopy&quot;, (event) =&gt; { event.preventDefault(); });

(Ditto)

&gt; LayoutTests/editing/pasteboard/4930986-3-paste-as-quotation.html:17
&gt; +document.addEventListener(&quot;beforecopy&quot;, (event) =&gt; { event.preventDefault(); });

(Ditto)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459131</commentid>
    <comment_count>14</comment_count>
      <attachid>349574</attachid>
    <who name="">mitz</who>
    <bug_when>2018-09-12 15:21:38 -0700</bug_when>
    <thetext>Comment on attachment 349574
Add PasteAsQuotation command and -[WKWebView _pasteAsQuotation:]

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

&gt;&gt; Source/WebCore/editing/Editor.h:135
&gt;&gt; +        AsQuotation = 2 &lt;&lt; 0,
&gt; 
&gt; ‽‽‽‽

The whole thing is unbelievable.

&gt;&gt; LayoutTests/editing/pasteboard/4930986-1-paste-as-quotation.html:17
&gt;&gt; +document.addEventListener(&quot;beforecopy&quot;, (event) =&gt; { event.preventDefault(); });
&gt; 
&gt; Nit - no need for the { } around the function body.

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459134</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-09-12 15:26:26 -0700</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/r235955&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459135</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 15:27:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/44397322&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349400</attachid>
            <date>2018-09-11 09:41:41 -0700</date>
            <delta_ts>2018-09-11 13:02:38 -0700</delta_ts>
            <desc>macOS-only patch to see what work needs to be done in other ports</desc>
            <filename>file_189504.txt</filename>
            <type>text/plain</type>
            <size>12229</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMy
Nyw2ICszMjcsNyBAQCBlbnVtIGNsYXNzIENsaXBib2FyZEV2ZW50S2luZCB7DQogICAgIEN1dCwN
CiAgICAgUGFzdGUsDQogICAgIFBhc3RlQXNQbGFpblRleHQsDQorICAgIFBhc3RlQXNRdW90YXRp
b24sDQogICAgIEJlZm9yZUNvcHksDQogICAgIEJlZm9yZUN1dCwNCiAgICAgQmVmb3JlUGFzdGUs
DQpAQCAtMzQxLDYgKzM0Miw3IEBAIHN0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnROYW1lRm9yQ2xp
cGJvYXINCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuY3V0RXZlbnQ7DQogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6
OlBhc3RlQXNQbGFpblRleHQ6DQorICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFz
UXVvdGF0aW9uOg0KICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50Ow0KICAg
ICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToNCiAgICAgICAgIHJldHVybiBl
dmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50Ow0KQEAgLTM2OSw2ICszNzEsNyBAQCBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zDQogICAgICAgICB9DQogICAgICAgICBG
QUxMVEhST1VHSDsNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlOg0KKyAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoNCiAgICAgICAgIHJldHVy
biBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5z
ZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoKSk7DQogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5Og0KICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0Og0KQEAgLTE0MDQsNyArMTQwNyw3IEBA
IHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXINCiAgICAgdXBkYXRlTWFy
a2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KICAgICBSZXNvdXJjZUNhY2hl
VmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpKTsNCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkNCi0gICAgICAgIHBhc3RlV2l0aFBhc3Rl
Ym9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOw0KKyAgICAgICAgcGFzdGVXaXRoUGFzdGVib2FyZCgm
cGFzdGVib2FyZCwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7DQogICAgIGVsc2UN
CiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKTsNCiB9
DQpAQCAtMTQxOSw2ICsxNDIyLDIxIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0KCkN
CiAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoKSk7DQogfQ0KIA0KK3ZvaWQgRWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9u
KCkNCit7DQorICAgIGlmICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbikpDQor
ICAgICAgICByZXR1cm47DQorICAgIGlmICghY2FuUGFzdGUoKSkNCisgICAgICAgIHJldHVybjsN
CisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KKyAg
ICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3Io
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCisgICAgYXV0byBwYXN0ZWJvYXJk
ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7DQorICAgIGlmIChtX2ZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpDQorICAg
ICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFzdGVPcHRpb246
OkFsbG93UGxhaW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7DQorICAgIGVsc2UN
CisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCk7DQor
fQ0KKw0KIHZvaWQgRWRpdG9yOjpwZXJmb3JtRGVsZXRlKCkNCiB7DQogICAgIGlmICghY2FuRGVs
ZXRlKCkpIHsNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMjM1ODU3
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0xMjksNiArMTI5LDEyIEBAIHB1YmxpYzoNCiAgICAgZXhwbGljaXQgRWRpdG9yKEZyYW1lJik7
DQogICAgIH5FZGl0b3IoKTsNCiANCisgICAgZW51bSBjbGFzcyBQYXN0ZU9wdGlvbiA6IHVpbnQ4
X3Qgew0KKyAgICAgICAgQWxsb3dQbGFpblRleHQgPSAxIDw8IDAsDQorICAgICAgICBJZ25vcmVN
YWlsQmxvY2txdW90ZSA9IDIgPDwgMCwNCisgICAgICAgIEFzUXVvdGF0aW9uID0gMiA8PCAwLA0K
KyAgICB9Ow0KKw0KICAgICBXRUJDT1JFX0VYUE9SVCBFZGl0b3JDbGllbnQqIGNsaWVudCgpIGNv
bnN0Ow0KICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIo
KSBjb25zdDsNCiANCkBAIC0xNTgsNiArMTY0LDcgQEAgcHVibGljOg0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBhc3RlKCk7DQogICAgIHZvaWQgcGFzdGUoUGFzdGVib2FyZCYpOw0KICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQoKTsNCisgICAgdm9pZCBwYXN0ZUFz
UXVvdGF0aW9uKCk7DQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGVyZm9ybURlbGV0ZSgpOw0K
IA0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7DQpAQCAtNTE5LDcgKzUyNiw3IEBAIHByaXZhdGU6DQogICAgIGJvb2wgY2Fu
RGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsNCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2VXaXRo
UGFzdGVib2FyZChQYXN0ZWJvYXJkJik7DQogICAgIHZvaWQgcGFzdGVBc1BsYWluVGV4dFdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsNCi0gICAgdm9pZCBwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0g
TWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KKyAgICB2b2lkIHBh
c3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4pOw0K
ICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFBsYWlu
VGV4dCYpOw0KIA0KICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlv
bihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklm
TmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBEb05vdFJldmVhbEV4dGVudCk7DQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNTg1
NikNCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtOTI2LDYgKzkyNiwxNiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVBc1Bs
YWluVGV4dChGcmFtDQogICAgIHJldHVybiB0cnVlOw0KIH0NCiANCitzdGF0aWMgYm9vbCBleGVj
dXRlUGFzdGVBc1F1b3RhdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpDQorew0KKyAgICBpZiAoc291cmNlID09IENvbW1h
bmRGcm9tTWVudU9yS2V5QmluZGluZykgew0KKyAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7DQorICAgICAgICBmcmFtZS5lZGl0
b3IoKS5wYXN0ZUFzUXVvdGF0aW9uKCk7DQorICAgIH0gZWxzZQ0KKyAgICAgICAgZnJhbWUuZWRp
dG9yKCkucGFzdGVBc1F1b3RhdGlvbigpOw0KKyAgICByZXR1cm4gdHJ1ZTsNCit9DQorDQogc3Rh
dGljIGJvb2wgZXhlY3V0ZVByaW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQ0KIHsNCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2Uo
KTsNCkBAIC0xNjM2LDYgKzE2NDYsNyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRl
Q29tbWFuZE1hDQogICAgICAgICB7ICJQYXN0ZSIsIHsgZXhlY3V0ZVBhc3RlLCBzdXBwb3J0ZWRQ
YXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlv
biwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWRQYXN0ZSB9IH0sDQogICAgICAgICB7ICJQYXN0
ZUFuZE1hdGNoU3R5bGUiLCB7IGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUsIHN1cHBvcnRlZFBh
c3RlLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZFBhc3RlIH0gfSwNCiAgICAgICAgIHsgIlBhc3Rl
QXNQbGFpblRleHQiLCB7IGV4ZWN1dGVQYXN0ZUFzUGxhaW5UZXh0LCBzdXBwb3J0ZWRQYXN0ZSwg
ZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWRQYXN0ZSB9IH0sDQorICAgICAgICB7ICJQYXN0ZUFzUXVv
dGF0aW9uIiwgeyBleGVjdXRlUGFzdGVBc1F1b3RhdGlvbiwgc3VwcG9ydGVkUGFzdGUsIGVuYWJs
ZWRQYXN0ZSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhl
Y3V0aW9uV2hlbkRpc2FibGVkUGFzdGUgfSB9LA0KICAgICAgICAgeyAiUHJpbnQiLCB7IGV4ZWN1
dGVQcmludCwgc3VwcG9ydGVkLCBlbmFibGVkLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sDQogICAgICAg
ICB7ICJSZWRvIiwgeyBleGVjdXRlUmVkbywgc3VwcG9ydGVkLCBlbmFibGVkUmVkbywgc3RhdGVO
b25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVu
RGlzYWJsZWQgfSB9LA0KICAgICAgICAgeyAiUmVtb3ZlRm9ybWF0IiwgeyBleGVjdXRlUmVtb3Zl
Rm9ybWF0LCBzdXBwb3J0ZWQsIGVuYWJsZWRSYW5nZUluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUs
IHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNh
YmxlZCB9IH0sDQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAtMjI1LDcgKzIyNSw3IEBAIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBFZGl0b3I6OndlYkNvbnQNCiAgICAgcmV0dXJuIFdURk1vdmUocmVhZGVyLmZy
YWdtZW50KTsNCiB9DQogDQotdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVi
b2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0
ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0
aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7DQog
ICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRl
eHQpOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQ0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2
aXNpb24gMjM1ODU3KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQkod29ya2luZyBjb3B5KQ0KQEAgLTM3LDkgKzM3LDExIEBADQogI2ltcG9ydCAiRWRpdG9yQ2xp
ZW50LmgiDQogI2ltcG9ydCAiRnJhbWUuaCINCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCINCisjaW1w
b3J0ICJIVE1MQlJFbGVtZW50LmgiDQogI2ltcG9ydCAiSFRNTENvbnZlcnRlci5oIg0KICNpbXBv
cnQgIkhUTUxFbGVtZW50LmgiDQogI2ltcG9ydCAiSFRNTE5hbWVzLmgiDQorI2ltcG9ydCAiSFRN
TFF1b3RlRWxlbWVudC5oIg0KICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiDQog
I2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIg0KICNpbXBvcnQgIlBhc3RlYm9hcmQuaCINCkBA
IC03Nyw3ICs3OSw3IEBAIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQYW5lbCgpDQogICAgIFtbTlNB
cHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gb3JkZXJGcm9udENvbG9yUGFuZWw6bmlsXTsN
CiB9DQogDQotdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFz
dGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWls
QmxvY2txdW90ZUhhbmRsaW5nKQ0KK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7
DQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogDQpAQCAtODgs
MTAgKzkwLDI4IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm8NCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wDQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7
DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9t
UGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFp
blRleHQpOw0KKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250
ZW50RnJvbVBhc3RlYm9hcmQoKnBhc3RlYm9hcmQsICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQ
YXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQpLCBjaG9zZVBsYWluVGV4dCk7DQorDQorICAgIGlm
IChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikp
IHsNCisgICAgICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0ZShi
bG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsNCisgICAgICAgIGJsb2NrUXVvdGUtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIEF0b21pY1N0cmluZygiY2l0ZSIp
KTsNCisgICAgICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKSk7DQorDQor
ICAgICAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7DQorDQorICAg
ICAgICBpZiAoY2hpbGROb2RlKSB7DQorICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgew0K
KyAgICAgICAgICAgICAgICBibG9ja1F1b3RlLT5hcHBlbmRDaGlsZCgqY2hpbGROb2RlKTsNCisg
ICAgICAgICAgICAgICAgY2hpbGROb2RlID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsNCisgICAg
ICAgICAgICB9DQorICAgICAgICB9IGVsc2UNCisgICAgICAgICAgICBibG9ja1F1b3RlLT5hcHBl
bmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOw0KKw0KKyAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKGJsb2NrUXVvdGUpOw0KKyAgICB9DQogDQogICAgIGlmIChm
cmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBh
c3RlYm9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7DQorICAgICAgICBwYXN0
ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0
aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9w
dGlvbjo6SWdub3JlTWFpbEJsb2NrcXVvdGUpID8gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSA6IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
ICk7DQogDQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsN
CiB9DQpAQCAtMTIyLDcgKzE0Miw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQNCiB7DQogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7
DQogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkpDQotICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0
cnVlKTsNCisgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFzdGVP
cHRpb246OkFsbG93UGxhaW5UZXh0IH0pOw0KICAgICBlbHNlDQogICAgICAgICBwYXN0ZUFzUGxh
aW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7DQogfQ0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0NCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQ0KQEAgLTQ0ODMsNiArNDQ4MywxMSBAQCAtIChfV0tBdHRhY2htZW50ICop
X2luc2VydEF0dGFjaG1lbnRXaXRoDQogI2VuZGlmDQogfQ0KIA0KKy0gKHZvaWQpX3Bhc3RlQXNR
dW90YXRpb246KGlkKXNlbmRlcg0KK3sNCisgICAgX2ltcGwtPmV4ZWN1dGVFZGl0Q29tbWFuZEZv
clNlbGVjdG9yKF9jbWQpOw0KK30NCisNCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRo
b3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXINCiB7DQogICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0
dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsNCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xODUsNiArMTg1LDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZA0KIC0gKF9XS0F0dGFj
aG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAq
KWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6
KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZChe
KShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIi1faW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlw
ZTpjb21wbGV0aW9uOiIsIG1hY29zeChXS19NQUNfVEJBLCBXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEsIFdLX0lPU19UQkEpKTsNCiAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlw
ZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vz
cykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7DQogDQorLSAoSUJBY3Rpb24pX3Bhc3RlQXNRdW90YXRpb246KGlk
KXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsNCisNCiAjaWYgVEFSR0VUX09TX0lQSE9ORQ0KIC8vIERFUkVDQVRFRDogVGhlIHNldHRl
cnMgb2YgdGhlIHRocmVlIGZvbGxvd2luZyBmdW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNl
IHVzZSBvdmVycmlkZUxheW91dFBhcmFtZXRlcnMuDQogLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBz
aXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0Lg0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIzNTg1
NikNCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI1OTYsNiArMjU5Niw3IEBAIHN0YXRpYyBjb25zdCBTZWxlY3Rvck5h
bWVNYXAmIHNlbGVjdG9yRXgNCiAgICAgfTsNCiANCiAgICAgc3RhdGljIGNvbnN0IFNlbGVjdG9y
QW5kQ29tbWFuZE5hbWUgbmFtZXNbXSA9IHsNCisgICAgICAgIHsgQHNlbGVjdG9yKF9wYXN0ZUFz
UXVvdGF0aW9uOiksICJQYXN0ZUFzUXVvdGF0aW9uIl9zIH0sDQogICAgICAgICB7IEBzZWxlY3Rv
cihpbnNlcnROZXdsaW5lSWdub3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0TmV3bGluZSJfcyB9
LA0KICAgICAgICAgeyBAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOiksICJJbnNl
cnROZXdsaW5lIl9zIH0sDQogICAgICAgICB7IEBzZWxlY3RvcihpbnNlcnRUYWJJZ25vcmluZ0Zp
ZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MgfSwNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349426</attachid>
            <date>2018-09-11 13:02:38 -0700</date>
            <delta_ts>2018-09-11 13:16:36 -0700</delta_ts>
            <desc>Multi-platform patch for EWS</desc>
            <filename>file_189504.txt</filename>
            <type>text/plain</type>
            <size>20820</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0
LDEyICs1NCwxNCBAQA0KICNpbmNsdWRlICJGcmFtZVZpZXcuaCINCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiDQogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIg0KKyNpbmNs
dWRlICJIVE1MQlJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiDQogI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCINCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MTmFtZXMuaCINCisjaW5jbHVkZSAi
SFRNTFF1b3RlRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCINCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIg0KICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5o
Ig0KQEAgLTMyNyw2ICszMjksNyBAQCBlbnVtIGNsYXNzIENsaXBib2FyZEV2ZW50S2luZCB7DQog
ICAgIEN1dCwNCiAgICAgUGFzdGUsDQogICAgIFBhc3RlQXNQbGFpblRleHQsDQorICAgIFBhc3Rl
QXNRdW90YXRpb24sDQogICAgIEJlZm9yZUNvcHksDQogICAgIEJlZm9yZUN1dCwNCiAgICAgQmVm
b3JlUGFzdGUsDQpAQCAtMzQxLDYgKzM0NCw3IEBAIHN0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnRO
YW1lRm9yQ2xpcGJvYXINCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuY3V0RXZlbnQ7DQog
ICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToNCiAgICAgY2FzZSBDbGlwYm9hcmRF
dmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6DQorICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpQYXN0ZUFzUXVvdGF0aW9uOg0KICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2
ZW50Ow0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToNCiAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50Ow0KQEAgLTM2OSw2ICszNzMsNyBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zDQogICAgICAgICB9DQog
ICAgICAgICBGQUxMVEhST1VHSDsNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3Rl
Og0KKyAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoNCiAgICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKSk7DQogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5
Og0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0Og0KQEAgLTE0MDQsNyAr
MTQwOSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXINCiAgICAg
dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KICAgICBSZXNv
dXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkNCi0gICAgICAgIHBhc3Rl
V2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOw0KKyAgICAgICAgcGFzdGVXaXRoUGFz
dGVib2FyZCgmcGFzdGVib2FyZCwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7DQog
ICAgIGVsc2UNCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKTsNCiB9DQpAQCAtMTQxOSw2ICsxNDI0LDQwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0KCkNCiAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7DQogfQ0KIA0KK3ZvaWQgRWRpdG9yOjpwYXN0ZUFz
UXVvdGF0aW9uKCkNCit7DQorICAgIGlmICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3Rh
dGlvbikpDQorICAgICAgICByZXR1cm47DQorICAgIGlmICghY2FuUGFzdGUoKSkNCisgICAgICAg
IHJldHVybjsNCisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOw0KKyAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1
cHByZXNzb3IoZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCisgICAgYXV0byBw
YXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7DQorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCkpDQorICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7DQor
ICAgIGVsc2UNCisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqcGFzdGVi
b2FyZCk7DQorfQ0KKw0KK3ZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkNCit7DQorICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxR
dW90ZUVsZW1lbnQ6OmNyZWF0ZShibG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsNCisgICAgYmxv
Y2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRv
bWljU3RyaW5nKCJjaXRlIikpOw0KKyAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKEFwcGxlUGFzdGVBc1F1b3Rh
dGlvbikpOw0KKw0KKyAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsN
CisNCisgICAgaWYgKGNoaWxkTm9kZSkgew0KKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgew0K
KyAgICAgICAgICAgIGJsb2NrUXVvdGUtPmFwcGVuZENoaWxkKCpjaGlsZE5vZGUpOw0KKyAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsNCisgICAgICAgIH0NCisg
ICAgfSBlbHNlDQorICAgICAgICBibG9ja1F1b3RlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSkpOw0KKw0KKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChibG9j
a1F1b3RlKTsNCit9DQorDQogdm9pZCBFZGl0b3I6OnBlcmZvcm1EZWxldGUoKQ0KIHsNCiAgICAg
aWYgKCFjYW5EZWxldGUoKSkgew0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAyMzU4NTcpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEyOSw2ICsxMjksMTIgQEAgcHVibGljOg0KICAgICBleHBsaWNpdCBFZGl0
b3IoRnJhbWUmKTsNCiAgICAgfkVkaXRvcigpOw0KIA0KKyAgICBlbnVtIGNsYXNzIFBhc3RlT3B0
aW9uIDogdWludDhfdCB7DQorICAgICAgICBBbGxvd1BsYWluVGV4dCA9IDEgPDwgMCwNCisgICAg
ICAgIElnbm9yZU1haWxCbG9ja3F1b3RlID0gMiA8PCAwLA0KKyAgICAgICAgQXNRdW90YXRpb24g
PSAyIDw8IDAsDQorICAgIH07DQorDQogICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCog
Y2xpZW50KCkgY29uc3Q7DQogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpIGNvbnN0Ow0KIA0KQEAgLTE1OCw2ICsxNjQsNyBAQCBwdWJsaWM6DQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGUoKTsNCiAgICAgdm9pZCBwYXN0ZShQYXN0ZWJvYXJk
Jik7DQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOw0KKyAgICB2
b2lkIHBhc3RlQXNRdW90YXRpb24oKTsNCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3Jt
RGVsZXRlKCk7DQogDQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsNCkBAIC01MTksOSArNTI2LDExIEBAIHByaXZhdGU6DQog
ICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsNCiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7DQogICAgIHZvaWQgcGFzdGVBc1Bs
YWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsNCi0gICAgdm9pZCBwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0K
KyAgICB2b2lkIHBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIE9wdGlvblNldDxQYXN0
ZU9wdGlvbj4pOw0KICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFz
dGVib2FyZFBsYWluVGV4dCYpOw0KIA0KKyAgICB2b2lkIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5n
KERvY3VtZW50RnJhZ21lbnQmKTsNCisNCiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRlckVk
aXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRl
bnQpOw0KICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsNCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayhjb25zdCBOb2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRp
b25TZXQ8VGV4dENoZWNraW5nVHlwZT4pOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkyNiw2ICs5MjYs
MTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQoRnJhbQ0KICAgICByZXR1
cm4gdHJ1ZTsNCiB9DQogDQorc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNRdW90YXRpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQ0KK3sNCisgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcp
IHsNCisgICAgICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IoZnJhbWUpOw0KKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucGFzdGVBc1F1b3RhdGlvbigp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIGZyYW1lLmVkaXRvcigpLnBhc3RlQXNRdW90YXRpb24o
KTsNCisgICAgcmV0dXJuIHRydWU7DQorfQ0KKw0KIHN0YXRpYyBib29sIGV4ZWN1dGVQcmludChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikN
CiB7DQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS5wYWdlKCk7DQpAQCAtMTYzNiw2ICsxNjQ2LDcg
QEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQ0KICAgICAgICAgeyAi
UGFzdGUiLCB7IGV4ZWN1dGVQYXN0ZSwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkUGFzdGUgfSB9LA0KICAgICAgICAgeyAiUGFzdGVBbmRNYXRjaFN0eWxlIiwgeyBleGVj
dXRlUGFzdGVBbmRNYXRjaFN0eWxlLCBzdXBwb3J0ZWRQYXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWRQYXN0ZSB9IH0sDQogICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgeyBleGVjdXRl
UGFzdGVBc1BsYWluVGV4dCwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
UGFzdGUgfSB9LA0KKyAgICAgICAgeyAiUGFzdGVBc1F1b3RhdGlvbiIsIHsgZXhlY3V0ZVBhc3Rl
QXNRdW90YXRpb24sIHN1cHBvcnRlZFBhc3RlLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZFBhc3Rl
IH0gfSwNCiAgICAgICAgIHsgIlByaW50IiwgeyBleGVjdXRlUHJpbnQsIHN1cHBvcnRlZCwgZW5h
YmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJl
ZG8sIHN1cHBvcnRlZCwgZW5hYmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwNCiAgICAgICAg
IHsgIlJlbW92ZUZvcm1hdCIsIHsgZXhlY3V0ZVJlbW92ZUZvcm1hdCwgc3VwcG9ydGVkLCBlbmFi
bGVkUmFuZ2VJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI5MSw0ICsyOTEsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGbw0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQorLy8gRklYTUU6
IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMgaXQgY2xlYXIgaXQg
YWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNpZGUgZWZmZWN0Lg0K
Ky8vIE9yIHJlZmFjdG9yIHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuDQorUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9z
ZVBsYWluVGV4dCkNCit7DQorICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsIGNv
bnRleHQsIGFsbG93UGxhaW5UZXh0KTsNCisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7DQor
ICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7DQor
ICAgIHJldHVybiBXVEZNb3ZlKHJlYWRlci5mcmFnbWVudCk7DQorfQ0KKw0KIH0NCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAkocmV2aXNpb24gMjM1ODU2
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC04NiwxNiArODYsMjAgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcg0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQotdm9pZCBFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWlu
VGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3Zv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9w
dGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47
DQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJv
YXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7DQor
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJvYXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIG9wdGlvbnMuY29u
dGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOw0KKw0K
KyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QXNRdW90
YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsNCisN
CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0gICAgICAgIHBhc3RlQXNG
cmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFz
dGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgp
LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5U
ZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90ZSkg
PyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2NrcXVv
dGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpDQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjE1LDE3ICsyMTUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0
DQogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsNCiB9DQogDQotLy8gRklY
TUU6IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMgaXQgY2xlYXIg
aXQgYWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNpZGUgZWZmZWN0
Lg0KLS8vIE9yIHJlZmFjdG9yIHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuDQotUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
IHBhc3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBj
aG9zZVBsYWluVGV4dCkNCi17DQotICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUs
IGNvbnRleHQsIGFsbG93UGxhaW5UZXh0KTsNCi0gICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7
DQotICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7
DQotICAgIHJldHVybiBXVEZNb3ZlKHJlYWRlci5mcmFnbWVudCk7DQotfQ0KLQ0KLXZvaWQgRWRp
dG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxs
b3dQbGFpblRleHQsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZykNCit2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBPcHRpb25TZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpDQogew0KICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gc2VsZWN0ZWRSYW5nZSgpOw0KICAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRl
cihtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0KTsNCkBAIC0yNDAsMTEgKzIzMCwxNCBA
QCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvDQogICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHJlYWRlci5mcmFnbWVudDsNCiAgICAgaWYgKCFm
cmFnbWVudCkgew0KICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dElnbm9yZWQ7DQotICAgICAg
ICBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdl
LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHRJZ25vcmVkKTsNCisgICAgICAgIGZyYWdt
ZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIG9wdGlv
bnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHRJ
Z25vcmVkKTsNCiAgICAgfQ0KIA0KKyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlu
cyhQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBh
c3RpbmcoKmZyYWdtZW50KTsNCisNCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZy
YWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVk
KSkNCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBj
YW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGZhbHNlLCBtYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxl
YXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCks
IGZhbHNlLCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90
ZSkgPyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiB2b2lkIEVkaXRvcjo6
aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9u
UGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHJldmlzaW9uIDIzNTg1NykNCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHdvcmtpbmcgY29weSkNCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQYW5lbCgpDQogICAgIFtbTlNBcHBsaWNhdGlv
biBzaGFyZWRBcHBsaWNhdGlvbl0gb3JkZXJGcm9udENvbG9yUGFuZWw6bmlsXTsNCiB9DQogDQot
dm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwg
Ym9vbCBhbGxvd1BsYWluVGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90
ZUhhbmRsaW5nKQ0KK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQq
IHBhc3RlYm9hcmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogDQpAQCAtODgsMTAgKzg4LDEz
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm8NCiAjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wDQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2Fy
ZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0K
KyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBh
c3RlYm9hcmQoKnBhc3RlYm9hcmQsICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlv
bjo6QWxsb3dQbGFpblRleHQpLCBjaG9zZVBsYWluVGV4dCk7DQorDQorICAgIGlmIChmcmFnbWVu
dCAmJiBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAg
ICBxdW90ZUZyYWdtZW50Rm9yUGFzdGluZygqZnJhZ21lbnQpOw0KIA0KICAgICBpZiAoZnJhZ21l
bnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50
LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0Zy
YWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0
ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246
Oklnbm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJs
b2NrcXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSApOw0K
IA0KICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7DQogfQ0K
QEAgLTEyMiw3ICsxMjUsNyBAQCB2b2lkIEVkaXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkDQogew0KICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOw0KICAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKQ0KLSAgICAgICAgcGFzdGVXaXRoUGFzdGVib2FyZCgmcGFzdGVib2FyZCwgdHJ1ZSk7
DQorICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB7IFBhc3RlT3B0aW9u
OjpBbGxvd1BsYWluVGV4dCB9KTsNCiAgICAgZWxzZQ0KICAgICAgICAgcGFzdGVBc1BsYWluVGV4
dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOw0KIH0NCkBAIC0yNzksMTYgKzI4Miw2IEBAIHZv
aWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3QNCiAgICAgcGFzdGVib2FyZC53
cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOw0KIH0NCiANCi0vLyBGSVhNRTogU2hvdWxkIGdpdmUgdGhp
cyBmdW5jdGlvbiBhIG5hbWUgdGhhdCBtYWtlcyBpdCBjbGVhciBpdCBhZGRzIHJlc291cmNlcyB0
byB0aGUgZG9jdW1lbnQgbG9hZGVyIGFzIGEgc2lkZSBlZmZlY3QuDQotLy8gT3IgcmVmYWN0b3Ig
c28gaXQgZG9lcyBub3QgZG8gdGhhdC4NCi1SZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9y
Ojp3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgUmFuZ2Um
IGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQ0KLXsN
Ci0gICAgV2ViQ29udGVudFJlYWRlciByZWFkZXIobV9mcmFtZSwgY29udGV4dCwgYWxsb3dQbGFp
blRleHQpOw0KLSAgICBwYXN0ZWJvYXJkLnJlYWQocmVhZGVyKTsNCi0gICAgY2hvc2VQbGFpblRl
eHQgPSByZWFkZXIubWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dDsNCi0gICAgcmV0dXJuIFdURk1v
dmUocmVhZGVyLmZyYWdtZW50KTsNCi19DQotDQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KIA0K
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpDQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy93
aW4vRWRpdG9yV2luLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
d2luL0VkaXRvcldpbi5jcHAJKHJldmlzaW9uIDIzNTg1NikNCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzUsMTYgKzM1LDIw
IEBADQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykNCit2b2lkIEVkaXRv
cjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
UGFzdGVPcHRpb24+IG9wdGlvbnMpDQogew0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2Vs
ZWN0ZWRSYW5nZSgpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuOw0KIA0KICAg
ICBib29sIGNob3NlUGxhaW5UZXh0Ow0KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUsICpyYW5nZSwgYWxs
b3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsNCisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCAqcmFu
Z2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQ
bGFpblRleHQpOw0KKw0KKyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0
ZU9wdGlvbjo6QXNRdW90YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3Rpbmco
KmZyYWdtZW50KTsNCisNCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50
KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0g
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWls
QmxvY2txdW90ZUhhbmRsaW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5y
ZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2Fy
ZCksIGNob3NlUGxhaW5UZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVN
YWlsQmxvY2txdW90ZSkgPyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3Rl
IDogTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUGxhdGZvcm1EcmFnRGF0YT4NCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL3dwZS9FZGl0b3JXUEUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy93cGUvRWRpdG9yV1BFLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvd3BlL0VkaXRvcldQRS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC03
MywxNiArNzMsMjAgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdA0K
ICAgICBub3RJbXBsZW1lbnRlZCgpOw0KIH0NCiANCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFz
dGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWls
QmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpDQordm9pZCBFZGl0b3I6
OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgT3B0aW9uU2V0PFBh
c3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsNCiAgICAgaWYgKCFyYW5nZSkNCiAgICAgICAgIHJldHVybjsNCiANCiAgICAg
Ym9vbCBjaG9zZVBsYWluVGV4dDsNCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoKnBhc3RlYm9hcmQsIG1fZnJh
bWUsICpyYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsNCisgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2Fy
ZERhdGEoKnBhc3RlYm9hcmQsIG1fZnJhbWUsICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0
ZU9wdGlvbjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAgaWYgKGZy
YWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkNCisg
ICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQorDQogICAgIGlmIChm
cmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoKmZy
YWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3Nl
UGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFn
bWVudCgqZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJk
KSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Oklnbm9yZU1h
aWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUg
OiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0KIA0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUNCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkNCkBA
IC00NDgzLDYgKzQ0ODMsMTEgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50
V2l0aA0KICNlbmRpZg0KIH0NCiANCistICh2b2lkKV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5k
ZXINCit7DQorICAgIF9pbXBsLT5leGVjdXRlRWRpdENvbW1hbmRGb3JTZWxlY3RvcihfY21kKTsN
Cit9DQorDQogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihO
U1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyDQogew0KICAgICBbc2VsZiBfZXZhbHVhdGVK
YXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07DQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDIz
NTg1NikNCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTg1LDYgKzE4NSw4IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQNCiAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250
ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCItX2lu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjoiLCBt
YWNvc3goV0tfTUFDX1RCQSwgV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBLCBXS19JT1NfVEJB
KSk7DQogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVy
OihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29u
dGVudFR5cGUgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
Ow0KIA0KKy0gKElCQWN0aW9uKV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5kZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7DQorDQogI2lmIFRB
UkdFVF9PU19JUEhPTkUNCiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBm
b2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlv
dXRQYXJhbWV0ZXJzLg0KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3
aXRoIGEgcmVndWxhciB2aWV3cG9ydC4NCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkNCkBAIC0y
NjA0LDcgKzI2MDQsMTAgQEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCYgc2VsZWN0b3JF
eA0KICAgICAgICAgeyBAc2VsZWN0b3IocGFnZVVwOiksICJNb3ZlUGFnZVVwIl9zIH0sDQogICAg
ICAgICB7IEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwNCiAgICAgICAgIHsgQHNlbGVjdG9yKHNjcm9sbFBhZ2VE
b3duOiksICJTY3JvbGxQYWdlRm9yd2FyZCJfcyB9LA0KLSAgICAgICAgeyBAc2VsZWN0b3Ioc2Ny
b2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dhcmQiX3MgfQ0KKyAgICAgICAgeyBAc2VsZWN0
b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dhcmQiX3MgfSwNCisjaWYgV0tfQVBJ
X0VOQUJMRUQNCisgICAgICAgIHsgQHNlbGVjdG9yKF9wYXN0ZUFzUXVvdGF0aW9uOiksICJQYXN0
ZUFzUXVvdGF0aW9uIl9zIH0sDQorI2VuZGlmDQogICAgIH07DQogDQogICAgIGZvciAoYXV0byYg
bmFtZSA6IG5hbWVzKQ0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349432</attachid>
            <date>2018-09-11 13:16:36 -0700</date>
            <delta_ts>2018-09-11 13:30:31 -0700</delta_ts>
            <desc>Multi-platform patch for EWS</desc>
            <filename>file_189504.txt</filename>
            <type>text/plain</type>
            <size>20768</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0
LDEyICs1NCwxNCBAQA0KICNpbmNsdWRlICJGcmFtZVZpZXcuaCINCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiDQogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIg0KKyNpbmNs
dWRlICJIVE1MQlJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiDQogI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCINCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MTmFtZXMuaCINCisjaW5jbHVkZSAi
SFRNTFF1b3RlRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCINCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIg0KICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5o
Ig0KQEAgLTMyNyw2ICszMjksNyBAQCBlbnVtIGNsYXNzIENsaXBib2FyZEV2ZW50S2luZCB7DQog
ICAgIEN1dCwNCiAgICAgUGFzdGUsDQogICAgIFBhc3RlQXNQbGFpblRleHQsDQorICAgIFBhc3Rl
QXNRdW90YXRpb24sDQogICAgIEJlZm9yZUNvcHksDQogICAgIEJlZm9yZUN1dCwNCiAgICAgQmVm
b3JlUGFzdGUsDQpAQCAtMzQxLDYgKzM0NCw3IEBAIHN0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnRO
YW1lRm9yQ2xpcGJvYXINCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuY3V0RXZlbnQ7DQog
ICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToNCiAgICAgY2FzZSBDbGlwYm9hcmRF
dmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6DQorICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpQYXN0ZUFzUXVvdGF0aW9uOg0KICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2
ZW50Ow0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToNCiAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50Ow0KQEAgLTM2OSw2ICszNzMsNyBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zDQogICAgICAgICB9DQog
ICAgICAgICBGQUxMVEhST1VHSDsNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3Rl
Og0KKyAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoNCiAgICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKSk7DQogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5
Og0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0Og0KQEAgLTE0MDQsNyAr
MTQwOSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXINCiAgICAg
dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KICAgICBSZXNv
dXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkNCi0gICAgICAgIHBhc3Rl
V2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOw0KKyAgICAgICAgcGFzdGVXaXRoUGFz
dGVib2FyZCgmcGFzdGVib2FyZCwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7DQog
ICAgIGVsc2UNCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKTsNCiB9DQpAQCAtMTQxOSw2ICsxNDI0LDQwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0KCkNCiAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7DQogfQ0KIA0KK3ZvaWQgRWRpdG9yOjpwYXN0ZUFz
UXVvdGF0aW9uKCkNCit7DQorICAgIGlmICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3Rh
dGlvbikpDQorICAgICAgICByZXR1cm47DQorICAgIGlmICghY2FuUGFzdGUoKSkNCisgICAgICAg
IHJldHVybjsNCisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOw0KKyAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1
cHByZXNzb3IoZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCisgICAgYXV0byBw
YXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7DQorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCkpDQorICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7DQor
ICAgIGVsc2UNCisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqcGFzdGVi
b2FyZCk7DQorfQ0KKw0KK3ZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkNCit7DQorICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxR
dW90ZUVsZW1lbnQ6OmNyZWF0ZShibG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsNCisgICAgYmxv
Y2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRv
bWljU3RyaW5nKCJjaXRlIikpOw0KKyAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKEFwcGxlUGFzdGVBc1F1b3Rh
dGlvbikpOw0KKw0KKyAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsN
CisNCisgICAgaWYgKGNoaWxkTm9kZSkgew0KKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgew0K
KyAgICAgICAgICAgIGJsb2NrUXVvdGUtPmFwcGVuZENoaWxkKCpjaGlsZE5vZGUpOw0KKyAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsNCisgICAgICAgIH0NCisg
ICAgfSBlbHNlDQorICAgICAgICBibG9ja1F1b3RlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSkpOw0KKw0KKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChibG9j
a1F1b3RlKTsNCit9DQorDQogdm9pZCBFZGl0b3I6OnBlcmZvcm1EZWxldGUoKQ0KIHsNCiAgICAg
aWYgKCFjYW5EZWxldGUoKSkgew0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAyMzU4NTcpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEyOSw2ICsxMjksMTIgQEAgcHVibGljOg0KICAgICBleHBsaWNpdCBFZGl0
b3IoRnJhbWUmKTsNCiAgICAgfkVkaXRvcigpOw0KIA0KKyAgICBlbnVtIGNsYXNzIFBhc3RlT3B0
aW9uIDogdWludDhfdCB7DQorICAgICAgICBBbGxvd1BsYWluVGV4dCA9IDEgPDwgMCwNCisgICAg
ICAgIElnbm9yZU1haWxCbG9ja3F1b3RlID0gMiA8PCAwLA0KKyAgICAgICAgQXNRdW90YXRpb24g
PSAyIDw8IDAsDQorICAgIH07DQorDQogICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCog
Y2xpZW50KCkgY29uc3Q7DQogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpIGNvbnN0Ow0KIA0KQEAgLTE1OCw2ICsxNjQsNyBAQCBwdWJsaWM6DQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGUoKTsNCiAgICAgdm9pZCBwYXN0ZShQYXN0ZWJvYXJk
Jik7DQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOw0KKyAgICB2
b2lkIHBhc3RlQXNRdW90YXRpb24oKTsNCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3Jt
RGVsZXRlKCk7DQogDQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsNCkBAIC01MTksOSArNTI2LDExIEBAIHByaXZhdGU6DQog
ICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsNCiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7DQogICAgIHZvaWQgcGFzdGVBc1Bs
YWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsNCi0gICAgdm9pZCBwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0K
KyAgICB2b2lkIHBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIE9wdGlvblNldDxQYXN0
ZU9wdGlvbj4pOw0KICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFz
dGVib2FyZFBsYWluVGV4dCYpOw0KIA0KKyAgICB2b2lkIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5n
KERvY3VtZW50RnJhZ21lbnQmKTsNCisNCiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRlckVk
aXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRl
bnQpOw0KICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsNCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayhjb25zdCBOb2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRp
b25TZXQ8VGV4dENoZWNraW5nVHlwZT4pOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkyNiw2ICs5MjYs
MTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQoRnJhbQ0KICAgICByZXR1
cm4gdHJ1ZTsNCiB9DQogDQorc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNRdW90YXRpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQ0KK3sNCisgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcp
IHsNCisgICAgICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IoZnJhbWUpOw0KKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucGFzdGVBc1F1b3RhdGlvbigp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIGZyYW1lLmVkaXRvcigpLnBhc3RlQXNRdW90YXRpb24o
KTsNCisgICAgcmV0dXJuIHRydWU7DQorfQ0KKw0KIHN0YXRpYyBib29sIGV4ZWN1dGVQcmludChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikN
CiB7DQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS5wYWdlKCk7DQpAQCAtMTYzNiw2ICsxNjQ2LDcg
QEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQ0KICAgICAgICAgeyAi
UGFzdGUiLCB7IGV4ZWN1dGVQYXN0ZSwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkUGFzdGUgfSB9LA0KICAgICAgICAgeyAiUGFzdGVBbmRNYXRjaFN0eWxlIiwgeyBleGVj
dXRlUGFzdGVBbmRNYXRjaFN0eWxlLCBzdXBwb3J0ZWRQYXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWRQYXN0ZSB9IH0sDQogICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgeyBleGVjdXRl
UGFzdGVBc1BsYWluVGV4dCwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
UGFzdGUgfSB9LA0KKyAgICAgICAgeyAiUGFzdGVBc1F1b3RhdGlvbiIsIHsgZXhlY3V0ZVBhc3Rl
QXNRdW90YXRpb24sIHN1cHBvcnRlZFBhc3RlLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZFBhc3Rl
IH0gfSwNCiAgICAgICAgIHsgIlByaW50IiwgeyBleGVjdXRlUHJpbnQsIHN1cHBvcnRlZCwgZW5h
YmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJl
ZG8sIHN1cHBvcnRlZCwgZW5hYmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwNCiAgICAgICAg
IHsgIlJlbW92ZUZvcm1hdCIsIHsgZXhlY3V0ZVJlbW92ZUZvcm1hdCwgc3VwcG9ydGVkLCBlbmFi
bGVkUmFuZ2VJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI5MSw0ICsyOTEsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGbw0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQorLy8gRklYTUU6
IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMgaXQgY2xlYXIgaXQg
YWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNpZGUgZWZmZWN0Lg0K
Ky8vIE9yIHJlZmFjdG9yIHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuDQorUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9z
ZVBsYWluVGV4dCkNCit7DQorICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsIGNv
bnRleHQsIGFsbG93UGxhaW5UZXh0KTsNCisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7DQor
ICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7DQor
ICAgIHJldHVybiBXVEZNb3ZlKHJlYWRlci5mcmFnbWVudCk7DQorfQ0KKw0KIH0NCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAkocmV2aXNpb24gMjM1ODU2
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC04NiwxNiArODYsMjAgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcg0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQotdm9pZCBFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWlu
VGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3Zv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9w
dGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47
DQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJv
YXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7DQor
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJvYXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIG9wdGlvbnMuY29u
dGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOw0KKw0K
KyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QXNRdW90
YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsNCisN
CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0gICAgICAgIHBhc3RlQXNG
cmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFz
dGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgp
LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5U
ZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90ZSkg
PyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2NrcXVv
dGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpDQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjE1LDE5ICsyMTUsMTAgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFz
dA0KICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJ
WE1FOiBTaG91bGQgZ2l2ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFy
IGl0IGFkZHMgcmVzb3VyY2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVj
dC4NCi0vLyBPciByZWZhY3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYg
Y2hvc2VQbGFpblRleHQpDQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1l
LCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIp
Ow0KLSAgICBjaG9zZVBsYWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0
Ow0KLSAgICByZXR1cm4gV1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCi12b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFs
bG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxp
bmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVi
b2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCisgICAgYm9vbCBhbGxvd1BsYWluVGV4dCA9
IG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KTsNCiAgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIobV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCk7DQog
ICAgIGludCBudW1iZXJPZlBhc3RlYm9hcmRJdGVtcyA9IGNsaWVudCgpLT5nZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudCgpOw0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mUGFzdGVib2Fy
ZEl0ZW1zOyArK2kpIHsNCkBAIC0yNDMsOCArMjM0LDExIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm8NCiAgICAgICAgIGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dElnbm9yZWQpOw0KICAgICB9DQogDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNv
bnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50
Rm9yUGFzdGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQ
YXN0ZWQpKQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxs
KCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50
LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Oklnbm9yZU1haWxCbG9j
a3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUgOiBNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0KIA0KIHZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0
YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQ0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMjM1ODU3KQ0KKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBFZGl0b3I6OnNob3dDb2xvclBhbmVsKCkNCiAgICAgW1tOU0FwcGxp
Y2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBvcmRlckZyb250Q29sb3JQYW5lbDpuaWxdOw0KIH0N
CiANCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVi
b2FyZCogcGFzdGVib2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCiANCkBAIC04OCwxMCAr
ODgsMTMgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVibw0KICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3ANCiANCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsNCi0g
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0
ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCk7DQorICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRG
cm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5zKFBhc3Rl
T3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAgaWYgKGZy
YWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkNCisg
ICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQogDQogICAgIGlmIChm
cmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBh
c3RlYm9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7DQorICAgICAgICBwYXN0
ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0
aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9w
dGlvbjo6SWdub3JlTWFpbEJsb2NrcXVvdGUpID8gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSA6IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
ICk7DQogDQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsN
CiB9DQpAQCAtMTIyLDcgKzEyNSw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQNCiB7DQogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7
DQogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkpDQotICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0
cnVlKTsNCisgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFzdGVP
cHRpb246OkFsbG93UGxhaW5UZXh0IH0pOw0KICAgICBlbHNlDQogICAgICAgICBwYXN0ZUFzUGxh
aW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7DQogfQ0KQEAgLTI3OSwxNiArMjgyLDYg
QEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdA0KICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBTaG91bGQgZ2l2
ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFyIGl0IGFkZHMgcmVzb3Vy
Y2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVjdC4NCi0vLyBPciByZWZh
Y3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBF
ZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBS
YW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
DQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxv
d1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIpOw0KLSAgICBjaG9zZVBs
YWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0Ow0KLSAgICByZXR1cm4g
V1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
DQogDQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL3dpbi9FZGl0b3JXaW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy93aW4vRWRpdG9yV2luLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zNSwxNiAr
MzUsMjAgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotdm9pZCBFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4
dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3ZvaWQg
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlv
blNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47DQog
DQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgKnJhbmdl
LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUs
ICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQpLCBj
aG9zZVBsYWluVGV4dCk7DQorDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50Rm9yUGFz
dGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJh
Z21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQp
KQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQs
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0K
IA0KIHRlbXBsYXRlIDx0eXBlbmFtZSBQbGF0Zm9ybURyYWdEYXRhPg0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvd3BlL0VkaXRvcldQRS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3dwZS9FZGl0b3JXUEUuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy93cGUvRWRpdG9yV1BFLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTczLDE2ICs3MywyMCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0DQogICAgIG5vdEltcGxlbWVudGVkKCk7DQogfQ0KIA0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykNCit2b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25T
ZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpDQogew0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
c2VsZWN0ZWRSYW5nZSgpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuOw0KIA0K
ICAgICBib29sIGNob3NlUGxhaW5UZXh0Ow0KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwg
bV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0
ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOw0KKw0KKyAgICBp
ZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24p
KQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsNCisNCiAgICAg
aWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0
KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0gICAgICAgIHBhc3RlQXNGcmFnbWVu
dCgqZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwg
Y2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVB
c0ZyYWdtZW50KCpmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3Rl
Ym9hcmQpLCBjaG9zZVBsYWluVGV4dCwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6SWdu
b3JlTWFpbEJsb2NrcXVvdGUpID8gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2tx
dW90ZSA6IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsNCiB9DQog
DQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5
KQ0KQEAgLTQ0ODMsNiArNDQ4MywxMSBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFj
aG1lbnRXaXRoDQogI2VuZGlmDQogfQ0KIA0KKy0gKHZvaWQpX3Bhc3RlQXNRdW90YXRpb246KGlk
KXNlbmRlcg0KK3sNCisgICAgX2ltcGwtPmV4ZWN1dGVFZGl0Q29tbWFuZEZvclNlbGVjdG9yKF9j
bWQpOw0KK30NCisNCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1
cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXINCiB7DQogICAgIFtzZWxmIF9ldmFs
dWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBs
ZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsNCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNp
b24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xODUsNiArMTg1LDggQEAgdHlwZWRlZiBO
U19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZA0KIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVy
IGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nl
c3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
Ii1faW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9u
OiIsIG1hY29zeChXS19NQUNfVEJBLCBXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEsIFdLX0lP
U19UQkEpKTsNCiAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdy
YXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcg
Kiljb250ZW50VHlwZSBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7DQogDQorLSAoSUJBY3Rpb24pX3Bhc3RlQXNRdW90YXRpb246KGlkKXNlbmRlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCisNCiAj
aWYgVEFSR0VUX09TX0lQSE9ORQ0KIC8vIERFUkVDQVRFRDogVGhlIHNldHRlcnMgb2YgdGhlIHRo
cmVlIGZvbGxvd2luZyBmdW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBvdmVycmlk
ZUxheW91dFBhcmFtZXRlcnMuDQogLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0
YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0Lg0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIzNTg1NikNCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQ0K
QEAgLTI2MDQsNyArMjYwNCwxMCBAQCBzdGF0aWMgY29uc3QgU2VsZWN0b3JOYW1lTWFwJiBzZWxl
Y3RvckV4DQogICAgICAgICB7IEBzZWxlY3RvcihwYWdlVXA6KSwgIk1vdmVQYWdlVXAiX3MgfSwN
CiAgICAgICAgIHsgQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBh
Z2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LA0KICAgICAgICAgeyBAc2VsZWN0b3Ioc2Nyb2xs
UGFnZURvd246KSwgIlNjcm9sbFBhZ2VGb3J3YXJkIl9zIH0sDQotICAgICAgICB7IEBzZWxlY3Rv
cihzY3JvbGxQYWdlVXA6KSwgIlNjcm9sbFBhZ2VCYWNrd2FyZCJfcyB9DQorICAgICAgICB7IEBz
ZWxlY3RvcihzY3JvbGxQYWdlVXA6KSwgIlNjcm9sbFBhZ2VCYWNrd2FyZCJfcyB9LA0KKyNpZiBX
S19BUElfRU5BQkxFRA0KKyAgICAgICAgeyBAc2VsZWN0b3IoX3Bhc3RlQXNRdW90YXRpb246KSwg
IlBhc3RlQXNRdW90YXRpb24iX3MgfSwNCisjZW5kaWYNCiAgICAgfTsNCiANCiAgICAgZm9yIChh
dXRvJiBuYW1lIDogbmFtZXMpDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349436</attachid>
            <date>2018-09-11 13:30:20 -0700</date>
            <delta_ts>2018-09-11 14:24:51 -0700</delta_ts>
            <desc>Multi-platform patch for EWS</desc>
            <filename>file_189504.txt</filename>
            <type>text/plain</type>
            <size>20769</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0
LDEyICs1NCwxNCBAQA0KICNpbmNsdWRlICJGcmFtZVZpZXcuaCINCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiDQogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIg0KKyNpbmNs
dWRlICJIVE1MQlJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiDQogI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCINCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MTmFtZXMuaCINCisjaW5jbHVkZSAi
SFRNTFF1b3RlRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCINCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIg0KICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5o
Ig0KQEAgLTMyNyw2ICszMjksNyBAQCBlbnVtIGNsYXNzIENsaXBib2FyZEV2ZW50S2luZCB7DQog
ICAgIEN1dCwNCiAgICAgUGFzdGUsDQogICAgIFBhc3RlQXNQbGFpblRleHQsDQorICAgIFBhc3Rl
QXNRdW90YXRpb24sDQogICAgIEJlZm9yZUNvcHksDQogICAgIEJlZm9yZUN1dCwNCiAgICAgQmVm
b3JlUGFzdGUsDQpAQCAtMzQxLDYgKzM0NCw3IEBAIHN0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnRO
YW1lRm9yQ2xpcGJvYXINCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuY3V0RXZlbnQ7DQog
ICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToNCiAgICAgY2FzZSBDbGlwYm9hcmRF
dmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6DQorICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpQYXN0ZUFzUXVvdGF0aW9uOg0KICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2
ZW50Ow0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToNCiAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50Ow0KQEAgLTM2OSw2ICszNzMsNyBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zDQogICAgICAgICB9DQog
ICAgICAgICBGQUxMVEhST1VHSDsNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3Rl
Og0KKyAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoNCiAgICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKSk7DQogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5
Og0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0Og0KQEAgLTE0MDQsNyAr
MTQwOSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXINCiAgICAg
dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KICAgICBSZXNv
dXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkNCi0gICAgICAgIHBhc3Rl
V2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOw0KKyAgICAgICAgcGFzdGVXaXRoUGFz
dGVib2FyZCgmcGFzdGVib2FyZCwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7DQog
ICAgIGVsc2UNCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKTsNCiB9DQpAQCAtMTQxOSw2ICsxNDI0LDQwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0KCkNCiAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7DQogfQ0KIA0KK3ZvaWQgRWRpdG9yOjpwYXN0ZUFz
UXVvdGF0aW9uKCkNCit7DQorICAgIGlmICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3Rh
dGlvbikpDQorICAgICAgICByZXR1cm47DQorICAgIGlmICghY2FuUGFzdGUoKSkNCisgICAgICAg
IHJldHVybjsNCisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOw0KKyAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1
cHByZXNzb3IoZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCisgICAgYXV0byBw
YXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7DQorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCkpDQorICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7DQor
ICAgIGVsc2UNCisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqcGFzdGVi
b2FyZCk7DQorfQ0KKw0KK3ZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkNCit7DQorICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxR
dW90ZUVsZW1lbnQ6OmNyZWF0ZShibG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsNCisgICAgYmxv
Y2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRv
bWljU3RyaW5nKCJjaXRlIikpOw0KKyAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKEFwcGxlUGFzdGVBc1F1b3Rh
dGlvbikpOw0KKw0KKyAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsN
CisNCisgICAgaWYgKGNoaWxkTm9kZSkgew0KKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgew0K
KyAgICAgICAgICAgIGJsb2NrUXVvdGUtPmFwcGVuZENoaWxkKCpjaGlsZE5vZGUpOw0KKyAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsNCisgICAgICAgIH0NCisg
ICAgfSBlbHNlDQorICAgICAgICBibG9ja1F1b3RlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSkpOw0KKw0KKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChibG9j
a1F1b3RlKTsNCit9DQorDQogdm9pZCBFZGl0b3I6OnBlcmZvcm1EZWxldGUoKQ0KIHsNCiAgICAg
aWYgKCFjYW5EZWxldGUoKSkgew0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAyMzU4NTcpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEyOSw2ICsxMjksMTIgQEAgcHVibGljOg0KICAgICBleHBsaWNpdCBFZGl0
b3IoRnJhbWUmKTsNCiAgICAgfkVkaXRvcigpOw0KIA0KKyAgICBlbnVtIGNsYXNzIFBhc3RlT3B0
aW9uIDogdWludDhfdCB7DQorICAgICAgICBBbGxvd1BsYWluVGV4dCA9IDEgPDwgMCwNCisgICAg
ICAgIElnbm9yZU1haWxCbG9ja3F1b3RlID0gMiA8PCAwLA0KKyAgICAgICAgQXNRdW90YXRpb24g
PSAyIDw8IDAsDQorICAgIH07DQorDQogICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCog
Y2xpZW50KCkgY29uc3Q7DQogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpIGNvbnN0Ow0KIA0KQEAgLTE1OCw2ICsxNjQsNyBAQCBwdWJsaWM6DQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGUoKTsNCiAgICAgdm9pZCBwYXN0ZShQYXN0ZWJvYXJk
Jik7DQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOw0KKyAgICB2
b2lkIHBhc3RlQXNRdW90YXRpb24oKTsNCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3Jt
RGVsZXRlKCk7DQogDQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsNCkBAIC01MTksOSArNTI2LDExIEBAIHByaXZhdGU6DQog
ICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsNCiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7DQogICAgIHZvaWQgcGFzdGVBc1Bs
YWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsNCi0gICAgdm9pZCBwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0K
KyAgICB2b2lkIHBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIE9wdGlvblNldDxQYXN0
ZU9wdGlvbj4pOw0KICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFz
dGVib2FyZFBsYWluVGV4dCYpOw0KIA0KKyAgICB2b2lkIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5n
KERvY3VtZW50RnJhZ21lbnQmKTsNCisNCiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRlckVk
aXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRl
bnQpOw0KICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsNCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayhjb25zdCBOb2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRp
b25TZXQ8VGV4dENoZWNraW5nVHlwZT4pOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkyNiw2ICs5MjYs
MTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQoRnJhbQ0KICAgICByZXR1
cm4gdHJ1ZTsNCiB9DQogDQorc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNRdW90YXRpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQ0KK3sNCisgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcp
IHsNCisgICAgICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IoZnJhbWUpOw0KKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucGFzdGVBc1F1b3RhdGlvbigp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIGZyYW1lLmVkaXRvcigpLnBhc3RlQXNRdW90YXRpb24o
KTsNCisgICAgcmV0dXJuIHRydWU7DQorfQ0KKw0KIHN0YXRpYyBib29sIGV4ZWN1dGVQcmludChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikN
CiB7DQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS5wYWdlKCk7DQpAQCAtMTYzNiw2ICsxNjQ2LDcg
QEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQ0KICAgICAgICAgeyAi
UGFzdGUiLCB7IGV4ZWN1dGVQYXN0ZSwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkUGFzdGUgfSB9LA0KICAgICAgICAgeyAiUGFzdGVBbmRNYXRjaFN0eWxlIiwgeyBleGVj
dXRlUGFzdGVBbmRNYXRjaFN0eWxlLCBzdXBwb3J0ZWRQYXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWRQYXN0ZSB9IH0sDQogICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgeyBleGVjdXRl
UGFzdGVBc1BsYWluVGV4dCwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
UGFzdGUgfSB9LA0KKyAgICAgICAgeyAiUGFzdGVBc1F1b3RhdGlvbiIsIHsgZXhlY3V0ZVBhc3Rl
QXNRdW90YXRpb24sIHN1cHBvcnRlZFBhc3RlLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZFBhc3Rl
IH0gfSwNCiAgICAgICAgIHsgIlByaW50IiwgeyBleGVjdXRlUHJpbnQsIHN1cHBvcnRlZCwgZW5h
YmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJl
ZG8sIHN1cHBvcnRlZCwgZW5hYmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwNCiAgICAgICAg
IHsgIlJlbW92ZUZvcm1hdCIsIHsgZXhlY3V0ZVJlbW92ZUZvcm1hdCwgc3VwcG9ydGVkLCBlbmFi
bGVkUmFuZ2VJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI5MSw0ICsyOTEsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGbw0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQorLy8gRklYTUU6
IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMgaXQgY2xlYXIgaXQg
YWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNpZGUgZWZmZWN0Lg0K
Ky8vIE9yIHJlZmFjdG9yIHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuDQorUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9z
ZVBsYWluVGV4dCkNCit7DQorICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsIGNv
bnRleHQsIGFsbG93UGxhaW5UZXh0KTsNCisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7DQor
ICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7DQor
ICAgIHJldHVybiBXVEZNb3ZlKHJlYWRlci5mcmFnbWVudCk7DQorfQ0KKw0KIH0NCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAkocmV2aXNpb24gMjM1ODU2
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC04NiwxNiArODYsMjAgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcg0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQotdm9pZCBFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWlu
VGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3Zv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9w
dGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47
DQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJv
YXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7DQor
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJvYXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIG9wdGlvbnMuY29u
dGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOw0KKw0K
KyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QXNRdW90
YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsNCisN
CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0gICAgICAgIHBhc3RlQXNG
cmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFz
dGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgp
LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5U
ZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90ZSkg
PyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2NrcXVv
dGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpDQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjE1LDE5ICsyMTUsMTAgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFz
dA0KICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJ
WE1FOiBTaG91bGQgZ2l2ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFy
IGl0IGFkZHMgcmVzb3VyY2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVj
dC4NCi0vLyBPciByZWZhY3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYg
Y2hvc2VQbGFpblRleHQpDQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1l
LCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIp
Ow0KLSAgICBjaG9zZVBsYWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0
Ow0KLSAgICByZXR1cm4gV1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCi12b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFs
bG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxp
bmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVi
b2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCisgICAgYm9vbCBhbGxvd1BsYWluVGV4dCA9
IG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KTsNCiAgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIobV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCk7DQog
ICAgIGludCBudW1iZXJPZlBhc3RlYm9hcmRJdGVtcyA9IGNsaWVudCgpLT5nZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudCgpOw0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mUGFzdGVib2Fy
ZEl0ZW1zOyArK2kpIHsNCkBAIC0yNDMsOCArMjM0LDExIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm8NCiAgICAgICAgIGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dElnbm9yZWQpOw0KICAgICB9DQogDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNv
bnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50
Rm9yUGFzdGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQ
YXN0ZWQpKQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxs
KCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50
LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Oklnbm9yZU1haWxCbG9j
a3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUgOiBNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0KIA0KIHZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0
YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQ0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMjM1ODU3KQ0KKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBFZGl0b3I6OnNob3dDb2xvclBhbmVsKCkNCiAgICAgW1tOU0FwcGxp
Y2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBvcmRlckZyb250Q29sb3JQYW5lbDpuaWxdOw0KIH0N
CiANCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVi
b2FyZCogcGFzdGVib2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCiANCkBAIC04OCwxMCAr
ODgsMTMgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVibw0KICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3ANCiANCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsNCi0g
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0
ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCk7DQorICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRG
cm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5zKFBhc3Rl
T3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAgaWYgKGZy
YWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkNCisg
ICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQogDQogICAgIGlmIChm
cmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBh
c3RlYm9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7DQorICAgICAgICBwYXN0
ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0
aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9w
dGlvbjo6SWdub3JlTWFpbEJsb2NrcXVvdGUpID8gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSA6IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
ICk7DQogDQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsN
CiB9DQpAQCAtMTIyLDcgKzEyNSw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQNCiB7DQogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7
DQogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkpDQotICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0
cnVlKTsNCisgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFzdGVP
cHRpb246OkFsbG93UGxhaW5UZXh0IH0pOw0KICAgICBlbHNlDQogICAgICAgICBwYXN0ZUFzUGxh
aW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7DQogfQ0KQEAgLTI3OSwxNiArMjgyLDYg
QEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdA0KICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBTaG91bGQgZ2l2
ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFyIGl0IGFkZHMgcmVzb3Vy
Y2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVjdC4NCi0vLyBPciByZWZh
Y3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBF
ZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBS
YW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
DQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxv
d1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIpOw0KLSAgICBjaG9zZVBs
YWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0Ow0KLSAgICByZXR1cm4g
V1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
DQogDQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL3dpbi9FZGl0b3JXaW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy93aW4vRWRpdG9yV2luLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zNSwxNiAr
MzUsMjAgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotdm9pZCBFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4
dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3ZvaWQg
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlv
blNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47DQog
DQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgKnJhbmdl
LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUs
ICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQpLCBj
aG9zZVBsYWluVGV4dCk7DQorDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50Rm9yUGFz
dGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJh
Z21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQp
KQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQs
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0K
IA0KIHRlbXBsYXRlIDx0eXBlbmFtZSBQbGF0Zm9ybURyYWdEYXRhPg0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvd3BlL0VkaXRvcldQRS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3dwZS9FZGl0b3JXUEUuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy93cGUvRWRpdG9yV1BFLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTczLDE2ICs3MywyMCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0DQogICAgIG5vdEltcGxlbWVudGVkKCk7DQogfQ0KIA0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykNCit2b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25T
ZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpDQogew0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
c2VsZWN0ZWRSYW5nZSgpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuOw0KIA0K
ICAgICBib29sIGNob3NlUGxhaW5UZXh0Ow0KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwg
bV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0
ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAg
aWYgKGZyYWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9u
KSkNCisgICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQorDQogICAg
IGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdl
dCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21l
bnQoKmZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCks
IGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsNCisgICAgICAgIHBhc3Rl
QXNGcmFnbWVudCgqZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0K
IA0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUNCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkNCkBAIC00NDgzLDYgKzQ0ODMsMTEgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRh
Y2htZW50V2l0aA0KICNlbmRpZg0KIH0NCiANCistICh2b2lkKV9wYXN0ZUFzUXVvdGF0aW9uOihp
ZClzZW5kZXINCit7DQorICAgIF9pbXBsLT5leGVjdXRlRWRpdENvbW1hbmRGb3JTZWxlY3Rvcihf
Y21kKTsNCit9DQorDQogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0
dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyDQogew0KICAgICBbc2VsZiBfZXZh
bHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07DQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlz
aW9uIDIzNTg1NikNCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTg1LDYgKzE4NSw4IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQNCiAtIChfV0tBdHRhY2htZW50ICopX2lu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBl
ciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBvcHRpb25zOihfV0tBdHRhY2ht
ZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNj
ZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5U
KCItX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlv
bjoiLCBtYWNvc3goV0tfTUFDX1RCQSwgV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBLCBXS19J
T1NfVEJBKSk7DQogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVX
cmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5n
ICopY29udGVudFR5cGUgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOw0KIA0KKy0gKElCQWN0aW9uKV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5kZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7DQorDQog
I2lmIFRBUkdFVF9PU19JUEhPTkUNCiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0
aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJp
ZGVMYXlvdXRQYXJhbWV0ZXJzLg0KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2Ug
dGFrZSB3aXRoIGEgcmVndWxhciB2aWV3cG9ydC4NCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkN
CkBAIC0yNjA0LDcgKzI2MDQsMTAgQEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCYgc2Vs
ZWN0b3JFeA0KICAgICAgICAgeyBAc2VsZWN0b3IocGFnZVVwOiksICJNb3ZlUGFnZVVwIl9zIH0s
DQogICAgICAgICB7IEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwNCiAgICAgICAgIHsgQHNlbGVjdG9yKHNjcm9s
bFBhZ2VEb3duOiksICJTY3JvbGxQYWdlRm9yd2FyZCJfcyB9LA0KLSAgICAgICAgeyBAc2VsZWN0
b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dhcmQiX3MgfQ0KKyAgICAgICAgeyBA
c2VsZWN0b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dhcmQiX3MgfSwNCisjaWYg
V0tfQVBJX0VOQUJMRUQNCisgICAgICAgIHsgQHNlbGVjdG9yKF9wYXN0ZUFzUXVvdGF0aW9uOiks
ICJQYXN0ZUFzUXVvdGF0aW9uIl9zIH0sDQorI2VuZGlmDQogICAgIH07DQogDQogICAgIGZvciAo
YXV0byYgbmFtZSA6IG5hbWVzKQ0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349454</attachid>
            <date>2018-09-11 14:24:51 -0700</date>
            <delta_ts>2018-09-12 13:11:52 -0700</delta_ts>
            <desc>Multi-platform patch for EWS</desc>
            <filename>file_189504.txt</filename>
            <type>text/plain</type>
            <size>23112</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0
LDEyICs1NCwxNCBAQA0KICNpbmNsdWRlICJGcmFtZVZpZXcuaCINCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiDQogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIg0KKyNpbmNs
dWRlICJIVE1MQlJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiDQogI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCINCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MTmFtZXMuaCINCisjaW5jbHVkZSAi
SFRNTFF1b3RlRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCINCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIg0KICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5o
Ig0KQEAgLTMyNyw2ICszMjksNyBAQCBlbnVtIGNsYXNzIENsaXBib2FyZEV2ZW50S2luZCB7DQog
ICAgIEN1dCwNCiAgICAgUGFzdGUsDQogICAgIFBhc3RlQXNQbGFpblRleHQsDQorICAgIFBhc3Rl
QXNRdW90YXRpb24sDQogICAgIEJlZm9yZUNvcHksDQogICAgIEJlZm9yZUN1dCwNCiAgICAgQmVm
b3JlUGFzdGUsDQpAQCAtMzQxLDYgKzM0NCw3IEBAIHN0YXRpYyBBdG9taWNTdHJpbmcgZXZlbnRO
YW1lRm9yQ2xpcGJvYXINCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuY3V0RXZlbnQ7DQog
ICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToNCiAgICAgY2FzZSBDbGlwYm9hcmRF
dmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6DQorICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpQYXN0ZUFzUXVvdGF0aW9uOg0KICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2
ZW50Ow0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToNCiAgICAgICAg
IHJldHVybiBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50Ow0KQEAgLTM2OSw2ICszNzMsNyBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zDQogICAgICAgICB9DQog
ICAgICAgICBGQUxMVEhST1VHSDsNCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3Rl
Og0KKyAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3RhdGlvbjoNCiAgICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKSk7DQogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5
Og0KICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0Og0KQEAgLTE0MDQsNyAr
MTQwOSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZShQYXN0ZWJvYXJkJiBwYXN0ZWJvYXINCiAgICAg
dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOw0KICAgICBSZXNv
dXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoZG9jdW1l
bnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCiAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkNCi0gICAgICAgIHBhc3Rl
V2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOw0KKyAgICAgICAgcGFzdGVXaXRoUGFz
dGVib2FyZCgmcGFzdGVib2FyZCwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQgfSk7DQog
ICAgIGVsc2UNCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKTsNCiB9DQpAQCAtMTQxOSw2ICsxNDI0LDQwIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0KCkNCiAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7DQogfQ0KIA0KK3ZvaWQgRWRpdG9yOjpwYXN0ZUFz
UXVvdGF0aW9uKCkNCit7DQorICAgIGlmICghZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1F1b3Rh
dGlvbikpDQorICAgICAgICByZXR1cm47DQorICAgIGlmICghY2FuUGFzdGUoKSkNCisgICAgICAg
IHJldHVybjsNCisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFs
c2UpOw0KKyAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1
cHByZXNzb3IoZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsNCisgICAgYXV0byBw
YXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7DQorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCkpDQorICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQuZ2V0KCksIHsgUGFz
dGVPcHRpb246OkFsbG93UGxhaW5UZXh0LCBQYXN0ZU9wdGlvbjo6QXNRdW90YXRpb24gfSk7DQor
ICAgIGVsc2UNCisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZCgqcGFzdGVi
b2FyZCk7DQorfQ0KKw0KK3ZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkNCit7DQorICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxR
dW90ZUVsZW1lbnQ6OmNyZWF0ZShibG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsNCisgICAgYmxv
Y2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRv
bWljU3RyaW5nKCJjaXRlIikpOw0KKyAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKEFwcGxlUGFzdGVBc1F1b3Rh
dGlvbikpOw0KKw0KKyAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsN
CisNCisgICAgaWYgKGNoaWxkTm9kZSkgew0KKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgew0K
KyAgICAgICAgICAgIGJsb2NrUXVvdGUtPmFwcGVuZENoaWxkKCpjaGlsZE5vZGUpOw0KKyAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsNCisgICAgICAgIH0NCisg
ICAgfSBlbHNlDQorICAgICAgICBibG9ja1F1b3RlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSkpOw0KKw0KKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChibG9j
a1F1b3RlKTsNCit9DQorDQogdm9pZCBFZGl0b3I6OnBlcmZvcm1EZWxldGUoKQ0KIHsNCiAgICAg
aWYgKCFjYW5EZWxldGUoKSkgew0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAyMzU4NTcpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEyOSw2ICsxMjksMTIgQEAgcHVibGljOg0KICAgICBleHBsaWNpdCBFZGl0
b3IoRnJhbWUmKTsNCiAgICAgfkVkaXRvcigpOw0KIA0KKyAgICBlbnVtIGNsYXNzIFBhc3RlT3B0
aW9uIDogdWludDhfdCB7DQorICAgICAgICBBbGxvd1BsYWluVGV4dCA9IDEgPDwgMCwNCisgICAg
ICAgIElnbm9yZU1haWxCbG9ja3F1b3RlID0gMiA8PCAwLA0KKyAgICAgICAgQXNRdW90YXRpb24g
PSAyIDw8IDAsDQorICAgIH07DQorDQogICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCog
Y2xpZW50KCkgY29uc3Q7DQogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpIGNvbnN0Ow0KIA0KQEAgLTE1OCw2ICsxNjQsNyBAQCBwdWJsaWM6DQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGUoKTsNCiAgICAgdm9pZCBwYXN0ZShQYXN0ZWJvYXJk
Jik7DQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOw0KKyAgICB2
b2lkIHBhc3RlQXNRdW90YXRpb24oKTsNCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3Jt
RGVsZXRlKCk7DQogDQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsNCkBAIC01MTksOSArNTI2LDExIEBAIHByaXZhdGU6DQog
ICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsNCiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7DQogICAgIHZvaWQgcGFzdGVBc1Bs
YWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsNCi0gICAgdm9pZCBwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0K
KyAgICB2b2lkIHBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIE9wdGlvblNldDxQYXN0
ZU9wdGlvbj4pOw0KICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFz
dGVib2FyZFBsYWluVGV4dCYpOw0KIA0KKyAgICB2b2lkIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5n
KERvY3VtZW50RnJhZ21lbnQmKTsNCisNCiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRlckVk
aXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRl
bnQpOw0KICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsNCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayhjb25zdCBOb2RlJiByb290RWRpdGFibGVFbGVtZW50LCBPcHRp
b25TZXQ8VGV4dENoZWNraW5nVHlwZT4pOw0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkyNiw2ICs5MjYs
MTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQoRnJhbQ0KICAgICByZXR1
cm4gdHJ1ZTsNCiB9DQogDQorc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlQXNRdW90YXRpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQ0KK3sNCisgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcp
IHsNCisgICAgICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IoZnJhbWUpOw0KKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucGFzdGVBc1F1b3RhdGlvbigp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIGZyYW1lLmVkaXRvcigpLnBhc3RlQXNRdW90YXRpb24o
KTsNCisgICAgcmV0dXJuIHRydWU7DQorfQ0KKw0KIHN0YXRpYyBib29sIGV4ZWN1dGVQcmludChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikN
CiB7DQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS5wYWdlKCk7DQpAQCAtMTYzNiw2ICsxNjQ2LDcg
QEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQ0KICAgICAgICAgeyAi
UGFzdGUiLCB7IGV4ZWN1dGVQYXN0ZSwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkUGFzdGUgfSB9LA0KICAgICAgICAgeyAiUGFzdGVBbmRNYXRjaFN0eWxlIiwgeyBleGVj
dXRlUGFzdGVBbmRNYXRjaFN0eWxlLCBzdXBwb3J0ZWRQYXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWRQYXN0ZSB9IH0sDQogICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgeyBleGVjdXRl
UGFzdGVBc1BsYWluVGV4dCwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
UGFzdGUgfSB9LA0KKyAgICAgICAgeyAiUGFzdGVBc1F1b3RhdGlvbiIsIHsgZXhlY3V0ZVBhc3Rl
QXNRdW90YXRpb24sIHN1cHBvcnRlZFBhc3RlLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZFBhc3Rl
IH0gfSwNCiAgICAgICAgIHsgIlByaW50IiwgeyBleGVjdXRlUHJpbnQsIHN1cHBvcnRlZCwgZW5h
YmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dF
eGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJl
ZG8sIHN1cHBvcnRlZCwgZW5hYmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwNCiAgICAgICAg
IHsgIlJlbW92ZUZvcm1hdCIsIHsgZXhlY3V0ZVJlbW92ZUZvcm1hdCwgc3VwcG9ydGVkLCBlbmFi
bGVkUmFuZ2VJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LA0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQkod29y
a2luZyBjb3B5KQ0KQEAgLTI5MSw0ICsyOTEsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGbw0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQorLy8gRklYTUU6
IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMgaXQgY2xlYXIgaXQg
YWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNpZGUgZWZmZWN0Lg0K
Ky8vIE9yIHJlZmFjdG9yIHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuDQorUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9z
ZVBsYWluVGV4dCkNCit7DQorICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsIGNv
bnRleHQsIGFsbG93UGxhaW5UZXh0KTsNCisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7DQor
ICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7DQor
ICAgIHJldHVybiBXVEZNb3ZlKHJlYWRlci5mcmFnbWVudCk7DQorfQ0KKw0KIH0NCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAkocmV2aXNpb24gMjM1ODU2
KQ0KKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC04NiwxNiArODYsMjAgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcg0KICAgICByZXR1cm4gbnVsbHB0cjsNCiB9DQogDQotdm9pZCBFZGl0b3I6OnBh
c3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWlu
VGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3Zv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9w
dGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47
DQogDQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJv
YXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7DQor
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVBhc3RlYm9hcmREYXRhKCpwYXN0ZWJvYXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIG9wdGlvbnMuY29u
dGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOw0KKw0K
KyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QXNRdW90
YXRpb24pKQ0KKyAgICAgICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsNCisN
CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkNCi0gICAgICAgIHBhc3RlQXNG
cmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFz
dGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsNCisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgp
LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5U
ZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90ZSkg
PyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2NrcXVv
dGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOw0KIH0NCiANCiBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpDQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzU4NTYpDQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjE1LDE5ICsyMTUsMTAgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFz
dA0KICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJ
WE1FOiBTaG91bGQgZ2l2ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFy
IGl0IGFkZHMgcmVzb3VyY2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVj
dC4NCi0vLyBPciByZWZhY3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYg
Y2hvc2VQbGFpblRleHQpDQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1l
LCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIp
Ow0KLSAgICBjaG9zZVBsYWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0
Ow0KLSAgICByZXR1cm4gV1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCi12b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFs
bG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxp
bmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVi
b2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCisgICAgYm9vbCBhbGxvd1BsYWluVGV4dCA9
IG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFsbG93UGxhaW5UZXh0KTsNCiAgICAgV2Vi
Q29udGVudFJlYWRlciByZWFkZXIobV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCk7DQog
ICAgIGludCBudW1iZXJPZlBhc3RlYm9hcmRJdGVtcyA9IGNsaWVudCgpLT5nZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudCgpOw0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mUGFzdGVib2Fy
ZEl0ZW1zOyArK2kpIHsNCkBAIC0yNDMsOCArMjM0LDExIEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm8NCiAgICAgICAgIGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dElnbm9yZWQpOw0KICAgICB9DQogDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNv
bnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50
Rm9yUGFzdGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQ
YXN0ZWQpKQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxs
KCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50
LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Oklnbm9yZU1haWxCbG9j
a3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUgOiBNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0KIA0KIHZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0
YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQ0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMjM1ODU3KQ0KKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBFZGl0b3I6OnNob3dDb2xvclBhbmVsKCkNCiAgICAgW1tOU0FwcGxp
Y2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBvcmRlckZyb250Q29sb3JQYW5lbDpuaWxdOw0KIH0N
CiANCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpDQordm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVi
b2FyZCogcGFzdGVib2FyZCwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPiBvcHRpb25zKQ0KIHsNCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsNCiANCkBAIC04OCwxMCAr
ODgsMTMgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVibw0KICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3ANCiANCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsNCi0g
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0
ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4
dCk7DQorICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRG
cm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5zKFBhc3Rl
T3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAgaWYgKGZy
YWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkNCisg
ICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQogDQogICAgIGlmIChm
cmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBh
c3RlYm9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7DQorICAgICAgICBwYXN0
ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0
aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9w
dGlvbjo6SWdub3JlTWFpbEJsb2NrcXVvdGUpID8gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdu
b3JlQmxvY2txdW90ZSA6IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
ICk7DQogDQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsN
CiB9DQpAQCAtMTIyLDcgKzEyNSw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQNCiB7DQogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7
DQogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkpDQotICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0
cnVlKTsNCisgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHsgUGFzdGVP
cHRpb246OkFsbG93UGxhaW5UZXh0IH0pOw0KICAgICBlbHNlDQogICAgICAgICBwYXN0ZUFzUGxh
aW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7DQogfQ0KQEAgLTI3OSwxNiArMjgyLDYg
QEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdA0KICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7DQogfQ0KIA0KLS8vIEZJWE1FOiBTaG91bGQgZ2l2
ZSB0aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFyIGl0IGFkZHMgcmVzb3Vy
Y2VzIHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVjdC4NCi0vLyBPciByZWZh
Y3RvciBzbyBpdCBkb2VzIG5vdCBkbyB0aGF0Lg0KLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBF
ZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBS
YW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
DQotew0KLSAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxv
d1BsYWluVGV4dCk7DQotICAgIHBhc3RlYm9hcmQucmVhZChyZWFkZXIpOw0KLSAgICBjaG9zZVBs
YWluVGV4dCA9IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0Ow0KLSAgICByZXR1cm4g
V1RGTW92ZShyZWFkZXIuZnJhZ21lbnQpOw0KLX0NCi0NCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
DQogDQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL3dpbi9FZGl0b3JXaW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy93aW4vRWRpdG9yV2luLmNwcAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvd2luL0VkaXRvcldpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zNSwxNiAr
MzUsMjAgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotdm9pZCBFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4
dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQ0KK3ZvaWQg
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlv
blNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykNCiB7DQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBzZWxlY3RlZFJhbmdlKCk7DQogICAgIGlmICghcmFuZ2UpDQogICAgICAgICByZXR1cm47DQog
DQogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7DQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgKnJhbmdl
LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUs
ICpyYW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQpLCBj
aG9zZVBsYWluVGV4dCk7DQorDQorICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOjpBc1F1b3RhdGlvbikpDQorICAgICAgICBxdW90ZUZyYWdtZW50Rm9yUGFz
dGluZygqZnJhZ21lbnQpOw0KKw0KICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJh
Z21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQp
KQ0KLSAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQs
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOw0KKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0K
IA0KIHRlbXBsYXRlIDx0eXBlbmFtZSBQbGF0Zm9ybURyYWdEYXRhPg0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvd3BlL0VkaXRvcldQRS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3dwZS9FZGl0b3JXUEUuY3BwCShyZXZpc2lvbiAyMzU4NTYpDQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy93cGUvRWRpdG9yV1BFLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTczLDE2ICs3MywyMCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0DQogICAgIG5vdEltcGxlbWVudGVkKCk7DQogfQ0KIA0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykNCit2b2lkIEVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25T
ZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpDQogew0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
c2VsZWN0ZWRSYW5nZSgpOw0KICAgICBpZiAoIXJhbmdlKQ0KICAgICAgICAgcmV0dXJuOw0KIA0K
ICAgICBib29sIGNob3NlUGxhaW5UZXh0Ow0KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwg
bV9mcmFtZSwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOw0KKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21QYXN0
ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBvcHRpb25zLmNvbnRhaW5z
KFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsNCisNCisgICAg
aWYgKGZyYWdtZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9u
KSkNCisgICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7DQorDQogICAg
IGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdl
dCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpDQotICAgICAgICBwYXN0ZUFzRnJhZ21l
bnQoKmZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCks
IGNob3NlUGxhaW5UZXh0LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsNCisgICAgICAgIHBhc3Rl
QXNGcmFnbWVudCgqZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7DQogfQ0K
IA0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUNCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkNCkBAIC0xMzU5LDYgKzEzNTksOCBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb246KFNFTClh
Y3Rpb24gd2l0DQogDQogICAgIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRf
Q0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKQ0KIA0KKyAgICBGT1JXQVJEX0NBTlBF
UkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVyhfcGFzdGVBc1F1b3RhdGlvbikNCisNCiAgICAg
I3VuZGVmIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXDQogDQogICAg
IHJldHVybiBbc3VwZXIgY2FuUGVyZm9ybUFjdGlvbjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJd
Ow0KQEAgLTEzNzIsNiArMTM3NCw4IEBAIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VMKWFjdGlv
biB3aXRoU2UNCiANCiAgICAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9U
QVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVykNCiANCisgICAgRk9SV0FSRF9UQVJHRVRG
T1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhfcGFzdGVBc1F1b3RhdGlvbikNCisNCiAgICAgI3Vu
ZGVmIEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcNCiANCiAgICAgcmV0
dXJuIFtzdXBlciB0YXJnZXRGb3JBY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsNCkBA
IC00NDgzLDYgKzQ0ODcsMTYgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50
V2l0aA0KICNlbmRpZg0KIH0NCiANCistICh2b2lkKV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5k
ZXINCit7DQorI2lmIFBMQVRGT1JNKE1BQykNCisgICAgX2ltcGwtPmV4ZWN1dGVFZGl0Q29tbWFu
ZEZvclNlbGVjdG9yKF9jbWQpOw0KKyNlbHNlDQorICAgIGlmIChzZWxmLnVzZXNTdGFuZGFyZENv
bnRlbnRWaWV3KQ0KKyAgICAgICAgW19jb250ZW50VmlldyBfcGFzdGVBc1F1b3RhdGlvbkZvcldl
YlZpZXc6c2VuZGVyXTsNCisjZW5kaWYNCit9DQorDQogLSAodm9pZClfZXZhbHVhdGVKYXZhU2Ny
aXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyDQog
ew0KICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VV
c2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07DQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgJKHJldmlzaW9uIDIzNTg1NikNCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTg1LDYg
KzE4NSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQNCiAtIChf
V0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdy
YXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBv
cHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246
KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCItX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29u
dGVudFR5cGU6Y29tcGxldGlvbjoiLCBtYWNvc3goV0tfTUFDX1RCQSwgV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBLCBXS19JT1NfVEJBKSk7DQogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29u
dGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgY29tcGxldGlvbjoodm9pZCheKShCT09M
IHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOw0KIA0KKy0gKElCQWN0aW9uKV9wYXN0ZUFzUXVvdGF0
aW9uOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7DQorDQogI2lmIFRBUkdFVF9PU19JUEhPTkUNCiAvLyBERVJFQ0FURUQ6IFRo
ZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQs
IHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLg0KIC8vIERlZmluZSB0aGUgc21h
bGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3aXRoIGEgcmVndWxhciB2aWV3cG9ydC4NCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQ0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lv
biAyMzU4NTYpDQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0JKHdvcmtpbmcgY29weSkNCkBAIC0yNjA0LDcgKzI2MDQsMTAgQEAgc3RhdGljIGNvbnN0IFNl
bGVjdG9yTmFtZU1hcCYgc2VsZWN0b3JFeA0KICAgICAgICAgeyBAc2VsZWN0b3IocGFnZVVwOiks
ICJNb3ZlUGFnZVVwIl9zIH0sDQogICAgICAgICB7IEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlT
ZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwNCiAgICAgICAg
IHsgQHNlbGVjdG9yKHNjcm9sbFBhZ2VEb3duOiksICJTY3JvbGxQYWdlRm9yd2FyZCJfcyB9LA0K
LSAgICAgICAgeyBAc2VsZWN0b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dhcmQi
X3MgfQ0KKyAgICAgICAgeyBAc2VsZWN0b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFj
a3dhcmQiX3MgfSwNCisjaWYgV0tfQVBJX0VOQUJMRUQNCisgICAgICAgIHsgQHNlbGVjdG9yKF9w
YXN0ZUFzUXVvdGF0aW9uOiksICJQYXN0ZUFzUXVvdGF0aW9uIl9zIH0sDQorI2VuZGlmDQogICAg
IH07DQogDQogICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKQ0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAkocmV2aXNpb24gMjM1ODU2KQ0KKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxNSw2ICszMTUsNyBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgew0KICNkZWZpbmUgREVDTEFSRV9XS0NPTlRF
TlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcoX2FjdGlvbikgXA0KICAgICAtICh2b2lkKV9hY3Rp
b24gIyMgRm9yV2ViVmlldzooaWQpc2VuZGVyOw0KIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNU
SU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQ0KK0RFQ0xBUkVf
V0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQ0KICN1
bmRlZiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVw0KIA0KICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyMzU4
NTYpDQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQkod29ya2luZyBjb3B5KQ0KQEAgLTIxNjEsNiArMjE2MSw4IEBAIC0gKE5TQXJyYXkg
KilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3INCiANCiBGT1JfRUFDSF9XS0NPTlRFTlRWSUVX
X0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpDQogDQorRk9SV0FSRF9BQ1RJT05f
VE9fV0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQ0KKw0KICN1bmRlZiBGT1JXQVJEX0FDVElP
Tl9UT19XS1dFQlZJRVcNCiANCiAtICh2b2lkKV9sb29rdXBGb3JXZWJWaWV3OihpZClzZW5kZXIN
CkBAIC0yNDYyLDYgKzI0NjQsMTEgQEAgLSAodm9pZClwYXN0ZUZvcldlYlZpZXc6KGlkKXNlbmRl
cg0KICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJwYXN0ZSJfcyk7DQogfQ0KIA0KKy0g
KHZvaWQpX3Bhc3RlQXNRdW90YXRpb25Gb3JXZWJWaWV3OihpZClzZW5kZXINCit7DQorICAgIF9w
YWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIlBhc3RlQXNRdW90YXRpb24iX3MpOw0KK30NCisNCiAt
ICh2b2lkKXNlbGVjdEZvcldlYlZpZXc6KGlkKXNlbmRlcg0KIHsNCiAgICAgW190ZXh0U2VsZWN0
aW9uQXNzaXN0YW50IHNlbGVjdFdvcmRdOw0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349574</attachid>
            <date>2018-09-12 13:11:53 -0700</date>
            <delta_ts>2018-09-12 14:50:52 -0700</delta_ts>
            <desc>Add PasteAsQuotation command and -[WKWebView _pasteAsQuotation:]</desc>
            <filename>bug-189504-20180912131152.patch</filename>
            <type>text/plain</type>
            <size>37267</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE4LTA5LTEyICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBDb21wbGV0ZSBzdXBw
b3J0IGZvciBQYXN0ZSBhcyBRdW90YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTUwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDkzMDk4Ni0xLXBh
c3RlLWFzLXF1b3RhdGlvbi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Bhc3RlYm9hcmQv
NDkzMDk4Ni0yLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L3Bhc3RlYm9hcmQvNDkzMDk4Ni0zLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sCisKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgICAgQWRkZWQgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpQYXN0ZUFzUXVvdGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnROYW1lRm9yQ2xpcGJv
YXJkRXZlbnQpOiBNYXAgUGFzdGVBc1F1b3RhdGlvbiB0byB0aGUgInBhc3RlIiBET00gZXZlbnQg
bmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2
ZW50KTogUGxhY2UgdGhlIHVucXVvdGVkIGNvbnRlbnQgaW4gdGhlIGV2ZW50LgorICAgICAgICAg
IFRoaXMgbWVhbnMgdGhhdCBjdXJyZW50bHkgZXZlbnQgaGFuZGxlcnMgY2Fu4oCZdCBlbXVsYXRl
IHBhc3RpbmcgYXMgcXVvdGF0aW9uLCBiZWNhdXNlIHRoZXkKKyAgICAgICAgICBuZWl0aGVyIGhh
dmUgdGhlIHF1b3RlZCBjb250ZW50IG5vciBrbm93bGVkZ2UgdGhhdCBxdW90aW5nIGhhcyBiZWVu
IHJlcXVlc3RlZC4gV2UgY291bGQKKyAgICAgICAgICBjaGFuZ2UgdGhpcyBpbiB0aGUgZnV0dXJl
IGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGUpOiBVcGRhdGVkIGZv
ciBjaGFuZ2UgaW4gcGFzdGVXaXRoUGFzdGVib2FyZOKAmXMgYXJndW1lbnQgdHlwZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc1F1b3RhdGlvbik6IEFkZGVkLiBTaW1pbGFyIHRv
IHBhc3RlLCBidXQgcGFzc2VzCisgICAgICAgICAgUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uIHRv
IHBhc3RlV2l0aFBhc3RlYm9hcmQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJh
Z21lbnRGb3JQYXN0aW5nKTogQWRkZWQuIFF1b3RpbmcgZm9yIHBhc3RpbmcgY29uc2lzdHMgb2Yg
ZW5jbG9zaW5nCisgICAgICAgICAgdGhlIGZyYWdtZW50IGluIGEgYmxvY2txdW90ZSBlbGVtZW50
IHdpdGggdGhlICJ0eXBlIiBhdHRyaWJ1dGUgc2V0IHRvICJjaXRlIiBhbmQgdGhlCisgICAgICAg
ICAgImNsYXNzIiBhdHRyaWJ1dGUgc2V0IHRvIGEgd2VsbC1rbm93biB2YWx1ZSwgd2hpY2ggaXMg
dXNlZCB0byB0cmlnZ2VyIHNwZWNpYWwgYmVoYXZpb3IgaW4KKyAgICAgICAgICBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC4gVGhlIGJlaGF2aW9yIGluY2x1ZGVzIHJlbW92aW5nIHRoZSAiY2xhc3Mi
IGF0dHJpYnV0ZSBpbiB0aGUgZW5kLAorICAgICAgICAgIHNvIGV2ZW50dWFsbHksIHdlIGNvdWxk
IHN0b3AgdXNpbmcgdGhpcyBmb3JtIG9mIGluLWJhbmQgc2lnbmFsaW5nLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6IERlY2xhcmVkIFBhc3RlT3B0aW9uIGVudW0gY2xhc3MgdG8gZW5jb21w
YXNzIHRoZSBleGlzdGluZyBhbGxvd1BsYWluVGV4dAorICAgICAgICAgIGFuZCBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nIGFyZ3VtZW50cyB0byBwYXN0ZVdpdGhQYXN0ZWJvYXJkIGFzIHdlbGwgYXMg
dGhlIG5ldyBBc1F1b3RhdGlvbgorICAgICAgICAgIGJlaGF2aW9yLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFz
UXVvdGF0aW9uKTogQWRkZWQuIFNpbWlsYXIgdG8gZXhlY3V0aW5nIFBhc3RlLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQ29tbWFuZE1hcCk6IEFkZGVkIGFuIGVudHJ5IGZvciBQYXN0ZUFzUXVv
dGF0aW9uLCBiYXNlZCBvbiB0aGUgUGFzdGUgZW50cnkuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3ZWJDb250ZW50
RnJvbVBhc3RlYm9hcmQpOiBNb3ZlZCBmcm9tIEVkaXRvcklPUy5tbSBhbmQgRWRpdG9yTWFjLm1t
IHRvCisgICAgICAgICAgaGVyZS4KKworICAgICAgICAqIGVkaXRpbmcvZ3RrL0VkaXRvckd0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQpOiBVcGRh
dGVkIGZvciBuZXcgT3B0aW9uU2V0IGFyZ3VtZW50LCBhZGRlZCBhIGNhbGwgdG8KKyAgICAgICAg
ICBxdW90ZSB0aGUgZnJhZ21lbnQgaWYgbmVlZGVkLgorCisgICAgICAgICogZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJv
YXJkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFz
dGVib2FyZCk6IE1vdmVkIHRvIEVkaXRvckNvY29hLm1tLgorCisgICAgICAgICogZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZVdpdGhQYXN0
ZWJvYXJkKTogVXBkYXRlZCBmb3IgbmV3IE9wdGlvblNldCBhcmd1bWVudCwgYWRkZWQgYSBjYWxs
IHRvCisgICAgICAgICAgcXVvdGUgdGhlIGZyYWdtZW50IGlmIG5lZWRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKTogVXBkYXRlZCBmb3Ig
bmV3IE9wdGlvblNldCBhcmd1bWVudCB0bworICAgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQu
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZCk6IE1v
dmVkIHRvIEVkaXRvckNvY29hLm1tLgorCisgICAgICAgICogZWRpdGluZy93aW4vRWRpdG9yV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6IFVw
ZGF0ZWQgZm9yIG5ldyBPcHRpb25TZXQgYXJndW1lbnQsIGFkZGVkIGEgY2FsbCB0bworICAgICAg
ICAgIHF1b3RlIHRoZSBmcmFnbWVudCBpZiBuZWVkZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL3dw
ZS9FZGl0b3JXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZVdpdGhQYXN0
ZWJvYXJkKTogRGl0dG8uCisKIDIwMTgtMDktMTIgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgTGlua2luZyBhZ2FpbnN0IGxpYldQRVdlYktpdC0wLjEu
c28gaXMgbm90IHBvc2libGUgd2hlbiBXUEUgaXMgYnVpbGQgd2l0aCBFTkFCTEVfVklERU89T0ZG
IGFuZCBFTkFCTEVfV0VCX0FVRElPPU9GRgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAkocmV2aXNpb24gMjM1OTMzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQsMTQgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQXR0YWNobWVu
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MUXVvdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluZGVudE91dGRlbnRD
b21tYW5kLmgiCkBAIC0zMjcsNiArMzI5LDcgQEAgZW51bSBjbGFzcyBDbGlwYm9hcmRFdmVudEtp
bmQgewogICAgIEN1dCwKICAgICBQYXN0ZSwKICAgICBQYXN0ZUFzUGxhaW5UZXh0LAorICAgIFBh
c3RlQXNRdW90YXRpb24sCiAgICAgQmVmb3JlQ29weSwKICAgICBCZWZvcmVDdXQsCiAgICAgQmVm
b3JlUGFzdGUsCkBAIC0zNDEsNiArMzQ0LDcgQEAgc3RhdGljIEF0b21pY1N0cmluZyBldmVudE5h
bWVGb3JDbGlwYm9hcgogICAgICAgICByZXR1cm4gZXZlbnROYW1lcygpLmN1dEV2ZW50OwogICAg
IGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50
S2luZDo6UGFzdGVBc1BsYWluVGV4dDoKKyAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFz
dGVBc1F1b3RhdGlvbjoKICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50Owog
ICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgICAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmJlZm9yZWNvcHlFdmVudDsKQEAgLTM2OSw2ICszNzMsNyBAQCBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zCiAgICAgICAgIH0KICAgICAgICAgRkFM
TFRIUk9VR0g7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlOgorICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUXVvdGF0aW9uOgogICAgICAgICByZXR1cm4gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6
U3RvcmVNb2RlOjpSZWFkb25seSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkp
OwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CkBAIC0xNDA0LDcgKzE0MDksNyBAQCB2b2lkIEVk
aXRvcjo6cGFzdGUoUGFzdGVib2FyZCYgcGFzdGVib2FyCiAgICAgdXBkYXRlTWFya2Vyc0Zvcldv
cmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOwogICAgIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9u
U3VwcHJlc3NvciB2YWxpZGF0aW9uU3VwcHJlc3Nvcihkb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkpOwogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29u
dGVudFJpY2hseUVkaXRhYmxlKCkpCi0gICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3Rl
Ym9hcmQsIHRydWUpOworICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB7
IFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCB9KTsKICAgICBlbHNlCiAgICAgICAgIHBhc3Rl
QXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKTsKIH0KQEAgLTE0MTksNiArMTQy
NCw0MCBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dCgpCiAgICAgcGFzdGVBc1BsYWlu
VGV4dFdpdGhQYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7
CiB9CiAKK3ZvaWQgRWRpdG9yOjpwYXN0ZUFzUXVvdGF0aW9uKCkKK3sKKyAgICBpZiAoIWRpc3Bh
dGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBDbGlwYm9h
cmRFdmVudEtpbmQ6OlBhc3RlQXNRdW90YXRpb24pKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFjYW5QYXN0ZSgpKQorICAgICAgICByZXR1cm47CisgICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRz
QWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOworICAgIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3Vw
cHJlc3NvciB2YWxpZGF0aW9uU3VwcHJlc3Nvcihkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpOworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29u
dGVudFJpY2hseUVkaXRhYmxlKCkpCisgICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQocGFzdGVi
b2FyZC5nZXQoKSwgeyBQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQsIFBhc3RlT3B0aW9uOjpB
c1F1b3RhdGlvbiB9KTsKKyAgICBlbHNlCisgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFz
dGVib2FyZCgqcGFzdGVib2FyZCk7Cit9CisKK3ZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9y
UGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkKK3sKKyAgICBhdXRvIGJsb2NrUXVv
dGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBl
QXR0ciwgQXRvbWljU3RyaW5nKCJjaXRlIikpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoQXBwbGVQYXN0
ZUFzUXVvdGF0aW9uKSk7CisKKyAgICBhdXRvIGNoaWxkTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hp
bGQoKTsKKworICAgIGlmIChjaGlsZE5vZGUpIHsKKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkg
eworICAgICAgICAgICAgYmxvY2tRdW90ZS0+YXBwZW5kQ2hpbGQoKmNoaWxkTm9kZSk7CisgICAg
ICAgICAgICBjaGlsZE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgYmxvY2tRdW90ZS0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpKTsKKworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGJsb2NrUXVv
dGUpOworfQorCiB2b2lkIEVkaXRvcjo6cGVyZm9ybURlbGV0ZSgpCiB7CiAgICAgaWYgKCFjYW5E
ZWxldGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAyMzU5MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksNiArMTI5LDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBFZGl0b3IoRnJhbWUmKTsKICAg
ICB+RWRpdG9yKCk7CiAKKyAgICBlbnVtIGNsYXNzIFBhc3RlT3B0aW9uIDogdWludDhfdCB7Cisg
ICAgICAgIEFsbG93UGxhaW5UZXh0ID0gMSA8PCAwLAorICAgICAgICBJZ25vcmVNYWlsQmxvY2tx
dW90ZSA9IDIgPDwgMCwKKyAgICAgICAgQXNRdW90YXRpb24gPSAyIDw8IDAsCisgICAgfTsKKwog
ICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRvckNsaWVudCogY2xpZW50KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgY29uc3Q7CiAKQEAg
LTE1OCw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZSgp
OwogICAgIHZvaWQgcGFzdGUoUGFzdGVib2FyZCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cGFzdGVBc1BsYWluVGV4dCgpOworICAgIHZvaWQgcGFzdGVBc1F1b3RhdGlvbigpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGVyZm9ybURlbGV0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTE5LDkg
KzUyNiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25z
dDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsK
ICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7Ci0g
ICAgdm9pZCBwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5U
ZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVz
cGVjdEJsb2NrcXVvdGUpOworICAgIHZvaWQgcGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJk
KiwgT3B0aW9uU2V0PFBhc3RlT3B0aW9uPik7CiAgICAgU3RyaW5nIHBsYWluVGV4dEZyb21QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmKTsKIAorICAgIHZvaWQgcXVvdGVGcmFn
bWVudEZvclBhc3RpbmcoRG9jdW1lbnRGcmFnbWVudCYpOworCiAgICAgdm9pZCByZXZlYWxTZWxl
Y3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9s
bEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9O
b3RSZXZlYWxFeHRlbnQpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+
JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBl
PiByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soY29uc3QgTm9kZSYgcm9vdEVkaXRhYmxlRWxl
bWVudCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMjM1OTMzKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI2LDYg
KzkyNiwxNiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVBc1BsYWluVGV4dChGcmFtCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFzUXVvdGF0aW9uKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKK3sKKyAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
eworICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucGFzdGVBc1F1b3RhdGlvbigpOwor
ICAgIH0gZWxzZQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5wYXN0ZUFzUXVvdGF0aW9uKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sIGV4ZWN1dGVQcmludChGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBQ
YWdlKiBwYWdlID0gZnJhbWUucGFnZSgpOwpAQCAtMTYzNiw2ICsxNjQ2LDcgQEAgc3RhdGljIGNv
bnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQogICAgICAgICB7ICJQYXN0ZSIsIHsgZXhl
Y3V0ZVBhc3RlLCBzdXBwb3J0ZWRQYXN0ZSwgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWRQYXN0ZSB9
IH0sCiAgICAgICAgIHsgIlBhc3RlQW5kTWF0Y2hTdHlsZSIsIHsgZXhlY3V0ZVBhc3RlQW5kTWF0
Y2hTdHlsZSwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkUGFzdGUgfSB9
LAogICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgeyBleGVjdXRlUGFzdGVBc1BsYWluVGV4
dCwgc3VwcG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkUGFzdGUgfSB9LAorICAg
ICAgICB7ICJQYXN0ZUFzUXVvdGF0aW9uIiwgeyBleGVjdXRlUGFzdGVBc1F1b3RhdGlvbiwgc3Vw
cG9ydGVkUGFzdGUsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkUGFzdGUgfSB9LAogICAgICAgICB7
ICJQcmludCIsIHsgZXhlY3V0ZVByaW50LCBzdXBwb3J0ZWQsIGVuYWJsZWQsIHN0YXRlTm9uZSwg
dmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2Fi
bGVkIH0gfSwKICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJlZG8sIHN1cHBvcnRlZCwgZW5h
YmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiUmVtb3ZlRm9ybWF0Iiwg
eyBleGVjdXRlUmVtb3ZlRm9ybWF0LCBzdXBwb3J0ZWQsIGVuYWJsZWRSYW5nZUluRWRpdGFibGVU
ZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4
ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0JKHJldmlzaW9uIDIzNTkzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MSw0ICsy
OTEsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGbwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCisvLyBGSVhNRTogU2hvdWxkIGdpdmUgdGhpcyBmdW5jdGlvbiBh
IG5hbWUgdGhhdCBtYWtlcyBpdCBjbGVhciBpdCBhZGRzIHJlc291cmNlcyB0byB0aGUgZG9jdW1l
bnQgbG9hZGVyIGFzIGEgc2lkZSBlZmZlY3QuCisvLyBPciByZWZhY3RvciBzbyBpdCBkb2VzIG5v
dCBkbyB0aGF0LgorUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6d2ViQ29udGVudEZy
b21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIFJhbmdlJiBjb250ZXh0LCBib29s
IGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sKKyAgICBXZWJDb250ZW50
UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCk7CisgICAgcGFz
dGVib2FyZC5yZWFkKHJlYWRlcik7CisgICAgY2hvc2VQbGFpblRleHQgPSByZWFkZXIubWFkZUZy
YWdtZW50RnJvbVBsYWluVGV4dDsKKyAgICByZXR1cm4gV1RGTW92ZShyZWFkZXIuZnJhZ21lbnQp
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAJ
KHJldmlzaW9uIDIzNTkzMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDE2ICs4NiwyMCBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5k
bGluZykKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3Rl
Ym9hcmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoKnBhc3Rl
Ym9hcmQsIG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsK
KyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZy
b21QYXN0ZWJvYXJkRGF0YSgqcGFzdGVib2FyZCwgbV9mcmFtZSwgKnJhbmdlLCBvcHRpb25zLmNv
bnRhaW5zKFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxhaW5UZXh0KTsKKwor
ICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpBc1F1b3Rh
dGlvbikpCisgICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFnbWVudCk7CisKICAg
ICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21l
bnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9h
cmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7
CisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3NlUGxhaW5UZXh0LCBv
cHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2txdW90ZSkgPyBNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJsb2NrcXVvdGVIYW5k
bGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzU5MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSwxOSArMjE1LDEw
IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3QKICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CiAKLS8vIEZJWE1FOiBTaG91bGQgZ2l2ZSB0
aGlzIGZ1bmN0aW9uIGEgbmFtZSB0aGF0IG1ha2VzIGl0IGNsZWFyIGl0IGFkZHMgcmVzb3VyY2Vz
IHRvIHRoZSBkb2N1bWVudCBsb2FkZXIgYXMgYSBzaWRlIGVmZmVjdC4KLS8vIE9yIHJlZmFjdG9y
IHNvIGl0IGRvZXMgbm90IGRvIHRoYXQuCi1SZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9y
Ojp3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgUmFuZ2Um
IGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQotewot
ICAgIFdlYkNvbnRlbnRSZWFkZXIgcmVhZGVyKG1fZnJhbWUsIGNvbnRleHQsIGFsbG93UGxhaW5U
ZXh0KTsKLSAgICBwYXN0ZWJvYXJkLnJlYWQocmVhZGVyKTsKLSAgICBjaG9zZVBsYWluVGV4dCA9
IHJlYWRlci5tYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0OwotICAgIHJldHVybiBXVEZNb3ZlKHJl
YWRlci5mcmFnbWVudCk7Ci19Ci0KLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4g
b3B0aW9ucykKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0ZWRSYW5nZSgpOwor
ICAgIGJvb2wgYWxsb3dQbGFpblRleHQgPSBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpB
bGxvd1BsYWluVGV4dCk7CiAgICAgV2ViQ29udGVudFJlYWRlciByZWFkZXIobV9mcmFtZSwgKnJh
bmdlLCBhbGxvd1BsYWluVGV4dCk7CiAgICAgaW50IG51bWJlck9mUGFzdGVib2FyZEl0ZW1zID0g
Y2xpZW50KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1iZXJPZlBhc3RlYm9hcmRJdGVtczsgKytpKSB7CkBAIC0yNDMsOCArMjM0LDExIEBA
IHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm8KICAgICAgICAgZnJhZ21l
bnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKnBhc3RlYm9hcmQsICpyYW5nZSwgYWxsb3dQ
bGFpblRleHQsIGNob3NlUGxhaW5UZXh0SWdub3JlZCk7CiAgICAgfQogCisgICAgaWYgKGZyYWdt
ZW50ICYmIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkKKyAgICAg
ICAgcXVvdGVGcmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsKKwogICAgIGlmIChmcmFnbWVu
dCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBFZGl0b3JJ
bnNlcnRBY3Rpb246OlBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5y
ZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2Fy
ZCksIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgcGFzdGVBc0ZyYWdt
ZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJv
YXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiB9CiAK
IHZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5n
Pj4mJiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMjM1OTMzKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw3ICs3Nyw3IEBAIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQYW5lbCgpCiAgICAgW1tOU0Fw
cGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBvcmRlckZyb250Q29sb3JQYW5lbDpuaWxdOwog
fQogCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpCit2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKIApAQCAtODgsMTAgKzg4LDEz
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm8KICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKIAogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7Ci0gICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKCpw
YXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCk7CisgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJv
YXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFs
bG93UGxhaW5UZXh0KSwgY2hvc2VQbGFpblRleHQpOworCisgICAgaWYgKGZyYWdtZW50ICYmIG9w
dGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246OkFzUXVvdGF0aW9uKSkKKyAgICAgICAgcXVvdGVG
cmFnbWVudEZvclBhc3RpbmcoKmZyYWdtZW50KTsKIAogICAgIGlmIChmcmFnbWVudCAmJiBzaG91
bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rp
b246OlBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9u
TnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGZhbHNl
LCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgZmFsc2UsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Oklnbm9yZU1haWxC
bG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUgOiBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSApOwogCiAgICAgY2xpZW50
KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQpAQCAtMTIyLDcgKzEyNSw3
IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQKIHsKICAgICBQYXN0
ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOwogICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpCi0gICAgICAgIHBh
c3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRydWUpOworICAgICAgICBwYXN0ZVdpdGhQ
YXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB7IFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCB9KTsK
ICAgICBlbHNlCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChwYXN0ZWJv
YXJkKTsKIH0KQEAgLTI3OSwxNiArMjgyLDYgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsKIH0K
IAotLy8gRklYTUU6IFNob3VsZCBnaXZlIHRoaXMgZnVuY3Rpb24gYSBuYW1lIHRoYXQgbWFrZXMg
aXQgY2xlYXIgaXQgYWRkcyByZXNvdXJjZXMgdG8gdGhlIGRvY3VtZW50IGxvYWRlciBhcyBhIHNp
ZGUgZWZmZWN0LgotLy8gT3IgcmVmYWN0b3Igc28gaXQgZG9lcyBub3QgZG8gdGhhdC4KLVJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwg
Ym9vbCYgY2hvc2VQbGFpblRleHQpCi17Ci0gICAgV2ViQ29udGVudFJlYWRlciByZWFkZXIobV9m
cmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQpOwotICAgIHBhc3RlYm9hcmQucmVhZChyZWFk
ZXIpOwotICAgIGNob3NlUGxhaW5UZXh0ID0gcmVhZGVyLm1hZGVGcmFnbWVudEZyb21QbGFpblRl
eHQ7Ci0gICAgcmV0dXJuIFdURk1vdmUocmVhZGVyLmZyYWdtZW50KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy93aW4vRWRpdG9yV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCShyZXZpc2lvbiAyMzU5MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNiArMzUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5U
ZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCit2b2lk
IEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIGNob3NlUGxhaW5UZXh0OwotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgKnJhbmdlLCBhbGxv
d1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgKnJhbmdl
LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpBbGxvd1BsYWluVGV4dCksIGNob3NlUGxh
aW5UZXh0KTsKKworICAgIGlmIChmcmFnbWVudCAmJiBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0
aW9uOjpBc1F1b3RhdGlvbikpCisgICAgICAgIHF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKCpmcmFn
bWVudCk7CisKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdt
ZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQotICAgICAgICBw
YXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNl
V2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVv
dGVIYW5kbGluZyk7CisgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9u
TnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFzdGVib2FyZCksIGNob3Nl
UGxhaW5UZXh0LCBvcHRpb25zLmNvbnRhaW5zKFBhc3RlT3B0aW9uOjpJZ25vcmVNYWlsQmxvY2tx
dW90ZSkgPyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlIDogTWFpbEJs
b2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGxhdGZvcm1EcmFnRGF0YT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvd3Bl
L0VkaXRvcldQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy93cGUv
RWRpdG9yV1BFLmNwcAkocmV2aXNpb24gMjM1OTMzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy93cGUvRWRpdG9yV1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTYgKzczLDIwIEBAIHZv
aWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3QKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBw
YXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpCit2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQ
YXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8UGFzdGVPcHRpb24+IG9wdGlvbnMpCiB7
CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNob3NlUGxhaW5UZXh0OwotICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmREYXRhKCpwYXN0ZWJvYXJkLCBtX2ZyYW1lLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBj
aG9zZVBsYWluVGV4dCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoKnBhc3RlYm9hcmQsIG1fZnJhbWUsICpy
YW5nZSwgb3B0aW9ucy5jb250YWlucyhQYXN0ZU9wdGlvbjo6QWxsb3dQbGFpblRleHQpLCBjaG9z
ZVBsYWluVGV4dCk7CisKKyAgICBpZiAoZnJhZ21lbnQgJiYgb3B0aW9ucy5jb250YWlucyhQYXN0
ZU9wdGlvbjo6QXNRdW90YXRpb24pKQorICAgICAgICBxdW90ZUZyYWdtZW50Rm9yUGFzdGluZygq
ZnJhZ21lbnQpOworCiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKLSAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KCpmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9h
cmQoKnBhc3RlYm9hcmQpLCBjaG9zZVBsYWluVGV4dCwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7
CisgICAgICAgIHBhc3RlQXNGcmFnbWVudCgqZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMo
UGFzdGVPcHRpb246Oklnbm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6Oklnbm9yZUJsb2NrcXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0Qmxv
Y2txdW90ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzU5MzMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI5IEBACisyMDE4LTA5LTEyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBDb21wbGV0ZSBzdXBwb3J0IGZvciBQYXN0ZSBhcyBRdW90
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
OTUwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBj
YW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6IEhhbmRsZSBfcGFzdGVBc1F1b3RhdGlvbjou
IEl04oCZcyBub3QgaW5jbHVkZWQKKyAgICAgICAgICBpbiBGT1JfRUFDSF9XS0NPTlRFTlRWSUVX
X0FDVElPTiwgYmVjYXVzZSBpdOKAmXMgZGVjbGFyZWQgYW5kIGltcGxlbWVudGVkIGluIHRoZSBX
S1ByaXZhdGUKKyAgICAgICAgICBjYXRlZ29yeS4gSWYgd2UgYWRkIG1vcmUgYWN0aW9ucyBpbiB0
aGUgY2F0ZWdvcnksIGl0IGNvdWxkIG1ha2Ugc2Vuc2UgdG8gZm9sZCB0aGVtIGludG8KKyAgICAg
ICAgICBhIG5ldyBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgdGFyZ2V0Rm9yQWN0aW9uOndpdGhTZW5kZXI6XSk6IEhhbmRsZSBfcGFz
dGVBc1F1b3RhdGlvbjouCisgICAgICAgICgtW1dLV2ViVmlldyBfcGFzdGVBc1F1b3RhdGlvbjpd
KTogU2VuZCB0byB0aGUgV2ViVmlld0ltcGwgb3IgdGhlIFdLQ29udGVudFZpZXcuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6IERlY2xhcmVkIGEgbmV3
IF9wYXN0ZUFzUXVvdGF0aW9uOiBhY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OnNlbGVjdG9yRXhjZXB0aW9uTWFwKTog
QWRkZWQgYSBjdXN0b20gbWFwcGluZyBmcm9tIHRoZSBuZXcgc2VsZWN0b3IgdG8gdGhlCisgICAg
ICAgICAgUGFzdGVBc1F1b3RhdGlvbiBjb21tYW5kLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDogRGVjbGFyZSBtZXRob2RzIGZvciB0aGUgbmV3
IGFjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgICBGb3J3YXJkIF9wYXN0ZUFzUXVvdGF0aW9uOiB0byB0aGUgV0tXZWJW
aWV3IHNvIHRoYXQgY2xpZW50cyBnZXQgYSBjaGFuY2UgdG8gb3ZlcnJpZGUgaXRzCisgICAgICAg
ICAgYmVoYXZpb3IuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Bhc3RlQXNRdW90YXRpb25G
b3JXZWJWaWV3Ol0pOiBTZW5kIHRoZSBjb21tYW5kIHRvIHRoZSBwYWdlLgorCiAyMDE4LTA5LTEx
ICBPbGl2aWEgQmFybmV0dCAgPG9iYXJuZXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgdGhlIFdlYiBTaGFyZSBBUEkgZm9yIG1hYwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU5MzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzg3LDYgKzEzODcsOCBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb246KFNFTClhY3Rp
b24gd2l0CiAKICAgICBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0NBTlBF
UkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVykKIAorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFD
VElPTl9UT19XS0NPTlRFTlRWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQorCiAgICAgI3VuZGVmIEZP
UldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKICAgICByZXR1cm4gW3N1
cGVyIGNhblBlcmZvcm1BY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKQEAgLTE0MDAs
NiArMTQwMiw4IEBAIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VMKWFjdGlvbiB3aXRoU2UKIAog
ICAgIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfVEFSR0VURk9SQUNUSU9O
X1RPX1dLQ09OVEVOVFZJRVcpCiAKKyAgICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NP
TlRFTlRWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQorCiAgICAgI3VuZGVmIEZPUldBUkRfVEFSR0VU
Rk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcKIAogICAgIHJldHVybiBbc3VwZXIgdGFyZ2V0Rm9y
QWN0aW9uOmFjdGlvbiB3aXRoU2VuZGVyOnNlbmRlcl07CkBAIC00NTE2LDYgKzQ1MjAsMTYgQEAg
LSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aAogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX3Bhc3RlQXNRdW90YXRpb246KGlkKXNlbmRlcgoreworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBfaW1wbC0+ZXhlY3V0ZUVkaXRDb21tYW5kRm9yU2VsZWN0b3IoX2NtZCk7CisjZWxzZQor
ICAgIGlmIChzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3KQorICAgICAgICBbX2NvbnRlbnRW
aWV3IF9wYXN0ZUFzUXVvdGF0aW9uRm9yV2ViVmlldzpzZW5kZXJdOworI2VuZGlmCit9CisKIC0g
KHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilq
YXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2
YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjM1OTMzKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg1LDYgKzE4NSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tSZWN0RWQKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3Jh
cHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlv
bnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIi1faW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOiIsIG1hY29zeChXS19NQUNfVEJBLCBX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEsIFdLX0lPU19UQkEpKTsKIC0gKF9XS0F0dGFjaG1l
bnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZp
bGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGNvbXBsZXRpb246
KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAoSUJBY3Rpb24pX3Bh
c3RlQXNRdW90YXRpb246KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC8vIERFUkVD
QVRFRDogVGhlIHNldHRlcnMgb2YgdGhlIHRocmVlIGZvbGxvd2luZyBmdW5jdGlvbiBhcmUgZGVw
cmVjYXRlZCwgcGxlYXNlIHVzZSBvdmVycmlkZUxheW91dFBhcmFtZXRlcnMuCiAvLyBEZWZpbmUg
dGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ugd2l0aCBhIHJlZ3VsYXIgdmlld3BvcnQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2
aXNpb24gMjM1OTMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MDQsNyArMjYwNCwxMCBAQCBzdGF0aWMgY29uc3Qg
U2VsZWN0b3JOYW1lTWFwJiBzZWxlY3RvckV4CiAgICAgICAgIHsgQHNlbGVjdG9yKHBhZ2VVcDop
LCAiTW92ZVBhZ2VVcCJfcyB9LAogICAgICAgICB7IEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlT
ZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKICAgICAgICAg
eyBAc2VsZWN0b3Ioc2Nyb2xsUGFnZURvd246KSwgIlNjcm9sbFBhZ2VGb3J3YXJkIl9zIH0sCi0g
ICAgICAgIHsgQHNlbGVjdG9yKHNjcm9sbFBhZ2VVcDopLCAiU2Nyb2xsUGFnZUJhY2t3YXJkIl9z
IH0KKyAgICAgICAgeyBAc2VsZWN0b3Ioc2Nyb2xsUGFnZVVwOiksICJTY3JvbGxQYWdlQmFja3dh
cmQiX3MgfSwKKyNpZiBXS19BUElfRU5BQkxFRAorICAgICAgICB7IEBzZWxlY3RvcihfcGFzdGVB
c1F1b3RhdGlvbjopLCAiUGFzdGVBc1F1b3RhdGlvbiJfcyB9LAorI2VuZGlmCiAgICAgfTsKIAog
ICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkocmV2aXNpb24g
MjM1OTMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKICNkZWZpbmUgREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9G
T1JfV0VCX1ZJRVcoX2FjdGlvbikgXAogICAgIC0gKHZvaWQpX2FjdGlvbiAjIyBGb3JXZWJWaWV3
OihpZClzZW5kZXI7CiBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09O
VEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKK0RFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJ
T05fRk9SX1dFQl9WSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQogI3VuZGVmIERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyMzU5MzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTYxLDYgKzIxNjEsOCBAQCAtIChOU0FycmF5ICopc3VwcG9ydGVkUGFzdGVib2FyZFR5cGVz
Rm9yCiAKIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dL
V0VCVklFVykKIAorRk9SV0FSRF9BQ1RJT05fVE9fV0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9u
KQorCiAjdW5kZWYgRk9SV0FSRF9BQ1RJT05fVE9fV0tXRUJWSUVXCiAKIC0gKHZvaWQpX2xvb2t1
cEZvcldlYlZpZXc6KGlkKXNlbmRlcgpAQCAtMjQ2Miw2ICsyNDY0LDExIEBAIC0gKHZvaWQpcGFz
dGVGb3JXZWJWaWV3OihpZClzZW5kZXIKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJw
YXN0ZSJfcyk7CiB9CiAKKy0gKHZvaWQpX3Bhc3RlQXNRdW90YXRpb25Gb3JXZWJWaWV3OihpZClz
ZW5kZXIKK3sKKyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJQYXN0ZUFzUXVvdGF0aW9u
Il9zKTsKK30KKwogLSAodm9pZClzZWxlY3RGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2VsZWN0V29yZF07CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU5NDUpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0wOS0x
MiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ29t
cGxldGUgc3VwcG9ydCBmb3IgUGFzdGUgYXMgUXVvdGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk1MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9NYWluTWVudS54
aWI6IEFkZGVkIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGNvbW1hbmQgaW4gdGhlIEVkaXQgbWVudS4K
KwogMjAxOC0wOS0xMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
IAogICAgICAgICBbV2luXVtDbGFuZ11bRHVtcFJlbmRlclRyZWVdIDAgYW5kIG51bGxwdHIgY2Fu
J3QgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudApJbmRl
eDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCShyZXZpc2lvbiAyMzU5MzMpCisrKyBUb29s
cy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiAr
MTk3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNl
bGVjdG9yPSJwYXN0ZToiIHRhcmdldD0iLTEiIGlkPSIyMjYiLz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9jb25uZWN0aW9ucz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L21lbnVJdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51SXRlbSB0aXRs
ZT0iUGFzdGUgYXMgUXVvdGF0aW9uIiBrZXlFcXVpdmFsZW50PSJWIiBpZD0iOE5nLURCLXowWSI+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9Il9wYXN0ZUFzUXVv
dGF0aW9uOiIgdGFyZ2V0PSItMSIgaWQ9IjZNbi1YQy0ycU8iLz4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9jb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L21lbnVJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51SXRlbSB0aXRs
ZT0iUGFzdGUgYW5kIE1hdGNoIFN0eWxlIiBrZXlFcXVpdmFsZW50PSJWIiBpZD0iNDg1Ij4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGlmaWVyTWFzayBrZXk9ImtleUVxdWl2
YWxlbnRNb2RpZmllck1hc2siIG9wdGlvbj0iWUVTIiBjb21tYW5kPSJZRVMiLz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGNvbm5lY3Rpb25zPgpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjM1OTMzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTgtMDktMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENvbXBsZXRlIHN1cHBvcnQgZm9yIFBhc3RlIGFzIFF1b3RhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NTA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG9vayBhIGZl
dyBleGlzdGluZyB0ZXN0cyBvZiB0aGUgUGFzdGUgYXMgUXVvdGF0aW9uIGJlaGF2aW9yIGFuZCBt
b2RpZmllZCB0aGVtIHRvIHVzZSB0aGUKKyAgICAgICAgbmV3IFBhc3RlQXNRdW90YXRpb24gY29t
bWFuZC4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpbiB0aGUgcmVzdWx0cyBpcyB0aGF0IHRoZSBibG9j
a3F1b3RlIGhhcworICAgICAgICB0aGUgInR5cGUiIGF0dHJpYnV0ZSBzZXQgdG8gImNpdGUiLgor
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMS1wYXN0ZS1hcy1xdW90YXRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDkz
MDk4Ni0xLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvNDkzMDk4Ni0yLXBhc3RlLWFzLXF1b3RhdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTItcGFzdGUtYXMtcXVv
dGF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2
LTMtcGFzdGUtYXMtcXVvdGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMy1wYXN0ZS1hcy1xdW90YXRpb24uaHRtbDogQWRkZWQu
CisKIDIwMTgtMDktMTEgIE9saXZpYSBCYXJuZXR0ICA8b2Jhcm5ldHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCB0aGUgV2ViIFNoYXJlIEFQSSBmb3IgbWFjCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDkzMDk4Ni0xLXBhc3RlLWFzLXF1b3RhdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5
MzA5ODYtMS1wYXN0ZS1hcy1xdW90YXRpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTEtcGFzdGUtYXMtcXVvdGF0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKK1RoaXMgdGVz
dHMgdG8gbWFrZSBzdXJlIHRoYXQgY29udGVudCB0aGF0IGhhcyB0aGUgZG9jdW1lbnQgZGVmYXVs
dCBjb2xvciBpcyBwYXN0ZWQgYXMgYmx1ZSAob3Igd2hhdGV2ZXIgdGhlIGNvbG9yIGZvciBxdW90
ZWQgY29udGVudCBpcykgZHVyaW5nIGEgUGFzdGUgYXMgUXVvdGF0aW9uLgorPGJsb2NrcXVvdGUg
dHlwZT0iY2l0ZSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBibHVlIChpdCBzaG91bGQgbm90IGJlIHdy
YXBwZWQgaW4gYSBzdHlsZSBzcGFuKS48L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvNDkzMDk4Ni0xLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTEtcGFzdGUt
YXMtcXVvdGF0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkLzQ5MzA5ODYtMS1wYXN0ZS1hcy1xdW90YXRpb24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorYmxvY2txdW90ZSB7
CisgICAgY29sb3I6IGJsdWU7CisgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibHVlOworICAg
IG1hcmdpbi1sZWZ0OiAwcHg7CisgICAgcGFkZGluZy1sZWZ0OiAxMHB4OworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgdG8gbWFr
ZSBzdXJlIHRoYXQgY29udGVudCB0aGF0IGhhcyB0aGUgZG9jdW1lbnQgZGVmYXVsdCBjb2xvciBp
cyBwYXN0ZWQgYXMgYmx1ZSAob3Igd2hhdGV2ZXIgdGhlIGNvbG9yIGZvciBxdW90ZWQgY29udGVu
dCBpcykgZHVyaW5nIGEgUGFzdGUgYXMgUXVvdGF0aW9uLjwvZGl2PgorPGRpdiBpZD0iZWRpdCIg
Y29udGVudGVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKworPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImJlZm9yZWNvcHkiLCAoZXZlbnQpID0+IHsgZXZlbnQucHJldmVudERlZmF1
bHQoKTsgfSk7Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgKGV2ZW50KSA9PiB7
CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L2h0bWwiLCAiPHNwYW4gY2xh
c3M9J0FwcGxlLXN0eWxlLXNwYW4nIHN0eWxlPSdjb2xvcjogYmxhY2s7Jz5UaGlzIHRleHQgc2hv
dWxkIGJlIGJsdWUgKGl0IHNob3VsZCBub3QgYmUgd3JhcHBlZCBpbiBhIHN0eWxlIHNwYW4pLjwv
c3Bhbj4iKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSk7Citkb2N1bWVudC5leGVj
Q29tbWFuZCgiQ29weSIsIGZhbHNlKTsKKworZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJlZGl0Iik7CitkZXNjcmlwdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlw
dGlvbiIpOworZWRpdC5mb2N1cygpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlQXNRdW90
YXRpb24iLCBmYWxzZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSBkZXNj
cmlwdGlvbi5pbm5lclRleHQgKyAiXG4iICsgZWRpdC5pbm5lckhUTUw7Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80
OTMwOTg2LTItcGFzdGUtYXMtcXVvdGF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDkzMDk4Ni0yLXBhc3RlLWFzLXF1b3RhdGlv
bi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkLzQ5MzA5ODYtMi1wYXN0ZS1hcy1xdW90YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBjb250
ZW50IHRoYXQgaXMgY29sb3JlZCBieSB0aGUgdXNlciBpcyBwYXN0ZWQgd2l0aCB0aGF0IGNvbG9y
IGR1cmluZyBhIFBhc3RlIGFzIFF1b3RhdGlvbi4KKzxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPjxz
cGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJlZDsiPlRoaXMgdGV4
dCBzaG91bGQgYmUgcmVkIChpdCBzaG91bGQgYmUgd3JhcHBlZCBpbiBhIHN0eWxlIHNwYW4pLjwv
c3Bhbj48L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
NDkzMDk4Ni0yLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTItcGFzdGUtYXMtcXVvdGF0aW9uLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYt
Mi1wYXN0ZS1hcy1xdW90YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorYmxvY2txdW90ZSB7CisgICAgY29sb3I6IGJsdWU7
CisgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibHVlOworICAgIG1hcmdpbi1sZWZ0OiAwcHg7
CisgICAgcGFkZGluZy1sZWZ0OiAxMHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWNvcHki
LCAoZXZlbnQpID0+IHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSk7CisgICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY29weSIsIChldmVudCkgPT4geworICAgICAgICBldmVudC5jbGlw
Ym9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsICI8c3BhbiBjbGFzcz0nQXBwbGUtc3R5bGUt
c3Bhbicgc3R5bGU9J2NvbG9yOiBibGFjazsnPjxzcGFuIGNsYXNzPSdBcHBsZS1zdHlsZS1zcGFu
JyBzdHlsZT0nY29sb3I6IHJlZDsnPlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkIChpdCBzaG91bGQg
YmUgd3JhcHBlZCBpbiBhIHN0eWxlIHNwYW4pLjwvc3Bhbj48L3NwYW4+Iik7CisgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
IkNvcHkiLCBmYWxzZSk7CisKKyAgICBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRp
dCIpOworICAgIGRpdi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJQYXN0ZUFz
UXVvdGF0aW9uIiwgZmFsc2UpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
aW5uZXJUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuaW5uZXJU
ZXh0ICsgIlxuIiArIGRpdi5pbm5lckhUTUw7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRoaXMg
dGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgY29udGVudCB0aGF0IGlzIGNvbG9yZWQgYnkgdGhlIHVz
ZXIgaXMgcGFzdGVkIHdpdGggdGhhdCBjb2xvciBkdXJpbmcgYSBQYXN0ZSBhcyBRdW90YXRpb24u
PC9kaXY+Cis8ZGl2IGlkPSJlZGl0IiBjb250ZW50ZWRpdGFibGU9InRydWUiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5MzA5
ODYtMy1wYXN0ZS1hcy1xdW90YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTMtcGFzdGUtYXMtcXVvdGF0aW9uLWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvNDkzMDk4Ni0zLXBhc3RlLWFzLXF1b3RhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyIEBACitUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGFuIEFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiBibG9ja3F1b3RlIGNhbiBvdmVycmlkZSBkb2N1bWVudCBkZWZh
dWx0IHN0eWxlcyBldmVuIGlmIHRoZXkgYXJlIGRpZmZlcmVudCB0aGFuIHRoZSBpbnNlcnRpb24g
cG9zaXRpb24uCis8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5UaGlzIHRleHQgc2hvdWxkIGhhdmUg
dGhlIGJsb2NrcXVvdGUgY29sb3IgKGJsdWUpLiBUaGVyZSBzaG91bGQgYmUgbm8gc3R5bGUgc3Bh
bnMgYXJvdW5kIGl0LjwvYmxvY2txdW90ZT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC80OTMwOTg2LTMtcGFzdGUtYXMtcXVvdGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMy1wYXN0ZS1hcy1xdW90YXRp
b24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
NDkzMDk4Ni0zLXBhc3RlLWFzLXF1b3RhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitibG9ja3F1b3RlIHsKKyAgICBjb2xv
cjogYmx1ZTsKKyAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CisgICAgbWFyZ2luLWxlZnQ6IDBweDsK
KyAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsdWU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhh
dCBhbiBBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24gYmxvY2txdW90ZSBjYW4gb3ZlcnJpZGUgZG9j
dW1lbnQgZGVmYXVsdCBzdHlsZXMgZXZlbiBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUg
aW5zZXJ0aW9uIHBvc2l0aW9uLjwvZGl2PgorPGRpdiBpZD0iZWRpdCIgY29udGVudGVkaXRhYmxl
PSJ0cnVlIiBzdHlsZT0iY29sb3I6IHJlZDsiPjwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlY29weSIsIChldmVudCkgPT4geyBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOyB9KTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvcHkiLCAoZXZlbnQp
ID0+IHsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsICI8c3Bh
biBjbGFzcz0nQXBwbGUtc3R5bGUtc3Bhbicgc3R5bGU9J2NvbG9yOmJsYWNrOyc+VGhpcyB0ZXh0
IHNob3VsZCBoYXZlIHRoZSBibG9ja3F1b3RlIGNvbG9yIChibHVlKS4gVGhlcmUgc2hvdWxkIGJl
IG5vIHN0eWxlIHNwYW5zIGFyb3VuZCBpdC48L3NwYW4+Iik7CisgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKK30pOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiLCBmYWxzZSk7CisKK2Vk
aXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOworZGVzY3JpcHRpb24gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKTsKK2VkaXQuZm9jdXMoKTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZUFzUXVvdGF0aW9uIiwgZmFsc2UpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRv
Y3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gZGVzY3JpcHRpb24uaW5uZXJUZXh0ICsgIlxuIiArIGVk
aXQuaW5uZXJIVE1MOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="367112"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>