<?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>169082</bug_id>
          
          <creation_ts>2017-03-02 08:12:59 -0800</creation_ts>
          <short_desc>Enable fieldsets to be flex boxes and grids</short_desc>
          <delta_ts>2017-03-06 10:08:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169169</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>m.kurz+webkitbugs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282730</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-02 08:12:59 -0800</bug_when>
    <thetext>Enable fieldsets to be flex boxes and grids.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283202</commentid>
    <comment_count>1</comment_count>
      <attachid>303332</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-03 11:50:24 -0800</bug_when>
    <thetext>Created attachment 303332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283208</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-03 12:01:35 -0800</bug_when>
    <thetext>*** Bug 148826 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283209</commentid>
    <comment_count>3</comment_count>
      <attachid>303332</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-03 12:04:11 -0800</bug_when>
    <thetext>Comment on attachment 303332
Patch

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

&gt; Source/WebCore/rendering/OrderIterator.cpp:80
&gt; +bool OrderIterator::shouldSkipChild(const RenderObject* child) const

This should take a reference.

&gt; Source/WebCore/rendering/OrderIterator.h:75
&gt; +    bool collectChild(const RenderBox&amp;);

Please add a comment saying what the return value means.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1699
&gt; +    

Trailing whitespace (gasp!)

&gt; Source/WebCore/rendering/RenderBlock.cpp:2766
&gt; +            int legendMinWidth = legend-&gt;minPreferredLogicalWidth();

Why int and not LayoutUnit? Darin would say that auto would have avoided this.

&gt; Source/WebCore/rendering/RenderBlock.cpp:3939
&gt; +    

Whitespace

&gt; Source/WebCore/rendering/RenderBlock.h:400
&gt; +    enum FieldsetFindLegendOption { FieldsetIgnoreFloatingOrOutOfFlow, FieldsetIncludeFloatingOrOutOfFlow };

enum class?

&gt; Source/WebCore/rendering/RenderBlockFlow.h:475
&gt; +    void layoutExcludedChildren(bool /*relayoutChildren*/) override;

No need to comment out the param name.

&gt; Source/WebCore/rendering/RenderTable.cpp:782
&gt; +    

whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283224</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-03 13:16:04 -0800</bug_when>
    <thetext>Landed in r213379.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283377</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-03-03 21:11:48 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Landed in r213379.

This broke the GTK+ build:

Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:189:22: error: no viable conversion from &apos;WebCore::RenderElement&apos; to &apos;WebCore::RenderBlock *&apos;
        RenderBlock* renderFieldset = *coreObject-&gt;renderer()-&gt;parent();
                     ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.


https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Build%29/builds/77905/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283429</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-04 09:10:27 -0800</bug_when>
    <thetext>Windows too:

C:\cygwin\home\buildbot\WebKit\Source\WebCore\rendering\RenderingAllInOne.cpp(65): fatal error C1083: Cannot open include file: &apos;RenderFieldset.cpp&apos;: No such file or directory [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283431</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 09:11:53 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 169169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283722</commentid>
    <comment_count>8</comment_count>
    <who name="">m.kurz+webkitbugs</who>
    <bug_when>2017-03-06 03:19:14 -0800</bug_when>
    <thetext>Bug 169169 has been closed - so this one can be closed as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283782</commentid>
    <comment_count>9</comment_count>
      <attachid>303518</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-06 09:00:45 -0800</bug_when>
    <thetext>Created attachment 303518
Patch for EWS to make sure GTK builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283784</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-06 09:01:40 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Bug 169169 has been closed - so this one can be closed as well?

No, this got rolled out. Will re-land once I am sure it won&apos;t break GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283808</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-03-06 10:00:49 -0800</bug_when>
    <thetext>Re-landed in 213455.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283810</commentid>
    <comment_count>12</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-06 10:08:39 -0800</bug_when>
    <thetext>rdar://problem/22607417</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303332</attachid>
            <date>2017-03-03 11:50:24 -0800</date>
            <delta_ts>2017-03-03 12:04:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169082-20170303135022.patch</filename>
            <type>text/plain</type>
            <size>126503</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMiBAQAorMjAxNy0wMy0wMyAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgZmllbGRzZXRzIHRvIGJl
IGZsZXhib3hlcywgZ3JpZHMgYW5kIG11bHRpY29sdW1uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHRlc3RzIGluIGZhc3QvZm9ybXMv
ZmllbGRzZXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbGltaW5hdGVzIFJlbmRlckZpZWxkc2V0
IGFuZCBtb3ZlcyB0aGUgZnVuY3Rpb25hbGl0eSBpbnRvIFJlbmRlckJsb2NrIHNvIHRoYXQKKyAg
ICAgICAgZGVyaXZlZCBjbGFzc2VzIGNhbiBhbHNvIGJlIGZpZWxkc2V0cy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgUmVtb3ZlIFJlbmRlckZpZWxkc2V0IGZyb20gdGhlIHByb2plY3QuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVVSUVsZW1l
bnQpOgorICAgICAgICBDYWxsIGluIHRvIFJlbmRlckJsb2NrIG5vdyBpbnN0ZWFkIG9mIFJlbmRl
ckZpZWxkc2V0LgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgIFRoZSBm
aWVsZHNldCBET00gZWxlbWVudCBub3cgdXNlcyBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IgdG8g
bWFrZSByZW5kZXJlcnMgc28gdGhhdCBtdWx0aXBsZSBkaXNwbGF5IHR5cGVzCisgICAgICAgIGNh
biBiZSBzdXBwb3J0ZWQuIEEgc3BlY2lhbCBmbGFnIGhhcyBiZWVuIGFkZGVkIHRoYXQgaW5kaWNh
dGVzIG9ubHkgdG8gbWFrZSBmbGV4Ym94IGFuZCBibG9jay1yZWxhdGVkCisgICAgICAgIHJlbmRl
cmVycyAobm90IHRhYmxlIGRpc3BsYXkgdHlwZXMpLgorCisgICAgICAgICogcmVuZGVyaW5nL09y
ZGVySXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6c2hvdWxk
U2tpcENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVySXRlcmF0b3JQb3B1bGF0b3I6OmNv
bGxlY3RDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaDoKKyAgICAg
ICAgU3RyZWFtbGluZSBjaGlsZCBjb2xsZWN0aW9uIGZvciBmbGV4Ym94ZXMgYW5kIGdyaWRzIHRv
IGluZGljYXRlIHdoZXRoZXIgdGhlIGNoaWxkIHNob3VsZCBiZSBza2lwcGVkIGFzIGEgcmV0dXJu
CisgICAgICAgIHZhbHVlIGZyb20gY29sbGVjdENoaWxkLiBBZGQgYSBzaG91bGRTa2lwQ2hpbGQg
bWV0aG9kIHRoYXQgc2tpcHMgYm90aCBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIG9iamVjdHMgYW5k
CisgICAgICAgIGV4Y2x1ZGVkIGNoaWxkcmVuIGxpa2UgdGhlIGxlZ2VuZHMgb2YgZmllbGRzZXRz
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrUmFyZURhdGE6OlJlbmRlckJsb2NrUmFyZURhdGEpOgorICAgICAgICBX
aGVuIHRoZSBsZWdlbmQgaXMgdGFsbGVyIHRoYW4gdGhlIGZpZWxkc2V0J3MgYm9yZGVyQmVmb3Jl
KCksIGludHJpbnNpYyBib3JkZXIgaXMgYWRkZWQgdG8gdGhlIENTUyBib3JkZXIgd2lkdGguCisg
ICAgICAgIFRoaXMgaW50cmluc2ljIGJvcmRlciBiZWluZyBmYWN0b3JlZCBpbiBlbnN1cmVzIHRo
YXQgdGhlIHBhZGRpbmcgYW5kIGNvbnRlbnQgYm94ZXMgb2YgZmllbGRzZXRzIGFyZSBjb3JyZWN0
CisgICAgICAgIGFjcm9zcyBhbnkgbGF5b3V0IHN5c3RlbSwgc2luY2UgdGhlIGxlZ2VuZCBpcyBu
b3cganVzdCB0cmVhdGVkIGFzIHBhcnQgb2YgdGhlIGJvcmRlci4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRl
ZENoaWxkcmVuIHRvIGVuc3VyZSB0aGF0IGV4Y2x1ZGVkIGNoaWxkcmVuIGNvbnRyaWJ1dGUgdG8K
KyAgICAgICAgcHJlZmVycmVkIHdpZHRoIGluIHRoZWlyIG93biB3YXkgYW5kIG5vdCBhcyBwYXJ0
IG9mIGEgc3BlY2lmaWMgbGF5b3V0IHN5c3RlbS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnJlbmRlck5hbWUpOgorICAgICAgICBIYWNrZWQgdG8gc3RpbGwgcmV0dXJuIFJlbmRl
ckZpZWxkU2V0IGZvciBSZW5kZXJCbG9ja0Zsb3ctYmFja2VkIGZpZWxkc2V0cyBmb3IgbGF5b3V0
IHRlc3QgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omxh
eW91dEV4Y2x1ZGVkQ2hpbGRyZW4pOgorICAgICAgICBSZW5hbWVkIGZyb20gbGF5b3V0U3BlY2lh
bEV4Y2x1ZGVkQ2hpbGQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBt
dWx0aXBsZSBleGNsdWRlZCBjaGlsZHJlbgorICAgICAgICBjYW4gYmUgaW5jbHVkZWQgaGVyZSAo
ZS5nLiwgYm90aCBhIG11bHRpY29sdW1uIGZsb3cgdGhyZWFkIGFuZCBhIGxlZ2VuZCkuIFRoZSBS
ZW5kZXJCbG9jayBiYXNlIGNsYXNzIGhhbmRsZXMKKyAgICAgICAgdGhlIGxheW91dCBvZiBsZWdl
bmRzIGJ5IGJvdGggcGxhY2luZyB0aGVtIGFuZCBzZXR0aW5nIHRoZSBjb3JyZWN0IGludHJpbnNp
YyBib3JkZXIgYmVmb3JlIGFtb3VudCBvbiB0aGUKKyAgICAgICAgYmxvY2suCisKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kRmllbGRzZXRMZWdlbmQpOgorICAgICAgICBNb3Zl
ZCBmcm9tIFJlbmRlckZpZWxkc2V0LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludFJlY3RUb0NsaXBPdXRGcm9tQm9yZGVyKToKKyAgICAgICAgVGhlc2UgbWV0
aG9kcyBhcmUgdXNlZCB3aGVuIHBhaW50aW5nIHRvIHNocmluayB0aGUgYm9yZGVyIGJveCBhcyBu
ZWVkZWQgdG8gYWNjb3VudCBmb3IgdGhlIGxlZ2VuZCBhbmQgdG8KKyAgICAgICAgcHJvdmlkZSB0
aGUgcG9ydGlvbiBvZiB0aGUgYm9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgY2xpcHBlZCBvdXQuIFRo
ZXNlIG1ldGhvZHMgaGF2ZSBiZWVuIGVuaGFuY2VkIHRvCisgICAgICAgIHByb3Blcmx5IHN1cHBv
cnQgYWxsIHdyaXRpbmcgbW9kZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpp
bnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c2V0SW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmJvcmRlclRvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Ym9y
ZGVyTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Ym9yZGVyQm90dG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpib3JkZXJSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6Ym9yZGVyQmVmb3JlKToKKyAgICAgICAgVGhlc2UgbWV0aG9k
cyBhcmUgb3ZlcnJpZGRlbiBmb3IgYm9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnRyaW5zaWMg
Ym9yZGVyIGFkZGVkIGJ5IGEgdGFsbCBsZWdlbmQgaXMKKyAgICAgICAgcHJvcGVybHkgZmFjdG9y
ZWQgaW4uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVk
V2lkdGhzRm9yRXhjbHVkZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgIFRoaXMgbWV0aG9kIGNvbXB1dGVzIHRoZSBwcmVmZXJyZWQgd2lkdGhz
IGZvciBsZWdlbmQgY2hpbGRyZW4gaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGxlZ2VuZCBw
cm9wZXJseQorICAgICAgICBncm93cyB0aGUgd2lkdGggb2YgdGhlIGZpZWxkc2V0IHdoZW4gaXQg
aXMgdGhlIHdpZGVzdCBpdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRq
dXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcp
OgorICAgICAgICBQcmVzZXJ2ZSB0aGUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIGluIHRoYXQgdGhl
IGF2YWlsYWJsZSBjb250ZW50IHNpemUgaW5jbHVkZXMgdGhlIHNwYWNlIGxvc3QgYWNjb3VudGlu
ZworICAgICAgICBmb3IgdGhlIGxlZ2VuZC4gSSBkb24ndCB0aGluayB0aGlzIG1ha2VzIG11Y2gg
c2Vuc2UsIGJ1dCBpdCBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBvdGhlciBicm93c2VycworICAg
ICAgICAoYW5kIG91ciBvbGQgYmVoYXZpb3IpLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6cGFpbnRFeGNsdWRlZENoaWxkcmVuSW5Cb3JkZXIpOgorICAgICAgICBNZXRob2QgZm9y
IHBhaW50aW5nIHRoZSBleGNsdWRlZCBjaGlsZHJlbiB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgaW4g
b3VyIGJvcmRlci4gV2Ugb25seSBkbyB0aGlzIGlmIHRoZQorICAgICAgICBwYWludCBwaGFzZSBp
cyBhIGJveCBkZWNvcmF0aW9uIHBhaW50aW5nIHBoYXNlIGFuZCBpZiB0aGUgbGVnZW5kIGlzbid0
IHNlbGYtcGFpbnRpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6d2lsbENyZWF0ZUNvbHVtbnMp
OgorICAgICAgICBBbGxvdyBmaWVsZHNldHMgdG8gY3JlYXRlIGNvbHVtbnMgbm93LgorCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKToK
KyAgICAgICAgUmVuYW1lZCB0aGlzIG1ldGhvZCBhbmQgY2hhbmdlIGl0IHRvIGNhbGwgdGhlIGJh
c2UgY2xhc3MgdG8gZW5zdXJlIHRoYXQgbGVnZW5kcyBpbiBtdWx0aWNvbHVtbiBmaWVsZHNldHMK
KyAgICAgICAgZ2V0IGhhbmRsZWQgcHJvcGVybHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6YWRkQ2hpbGQpOgorICAgICAgICBQYXRjaGVkIHRvIG1ha2Ugc3VyZSBsZWdl
bmRzIGRvbid0IGdldCBwdXQgaW50byB0aGUgbXVsdGljb2x1bW4gZmxvdyB0aHJlYWQsIGFzIHRo
ZXkgbmVlZCB0bworICAgICAgICByZW1haW4gb3V0c2lkZSBvZiBpdC4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZCk6IERlbGV0
ZWQuCisgICAgICAgIFJlbmFtZWQgdG8gbGF5b3V0RXhjbHVkZWRDaGlsZHJlbi4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFzayk6CisgICAgICAg
IFBhdGNoZWQgdG8gY2FsbCB0aGUgbmV3IGFkanVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyBh
bmQgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlciBtZXRob2RzIGluCisgICAgICAgIG9yZGVy
IHRvIHByb3Blcmx5IHNocmluayB0aGUgYm9yZGVyIGJveCByZWN0IGZvciBwYWludGluZyBhbmQg
dG8gY2xpcCBvdXQgdGhlIHBvcnRpb24gb2YgdGhlIGJvcmRlcgorICAgICAgICBjb3ZlcmVkIGJ5
IHRoZSBsZWdlbmQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZvaWRzRmxvYXRz
KToKKyAgICAgICAgQWRkIGZpZWxkc2V0cyBhcyBhdm9pZGluZyBmbG9hdHMuIFJlbmRlckZpZWxk
c2V0IHVzZWQgdG8gc3ViY2xhc3MgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRydWUsIGJ1dCB3aXRo
CisgICAgICAgIGl0cyByZW1vdmFsLCB3ZSBuZWVkIHRvIHB1dCB0aGlzIGluIHRoZSBiYXNlIGNs
YXNzIGFsb25nIHdpdGggbGVnZW5kcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aXNHcmlkSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmlzRmxleEl0ZW0pOgorICAgICAgICBQYXRjaGVkIHRvIGV4Y2x1
ZGUgbGVnZW5kcyBzbyB0aGF0IHRoZXkgZG9uJ3QgdHJ5IHRvIHNpemUgbGlrZSB0aGV5IGFyZSBy
ZWFsbHkgaW4gdGhlIGdyaWQgb3IgZmxleGJveC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcpOgorICAgICAgICBUaGlzIG1ldGhv
ZCBpcyBvdmVycmlkZGVuIGJ5IFJlbmRlckJMb2NrIHRvIGhhbmRsZSBhZGp1c3RpbmcgZmllbGRz
ZXQgYm9yZGVyIHJlY3RzIGZvciBwYWludGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50UmVj
dFRvQ2xpcE91dEZyb21Cb3JkZXIpOgorICAgICAgICBQYXRjaGVkIHRvIHByb3Blcmx5IHBhaW50
IGZpZWxkc2V0cyB1c2luZyB0aGUgbmV3IGhlbHBlcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsZXhC
b3hJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgIE1ha2Ugc3VyZSBk
ZXByZWNhdGVkIGZsZXhpYmxlIGJveGVzIGxheSBvdXQgdGhlaXIgbGVnZW5kcyBwcm9wZXJseSBi
eSBjYWxsaW5nIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpjcmVh
dGVGb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgIFBh
dGNoZWQgdG8gdGFrZSBhIGZsYWcgdGhhdCBsaW1pdHMgd2hhdCByZW5kZXJlcnMgY2FuIGJlIGNy
ZWF0ZWQgc28gdGhhdCBmaWVsZHNldHMgZG9uJ3QgbWFrZSB0YWJsZQorICAgICAgICBkaXNwbGF5
IHR5cGVzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgUmVtb3ZlIFJlbmRlckZpZWxkc2V0IGZpbGVzIGZyb20gdGhlIHRyZWUuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlcGFyZU9yZGVySXRlcmF0b3JBbmRNYXJnaW5zKToK
KyAgICAgICAgTWFrZSBzdXJlIGZsZXhpYmxlIGJveGVzIGxheSBvdXQgdGhlaXIgbGVnZW5kcyBw
cm9wZXJseSBieSBjYWxsaW5nIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4uCisgICAgICAgIFBhdGNo
IG1ldGhvZHMgdG8gdXNlIHRoZSBPcmRlckl0ZXJhdG9yJ3MgbmV3IHNob3VsZFNraXBDaGlsZCBt
ZXRob2QgdG8gZW5zdXJlIGxlZ2VuZHMgYXJlbid0CisgICAgICAgIHBhcnQgb2YgdGhlIGZsZXhp
YmxlIGJveCBsYXlvdXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMpOgorICAgICAgICBN
YWtlIHN1cmUgZ3JpZHMgbGF5IG91dCB0aGVpciBsZWdlbmRzIHByb3Blcmx5IGJ5IGNhbGxpbmcg
bGF5b3V0RXhjbHVkZWRDaGlsZHJlbi4KKyAgICAgICAgUGF0Y2ggbWV0aG9kcyB0byB1c2UgdGhl
IE9yZGVySXRlcmF0b3IncyBuZXcgc2hvdWxkU2tpcENoaWxkIG1ldGhvZCB0byBlbnN1cmUgbGVn
ZW5kcyBhcmVuJ3QKKyAgICAgICAgcGFydCBvZiB0aGUgZ3JpZCdzIGxheW91dC4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpwb3B1bGF0ZSk6CisgICAgICAg
IFB1bGwgbGVnZW5kcyBiYWNrIHVwIGludG8gdGhlIGJsb2NrIGFuZCBkb24ndCBsZXQgdGhlbSBi
ZSBwYXJ0IG9mIHRoZSBmbG93IHRocmVhZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNl
dDo6cmVxdWlyZXNCYWxhbmNpbmcpOgorICAgICAgICBGaXggYW4gYXNzZXJ0IHRvIGFsbG93IGxl
Z2VuZHMgdG8gZXhpc3QgYXMgc2libGluZ3Mgb2YgbXVsdGljb2x1bW4gc2V0cy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojppc0ZpZWxkc2V0KToKKyAgICAgICAgQ2hhbmdlZCB0byBleGFtaW5lIHRoZSBIVE1M
IGVsZW1lbnQgcmF0aGVyIHRoYW4gUmVuZGVyRmllbGRzZXQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzRXhj
bHVkZWRGcm9tTm9ybWFsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2V0SXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OlJlbmRlck9iamVjdEJpdGZpZWxkcyk6Cisg
ICAgICAgIFJlbmRlck9iamVjdHMgbm93IGhhdmUgYSBuZXcgYml0IHRoYXQgaXMgc2V0IGZvciBl
eGNsdWRlZCBvYmplY3RzIGxpa2UgbGVnZW5kcywgZmxvdyB0aHJlYWRzLAorICAgICAgICBwbGFj
ZWhvbGRlcnMsIGFuZCBydWJ5IHRleHQuIFRoaXMgYml0IGxldHMgY29kZSBlYXNpbHkgZGV0ZWN0
IHRoYXQgYW4gb2JqZWN0IGlzIGV4Y2x1ZGVkIGZyb20KKyAgICAgICAgdGhlIGxheW91dCBzeXN0
ZW0gYW5kIGNhbiBiZSBza2lwcGVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmlzRXhjbHVkZWRBbmRQbGFjZWRJbkJvcmRlcik6CisgICAgICAgIEhlbHBlciBtZXRob2QgZm9y
IGFza2luZyBpZiBhbiBvYmplY3QgaXMgcGFpbnRpbmcgaW5zaWRlIHRoZSBib3JkZXIuIFVzZWQg
dG8ga25vdyB3ZQorICAgICAgICBuZWVkIHRvIGZhY3RvciBpdCBpbnRvIHByZWZlcnJlZCB3aWR0
aCBjYWxjdWxhdGlvbnMgb3V0c2lkZSBvZiBhbnkgb25lIGxheW91dCBzeXN0ZW0KKyAgICAgICAg
YW5kIGFsc28gdG8ga25vdyB0aGF0IHdlIG5lZWQgdG8gcGFpbnQgaXQgd2hlbiB3ZSBwYWludCB0
aGUgZmllbGRzZXQncyBib3JkZXIgaW5zdGVhZCBvZgorICAgICAgICBsYXRlciAoYWZ0ZXIgd2Ug
bWlnaHQgaGF2ZSBzY3JvbGxlZCBvciBjbGlwcGVkIHRoZSBjaGlsZCBwYWludGluZyBhcmVhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJ1YnlSdW46OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgIFJlbmFtZSBs
YXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZCB0byBsYXlvdXRFeGNsdWRlZENoaWxkcmVuLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlOjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OnBhaW50TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6c3VidHJhY3RDYXB0aW9uUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmg6CisgICAgICAgIFBhdGNoZWQgdGFibGVzIHRvIHNoYXJlIHRoZSBzYW1lIGJv
cmRlciBib3ggcmVjdCBhZGp1c3RtZW50IHVzZWQgYnkgZmllbGRzZXRzIHdoZW4gc3VidHJhY3Rp
bmcKKyAgICAgICAgb3V0IGNhcHRpb25zLiBUaGlzIGlzIHByZXAgd29yayB0byBhbGxvdyB0YWJs
ZXMgdG8gYmUgZmllbGRzZXRzLCBidXQgZm9yIG5vdyBJIGRpZG4ndCBnbyBhbGwgdGhlCisgICAg
ICAgIHdheS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKToKKyAgICAgICAgTWFr
ZSBzdXJlIHRhYmxlIGNlbGxzIGFkanVzdCB0aGVpciBib3JkZXIgYm94IHJlY3RzIGZvciBwYWlu
dGluZy4gQWdhaW4gdGhpcyBpcyBwcmVwIHdvcmsgZm9yCisgICAgICAgIGNlbGxzIHBvdGVudGlh
bGx5IGJlaW5nIGZpZWxkc2V0cywgYnV0IG5vdCBzdXBwb3J0ZWQgeWV0LgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sOjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZCk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpsYXlvdXRTcGVjaWFs
RXhjbHVkZWRDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgIFJlbmFtZWQgdGhlIG1ldGhvZHMgZm9yIGRvaW5n
IHRoZSBleGNsdWRlZCBjaGlsZCBsYXlvdXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0
ZVJlbmRlck9iamVjdCk6CisgICAgICAgIE1ha2Ugc3VyZSB0byBkdW1wIHRoZSBvcmlnaW5hbCBm
aWVsZHNldCBib3JkZXIgYW5kIG5vdCB0aGUgYm9yZGVyIHdpdGggdGhlIGV4dHJhIGxlZ2VuZCBz
dHVmZiBpbiBpdC4KKwogMjAxNy0wMy0wMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5
YW5kZXgucnU+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0eXBvIGZpeApJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDE5LDcgKzI0MTksNiBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCiAgICAgcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNw
cAotICAgIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEz
MzA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC00NTIwLDggKzQ1MjAsNiBAQAogCQlBOERGNEFFRjA5ODBDNDJD
MDA1Mjk4MUIgLyogUmVuZGVyVGFibGVTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGNEFFNTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVy
VGFibGVTZWN0aW9uLmggKi87IH07CiAJCUE4REY0QUYwMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5k
ZXJUYWJsZVJvdy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOERGNEFFNjA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVSb3cuY3BwICovOyB9
OwogCQlBOERGNEFGMTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVDb2wuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REY0QUU3MDk4MEM0MkMw
MDUyOTgxQiAvKiBSZW5kZXJUYWJsZUNvbC5oICovOyB9OwotCQlBOEVBNzNDMzBBMTkwMEUzMDBB
OEVGNUYgLyogUmVuZGVyRmllbGRzZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThFQTczQUYwQTE5MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxk
c2V0LmNwcCAqLzsgfTsKLQkJQThFQTczQzQwQTE5MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxk
c2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEVB
NzNCMDBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmllbGRzZXQuaCAqLzsgfTsKIAkJQThFQTc5
RjEwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxPTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE3OUU1MEExOTE2REYwMEE4RUY1RiAv
KiBIVE1MT0xpc3RFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQThFQTc5RjIwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE3
OUU2MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxpc3RFbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThFQTc5RjMwQTE5MTZERjAwQThF
RjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThFQTc5RTcwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVs
ZW1lbnQuY3BwICovOyB9OwpAQCAtMTI0MjksOCArMTI0MjcsNiBAQAogCQlBOERGNEFFNTA5ODBD
NDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJUYWJsZVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThERjRBRTYwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlUm93LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUYWJsZVJvdy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REY0QUU3MDk4MEM0MkMwMDUyOTgxQiAv
KiBSZW5kZXJUYWJsZUNvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyVGFibGVDb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThFQTczQUYwQTE5
MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGaWVsZHNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE4RUE3M0IwMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJGaWVsZHNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmllbGRzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFQTc5RTUwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxP
TGlzdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxPTGlz
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFQTc5RTYwQTE5MTZE
RjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhUTUxVTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThFQTc5RTcwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxVTGlzdEVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzMDMsOCArMjQyOTksNiBAQAogCQkJCUU0
M0EwMjNBMTdFQjM3MEEwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmggKi8sCiAJCQkJMEY1QjdB
NTIxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCAqLywKIAkJCQkw
RjVCN0E1MzEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCAqLywKLQkJ
CQlBOEVBNzNBRjBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmllbGRzZXQuY3BwICovLAotCQkJ
CUE4RUE3M0IwMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJGaWVsZHNldC5oICovLAogCQkJCTA2
NkM3NzJFMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgKi8s
CiAJCQkJMDY2Qzc3MkYwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
LmggKi8sCiAJCQkJNTNDODI5OEIxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94
LmNwcCAqLywKQEAgLTI3OTA3LDcgKzI3OTAxLDYgQEAKIAkJCQk5QjMyQ0RBOTEzREY3RkE5MDBG
MzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQTAyM0Ix
N0VCMzcwQTAwNENERDI1IC8qIFJlbmRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQThFQTczQzQwQTE5MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzczMTBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQzgyOThFMTNEOEQ5MjcwMERF
MkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTA4Q0NBNEYx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzE2NTUsNyArMzE2NDgsNiBAQAogCQkJCTlCMzJDREFBMTNERjdGQTkwMEYzNEQxMyAvKiBSZW5k
ZXJlZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0M0EwMjNEMTdFQjM3MTMwMDRD
REQyNSAvKiBSZW5kZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUI3QTU0MTBG
NjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlBOEVBNzNDMzBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmllbGRzZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDY2Qzc3MzAwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzQzgyOThEMTNEOEQ5MjcwMERFMkRF
QiAvKiBSZW5kZXJGbGV4aWJsZUJveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDhDQ0E1MDEz
Q0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCdXR0b24uaCIKLSNpbmNsdWRlICJSZW5k
ZXJGaWVsZHNldC5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5j
bHVkZSAiUmVuZGVySFRNTENhbnZhcy5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0x
MDgxLDcgKzEwODAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgCiAgICAgLy8gaWYgaXNGaWVsZHNldCBpcyB0cnVlLCB0aGUgcmVuZGVyZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIFJlbmRlckZpZWxkc2V0CiAgICAgaWYgKGlzRmllbGRzZXQoKSkKLSAg
ICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8UmVuZGVy
RmllbGRzZXQ+KCptX3JlbmRlcmVyKS5maW5kTGVnZW5kKFJlbmRlckZpZWxkc2V0OjpJbmNsdWRl
RmxvYXRpbmdPck91dE9mRmxvdykpOworICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm1fcmVuZGVyZXIpLmZpbmRGaWVsZHNl
dExlZ2VuZChSZW5kZXJCbG9jazo6RmllbGRzZXRJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdykp
OwogICAgIAogICAgIGlmIChpc0ZpZ3VyZSgpKQogICAgICAgICByZXR1cm4gY2FwdGlvbkZvckZp
Z3VyZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMTMzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKLSNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgorI2luY2x1ZGUgIlJl
bmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxG
aWVsZFNldEVsZW1lbnQ6CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRTZXRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RmllbGRzZXQ+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIFJlbmRlckVsZW1l
bnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSksIFJlbmRlckVsZW1lbnQ6Ok9ubHlD
cmVhdGVCbG9ja0FuZEZsZXhib3hSZW5kZXJlcnMpOwogfQogCiBIVE1MTGVnZW5kRWxlbWVudCog
SFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAyMTMzMDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDsKIGNsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOwotY2xhc3MgUmVuZGVyRmll
bGRTZXQ7CiAKIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZv
cm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CkBAIC00Nyw4ICs0Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZEludmFsaWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQm
KTsKICAgICB2b2lkIHJlbW92ZUludmFsaWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQmKTsKIAotICAgIFJlbmRlckZpZWxkU2V0KiByZW5kZXJlcigpIGNvbnN0OwotCiBw
cml2YXRlOgogICAgIEhUTUxGaWVsZFNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAgICAgfkhUTUxGaWVsZFNldEVsZW1lbnQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAJKHJldmlz
aW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTQgKzc3LDIwIEBAIHZvaWQgT3JkZXJJdGVyYXRvcjo6
cmVzZXQoKQogICAgIG1faXNSZXNldCA9IHRydWU7CiB9CiAKK2Jvb2wgT3JkZXJJdGVyYXRvcjo6
c2hvdWxkU2tpcENoaWxkKGNvbnN0IFJlbmRlck9iamVjdCogY2hpbGQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+aXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQoKTsKK30KKwogT3JkZXJJdGVyYXRvclBvcHVsYXRvcjo6fk9yZGVy
SXRlcmF0b3JQb3B1bGF0b3IoKQogewogICAgIG1faXRlcmF0b3IucmVzZXQoKTsKIH0KIAotdm9p
ZCBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yOjpjb2xsZWN0Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBj
aGlsZCkKK2Jvb2wgT3JkZXJJdGVyYXRvclBvcHVsYXRvcjo6Y29sbGVjdENoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpCiB7CiAgICAgbV9pdGVyYXRvci5tX29yZGVyVmFsdWVzLmluc2VydChj
aGlsZC5zdHlsZSgpLm9yZGVyKCkpOworICAgIHJldHVybiAhbV9pdGVyYXRvci5zaG91bGRTa2lw
Q2hpbGQoJmNoaWxkKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRl
ckl0ZXJhdG9yLmgJKHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9PcmRlckl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyT2JqZWN0Owog
ICAgIAogY2xhc3MgT3JkZXJJdGVyYXRvciB7CiBwdWJsaWM6CkBAIC00OCw2ICs0OSw4IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJCb3gqIGZpcnN0KCk7CiAgICAgUmVuZGVyQm94KiBuZXh0KCk7CiAK
KyAgICBib29sIHNob3VsZFNraXBDaGlsZChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHJlc2V0KCk7CiAKQEAgLTY5LDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIH0KICAgICB+T3JkZXJJdGVyYXRvclBvcHVsYXRvcigpOwogCi0gICAgdm9pZCBjb2xsZWN0
Q2hpbGQoY29uc3QgUmVuZGVyQm94Jik7CisgICAgYm9vbCBjb2xsZWN0Q2hpbGQoY29uc3QgUmVu
ZGVyQm94Jik7CiAKIHByaXZhdGU6CiAgICAgT3JkZXJJdGVyYXRvciYgbV9pdGVyYXRvcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjEz
MzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1LDE1ICsyNDUsMTMgQEAgc3RydWN0IFJlbmRlckJsb2NrUmFyZURhdGEg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlckJsb2NrUmFyZURhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhKCkKLSAg
ICAgICAgOiBtX3BhZ2luYXRpb25TdHJ1dCgwKQotICAgICAgICAsIG1fcGFnZUxvZ2ljYWxPZmZz
ZXQoMCkKLSAgICAgICAgLCBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2soc3RkOjpudWxsb3B0
KQogICAgIHsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IG1fcGFnaW5hdGlvblN0cnV0OwogICAg
IExheW91dFVuaXQgbV9wYWdlTG9naWNhbE9mZnNldDsKLQorICAgIExheW91dFVuaXQgbV9pbnRy
aW5zaWNCb3JkZXJGb3JGaWVsZHNldDsKKyAgICAKICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlckZs
b3dUaHJlYWQqPiBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2s7CiB9OwogCkBAIC0xNjA1LDYg
KzE2MDMsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENoaWxkcmVuKFBhaW50SW5mCiAKIGJv
b2wgUmVuZGVyQmxvY2s6OnBhaW50Q2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWlu
dEluZm9Gb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QsIFBhaW50QmxvY2tUeXBlIHBhaW50VHlw
ZSkKIHsKKyAgICBpZiAoY2hpbGQuaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgLy8gQ2hlY2sgZm9yIHBhZ2UtYnJlYWstYmVmb3JlOiBh
bHdheXMsIGFuZCBpZiBpdCdzIHNldCwgYnJlYWsgYW5kIGJhaWwuCiAgICAgYm9vbCBjaGVja0Jl
Zm9yZUFsd2F5cyA9ICFjaGlsZHJlbklubGluZSgpICYmICh1c2VQcmludFJlY3QgJiYgYWx3YXlz
UGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSkpOwogICAgIExheW91dFVuaXQg
YWJzb2x1dGVDaGlsZFkgPSBwYWludE9mZnNldC55KCkgKyBjaGlsZC55KCk7CkBAIC0xNjk1LDcg
KzE2OTYsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAg
ICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgICAgICB9CiAg
ICAgfQotCisgICAgCisgICAgLy8gUGFpbnQgbGVnZW5kcyBqdXN0IGFib3ZlIHRoZSBib3JkZXIg
YmVmb3JlIHdlIHNjcm9sbCBvciBjbGlwLgorICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0Jh
Y2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQorICAgICAgICBw
YWludEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAg
ICAKICAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlTWFzayAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc1Niw2ICsyNzYxLDIzIEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2EKICAgICBtX21pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCArPSBib3JkZXJBbmRQYWRkaW5nOwogICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IGJvcmRlckFuZFBhZGRpbmc7CiAKKyAgICBpZiAoaXNGaWVsZHNldCgpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJCb3gqIGxlZ2VuZCA9IGZpbmRGaWVsZHNldExlZ2VuZCgpKSB7CisgICAg
ICAgICAgICBpbnQgbGVnZW5kTWluV2lkdGggPSBsZWdlbmQtPm1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMZW5ndGggbGVnZW5kTWFyZ2luTGVm
dCA9IGxlZ2VuZC0+c3R5bGUoKS5tYXJnaW5MZWZ0KCk7CisgICAgICAgICAgICBMZW5ndGggbGVn
ZW5kTWFyZ2luUmlnaHQgPSBsZWdlbmQtPnN0eWxlKCkubWFyZ2luTGVmdCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAobGVnZW5kTWFyZ2luTGVmdC5pc0ZpeGVkKCkpCisgICAgICAg
ICAgICAgICAgbGVnZW5kTWluV2lkdGggKz0gbGVnZW5kTWFyZ2luTGVmdC52YWx1ZSgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobGVnZW5kTWFyZ2luUmlnaHQuaXNGaXhlZCgpKQor
ICAgICAgICAgICAgICAgIGxlZ2VuZE1pbldpZHRoICs9IGxlZ2VuZE1hcmdpblJpZ2h0LnZhbHVl
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGxlZ2VuZE1pbldpZHRoICsg
aG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIApAQCAt
Mjc2Nyw5ICsyNzg5LDIwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJl
ZEwKICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwogICAgIFJlbmRlckJs
b2NrKiBjb250YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2soKTsKICAgICBMYXlv
dXRVbml0IGZsb2F0TGVmdFdpZHRoID0gMCwgZmxvYXRSaWdodFdpZHRoID0gMDsKKyAgICAKKyAg
ICBMYXlvdXRVbml0IGNoaWxkTWluV2lkdGg7CisgICAgTGF5b3V0VW5pdCBjaGlsZE1heFdpZHRo
OworICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNG
b3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgsIGNoaWxkTWF4V2lkdGgpOworICAgIGlm
IChoYWRFeGNsdWRlZENoaWxkcmVuKSB7CisgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6
bWF4KGNoaWxkTWluV2lkdGgsIG1pbkxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1heExvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWF4KGNoaWxkTWF4V2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CisgICAgfQor
CiAgICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIC8vIFBvc2l0aW9uZWQgY2hpbGRyZW4gZG9u
J3QgYWZmZWN0IHRoZSBtaW4vbWF4IHdpZHRoCi0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgLy8gUG9zaXRpb25lZCBjaGlsZHJlbiBkb24ndCBh
ZmZlY3QgdGhlIG1pbi9tYXggd2lkdGguIExlZ2VuZHMgaW4gZmllbGRzZXRzIGFyZSBza2lwcGVk
IGhlcmUKKyAgICAgICAgLy8gc2luY2UgdGhleSBjb21wdXRlIG91dHNpZGUgb2YgYW55IG9uZSBs
YXlvdXQgc3lzdGVtLiBPdGhlciBjaGlsZHJlbiBleGNsdWRlZCBmcm9tCisgICAgICAgIC8vIG5v
cm1hbCBsYXlvdXQgYXJlIG9ubHkgdXNlZCB3aXRoIGJsb2NrIGZsb3dzLCBzbyBpdCdzIG9rIHRv
IGNhbGN1bGF0ZSB0aGVtIGhlcmUuCisgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgfHwgY2hpbGQtPmlzRXhjbHVkZWRBbmRQbGFjZWRJbkJvcmRlcigpKSB7CiAgICAg
ICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTM3NzAsNyArMzgwMyw4IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJs
b2NrOjpyZW5kZXJOYW1lKCkgY28KIHsKICAgICBpZiAoaXNCb2R5KCkpCiAgICAgICAgIHJldHVy
biAiUmVuZGVyQm9keSI7IC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB1bnRpbCB3ZSBrbm93IHRo
YXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcy4KLQorICAgIGlmIChpc0ZpZWxkc2V0KCkpCisg
ICAgICAgIHJldHVybiAiUmVuZGVyRmllbGRTZXQiOyAvLyBGSVhNRTogUmVtb3ZlIGV2ZW50dWFs
bHksIGJ1dCBkb25lIHRvIGtlZXAgdGVzdHMgZnJvbSBicmVha2luZy4KICAgICBpZiAoaXNGbG9h
dGluZygpKQogICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChmbG9hdGluZykiOwogICAgIGlm
IChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTM5MDIsNCArMzkzNiwyNjcgQEAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YQogICAgIAogICAgIHJldHVybiBhdmFp
bGFibGVIZWlnaHQ7CiB9CisgICAgCit2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRFeGNsdWRlZENo
aWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3sKKyAgICBpZiAoIWlzRmllbGRzZXQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2V0SW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoMCk7
CisKKyAgICBSZW5kZXJCb3gqIGJveCA9IGZpbmRGaWVsZHNldExlZ2VuZCgpOworICAgIGlmICgh
Ym94KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYm94LT5zZXRJc0V4Y2x1ZGVkRnJvbU5v
cm1hbExheW91dCh0cnVlKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8
UmVuZGVyQm94PigqdGhpcykpIHsKKyAgICAgICAgaWYgKCZjaGlsZCA9PSBib3ggfHwgIWNoaWxk
LmlzTGVnZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2hpbGQuc2V0SXNF
eGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlckJveCYg
bGVnZW5kID0gKmJveDsKKyAgICBpZiAocmVsYXlvdXRDaGlsZHJlbikKKyAgICAgICAgbGVnZW5k
LnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICBsZWdlbmQubGF5b3V0SWZO
ZWVkZWQoKTsKKyAgICAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0OworICAgIGlmIChzdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgeworICAgICAgICBzd2l0Y2ggKGxlZ2VuZC5z
dHlsZSgpLnRleHRBbGlnbigpKSB7CisgICAgICAgIGNhc2UgQ0VOVEVSOgorICAgICAgICAgICAg
bG9naWNhbExlZnQgPSAobG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdl
bmQpKSAvIDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSSUdIVDoKKyAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJFbmQoKSAtIHBhZGRp
bmdFbmQoKSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gYm9yZGVyU3Rh
cnQoKSArIHBhZGRpbmdTdGFydCgpICsgbWFyZ2luU3RhcnRGb3JDaGlsZChsZWdlbmQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2gg
KGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7CisgICAgICAgIGNhc2UgTEVGVDoKKyAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0ID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0VOVEVSOiB7CisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgcGl4ZWwgZ29lcyB0byB0aGUgZW5kIHNpZGUgaW4gUlRM
IChzaW5jZSBpdCB3ZW50IHRvIHRoZSBlbmQgc2lkZQorICAgICAgICAgICAgLy8gaW4gTFRSKS4K
KyAgICAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRXaWR0aCA9IGxvZ2ljYWxXaWR0aCgpIC0g
bG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0g
Y2VudGVyZWRXaWR0aCAtIGNlbnRlcmVkV2lkdGggLyAyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gbG9n
aWNhbFdpZHRoKCkgLSBib3JkZXJTdGFydCgpIC0gcGFkZGluZ1N0YXJ0KCkgLSBtYXJnaW5TdGFy
dEZvckNoaWxkKGxlZ2VuZCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdlbmQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc2V0TG9naWNhbExlZnRG
b3JDaGlsZChsZWdlbmQsIGxvZ2ljYWxMZWZ0KTsKKyAgICAKKyAgICBMYXlvdXRVbml0IGZpZWxk
c2V0Qm9yZGVyQmVmb3JlID0gYm9yZGVyQmVmb3JlKCk7CisgICAgTGF5b3V0VW5pdCBsZWdlbmRM
b2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodEZvckNoaWxkKGxlZ2VuZCk7CisgICAgTGF5b3V0
VW5pdCBsZWdlbmRBZnRlck1hcmdpbiA9IG1hcmdpbkFmdGVyRm9yQ2hpbGQobGVnZW5kKTsKKyAg
ICBMYXlvdXRVbml0IHRvcFBvc2l0aW9uRm9yTGVnZW5kID0gc3RkOjptYXgoTGF5b3V0VW5pdCgp
LCAoZmllbGRzZXRCb3JkZXJCZWZvcmUgLSBsZWdlbmRMb2dpY2FsSGVpZ2h0KSAvIDIpOworICAg
IExheW91dFVuaXQgYm90dG9tUG9zaXRpb25Gb3JMZWdlbmQgPSB0b3BQb3NpdGlvbkZvckxlZ2Vu
ZCArIGxlZ2VuZExvZ2ljYWxIZWlnaHQgKyBsZWdlbmRBZnRlck1hcmdpbjsKKworICAgIC8vIFBs
YWNlIHRoZSBsZWdlbmQgbm93LgorICAgIHNldExvZ2ljYWxUb3BGb3JDaGlsZChsZWdlbmQsIHRv
cFBvc2l0aW9uRm9yTGVnZW5kKTsKKworICAgIC8vIElmIHRoZSBib3R0b20gb2YgdGhlIGxlZ2Vu
ZCAoaW5jbHVkaW5nIGl0cyBhZnRlciBtYXJnaW4pIGlzIGJlbG93IHRoZSBmaWVsZHNldCBib3Jk
ZXIsCisgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGFkZCBpbiBzdWZmaWNpZW50IGludHJpbnNpYyBi
b3JkZXIgdG8gYWNjb3VudCBmb3IgdGhpcyBnYXAuCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBz
dXBwb3J0IHRoZSBiZWZvcmUgbWFyZ2luIG9mIHRoZSBsZWdlbmQ/IE5vdCBlbnRpcmVseSBjbGVh
ci4KKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgZHJvcHBpbmcgc3VwcG9ydCBmb3IgdGhlIGFmdGVy
IG1hcmdpbiBvZiB0aGUgbGVnZW5kLiBOb3Qgc3VyZSBvdGhlcgorICAgIC8vIGJyb3dzZXJzIHN1
cHBvcnQgdGhhdCBhbnl3YXkuCisgICAgaWYgKGJvdHRvbVBvc2l0aW9uRm9yTGVnZW5kID4gZmll
bGRzZXRCb3JkZXJCZWZvcmUpCisgICAgICAgIHNldEludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0
KGJvdHRvbVBvc2l0aW9uRm9yTGVnZW5kIC0gZmllbGRzZXRCb3JkZXJCZWZvcmUpOworICAgIAor
ICAgIC8vIE5vdyB0aGF0IHRoZSBsZWdlbmQgaXMgaW5jbHVkZWQgaW4gdGhlIGJvcmRlciBleHRl
bnQsIHdlIGNhbiBzZXQgb3VyIGxvZ2ljYWwgaGVpZ2h0CisgICAgLy8gdG8gdGhlIGJvcmRlckJl
Zm9yZSAod2hpY2ggaW5jbHVkZXMgdGhlIGxlZ2VuZCBhbmQgaXRzIGFmdGVyIG1hcmdpbiBpZiB0
aGV5IHdlcmUgYmlnZ2VyCisgICAgLy8gdGhhbiB0aGUgYWN0dWFsIGZpZWxkc2V0IGJvcmRlcikg
YW5kIHRoZW4gYWRkIGluIG91ciBwYWRkaW5nIGJlZm9yZS4KKyAgICBzZXRMb2dpY2FsSGVpZ2h0
KGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0JlZm9yZSgpKTsKK30KKworUmVuZGVyQm94KiBSZW5k
ZXJCbG9jazo6ZmluZEZpZWxkc2V0TGVnZW5kKEZpZWxkc2V0RmluZExlZ2VuZE9wdGlvbiBvcHRp
b24pIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBsZWdlbmQgOiBjaGlsZHJlbk9mVHlwZTxSZW5k
ZXJCb3g+KCp0aGlzKSkgeworICAgICAgICBpZiAob3B0aW9uID09IEZpZWxkc2V0SWdub3JlRmxv
YXRpbmdPck91dE9mRmxvdyAmJiBsZWdlbmQuaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChsZWdlbmQuaXNMZWdlbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlckJveCo+KCZsZWdlbmQpOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0
Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJlY3QmIHBhaW50UmVjdCkKK3sKKyAgICBp
ZiAoIWlzRmllbGRzZXQoKSB8fCAhaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGF1dG8qIGxlZ2VuZCA9IGZpbmRGaWVsZHNldExlZ2VuZCgp
OworICAgIGlmICghbGVnZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3R5bGUoKS5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CisgICAgICAgIExheW91dFVuaXQgeU9mZiA9IHN0
ZDo6bWF4KExheW91dFVuaXQoKSwgKGxlZ2VuZC0+aGVpZ2h0KCkgLSBSZW5kZXJCb3g6OmJvcmRl
ckJlZm9yZSgpKSAvIDIpOworICAgICAgICBwYWludFJlY3Quc2V0SGVpZ2h0KHBhaW50UmVjdC5o
ZWlnaHQoKSAtIHlPZmYpOworICAgICAgICBpZiAoc3R5bGUoKS53cml0aW5nTW9kZSgpID09IFRv
cFRvQm90dG9tV3JpdGluZ01vZGUpCisgICAgICAgICAgICBwYWludFJlY3Quc2V0WShwYWludFJl
Y3QueSgpICsgeU9mZik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGF5b3V0VW5pdCB4T2ZmID0g
c3RkOjptYXgoTGF5b3V0VW5pdCgpLCAobGVnZW5kLT53aWR0aCgpIC0gUmVuZGVyQm94Ojpib3Jk
ZXJCZWZvcmUoKSkgLyAyKTsKKyAgICAgICAgcGFpbnRSZWN0LnNldFdpZHRoKHBhaW50UmVjdC53
aWR0aCgpIC0geE9mZik7CisgICAgICAgIGlmIChzdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gTGVm
dFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgICAgIHBhaW50UmVjdC5zZXRYKHBhaW50UmVj
dC54KCkgKyB4T2ZmKTsKKyAgICB9Cit9CisKK0xheW91dFJlY3QgUmVuZGVyQmxvY2s6OnBhaW50
UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIoY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQorewor
ICAgIExheW91dFJlY3QgY2xpcFJlY3Q7CisgICAgaWYgKCFpc0ZpZWxkc2V0KCkpCisgICAgICAg
IHJldHVybiBjbGlwUmVjdDsKKyAgICBhdXRvKiBsZWdlbmQgPSBmaW5kRmllbGRzZXRMZWdlbmQo
KTsKKyAgICBpZiAoIWxlZ2VuZCkKKyAgICAgICAgcmV0dXJuIGNsaXBSZWN0OworCisgICAgTGF5
b3V0VW5pdCBib3JkZXJFeHRlbnQgPSBSZW5kZXJCb3g6OmJvcmRlckJlZm9yZSgpOworICAgIGlm
IChzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKKyAgICAgICAgY2xpcFJlY3Qu
c2V0WChwYWludFJlY3QueCgpICsgbGVnZW5kLT54KCkpOworICAgICAgICBjbGlwUmVjdC5zZXRZ
KHN0eWxlKCkud3JpdGluZ01vZGUoKSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlID8gcGFpbnRS
ZWN0LnkoKSA6IHBhaW50UmVjdC55KCkgKyBwYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJFeHRl
bnQpOworICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChsZWdlbmQtPndpZHRoKCkpOworICAgICAg
ICBjbGlwUmVjdC5zZXRIZWlnaHQoYm9yZGVyRXh0ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjbGlwUmVjdC5zZXRYKHN0eWxlKCkud3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRp
bmdNb2RlID8gcGFpbnRSZWN0LngoKSA6IHBhaW50UmVjdC54KCkgKyBwYWludFJlY3Qud2lkdGgo
KSAtIGJvcmRlckV4dGVudCk7CisgICAgICAgIGNsaXBSZWN0LnNldFkocGFpbnRSZWN0LnkoKSAr
IGxlZ2VuZC0+eSgpKTsKKyAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgoYm9yZGVyRXh0ZW50KTsK
KyAgICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KGxlZ2VuZC0+aGVpZ2h0KCkpOworICAgIH0KKyAg
ICByZXR1cm4gY2xpcFJlY3Q7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmludHJpbnNp
Y0JvcmRlckZvckZpZWxkc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvKiByYXJlRGF0YSA9IGdldEJs
b2NrUmFyZURhdGEodGhpcyk7CisgICAgcmV0dXJuIHJhcmVEYXRhID8gcmFyZURhdGEtPm1faW50
cmluc2ljQm9yZGVyRm9yRmllbGRzZXQgOiBMYXlvdXRVbml0KCk7Cit9CisKK3ZvaWQgUmVuZGVy
QmxvY2s6OnNldEludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KExheW91dFVuaXQgcGFkZGluZykK
K3sKKyAgICBhdXRvKiByYXJlRGF0YSA9IGdldEJsb2NrUmFyZURhdGEodGhpcyk7CisgICAgaWYg
KCFyYXJlRGF0YSkgeworICAgICAgICBpZiAoIXBhZGRpbmcpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHJhcmVEYXRhID0gJmVuc3VyZUJsb2NrUmFyZURhdGEodGhpcyk7CisgICAgfQor
ICAgIHJhcmVEYXRhLT5tX2ludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0ID0gcGFkZGluZzsKK30K
KworTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Ym9yZGVyVG9wKCkgY29uc3QKK3sKKyAgICBpZiAo
c3R5bGUoKS53cml0aW5nTW9kZSgpICE9IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwgIWludHJp
bnNpY0JvcmRlckZvckZpZWxkc2V0KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmJvcmRl
clRvcCgpOworICAgIHJldHVybiBSZW5kZXJCb3g6OmJvcmRlclRvcCgpICsgaW50cmluc2ljQm9y
ZGVyRm9yRmllbGRzZXQoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Ym9yZGVyTGVm
dCgpIGNvbnN0Cit7CisgICAgaWYgKHN0eWxlKCkud3JpdGluZ01vZGUoKSAhPSBMZWZ0VG9SaWdo
dFdyaXRpbmdNb2RlIHx8ICFpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpKQorICAgICAgICBy
ZXR1cm4gUmVuZGVyQm94Ojpib3JkZXJMZWZ0KCk7CisgICAgcmV0dXJuIFJlbmRlckJveDo6Ym9y
ZGVyTGVmdCgpICsgaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKK30KKworTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6Ym9yZGVyQm90dG9tKCkgY29uc3QKK3sKKyAgICBpZiAoc3R5bGUoKS53
cml0aW5nTW9kZSgpICE9IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUgfHwgIWludHJpbnNpY0JvcmRl
ckZvckZpZWxkc2V0KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmJvcmRlckJvdHRvbSgp
OworICAgIHJldHVybiBSZW5kZXJCb3g6OmJvcmRlckJvdHRvbSgpICsgaW50cmluc2ljQm9yZGVy
Rm9yRmllbGRzZXQoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Ym9yZGVyUmlnaHQo
KSBjb25zdAoreworICAgIGlmIChzdHlsZSgpLndyaXRpbmdNb2RlKCkgIT0gUmlnaHRUb0xlZnRX
cml0aW5nTW9kZSB8fCAhaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKSkKKyAgICAgICAgcmV0
dXJuIFJlbmRlckJveDo6Ym9yZGVyUmlnaHQoKTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpib3Jk
ZXJSaWdodCgpICsgaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKK30KKworTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6Ym9yZGVyQmVmb3JlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVuZGVy
Qm94Ojpib3JkZXJCZWZvcmUoKSArIGludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCk7Cit9CisK
K2Jvb2wgUmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxk
cmVuKExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhXaWR0aCkgY29uc3QKK3sK
KyAgICBpZiAoIWlzRmllbGRzZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGF1dG8qIGxlZ2VuZCA9IGZpbmRGaWVsZHNldExlZ2VuZCgpOworICAgIGlmICghbGVnZW5kKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbGVnZW5kLT5zZXRJc0V4Y2x1ZGVkRnJv
bU5vcm1hbExheW91dCh0cnVlKTsKKworICAgIGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKmxlZ2VuZCwgbWluV2lkdGgsIG1heFdpZHRoKTsKKyAgICAKKyAgICAvLyBUaGVzZSBh
cmUgZ29pbmcgdG8gYmUgYWRkZWQgaW4gbGF0ZXIsIHNvIHdlIHN1YnRyYWN0IHRoZW0gb3V0IHRv
IHJlZmxlY3QgdGhlCisgICAgLy8gZmFjdCB0aGF0IHRoZSBsZWdlbmQgaXMgb3V0c2lkZSB0aGUg
c2Nyb2xsYWJsZSBhcmVhLgorICAgIGF1dG8gc2Nyb2xsYmFyV2lkdGggPSBpbnRyaW5zaWNTY3Jv
bGxiYXJMb2dpY2FsV2lkdGgoKTsKKyAgICBtaW5XaWR0aCAtPSBzY3JvbGxiYXJXaWR0aDsKKyAg
ICBtYXhXaWR0aCAtPSBzY3JvbGxiYXJXaWR0aDsKKyAgICAKKyAgICBjb25zdCBhdXRvJiBjaGls
ZFN0eWxlID0gbGVnZW5kLT5zdHlsZSgpOworICAgIGF1dG8gc3RhcnRNYXJnaW5MZW5ndGggPSBj
aGlsZFN0eWxlLm1hcmdpblN0YXJ0VXNpbmcoJnN0eWxlKCkpOworICAgIGF1dG8gZW5kTWFyZ2lu
TGVuZ3RoID0gY2hpbGRTdHlsZS5tYXJnaW5FbmRVc2luZygmc3R5bGUoKSk7CisgICAgTGF5b3V0
VW5pdCBtYXJnaW47CisgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydDsKKyAgICBMYXlvdXRVbml0
IG1hcmdpbkVuZDsKKyAgICBpZiAoc3RhcnRNYXJnaW5MZW5ndGguaXNGaXhlZCgpKQorICAgICAg
ICBtYXJnaW5TdGFydCArPSBzdGFydE1hcmdpbkxlbmd0aC52YWx1ZSgpOworICAgIGlmIChlbmRN
YXJnaW5MZW5ndGguaXNGaXhlZCgpKQorICAgICAgICBtYXJnaW5FbmQgKz0gZW5kTWFyZ2luTGVu
Z3RoLnZhbHVlKCk7CisgICAgbWFyZ2luID0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CisgICAg
CisgICAgbWluV2lkdGggKz0gbWFyZ2luOworICAgIG1heFdpZHRoICs9IG1hcmdpbjsKKworICAg
IHJldHVybiB0cnVlOworfQorCitMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphZGp1c3RCb3JkZXJC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBXZSdyZSBkb2luZyB0aGlzIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzIGV2
ZW4gdGhvdWdoIGl0J3MgcXVlc3Rpb25hYmxlLgorICAgIC8vIFNob3VsZG4ndCBoZWlnaHQ6MTAw
cHggbWVhbiB0aGUgZmllbGRzZXQgY29udGVudCBnZXRzIDEwMHB4IG9mIGhlaWdodCBldmVuIGlm
IHRoZQorICAgIC8vIHJlc3VsdGluZyBmaWVsZHNldCBiZWNvbWVzIG11Y2ggdGFsbGVyIGJlY2F1
c2Ugb2YgdGhlIGxlZ2VuZD8KKyAgICBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZyA9IGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7CisgICAgaWYgKHN0eWxlKCkuYm94U2l6aW5n
KCkgPT0gQ09OVEVOVF9CT1gpCisgICAgICAgIHJldHVybiBoZWlnaHQgKyBib3JkZXJzUGx1c1Bh
ZGRpbmcgLSBpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOworICAgIHJldHVybiBzdGQ6Om1h
eChoZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZyk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxv
Y2s6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXZSdyZSBkb2lu
ZyB0aGlzIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzIGV2ZW4gdGhvdWdoIGl0J3MgcXVlc3Rpb25h
YmxlLgorICAgIC8vIFNob3VsZG4ndCBoZWlnaHQ6MTAwcHggbWVhbiB0aGUgZmllbGRzZXQgY29u
dGVudCBnZXRzIDEwMHB4IG9mIGhlaWdodCBldmVuIGlmIHRoZQorICAgIC8vIHJlc3VsdGluZyBm
aWVsZHNldCBiZWNvbWVzIG11Y2ggdGFsbGVyIGJlY2F1c2Ugb2YgdGhlIGxlZ2VuZD8KKyAgICBp
ZiAoIWhlaWdodCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBo
ZWlnaHQudmFsdWUoKTsKKyAgICBpZiAoc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9Y
KQorICAgICAgICByZXN1bHQgLT0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKKyAg
ICBlbHNlCisgICAgICAgIHJlc3VsdCAtPSBpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOwor
ICAgIHJldHVybiBzdGQ6Om1heChMYXlvdXRVbml0KCksIHJlc3VsdCk7Cit9CisKK3ZvaWQgUmVu
ZGVyQmxvY2s6OnBhaW50RXhjbHVkZWRDaGlsZHJlbkluQm9yZGVyKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit7CisgICAgaWYgKCFpc0ZpZWxk
c2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBSZW5kZXJCb3gqIGJveCA9IGZpbmRG
aWVsZHNldExlZ2VuZCgpOworICAgIGlmICghYm94IHx8ICFib3gtPmlzRXhjbHVkZWRGcm9tTm9y
bWFsTGF5b3V0KCkgfHwgYm94LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IGZsaXBGb3JXcml0aW5nTW9k
ZUZvckNoaWxkKGJveCwgcGFpbnRPZmZzZXQpOworICAgIGJveC0+cGFpbnRBc0lubGluZUJsb2Nr
KHBhaW50SW5mbywgY2hpbGRQb2ludCk7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMjEz
MzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMCw2ICsyMzAsMjAgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFBhZ2VMb2dpY2FsT2Zmc2V0KExheW91
dFVuaXQpOwogCisgICAgLy8gRmllbGRzZXQgbGVnZW5kcyB0aGF0IGFyZSB0YWxsZXIgdGhhbiB0
aGUgZmllbGRzZXQgYm9yZGVyIGFkZCBpbiBpbnRyaW5zaWMgYm9yZGVyCisgICAgLy8gaW4gb3Jk
ZXIgdG8gZW5zdXJlIHRoYXQgY29udGVudCBnZXRzIHByb3Blcmx5IHB1c2hlZCBkb3duIGFjcm9z
cyBhbGwgbGF5b3V0IHN5c3RlbXMKKyAgICAvLyAoZmxleGJveCwgYmxvY2ssIGV0Yy4pCisgICAg
TGF5b3V0VW5pdCBpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpIGNvbnN0OworICAgIHZvaWQg
c2V0SW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoTGF5b3V0VW5pdCk7CisgICAgTGF5b3V0VW5p
dCBib3JkZXJUb3AoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRVbml0IGJvcmRlckJlZm9yZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVu
aXQgYWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhl
aWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIAogICAgIC8vIEFjY2Vzc29ycyBm
b3IgbG9naWNhbCB3aWR0aC9oZWlnaHQgYW5kIG1hcmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sncyBibG9jay1mbG93IGRpcmVjdGlvbi4KICAgICBlbnVtIEFwcGx5TGF5b3V0RGVsdGFNb2Rl
IHsgQXBwbHlMYXlvdXREZWx0YSwgRG9Ob3RBcHBseUxheW91dERlbHRhIH07CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdCB7
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQud2lkdGgoKSA6IGNoaWxk
LmhlaWdodCgpOyB9CkBAIC0zODMsNiArMzk3LDE0IEBAIHB1YmxpYzoKICAgICAvLyBjaGlsZHJl
bi4KICAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKIAor
ICAgIGVudW0gRmllbGRzZXRGaW5kTGVnZW5kT3B0aW9uIHsgRmllbGRzZXRJZ25vcmVGbG9hdGlu
Z09yT3V0T2ZGbG93LCBGaWVsZHNldEluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CisgICAg
UmVuZGVyQm94KiBmaW5kRmllbGRzZXRMZWdlbmQoRmllbGRzZXRGaW5kTGVnZW5kT3B0aW9uID0g
RmllbGRzZXRJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0RXhjbHVkZWRDaGlsZHJlbihib29sIC8qcmVsYXlvdXRDaGlsZHJlbiovKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY29tcHV0ZVByZWZlcnJlZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4o
TGF5b3V0VW5pdCYsIExheW91dFVuaXQmKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIGFkanVzdEJv
cmRlckJveFJlY3RGb3JQYWludGluZyhMYXlvdXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgTGF5b3V0
UmVjdCBwYWludFJlY3RUb0NsaXBPdXRGcm9tQm9yZGVyKGNvbnN0IExheW91dFJlY3QmKSBvdmVy
cmlkZTsKKyAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYWRkT3ZlcmZsb3dGcm9t
Q2hpbGRyZW4oKTsKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphdGlv
biB3aGVuIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24g
MjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
Y29tcHV0ZUNvbHVtbkNvdW50CiBib29sIFJlbmRlckJsb2NrRmxvdzo6d2lsbENyZWF0ZUNvbHVt
bnMoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdAogewog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIG5vdCBzdXBwb3NlZCB0byBjcmVhdGUgbXVs
dGljb2wgY29udGV4dC4KLSAgICBpZiAoaXNGaWVsZHNldCgpIHx8IGlzRmlsZVVwbG9hZENvbnRy
b2woKSB8fCBpc1RleHRDb250cm9sKCkgfHwgaXNMaXN0Qm94KCkpCisgICAgaWYgKGlzRmlsZVVw
bG9hZENvbnRyb2woKSB8fCBpc1RleHRDb250cm9sKCkgfHwgaXNMaXN0Qm94KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZmlyc3RDaGlsZCgpKQpAQCAtNjM3LDcgKzYzNyw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxkcmUKICAgICAvLyBGaWVs
ZHNldHMgbmVlZCB0byBmaW5kIHRoZWlyIGxlZ2VuZCBhbmQgcG9zaXRpb24gaXQgaW5zaWRlIHRo
ZSBib3JkZXIgb2YgdGhlIG9iamVjdC4KICAgICAvLyBUaGUgbGVnZW5kIHRoZW4gZ2V0cyBza2lw
cGVkIGR1cmluZyBub3JtYWwgbGF5b3V0LiBUaGUgc2FtZSBpcyB0cnVlIGZvciBydWJ5IHRleHQu
CiAgICAgLy8gSXQgZG9lc24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBsYXlvdXQgcHJv
Y2VzcyBidXQgaXMgaW5zdGVhZCBza2lwcGVkLgotICAgIFJlbmRlck9iamVjdCogY2hpbGRUb0V4
Y2x1ZGUgPSBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChyZWxheW91dENoaWxkcmVuKTsKKyAg
ICBsYXlvdXRFeGNsdWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAgICAgTGF5b3V0
VW5pdCBwcmV2aW91c0Zsb2F0TG9naWNhbEJvdHRvbSA9IDA7CiAgICAgbWF4RmxvYXRMb2dpY2Fs
Qm90dG9tID0gMDsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0QmxvY2tDaGlsZHJlCiAgICAgICAgIFJlbmRlckJveCYgY2hpbGQgPSAqbmV4dDsKICAgICAg
ICAgbmV4dCA9IGNoaWxkLm5leHRTaWJsaW5nQm94KCk7CiAKLSAgICAgICAgaWYgKGNoaWxkVG9F
eGNsdWRlID09ICZjaGlsZCkKKyAgICAgICAgaWYgKGNoaWxkLmlzRXhjbHVkZWRGcm9tTm9ybWFs
TGF5b3V0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIGNoaWxkLCBzaW5j
ZSBpdCB3aWxsIGJlIHBvc2l0aW9uZWQgYnkgdGhlIHNwZWNpYWxpemVkIHN1YmNsYXNzIChmaWVs
ZHNldHMgYW5kIHJ1YnkgcnVucykuCiAKICAgICAgICAgdXBkYXRlQmxvY2tDaGlsZERpcnR5Qml0
c0JlZm9yZUxheW91dChyZWxheW91dENoaWxkcmVuLCBjaGlsZCk7CkBAIC0zODc0LDExICszODc0
LDE1IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RDb21wdXRlZEZvbnQKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogCi1SZW5kZXJPYmplY3QqIFJlbmRlckJsb2Nr
Rmxvdzo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQor
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91
dENoaWxkcmVuKQogewotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVh
ZCA9IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpOworICAgIFJlbmRlckJsb2NrOjpsYXlvdXRFeGNs
dWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCisgICAgYXV0byogZmxvd1RocmVhZCA9
IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogICAgIGlmICghZmxvd1RocmVhZCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKworICAgIGZsb3dUaHJlYWQtPnNldElz
RXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KHRydWUpOwogCiAgICAgc2V0TG9naWNhbFRvcEZvckNo
aWxkKCpmbG93VGhyZWFkLCBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkpOwogCkBAIC0zOTA0LDEz
ICszOTA4LDExIEBAIFJlbmRlck9iamVjdCogUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRTcGUKICAg
ICAgICAgZmxvd1RocmVhZC0+c2V0TmVlZHNIZWlnaHRzUmVjYWxjdWxhdGlvbihmYWxzZSk7CiAg
ICAgfQogICAgIGRldGVybWluZUxvZ2ljYWxMZWZ0UG9zaXRpb25Gb3JDaGlsZCgqZmxvd1RocmVh
ZCk7Ci0KLSAgICByZXR1cm4gZmxvd1RocmVhZDsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpCiB7Ci0gICAgaWYgKG11bHRpQ29sdW1uRmxvd1RocmVhZCgpKQorICAgIGlmIChtdWx0aUNv
bHVtbkZsb3dUaHJlYWQoKSAmJiAoIWlzRmllbGRzZXQoKSB8fCAhbmV3Q2hpbGQtPmlzTGVnZW5k
KCkpKQogICAgICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPmFkZENoaWxkKG5l
d0NoaWxkLCBiZWZvcmVDaGlsZCk7CiAgICAgYXV0byogYmVmb3JlQ2hpbGRPclBsYWNlaG9sZGVy
ID0gYmVmb3JlQ2hpbGQ7CiAgICAgaWYgKGF1dG8qIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjksMTggKzQ2
OSwxOSBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNhY2hlUHJpb3JDaGFy
YWN0ZXJzSWZOZWVkZWQoY29uc3QgTGF6eUxpbmVCcmVha0l0ZXJhdG9yJikge307CiAgICAgCitw
cm90ZWN0ZWQ6CisgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVs
ZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uIEFsc28gdXNlZCBieSBtdWx0aS1j
b2x1bW4gbGF5b3V0IHRvIGhhbmRsZQorICAgIC8vIHRoZSBmbG93IHRocmVhZCBjaGlsZC4KKyAg
ICB2b2lkIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCAvKnJlbGF5b3V0Q2hpbGRyZW4qLykg
b3ZlcnJpZGU7CisgICAgCiBwcml2YXRlOgogICAgIGJvb2wgcmVjb21wdXRlTG9naWNhbFdpZHRo
QW5kQ29sdW1uV2lkdGgoKTsKICAgICBMYXlvdXRVbml0IGNvbHVtbkdhcCgpIGNvbnN0OwogICAg
IAogICAgIFJlbmRlckJsb2NrRmxvdyogcHJldmlvdXNTaWJsaW5nV2l0aE92ZXJoYW5naW5nRmxv
YXRzKGJvb2wmIHBhcmVudEhhc0Zsb2F0cykgY29uc3Q7CiAKLSAgICAvLyBDYWxsZWQgdG8gbGF5
IG91dCB0aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2YgYSBydWJ5
IHJ1bi4gQWxzbyB1c2VkIGJ5IG11bHRpLWNvbHVtbiBsYXlvdXQgdG8gaGFuZGxlCi0gICAgLy8g
dGhlIGZsb3cgdGhyZWFkIGNoaWxkLgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRT
cGVjaWFsRXhjbHVkZWRDaGlsZChib29sIC8qcmVsYXlvdXRDaGlsZHJlbiovKTsKLQogICAgIHZv
aWQgY2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdodENoYW5nZShib29sJiByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0JiBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCYgcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkKTsKLSAgICAKKwogICAgIHZvaWQgcGFpbnRJbmxpbmVDaGlsZHJlbihQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRGbG9h
dHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHByZXNlcnZlUGhhc2UgPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiAyMTMzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbgogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3Qg
PSBib3JkZXJCb3hSZWN0SW5SZWdpb24oY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkp
OwogICAgIHBhaW50UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOworICAgIGFkanVzdEJvcmRlckJv
eFJlY3RGb3JQYWludGluZyhwYWludFJlY3QpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8v
IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MjA5NzYzPi4gRm9yY2UgdGhlIHBhaW50
aW5nIGJvdW5kcyBvZiBjaGVja2JveGVzIGFuZCByYWRpbyBjb250cm9scyB0byBiZSBzcXVhcmUu
CkBAIC0xNTg1LDYgKzE1ODYsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNrKFBhaW50SW5m
byYgcGFpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5
b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKKyAgICBhZGp1c3RCb3JkZXJCb3hSZWN0Rm9y
UGFpbnRpbmcocGFpbnRSZWN0KTsKICAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBwYWlu
dFJlY3QpOwogfQogCkBAIC00NTY1LDcgKzQ1NjcsNyBAQCBib29sIFJlbmRlckJveDo6Y3JlYXRl
c05ld0Zvcm1hdHRpbmdDb250CiAKIGJvb2wgUmVuZGVyQm94Ojphdm9pZHNGbG9hdHMoKSBjb25z
dAogewotICAgIHJldHVybiAoaXNSZXBsYWNlZCgpICYmICFpc0Fub255bW91c0lubGluZUJsb2Nr
KCkpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4
dCgpOworICAgIHJldHVybiAoaXNSZXBsYWNlZCgpICYmICFpc0Fub255bW91c0lubGluZUJsb2Nr
KCkpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGlzRmllbGRzZXQoKSB8fCBjcmVhdGVzTmV3
Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmFkZFZpc3VhbEVmZmVj
dE92ZXJmbG93KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMzI4LDkgKzMyOCwxMSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0U2l6ZSBv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJv
b2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmco
TGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0
VW5pdCB3aWR0aCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29u
c3Q7CisKKyAgICAvLyBPdmVycmlkZGVuIGJ5IGZpZWxkc2V0cyB0byBzdWJ0cmFjdCBvdXQgdGhl
IGludHJpbnNpYyBib3JkZXIuCisgICAgdmlydHVhbCBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNp
emluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgewogICAgICAgICBMYXlvdXRVbml0IG1fYmVmb3JlOwpA
QCAtNjE4LDggKzYyMCwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZW5kZXJCb3gqIGZpbmRF
bmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc0dy
aWRJdGVtKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50KCktPmlzUmVuZGVyR3Jp
ZCgpOyB9Ci0gICAgYm9vbCBpc0ZsZXhJdGVtKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCkgJiYg
cGFyZW50KCktPmlzRmxleGlibGVCb3goKTsgfQorICAgIGJvb2wgaXNHcmlkSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc1JlbmRlckdyaWQoKSAmJiAhaXNFeGNs
dWRlZEZyb21Ob3JtYWxMYXlvdXQoKTsgfQorICAgIGJvb2wgaXNGbGV4SXRlbSgpIGNvbnN0IHsg
cmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94KCkgJiYgIWlzRXhjbHVk
ZWRGcm9tTm9ybWFsTGF5b3V0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCb3JkZXJC
b3hSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdCYpIHsgfTsKIAogcHJvdGVjdGVkOgogICAgIFJl
bmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTgsNiArMTcxOCwxMiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjCiAgICAgaWYgKHJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIHJlY3RUb0NsaXBPdXQgPSBwYWludFJl
Y3RUb0NsaXBPdXRGcm9tQm9yZGVyKHJlY3QpOworICAgIGJvb2wgYXBwbGllZENsaXBBbHJlYWR5
ID0gIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlKGdyYXBoaWNzQ29udGV4dCwgYXBwbGllZENsaXBBbHJlYWR5KTsKKyAgICBp
ZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQorICAgICAgICBncmFwaGljc0NvbnRleHQuY2xp
cE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3RUb0NsaXBPdXQsIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSkpOworCiAgICAgLy8gYm9yZGVyLWltYWdlIGlzIG5vdCBhZmZlY3Rl
ZCBieSBib3JkZXItcmFkaXVzLgogICAgIGlmIChwYWludE5pbmVQaWVjZUltYWdlKGdyYXBoaWNz
Q29udGV4dCwgcmVjdCwgc3R5bGUsIHN0eWxlLmJvcmRlckltYWdlKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0xODU2LDcgKzE4NjIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjCiAgICAgfQogCiAgICAgYm9vbCBjbGlwVG9PdXRlckJvcmRlciA9IG91dGVyQm9y
ZGVyLmlzUm91bmRlZCgpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRl
ciAmJiAhYXBwbGllZENsaXBBbHJlYWR5KTsKICAgICBpZiAoY2xpcFRvT3V0ZXJCb3JkZXIpIHsK
ICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAg
ICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5
TGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsOCBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGludWF0aW9uKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRl
cihjb25zdCBMYXlvdXRSZWN0JikgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9OworICAgIAogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlz
aW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICAgICAgaWYgKG1fY3VycmVudENoaWxkICYmIG5vdEZpcnN0T3JkaW5hbFZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgbV9vcmRpbmFsVmFsdWVzLmFkZChtX2N1cnJlbnRDaGlsZC0+
c3R5bGUoKS5ib3hPcmRpbmFsR3JvdXAoKSk7Ci0gICAgICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRD
aGlsZCB8fCAoIW1fY3VycmVudENoaWxkLT5pc0Fub255bW91cygpCisgICAgICAgIH0gd2hpbGUg
KCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRDaGlsZC0+aXNFeGNsdWRlZEZyb21Ob3JtYWxM
YXlvdXQoKSB8fCAoIW1fY3VycmVudENoaWxkLT5pc0Fub255bW91cygpCiAgICAgICAgICAgICAg
ICAgICYmIG1fY3VycmVudENoaWxkLT5zdHlsZSgpLmJveE9yZGluYWxHcm91cCgpICE9IG1fY3Vy
cmVudE9yZGluYWwpKTsKICAgICAgICAgcmV0dXJuIG1fY3VycmVudENoaWxkOwogICAgIH0KQEAg
LTMwMiw2ICszMDIsMTEgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91
dAogICAgIExheW91dFNpemUgb2xkTGF5b3V0RGVsdGEgPSB2aWV3KCkubGF5b3V0RGVsdGEoKTsK
ICNlbmRpZgogCisgICAgLy8gRmllbGRzZXRzIG5lZWQgdG8gZmluZCB0aGVpciBsZWdlbmQgYW5k
IHBvc2l0aW9uIGl0IGluc2lkZSB0aGUgYm9yZGVyIG9mIHRoZSBvYmplY3QuCisgICAgLy8gVGhl
IGxlZ2VuZCB0aGVuIGdldHMgc2tpcHBlZCBkdXJpbmcgbm9ybWFsIGxheW91dC4gVGhlIHNhbWUg
aXMgdHJ1ZSBmb3IgcnVieSB0ZXh0LgorICAgIC8vIEl0IGRvZXNuJ3QgZ2V0IGluY2x1ZGVkIGlu
IHRoZSBub3JtYWwgbGF5b3V0IHByb2Nlc3MgYnV0IGlzIGluc3RlYWQgc2tpcHBlZC4KKyAgICBs
YXlvdXRFeGNsdWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAgQ2hpbGRGcmFt
ZVJlY3RzIG9sZENoaWxkUmVjdHM7CiAgICAgYXBwZW5kQ2hpbGRGcmFtZVJlY3RzKHRoaXMsIG9s
ZENoaWxkUmVjdHMpOwogICAgIApAQCAtNDI3LDkgKzQzMiw2IEBAIHZvaWQgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXBw
bHkgdGhlIGNoaWxkJ3MgY3VycmVudCBsYXlvdXQgZGVsdGEuCiAgICAgICAgICAgICBsYXlvdXRD
aGlsZElmTmVlZGVkQXBwbHlpbmdEZWx0YShjaGlsZCwgY2hpbGRMYXlvdXREZWx0YSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIE5vdyBkbyB0aGUgbGF5b3V0LgotICAgICAgICAgICAg
bGF5b3V0Q2hpbGRJZk5lZWRlZEFwcGx5aW5nRGVsdGEoY2hpbGQsIGNoaWxkTGF5b3V0RGVsdGEp
OwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0
LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCQkFTRUxJTkUpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU2LDEzICsxNTYsMTMgQEAgUmVuZGVyRWxlbWVudDo6flJlbmRl
ckVsZW1lbnQoKQogICAgICAgICB2aWV3KCkudW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0
Q2FsbGJhY2soKnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlcmVyQ3JlYXRpb25UeXBlIGNyZWF0
aW9uVHlwZSkKIHsKICAgICAvLyBNaW5pbWFsIHN1cHBvcnQgZm9yIGNvbnRlbnQgcHJvcGVydGll
cyByZXBsYWNpbmcgYW4gZW50aXJlIGVsZW1lbnQuCiAgICAgLy8gV29ya3Mgb25seSBpZiB3ZSBo
YXZlIGV4YWN0bHkgb25lIHBpZWNlIG9mIGNvbnRlbnQgYW5kIGl0J3MgYSBVUkwuCiAgICAgLy8g
T3RoZXJ3aXNlIGFjdHMgYXMgaWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAg
IGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7Ci0g
ICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGlzPEltYWdlQ29u
dGVudERhdGE+KCpjb250ZW50RGF0YSkgJiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkpIHsK
KyAgICBpZiAoY3JlYXRpb25UeXBlID09IENyZWF0ZUFsbFJlbmRlcmVycyAmJiBjb250ZW50RGF0
YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIFN0eWxlOjps
b2FkUGVuZGluZ1Jlc291cmNlcyhzdHlsZSwgZWxlbWVudC5kb2N1bWVudCgpLCAmZWxlbWVudCk7
CiAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpLmltYWdlKCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJJbWFnZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5bGVJ
bWFnZSo+KCZzdHlsZUltYWdlKSk7CkBAIC0xNzUsMzIgKzE3NSwxNSBAQCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6CiAgICAgY2FzZSBDT05URU5UUzoKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBJTkxJTkU6Ci0gICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJJbmxpbmU+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAg
aWYgKGNyZWF0aW9uVHlwZSA9PSBDcmVhdGVBbGxSZW5kZXJlcnMpCisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7
CisgICAgICAgIEZBTExUSFJPVUdIOyAvLyBGaWVsZHNldHMgc2hvdWxkIG1ha2UgYSBibG9jayBm
bG93IGlmIGRpc3BsYXk6aW5saW5lIGlzIHNldC4KICAgICBjYXNlIEJMT0NLOgogICAgIGNhc2Ug
SU5MSU5FX0JMT0NLOgogICAgIGNhc2UgQ09NUEFDVDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgIGNh
c2UgTElTVF9JVEVNOgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlzdEl0
ZW0+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIFRBQkxFOgotICAgIGNhc2Ug
SU5MSU5FX1RBQkxFOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKLSAg
ICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlvbj4oZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpOwotICAgIGNhc2UgVEFCTEVfUk9XOgotICAgICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsK
LSAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0NPTFVNTjoKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ29sPihlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBUQUJMRV9DRUxMOgotICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyVGFibGVDZWxsPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAg
Y2FzZSBUQUJMRV9DQVBUSU9OOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
VGFibGVDYXB0aW9uPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBCT1g6Ci0g
ICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgY2Fz
ZSBGTEVYOgogICAgIGNhc2UgSU5MSU5FX0ZMRVg6CiAgICAgY2FzZSBXRUJLSVRfRkxFWDoKQEAg
LTIwOSw2ICsxOTIsMzQgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6
OgogICAgIGNhc2UgR1JJRDoKICAgICBjYXNlIElOTElORV9HUklEOgogICAgICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyR3JpZD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAg
IGNhc2UgQk9YOgorICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpOworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgaWYgKGNyZWF0aW9uVHlwZSA9PSBPbmx5Q3Jl
YXRlQmxvY2tBbmRGbGV4Ym94UmVuZGVyZXJzKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAgICAg
ICBzd2l0Y2ggKHN0eWxlLmRpc3BsYXkoKSkgeworICAgICAgICBjYXNlIFRBQkxFOgorICAgICAg
ICBjYXNlIElOTElORV9UQUJMRToKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJUYWJsZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAgICAgICBjYXNlIFRBQkxF
X0NFTEw6CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDZWxs
PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNhcHRpb24+KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6Cisg
ICAgICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgICAgICBjYXNlIFRBQkxFX0ZPT1RF
Ul9HUk9VUDoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVNl
Y3Rpb24+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9ST1c6
CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Cisg
ICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclRhYmxlQ29sPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTIwOCw5ICsxMjE5LDEwIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRBc0lubGlu
ZUJsb2NrKFAKICAgICAvLyBQYWludCBhbGwgcGhhc2VzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0
aGUgZWxlbWVudCBlc3RhYmxpc2hlZCBpdHMgb3duIHN0YWNraW5nIGNvbnRleHQuCiAgICAgLy8g
KFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40IG9uIGlubGluZSBibG9jay90YWJsZS9yZXBs
YWNlZCBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xIHNwZWNpZmljYXRpb24uKQogICAgIC8vIFRoaXMg
aXMgYWxzbyB1c2VkIGJ5IG90aGVyIGVsZW1lbnRzIChlLmcuIGZsZXggaXRlbXMgYW5kIGdyaWQg
aXRlbXMpLgotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikg
eworICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZVRvVXNlID0gaXNFeGNsdWRlZEFuZFBsYWNlZElu
Qm9yZGVyKCkgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlRm9yZWdyb3VuZDsKKyAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHBhaW50
KHBhaW50SW5mbywgY2hpbGRQb2ludCk7Ci0gICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKKyAgICBlbHNlIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gcGFpbnRQaGFzZVRvVXNlKSB7CiAgICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQsIHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAgICAgIHBhaW50
UGhhc2UoKnRoaXMsIFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsIHBhaW50SW5mbywg
Y2hpbGRQb2ludCk7CiAgICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhhc2VGbG9hdCwg
cGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKQEAgLTEyMTgsNyArMTIzMCw3IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6cGFpbnRBc0lubGluZUJsb2NrKFAKICAgICAgICAgcGFpbnRQaGFzZSgqdGhpcywg
UGFpbnRQaGFzZU91dGxpbmUsIHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAKICAgICAgICAgLy8g
UmVzZXQgfHBhaW50SW5mb3wgdG8gdGhlIG9yaWdpbmFsIHBoYXNlLgotICAgICAgICBwYWludElu
Zm8ucGhhc2UgPSBQYWludFBoYXNlRm9yZWdyb3VuZDsKKyAgICAgICAgcGFpbnRJbmZvLnBoYXNl
ID0gcGFpbnRQaGFzZVRvVXNlOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMTMzMDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4
IEBAIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2JqZWMKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgZW51bSBS
ZW5kZXJlckNyZWF0aW9uVHlwZSB7IENyZWF0ZUFsbFJlbmRlcmVycywgT25seUNyZWF0ZUJsb2Nr
QW5kRmxleGJveFJlbmRlcmVycyB9OworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJlckNyZWF0aW9uVHlw
ZSA9IENyZWF0ZUFsbFJlbmRlcmVycyk7CiAKICAgICBib29sIGhhc0luaXRpYWxpemVkU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRpYWxpemVkU3R5bGU7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiAyMTMzMDUp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMjIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQu
aCIKLQotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TExlZ2VuZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJQYWlu
dEluZm8uaCIKLSNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotUmVuZGVyRmllbGRzZXQ6
OlJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
Ci17Ci19Ci0KLXZvaWQgUmVuZGVyRmllbGRzZXQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKLXsKLSAgICBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCk7Ci0gICAgaWYgKFJlbmRlckJveCogbGVnZW5kID0gZmluZExlZ2VuZCgpKSB7Ci0gICAg
ICAgIGludCBsZWdlbmRNaW5XaWR0aCA9IGxlZ2VuZC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCk7Ci0KLSAgICAgICAgTGVuZ3RoIGxlZ2VuZE1hcmdpbkxlZnQgPSBsZWdlbmQtPnN0eWxlKCku
bWFyZ2luTGVmdCgpOwotICAgICAgICBMZW5ndGggbGVnZW5kTWFyZ2luUmlnaHQgPSBsZWdlbmQt
PnN0eWxlKCkubWFyZ2luTGVmdCgpOwotCi0gICAgICAgIGlmIChsZWdlbmRNYXJnaW5MZWZ0Lmlz
Rml4ZWQoKSkKLSAgICAgICAgICAgIGxlZ2VuZE1pbldpZHRoICs9IGxlZ2VuZE1hcmdpbkxlZnQu
dmFsdWUoKTsKLQotICAgICAgICBpZiAobGVnZW5kTWFyZ2luUmlnaHQuaXNGaXhlZCgpKQotICAg
ICAgICAgICAgbGVnZW5kTWluV2lkdGggKz0gbGVnZW5kTWFyZ2luUmlnaHQudmFsdWUoKTsKLQot
ICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoLCBsZWdlbmRNaW5XaWR0aCArIGhvcml6b250YWxCb3JkZXJBbmRQYWRk
aW5nRXh0ZW50KCkpOwotICAgIH0KLX0KLQotUmVuZGVyT2JqZWN0KiBSZW5kZXJGaWVsZHNldDo6
bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQotewotICAg
IFJlbmRlckJveCogYm94ID0gZmluZExlZ2VuZCgpOwotICAgIGlmICghYm94KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlckJveCYgbGVnZW5kID0gKmJveDsKLSAgICBpZiAo
cmVsYXlvdXRDaGlsZHJlbikKLSAgICAgICAgbGVnZW5kLnNldE5lZWRzTGF5b3V0KCk7Ci0gICAg
bGVnZW5kLmxheW91dElmTmVlZGVkKCk7Ci0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0Owot
ICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICBzd2l0
Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgQ0VOVEVSOgot
ICAgICAgICAgICAgbG9naWNhbExlZnQgPSAobG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsV2lkdGhG
b3JDaGlsZChsZWdlbmQpKSAvIDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBS
SUdIVDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJF
bmQoKSAtIHBhZGRpbmdFbmQoKSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0
ID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpICsgbWFyZ2luU3RhcnRGb3JDaGlsZChs
ZWdlbmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICBzd2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2Ug
TEVGVDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdT
dGFydCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0VOVEVSOiB7Ci0gICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgcGl4ZWwgZ29lcyB0byB0aGUgZW5k
IHNpZGUgaW4gUlRMIChzaW5jZSBpdCB3ZW50IHRvIHRoZSBlbmQgc2lkZQotICAgICAgICAgICAg
Ly8gaW4gTFRSKS4KLSAgICAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRXaWR0aCA9IGxvZ2lj
YWxXaWR0aCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKLSAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0ID0gY2VudGVyZWRXaWR0aCAtIGNlbnRlcmVkV2lkdGggLyAyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJTdGFydCgpIC0gcGFkZGluZ1N0YXJ0KCkg
LSBtYXJnaW5TdGFydEZvckNoaWxkKGxlZ2VuZCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdl
bmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRMb2dp
Y2FsTGVmdEZvckNoaWxkKGxlZ2VuZCwgbG9naWNhbExlZnQpOwotCi0gICAgTGF5b3V0VW5pdCBm
aWVsZHNldEJvcmRlckJlZm9yZSA9IGJvcmRlckJlZm9yZSgpOwotICAgIExheW91dFVuaXQgbGVn
ZW5kTG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChsZWdlbmQpOwotCi0gICAg
TGF5b3V0VW5pdCBsZWdlbmRMb2dpY2FsVG9wOwotICAgIExheW91dFVuaXQgY29sbGFwc2VkTGVn
ZW5kRXh0ZW50OwotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBsZWdl
bmQncyBtYXJnaW4gYmVmb3JlIHRvby4KLSAgICBpZiAoZmllbGRzZXRCb3JkZXJCZWZvcmUgPiBs
ZWdlbmRMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgIC8vIFRoZSA8bGVnZW5kPiBpcyBzbWFsbGVy
IHRoYW4gdGhlIGFzc29jaWF0ZWQgZmllbGRzZXQgYmVmb3JlIGJvcmRlcgotICAgICAgICAvLyBz
byB0aGUgbGF0dGVyIGRldGVybWluZXMgcG9zaXRpb25pbmcgb2YgdGhlIDxsZWdlbmQ+LiBUaGUg
c2l6aW5nIGRlcGVuZHMKLSAgICAgICAgLy8gb24gdGhlIGxlZ2VuZCdzIG1hcmdpbnMgYXMgd2Ug
d2FudCB0byBzdGlsbCBmb2xsb3cgdGhlIGF1dGhvcidzIGN1ZXMuCi0gICAgICAgIC8vIEZpcmVm
b3ggY29tcGxldGVseSBpZ25vcmVzIHRoZSBtYXJnaW5zIGluIHRoaXMgY2FzZSB3aGljaCBzZWVt
cyB3cm9uZy4KLSAgICAgICAgbGVnZW5kTG9naWNhbFRvcCA9IChmaWVsZHNldEJvcmRlckJlZm9y
ZSAtIGxlZ2VuZExvZ2ljYWxIZWlnaHQpIC8gMjsKLSAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0
ZW50ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oZmllbGRzZXRCb3JkZXJCZWZvcmUsIGxlZ2VuZExv
Z2ljYWxUb3AgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChsZWdl
bmQpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gbGVnZW5k
TG9naWNhbEhlaWdodCArIG1hcmdpbkFmdGVyRm9yQ2hpbGQobGVnZW5kKTsKLQotICAgIHNldExv
Z2ljYWxUb3BGb3JDaGlsZChsZWdlbmQsIGxlZ2VuZExvZ2ljYWxUb3ApOwotICAgIHNldExvZ2lj
YWxIZWlnaHQocGFkZGluZ0JlZm9yZSgpICsgY29sbGFwc2VkTGVnZW5kRXh0ZW50KTsKLQotICAg
IHJldHVybiAmbGVnZW5kOwotfQotCi1SZW5kZXJCb3gqIFJlbmRlckZpZWxkc2V0OjpmaW5kTGVn
ZW5kKEZpbmRMZWdlbmRPcHRpb24gb3B0aW9uKQotewotICAgIGZvciAoYXV0byYgbGVnZW5kIDog
Y2hpbGRyZW5PZlR5cGU8UmVuZGVyQm94PigqdGhpcykpIHsKLSAgICAgICAgaWYgKG9wdGlvbiA9
PSBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93ICYmIGxlZ2VuZC5pc0Zsb2F0aW5nT3JPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChpczxIVE1MTGVnZW5kRWxlbWVudD4obGVnZW5kLmVsZW1lbnQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gJmxlZ2VuZDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQg
UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKLXsKLSAgICBpZiAoIXBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXlv
dXRSZWN0IHBhaW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBSZW5kZXJCb3gqIGxl
Z2VuZCA9IGZpbmRMZWdlbmQoKTsKLSAgICBpZiAoIWxlZ2VuZCkKLSAgICAgICAgcmV0dXJuIFJl
bmRlckJsb2NrRmxvdzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0
KTsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAiYnQiIGJs
b2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCi0gICAgLy8gY2FzZXMgdGhlIGxlZ2VuZCBp
cyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3RpdmVseS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYKLSAg
ICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIExheW91
dFVuaXQgeU9mZiA9IChsZWdlbmQtPnkoKSA+IDApID8gTGF5b3V0VW5pdCgpIDogKGxlZ2VuZC0+
aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyOwotICAgICAgICBwYWludFJlY3Quc2V0SGVpZ2h0
KHBhaW50UmVjdC5oZWlnaHQoKSAtIHlPZmYpOwotICAgICAgICBwYWludFJlY3Quc2V0WShwYWlu
dFJlY3QueSgpICsgeU9mZik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTGF5b3V0VW5pdCB4T2Zm
ID0gKGxlZ2VuZC0+eCgpID4gMCkgPyBMYXlvdXRVbml0KCkgOiAobGVnZW5kLT53aWR0aCgpIC0g
Ym9yZGVyTGVmdCgpKSAvIDI7Ci0gICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChwYWludFJlY3Qu
d2lkdGgoKSAtIHhPZmYpOwotICAgICAgICBwYWludFJlY3Quc2V0WChwYWludFJlY3QueCgpICsg
eE9mZik7Ci0gICAgfQotCi0gICAgaWYgKCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZShwYWludEluZm8uY29udGV4dCgpKSkpCi0gICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwotICAgIHBhaW50RmlsbExheWVycyhw
YWludEluZm8sIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVjdCk7Ci0gICAg
cGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIEluc2V0KTsKLQot
ICAgIGlmICghc3R5bGUoKS5oYXNCb3JkZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IC8vIENyZWF0ZSBhIGNsaXBwaW5nIHJlZ2lvbiBhcm91bmQgdGhlIGxlZ2VuZCBhbmQgcGFpbnQg
dGhlIGJvcmRlciBhcyBub3JtYWwKLSAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB3
b3JrIHdpdGggInJsIiBhbmQgImJ0IiBibG9jayBmbG93IGRpcmVjdGlvbnMuICBJbiB0aG9zZQot
ICAgIC8vIGNhc2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBib3R0
b20gYm9yZGVycyByZXNwZWN0aXZlbHkuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3MjM2Ci0gICAgTGF5b3V0UmVjdCBjbGlwUmVjdDsKLSAgICBpZiAo
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGNsaXBSZWN0LnNl
dFgocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0WShw
YWludFJlY3QueSgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgobGVnZW5kLT53aWR0aCgp
KTsKLSAgICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxl
KCkuYm9yZGVyVG9wV2lkdGgoKSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5kLT5oZWlnaHQo
KSAtIGJvcmRlclRvcCgpKSAvIDIpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xpcFJlY3Qu
c2V0WChwYWludFJlY3QueCgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0WShwYWludFJlY3QueSgp
ICsgbGVnZW5kLT55KCkpOwotICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlv
dXRVbml0PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpLCBsZWdlbmQtPndpZHRoKCkpKTsKLSAg
ICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KGxlZ2VuZC0+aGVpZ2h0KCkpOwotICAgIH0KLSAgICBn
cmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLQotICAgIHBhaW50Qm9yZGVyKHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsKLX0KLQotdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCi17Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXlv
dXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7Ci0gICAg
UmVuZGVyQm94KiBsZWdlbmQgPSBmaW5kTGVnZW5kKCk7Ci0gICAgaWYgKCFsZWdlbmQpCi0gICAg
ICAgIHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OnBhaW50TWFzayhwYWludEluZm8sIHBhaW50T2Zm
c2V0KTsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAiYnQi
IGJsb2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCi0gICAgLy8gY2FzZXMgdGhlIGxlZ2Vu
ZCBpcyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3RpdmVs
eS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYK
LSAgICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgeU9mZiA9IChsZWdlbmQtPnkoKSA+IDApID8gTGF5b3V0VW5pdCgpIDogKGxlZ2Vu
ZC0+aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyOwotICAgICAgICBwYWludFJlY3QuZXhwYW5k
KDAsIC15T2ZmKTsKLSAgICAgICAgcGFpbnRSZWN0Lm1vdmUoMCwgeU9mZik7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgTGF5b3V0VW5pdCB4T2ZmID0gKGxlZ2VuZC0+eCgpID4gMCkgPyBMYXlvdXRV
bml0KCkgOiAobGVnZW5kLT53aWR0aCgpIC0gYm9yZGVyTGVmdCgpKSAvIDI7Ci0gICAgICAgIHBh
aW50UmVjdC5leHBhbmQoLXhPZmYsIDApOwotICAgICAgICBwYWludFJlY3QubW92ZSh4T2ZmLCAw
KTsKLSAgICB9Ci0KLSAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBwYWludFJlY3QpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmgJKHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWVsZHNldC5oCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAy
MDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRl
ckJsb2NrRmxvdy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxGaWVsZFNl
dEVsZW1lbnQ7Ci0KLWNsYXNzIFJlbmRlckZpZWxkc2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVu
dCYsIFJlbmRlclN0eWxlJiYpOwotCi0gICAgZW51bSBGaW5kTGVnZW5kT3B0aW9uIHsgSWdub3Jl
RmxvYXRpbmdPck91dE9mRmxvdywgSW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKLSAgICBS
ZW5kZXJCb3gqIGZpbmRMZWdlbmQoRmluZExlZ2VuZE9wdGlvbiA9IElnbm9yZUZsb2F0aW5nT3JP
dXRPZkZsb3cpOwotCi0gICAgSFRNTEZpZWxkU2V0RWxlbWVudCYgZmllbGRTZXRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVs
ZXRlOwotCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJGaWVsZFNldCI7IH0KLSAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxF
eGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhdm9p
ZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyRmllbGRzZXQsIGlzRmllbGRzZXQoKSkKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMTMzMDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSwxMiArNzksMTYgQEAgY29uc3QgY2hhciogUmVuZGVyRmxleGlibGVCb3g6OnJl
bmRlck5hbQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2lj
YWxXaWR0aCkgY29uc3QKIHsKKyAgICBMYXlvdXRVbml0IGNoaWxkTWluV2lkdGg7CisgICAgTGF5
b3V0VW5pdCBjaGlsZE1heFdpZHRoOworICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9IGNv
bXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgsIGNo
aWxkTWF4V2lkdGgpOworCiAgICAgLy8gRklYTUU6IFdlJ3JlIGlnbm9yaW5nIGZsZXgtYmFzaXMg
aGVyZSBhbmQgd2Ugc2hvdWxkbid0LiBXZSBjYW4ndCBzdGFydAogICAgIC8vIGhvbm9yaW5nIGl0
IHRob3VnaCB1bnRpbCB0aGUgZmxleCBzaG9ydGhhbmQgc3RvcHMgc2V0dGluZyBpdCB0byAwLiBT
ZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTE3
IGFuZAogICAgIC8vIGh0dHBzOi8vY3JidWcuY29tLzI0MDc2NS4KICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CisgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgY2hpbGQtPmlz
RXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgCiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luID0gbWFyZ2luSW50cmluc2ljTG9naWNhbFdp
ZHRoRm9yQ2hpbGQoKmNoaWxkKTsKQEAgLTExNyw2ICsxMjEsMTEgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpYwogICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4
KExheW91dFVuaXQoKSwgbWluTG9naWNhbFdpZHRoKTsKICAgICBtYXhMb2dpY2FsV2lkdGggPSBz
dGQ6Om1heChMYXlvdXRVbml0KCksIG1heExvZ2ljYWxXaWR0aCk7CiAgICAgCisgICAgaWYgKGhh
ZEV4Y2x1ZGVkQ2hpbGRyZW4pIHsKKyAgICAgICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgo
bWluTG9naWNhbFdpZHRoLCBjaGlsZE1pbldpZHRoKTsKKyAgICAgICAgbWF4TG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobWF4TG9naWNhbFdpZHRoLCBjaGlsZE1heFdpZHRoKTsKKyAgICB9CisKICAg
ICBMYXlvdXRVbml0IHNjcm9sbGJhcldpZHRoKHNjcm9sbGJhckxvZ2ljYWxXaWR0aCgpKTsKICAg
ICBtYXhMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAgICAgbWluTG9naWNhbFdpZHRo
ICs9IHNjcm9sbGJhcldpZHRoOwpAQCAtMTc0LDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8aW50
PiBSZW5kZXJGbGV4aWJsZUJveDo6ZmkKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBu
dWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNo
aWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVy
YXRvci5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKKyAgICAgICAgaWYgKG1fb3JkZXJJdGVyYXRvci5zaG91bGRTa2lwQ2hpbGQoY2hpbGQpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChhbGlnbm1lbnRGb3JDaGlsZCgqY2hp
bGQpID09IEl0ZW1Qb3NpdGlvbkJhc2VsaW5lICYmICFoYXNBdXRvTWFyZ2luc0luQ3Jvc3NBeGlz
KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGJhc2VsaW5lQ2hpbGQgPSBjaGlsZDsKQEAgLTI3NSw4
ICsyODQsMTQgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbAogCiAg
ICAgcHJlcGFyZU9yZGVySXRlcmF0b3JBbmRNYXJnaW5zKCk7CiAKKyAgICAvLyBGaWVsZHNldHMg
bmVlZCB0byBmaW5kIHRoZWlyIGxlZ2VuZCBhbmQgcG9zaXRpb24gaXQgaW5zaWRlIHRoZSBib3Jk
ZXIgb2YgdGhlIG9iamVjdC4KKyAgICAvLyBUaGUgbGVnZW5kIHRoZW4gZ2V0cyBza2lwcGVkIGR1
cmluZyBub3JtYWwgbGF5b3V0LiBUaGUgc2FtZSBpcyB0cnVlIGZvciBydWJ5IHRleHQuCisgICAg
Ly8gSXQgZG9lc24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBsYXlvdXQgcHJvY2VzcyBi
dXQgaXMgaW5zdGVhZCBza2lwcGVkLgorICAgIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4ocmVsYXlv
dXRDaGlsZHJlbik7CisKICAgICBDaGlsZEZyYW1lUmVjdHMgb2xkQ2hpbGRSZWN0czsKICAgICBh
cHBlbmRDaGlsZEZyYW1lUmVjdHMob2xkQ2hpbGRSZWN0cyk7CisKICAgICBsYXlvdXRGbGV4SXRl
bXMocmVsYXlvdXRDaGlsZHJlbik7CiAKICAgICBlbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpOwpAQCAtNTAyLDggKzUxNyw2IEBAIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQ28KICAgICByZXR1cm4gY29udGVudExvZ2ljYWxX
aWR0aCgpOwogfQogCi0vLyBNRVJHRVBPSU5UCi0KIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNpemUpCiB7
CiAgICAgLy8gSWYgd2UgaGF2ZSBhIGhvcml6b250YWwgZmxvdywgdGhhdCBtZWFucyB0aGUgbWFp
biBzaXplIGlzIHRoZSB3aWR0aC4KQEAgLTg0Niw5ICs4NTksMTAgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKAogICAgIFZlY3RvcjxGbGV4SXRlbT4gYWxsSXRlbXM7
CiAgICAgbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxk
ID0gbV9vcmRlckl0ZXJhdG9yLmN1cnJlbnRDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBtX29yZGVy
SXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpIHsKKyAgICAgICAgaWYgKG1fb3JkZXJJdGVyYXRvci5zaG91bGRTa2lwQ2hpbGQoY2hp
bGQpKSB7CiAgICAgICAgICAgICAvLyBPdXQtb2YtZmxvdyBjaGlsZHJlbiBhcmUgbm90IGZsZXgg
aXRlbXMsIHNvIHdlIHNraXAgdGhlbSBoZXJlLgotICAgICAgICAgICAgcHJlcGFyZUNoaWxkRm9y
UG9zaXRpb25lZExheW91dCgqY2hpbGQpOworICAgICAgICAgICAgaWYgKGNoaWxkLT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAgICBwcmVwYXJlQ2hpbGRGb3JQb3NpdGlv
bmVkTGF5b3V0KCpjaGlsZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBhbGxJdGVtcy5hcHBlbmQoY29uc3RydWN0RmxleEl0ZW0oKmNoaWxkLCByZWxheW91dENo
aWxkcmVuKSk7CkBAIC0xMDM5LDkgKzEwNTMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpw
cmVwYXJlT3JkZXJJdGVyCiAgICAgT3JkZXJJdGVyYXRvclBvcHVsYXRvciBwb3B1bGF0b3IobV9v
cmRlckl0ZXJhdG9yKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRC
b3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAg
cG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpOwotCi0gICAgICAgIGlmIChjaGlsZC0+aXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGls
ZCgqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQmVmb3JlIHJ1
bm5pbmcgdGhlIGZsZXggYWxnb3JpdGhtLCAnYXV0bycgaGFzIGEgbWFyZ2luIG9mIDAuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCShyZXZpc2lvbiAyMTMzMDUp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MSw2ICsyNDEsMTEgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29s
IHJlbGF5bwogICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CiAgICAgdXBkYXRlTG9naWNhbFdpZHRo
KCk7CiAKKyAgICAvLyBGaWVsZHNldHMgbmVlZCB0byBmaW5kIHRoZWlyIGxlZ2VuZCBhbmQgcG9z
aXRpb24gaXQgaW5zaWRlIHRoZSBib3JkZXIgb2YgdGhlIG9iamVjdC4KKyAgICAvLyBUaGUgbGVn
ZW5kIHRoZW4gZ2V0cyBza2lwcGVkIGR1cmluZyBub3JtYWwgbGF5b3V0LiBUaGUgc2FtZSBpcyB0
cnVlIGZvciBydWJ5IHRleHQuCisgICAgLy8gSXQgZG9lc24ndCBnZXQgaW5jbHVkZWQgaW4gdGhl
IG5vcm1hbCBsYXlvdXQgcHJvY2VzcyBidXQgaXMgaW5zdGVhZCBza2lwcGVkLgorICAgIGxheW91
dEV4Y2x1ZGVkQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbik7CisKICAgICBwbGFjZUl0ZW1zT25H
cmlkKG1fZ3JpZCwgVHJhY2tTaXppbmcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgbG9n
aWNhbCB3aWR0aCBpcyBhbHdheXMgZGVmaW5pdGUgYXMgdGhlIGFib3ZlIGNhbGwgdG8gdXBkYXRl
TG9naWNhbFdpZHRoKCkKQEAgLTM5MywxMiArMzk4LDIxIEBAIExheW91dFVuaXQgUmVuZGVyR3Jp
ZDo6Z3V0dGVyc1NpemUoY29uc3QKIAogdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1h
eExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKKyAgICBMYXlvdXRVbml0IGNoaWxkTWluV2lkdGg7Cisg
ICAgTGF5b3V0VW5pdCBjaGlsZE1heFdpZHRoOworICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJl
biA9IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lk
dGgsIGNoaWxkTWF4V2lkdGgpOworICAgIAogICAgIEdyaWQgZ3JpZChjb25zdF9jYXN0PFJlbmRl
ckdyaWQmPigqdGhpcykpOwogICAgIHBsYWNlSXRlbXNPbkdyaWQoZ3JpZCwgSW50cmluc2ljU2l6
ZUNvbXB1dGF0aW9uKTsKIAogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBhbGdvcml0aG0o
dGhpcywgZ3JpZCk7CiAgICAgY29tcHV0ZVRyYWNrU2l6ZXNGb3JJbmRlZmluaXRlU2l6ZShhbGdv
cml0aG0sIEZvckNvbHVtbnMsIGdyaWQsIG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRo
KTsKIAorICAgIGlmIChoYWRFeGNsdWRlZENoaWxkcmVuKSB7CisgICAgICAgIG1pbkxvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgY2hpbGRNaW5XaWR0aCk7CisgICAgICAg
IG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxXaWR0aCwgY2hpbGRNYXhXaWR0
aCk7CisgICAgfQorCiAgICAgTGF5b3V0VW5pdCBzY3JvbGxiYXJXaWR0aCA9IGludHJpbnNpY1Nj
cm9sbGJhckxvZ2ljYWxXaWR0aCgpOwogICAgIG1pbkxvZ2ljYWxXaWR0aCArPSBzY3JvbGxiYXJX
aWR0aDsKICAgICBtYXhMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CkBAIC01ODEsNyAr
NTk1LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWQmIAogICAgIFZl
Y3RvcjxSZW5kZXJCb3gqPiBzcGVjaWZpZWRNYWpvckF4aXNBdXRvR3JpZEl0ZW1zOwogICAgIGJv
b2wgaGFzQW55T3J0aG9nb25hbEdyaWRJdGVtID0gZmFsc2U7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA9IGdyaWQub3JkZXJJdGVyYXRvcigpLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGdyaWQub3Jk
ZXJJdGVyYXRvcigpLm5leHQoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQorICAgICAgICBpZiAoZ3JpZC5vcmRlckl0ZXJhdG9yKCkuc2hvdWxkU2tpcENo
aWxkKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGhhc0FueU9ydGhv
Z29uYWxHcmlkSXRlbSA9IGhhc0FueU9ydGhvZ29uYWxHcmlkSXRlbSB8fCBpc09ydGhvZ29uYWxD
aGlsZCgqY2hpbGQpOwpAQCAtNjI0LDcgKzYzOCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJ
dGVtc09uR3JpZChHcmlkJiAKIAogI2lmIEVOQUJMRShBU1NFUlQpCiAgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGdyaWQub3JkZXJJdGVyYXRvcigpLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGdyaWQu
b3JkZXJJdGVyYXRvcigpLm5leHQoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoZ3JpZC5vcmRlckl0ZXJhdG9yKCkuc2hvdWxkU2tp
cENoaWxkKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEdyaWRBcmVh
IGFyZWEgPSBncmlkLmdyaWRJdGVtQXJlYSgqY2hpbGQpOwpAQCAtNjQ0LDExICs2NTgsOSBAQCB2
b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kCiAgICAgdW5zaWduZWQgbWF4
aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1ucyk7CiAKICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CisgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpOwot
CisgICAgICAgIAogICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKHN0eWxlKCksICpjaGlsZCwg
Rm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwogICAgICAgICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0lu
ZGVmaW5pdGUoKSkgewogICAgICAgICAgICAgc21hbGxlc3RSb3dTdGFydCA9IHN0ZDo6bWluKHNt
YWxsZXN0Um93U3RhcnQsIHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7CkBA
IC04ODQsOCArODk2LDEwIEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKICAg
ICBwb3B1bGF0ZUdyaWRQb3NpdGlvbnNGb3JEaXJlY3Rpb24oRm9yUm93cyk7CiAKICAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgICAgIHByZXBhcmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQo
KmNoaWxkKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX2dyaWQub3JkZXJJdGVyYXRvcigpLnNo
b3VsZFNraXBDaGlsZChjaGlsZCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAgcHJlcGFyZUNoaWxkRm9yUG9zaXRpb25l
ZExheW91dCgqY2hpbGQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZC5jcHAJKHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpwb3B1
bGEKICAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIodmlldygpKTsK
ICAgICBSZW5kZXJUcmVlSW50ZXJuYWxNdXRhdGlvblNjb3BlIHJlcGFyZW50aW5nSXNPbih2aWV3
KCkpOwogICAgIG11bHRpY29sQ29udGFpbmVyLT5tb3ZlQ2hpbGRyZW5Ubyh0aGlzLCBtdWx0aWNv
bENvbnRhaW5lci0+Zmlyc3RDaGlsZCgpLCB0aGlzLCB0cnVlKTsKKyAgICAKKyAgICBpZiAobXVs
dGljb2xDb250YWluZXItPmlzRmllbGRzZXQoKSkgeworICAgICAgICAvLyBLZWVwIGxlZ2VuZHMg
b3V0IG9mIHRoZSBmbG93IHRocmVhZC4KKyAgICAgICAgZm9yIChhdXRvJiBib3ggOiBjaGlsZHJl
bk9mVHlwZTxSZW5kZXJCb3g+KCp0aGlzKSkgeworICAgICAgICAgICAgaWYgKGJveC5pc0xlZ2Vu
ZCgpKQorICAgICAgICAgICAgICAgIG1vdmVDaGlsZFRvKG11bHRpY29sQ29udGFpbmVyLCAmYm94
LCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZs
b3dUaHJlYWQ6OmV2YWN1YXRlQW5kRGVzdHJveSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAJKHJldmlzaW9uIDIxMzMwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxOSw3ICszMTksNyBAQCBib29sIFJlbmRlck11bHRpQ29sdW1uU2V0
OjpyZXF1aXJlc0JhbGFuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChSZW5kZXJC
b3gqIG5leHQgPSBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6Om5leHRDb2x1bW5TZXRPclNw
YW5uZXJTaWJsaW5nT2YodGhpcykpIHsKLSAgICAgICAgaWYgKCFuZXh0LT5pc1JlbmRlck11bHRp
Q29sdW1uU2V0KCkpIHsKKyAgICAgICAgaWYgKCFuZXh0LT5pc1JlbmRlck11bHRpQ29sdW1uU2V0
KCkgJiYgIW5leHQtPmlzTGVnZW5kKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZvbGxv
d2VkIGJ5IGEgc3Bhbm5lciwgd2UgbmVlZCB0byBiYWxhbmNlLgogICAgICAgICAgICAgQVNTRVJU
KG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5maW5kQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKG5l
eHQpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNiAr
MTU4LDEyIEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0xlZ2VuZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUobGVnZW5kVGFnKTsKIH0KIAorICAgIAorYm9v
bCBSZW5kZXJPYmplY3Q6OmlzRmllbGRzZXQoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkg
JiYgbm9kZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKTsKK30KKwogYm9vbCBSZW5kZXJPYmpl
Y3Q6OmlzSFRNTE1hcnF1ZWUoKSBjb25zdAogewogICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgp
LT5yZW5kZXJlcigpID09IHRoaXMgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKG1hcnF1ZWVUYWcpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjEz
MzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
RGV0YWlsc01hcmtlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlVXBsb2FkQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTQ0OCw2ICs0NDgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
T3V0bGluZUF1dG9BbmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVE
YXRhKCkgJiYgcmFyZURhdGEoKS5oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCk7IH0KICAgICBib29s
IGlzUmVnaXN0ZXJlZEZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soKSB7IHJldHVybiBtX2Jp
dGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaXNSZWdpc3RlcmVkRm9yVmlzaWJs
ZUluVmlld3BvcnRDYWxsYmFjaygpOyB9CiAKKyAgICBib29sIGlzRXhjbHVkZWRGcm9tTm9ybWFs
TGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNFeGNsdWRlZEZyb21Ob3JtYWxM
YXlvdXQoKTsgfQorICAgIHZvaWQgc2V0SXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoYm9vbCBl
eGNsdWRlZCkgeyBtX2JpdGZpZWxkcy5zZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChleGNs
dWRlZCk7IH0KKyAgICBib29sIGlzRXhjbHVkZWRBbmRQbGFjZWRJbkJvcmRlcigpIGNvbnN0IHsg
cmV0dXJuIGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkgJiYgaXNMZWdlbmQoKTsgfQorCiAg
ICAgZW51bSBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIHsKICAgICAgICAgVmlzaWJpbGl0eVVua25v
d24sCiAgICAgICAgIFZpc2libGVJblZpZXdwb3J0LApAQCAtOTAxLDYgKzkwNSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAsIG1faGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KGZhbHNlKQog
ICAgICAgICAgICAgLCBtX2V2ZXJIYWRMYXlvdXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fY2hp
bGRyZW5JbmxpbmUoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNFeGNsdWRlZEZyb21Ob3JtYWxM
YXlvdXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcG9zaXRpb25lZFN0YXRlKElzU3RhdGljYWxs
eVBvc2l0aW9uZWQpCiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uTm9u
ZSkKICAgICAgICAgICAgICwgbV9mbG93VGhyZWFkU3RhdGUoTm90SW5zaWRlRmxvd1RocmVhZCkK
QEAgLTkzNiw2ICs5NDEsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIGZyb20gUmVuZGVyQmxv
Y2sKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoY2hpbGRyZW5JbmxpbmUsIENoaWxkcmVu
SW5saW5lKTsKKyAgICAgICAgCisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzRXhjbHVk
ZWRGcm9tTm9ybWFsTGF5b3V0LCBJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uZWRTdGF0ZSA6IDI7IC8vIFBvc2l0
aW9uZWRTdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmNwcAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsMTcgKzIxMywxOSBAQCBSZW5kZXJS
dWJ5UnVuKiBSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhCiAgICAgcmV0dXJuIHJlbmRlcmVyOwog
fQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclJ1YnlSdW46OmxheW91dFNwZWNpYWxFeGNsdWRlZENo
aWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3ZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0RXhj
bHVkZWRDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiB7CisgICAgUmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAgU3Rh
Y2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwogICAgIC8vIERvbid0
IGJvdGhlciBwb3NpdGlvbmluZyB0aGUgUmVuZGVyUnVieVJ1biB5ZXQuCiAgICAgUmVuZGVyUnVi
eVRleHQqIHJ0ID0gcnVieVRleHQoKTsKICAgICBpZiAoIXJ0KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuOworICAgIHJ0LT5zZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCh0
cnVlKTsKICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgcnQtPnNldENoaWxkTmVl
ZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICBydC0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICBy
ZXR1cm4gcnQ7CiB9CiAKIHZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0KCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAkocmV2aXNpb24gMjEzMzA1KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlKCkg
Y29uc3Q7CiAgICAgUmVuZGVyUnVieUJhc2UqIHJ1YnlCYXNlU2FmZSgpOyAvLyBjcmVhdGVzIHRo
ZSBiYXNlIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogCi0gICAgUmVuZGVyT2JqZWN0KiBs
YXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRl
OworICAgIHZvaWQgbGF5b3V0RXhjbHVkZWRDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4p
IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUhlaWdodCA9IDApIG92
ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJ
KHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIFJlbmRlclRhYmxl
OjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8s
IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpOwogfQogCi12b2lkIFJlbmRlclRhYmxl
OjpzdWJ0cmFjdENhcHRpb25SZWN0KExheW91dFJlY3QmIHJlY3QpIGNvbnN0Cit2b2lkIFJlbmRl
clRhYmxlOjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdCYgcmVjdCkK
IHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYXB0aW9ucy5zaXplKCk7IGkrKykg
ewogICAgICAgICBMYXlvdXRVbml0IGNhcHRpb25Mb2dpY2FsSGVpZ2h0ID0gbV9jYXB0aW9uc1tp
XS0+bG9naWNhbEhlaWdodCgpICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2luQmVmb3JlKCkgKyBtX2Nh
cHRpb25zW2ldLT5tYXJnaW5BZnRlcigpOwpAQCAtNzY4LDYgKzc2OCw4IEBAIHZvaWQgUmVuZGVy
VGFibGU6OnN1YnRyYWN0Q2FwdGlvblJlY3QoTGEKICAgICAgICAgICAgICAgICByZWN0Lm1vdmUo
Y2FwdGlvbkxvZ2ljYWxIZWlnaHQsIDApOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIFJl
bmRlckJsb2NrOjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcocmVjdCk7CiB9CiAKIHZv
aWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTc3Niw4ICs3NzgsOCBAQCB2b2lk
IFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRpb25zKFBhCiAgICAgICAgIHJldHVybjsKIAog
ICAgIExheW91dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBzdWJ0cmFjdENh
cHRpb25SZWN0KHJlY3QpOwotCisgICAgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKHJl
Y3QpOworICAgIAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9
IGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsK
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChyZWN0LmxvY2F0
aW9uKCksIGJsZWVkQXZvaWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZv
LCByZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwpAQCAtNzk0LDcgKzc5Niw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OnBhaW50TWFzayhQYWludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5
b3V0UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwotICAgIHN1YnRyYWN0Q2FwdGlvblJl
Y3QocmVjdCk7CisgICAgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKHJlY3QpOwogCiAg
ICAgcGFpbnRNYXNrSW1hZ2VzKHBhaW50SW5mbywgcmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICsz
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIGZp
bmFsOwogCi0gICAgdm9pZCBzdWJ0cmFjdENhcHRpb25SZWN0KExheW91dFJlY3QmKSBjb25zdDsK
KyAgICB2b2lkIGFkanVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyhMYXlvdXRSZWN0Jikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHJlY2FsY0NvbGxhcHNlZEJvcmRlcnMoKTsKICAgICB2b2lkIHJl
Y2FsY1NlY3Rpb25zKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiAr
MTMwNyw4IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb24KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KHBhaW50
T2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpOworICAgIGFkanVzdEJvcmRlckJveFJlY3RGb3JQ
YWludGluZyhwYWludFJlY3QpOworCiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWlu
dFJlY3QsIHN0eWxlKCksIE5vcm1hbCk7CiAgICAgCiAgICAgLy8gUGFpbnQgb3VyIGNlbGwgYmFj
a2dyb3VuZC4KQEAgLTEzMjksNyArMTMzMSwxMCBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFp
bnRNYXNrKFBhaW50SW5mCiAgICAgaWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYg
c3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAKLSAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpKTsKKyAgICBMYXlvdXRSZWN0IHBhaW50UmVj
dCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSk7CisgICAgYWRq
dXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKHBhaW50UmVjdCk7CisKKyAgICBwYWludE1hc2tJ
bWFnZXMocGFpbnRJbmZvLCBwYWludFJlY3QpOwogfQogCiBib29sIFJlbmRlclRhYmxlQ2VsbDo6
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50Jiwg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNp
b24gMjEzMzA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDE5ICsxOTcsMjIgQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdAogICAgICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVj
dChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJU
ZXh0Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxk
cmVuKQordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbihib29s
IHJlbGF5b3V0Q2hpbGRyZW4pCiB7CisgICAgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRFeGNsdWRl
ZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9s
ZGVyID0gdGV4dEZvcm1Db250cm9sRWxlbWVudCgpLnBsYWNlaG9sZGVyRWxlbWVudCgpOwogICAg
IFJlbmRlckVsZW1lbnQqIHBsYWNlaG9sZGVyUmVuZGVyZXIgPSBwbGFjZWhvbGRlciA/IHBsYWNl
aG9sZGVyLT5yZW5kZXJlcigpIDogMDsKICAgICBpZiAoIXBsYWNlaG9sZGVyUmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CisgICAgcGxhY2Vob2xkZXJSZW5kZXJl
ci0+c2V0SXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQodHJ1ZSk7CisKICAgICBpZiAocmVsYXlv
dXRDaGlsZHJlbikgewogICAgICAgICAvLyBUaGUgbWFya1BhcmVudHMgYXJndW1lbnRzIHNob3Vs
ZCBiZSBmYWxzZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMKICAgICAgICAgLy8gY2FsbGVkIGZy
b20gbGF5b3V0KCkgb2YgdGhlIHBhcmVudCBhbmQgdGhlIHBsYWNlaG9sZGVyIGxheW91dCBkb2Vz
bid0CiAgICAgICAgIC8vIGFmZmVjdCB0aGUgcGFyZW50IGxheW91dC4KICAgICAgICAgcGxhY2Vo
b2xkZXJSZW5kZXJlci0+c2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgIH0K
LSAgICByZXR1cm4gcGxhY2Vob2xkZXJSZW5kZXJlcjsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShy
ZXZpc2lvbiAyMTMzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0
IGxpbmVIZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3QgPSAwOwogCiAg
ICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXRFeGNsdWRlZENoaWxkcmVu
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBl
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDIx
MzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDEzIEBAIGludCBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmUKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGlu
ZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlv
bk1vZGUpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjps
YXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCit2b2lkIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKIHsKLSAgICBSZW5kZXJPYmplY3QqIHBsYWNlaG9sZGVyUmVuZGVyZXIg
PSBSZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQocmVsYXlvdXRD
aGlsZHJlbik7CisgICAgUmVuZGVyVGV4dENvbnRyb2w6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4o
cmVsYXlvdXRDaGlsZHJlbik7CisgICAgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyID0gdGV4dEZv
cm1Db250cm9sRWxlbWVudCgpLnBsYWNlaG9sZGVyRWxlbWVudCgpOworICAgIFJlbmRlckVsZW1l
bnQqIHBsYWNlaG9sZGVyUmVuZGVyZXIgPSBwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyLT5yZW5k
ZXJlcigpIDogMDsKKyAgICBpZiAoIXBsYWNlaG9sZGVyUmVuZGVyZXIpCisgICAgICAgIHJldHVy
bjsKICAgICBpZiAoaXM8UmVuZGVyQm94PihwbGFjZWhvbGRlclJlbmRlcmVyKSkgewogICAgICAg
ICBhdXRvJiBwbGFjZWhvbGRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnBsYWNlaG9sZGVy
UmVuZGVyZXIpOwogICAgICAgICBwbGFjZWhvbGRlckJveC5tdXRhYmxlU3R5bGUoKS5zZXRMb2dp
Y2FsV2lkdGgoTGVuZ3RoKGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIHBsYWNlaG9sZGVyQm94LmJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgRml4ZWQpKTsKQEAgLTk3LDcgKzEwMSw2IEBA
IFJlbmRlck9iamVjdCogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUKICAgICAgICAgcGxhY2Vo
b2xkZXJCb3guc2V0WChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpKTsKICAgICAgICAgcGxh
Y2Vob2xkZXJCb3guc2V0WShib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CiAgICAgfQotICAg
IHJldHVybiBwbGFjZWhvbGRlclJlbmRlcmVyOwogfQogICAgIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJ
KHJldmlzaW9uIDIxMzMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHByaXZh
dGU6CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlbmRlck9iamVjdCogbGF5b3V0U3BlY2lh
bEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsKKyAgICB2b2lk
IGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsK
IH07CiAKIGlubGluZSBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSogSFRNTFRleHRBcmVhRWxl
bWVudDo6cmVuZGVyZXIoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gMjEzMzA1KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIs
MTQgKzI3MiwzMCBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGJveCA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihvKTsKLSAgICAgICAgaWYgKGJv
eC5ib3JkZXJUb3AoKSB8fCBib3guYm9yZGVyUmlnaHQoKSB8fCBib3guYm9yZGVyQm90dG9tKCkg
fHwgYm94LmJvcmRlckxlZnQoKSkgeworICAgICAgICBMYXlvdXRVbml0IGJvcmRlclRvcCA9IGJv
eC5ib3JkZXJUb3AoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCA9IGJveC5ib3Jk
ZXJSaWdodCgpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRvbSA9IGJveC5ib3JkZXJC
b3R0b20oKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJMZWZ0ID0gYm94LmJvcmRlckxlZnQo
KTsKKyAgICAgICAgaWYgKGJveC5pc0ZpZWxkc2V0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGJveCk7CisgICAgICAgICAgICBpZiAo
by5zdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkKKyAgICAg
ICAgICAgICAgICBib3JkZXJUb3AgLT0gYmxvY2suaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQo
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG8uc3R5bGUoKS53cml0aW5nTW9kZSgpID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGUpCisgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tIC09IGJsb2Nr
LmludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCk7CisgICAgICAgICAgICBlbHNlIGlmIChvLnN0
eWxlKCkud3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQorICAgICAgICAg
ICAgICAgIGJvcmRlckxlZnQgLT0gYmxvY2suaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKG8uc3R5bGUoKS53cml0aW5nTW9kZSgpID09IFJpZ2h0VG9M
ZWZ0V3JpdGluZ01vZGUpCisgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQgLT0gYmxvY2suaW50
cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAg
ICAgIGlmIChib3JkZXJUb3AgfHwgYm9yZGVyUmlnaHQgfHwgYm9yZGVyQm90dG9tIHx8IGJvcmRl
ckxlZnQpIHsKICAgICAgICAgICAgIHRzIDw8ICIgW2JvcmRlcjoiOwogCiAgICAgICAgICAgICBC
b3JkZXJWYWx1ZSBwcmV2Qm9yZGVyID0gby5zdHlsZSgpLmJvcmRlclRvcCgpOwotICAgICAgICAg
ICAgaWYgKCFib3guYm9yZGVyVG9wKCkpCisgICAgICAgICAgICBpZiAoIWJvcmRlclRvcCkKICAg
ICAgICAgICAgICAgICB0cyA8PCAiIG5vbmUiOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgdHMgPDwgIiAoIiA8PCBib3guYm9yZGVyVG9wKCkgPDwgInB4ICI7CisgICAgICAg
ICAgICAgICAgdHMgPDwgIiAoIiA8PCBib3JkZXJUb3AgPDwgInB4ICI7CiAgICAgICAgICAgICAg
ICAgcHJpbnRCb3JkZXJTdHlsZSh0cywgby5zdHlsZSgpLmJvcmRlclRvcFN0eWxlKCkpOwogICAg
ICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJUb3BDb2xvcigpOwogICAg
ICAgICAgICAgICAgIGlmICghY29sLmlzVmFsaWQoKSkKQEAgLTI4OSwxMCArMzA1LDEwIEBAIHZv
aWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QKIAogICAgICAgICAgICAgaWYg
KG8uc3R5bGUoKS5ib3JkZXJSaWdodCgpICE9IHByZXZCb3JkZXIpIHsKICAgICAgICAgICAgICAg
ICBwcmV2Qm9yZGVyID0gby5zdHlsZSgpLmJvcmRlclJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFib3guYm9yZGVyUmlnaHQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJvcmRlclJpZ2h0
KQogICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIG5vbmUiOwogICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICgiIDw8IGJveC5ib3JkZXJSaWdodCgp
IDw8ICJweCAiOworICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICgiIDw8IGJvcmRlclJpZ2h0
IDw8ICJweCAiOwogICAgICAgICAgICAgICAgICAgICBwcmludEJvcmRlclN0eWxlKHRzLCBvLnN0
eWxlKCkuYm9yZGVyUmlnaHRTdHlsZSgpKTsKICAgICAgICAgICAgICAgICAgICAgQ29sb3IgY29s
ID0gby5zdHlsZSgpLmJvcmRlclJpZ2h0Q29sb3IoKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb2wuaXNWYWxpZCgpKQpAQCAtMzAzLDEwICszMTksMTAgQEAgdm9pZCBSZW5kZXJUcmVlQXNU
ZXh0Ojp3cml0ZVJlbmRlck9iamVjdAogCiAgICAgICAgICAgICBpZiAoby5zdHlsZSgpLmJvcmRl
ckJvdHRvbSgpICE9IHByZXZCb3JkZXIpIHsKICAgICAgICAgICAgICAgICBwcmV2Qm9yZGVyID0g
Ym94LnN0eWxlKCkuYm9yZGVyQm90dG9tKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFib3guYm9y
ZGVyQm90dG9tKCkpCisgICAgICAgICAgICAgICAgaWYgKCFib3JkZXJCb3R0b20pCiAgICAgICAg
ICAgICAgICAgICAgIHRzIDw8ICIgbm9uZSI7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRzIDw8ICIgKCIgPDwgYm94LmJvcmRlckJvdHRvbSgpIDw8ICJweCAi
OworICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICgiIDw8IGJvcmRlckJvdHRvbSA8PCAicHgg
IjsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRCb3JkZXJTdHlsZSh0cywgby5zdHlsZSgpLmJv
cmRlckJvdHRvbVN0eWxlKCkpOwogICAgICAgICAgICAgICAgICAgICBDb2xvciBjb2wgPSBvLnN0
eWxlKCkuYm9yZGVyQm90dG9tQ29sb3IoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2wu
aXNWYWxpZCgpKQpAQCAtMzE3LDEwICszMzMsMTAgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3
cml0ZVJlbmRlck9iamVjdAogCiAgICAgICAgICAgICBpZiAoby5zdHlsZSgpLmJvcmRlckxlZnQo
KSAhPSBwcmV2Qm9yZGVyKSB7CiAgICAgICAgICAgICAgICAgcHJldkJvcmRlciA9IG8uc3R5bGUo
KS5ib3JkZXJMZWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFib3guYm9yZGVyTGVmdCgpKQor
ICAgICAgICAgICAgICAgIGlmICghYm9yZGVyTGVmdCkKICAgICAgICAgICAgICAgICAgICAgdHMg
PDwgIiBub25lIjsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
dHMgPDwgIiAoIiA8PCBib3guYm9yZGVyTGVmdCgpIDw8ICJweCAiOworICAgICAgICAgICAgICAg
ICAgICB0cyA8PCAiICgiIDw8IGJvcmRlckxlZnQgPDwgInB4ICI7CiAgICAgICAgICAgICAgICAg
ICAgIHByaW50Qm9yZGVyU3R5bGUodHMsIG8uc3R5bGUoKS5ib3JkZXJMZWZ0U3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJMZWZ0Q29sb3Io
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2wuaXNWYWxpZCgpKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjEzMzc0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMDMgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgRW5hYmxlIGZpZWxkc2V0cyB0byBiZSBmbGV4Ym94ZXMsIGdyaWRzIGFuZCBt
dWx0aWNvbHVtbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9hYnMtcG9zLWNoaWxkLXNpemluZy1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2Ficy1wb3MtY2hpbGQt
c2l6aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtZGVwcmVjYXRlZC1mbGV4Ym94LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1mbGV4Ym94Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZs
ZXhib3guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNl
dC1ncmlkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRz
ZXQvZmllbGRzZXQtZ3JpZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LW11bHRpY29sdW1uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtbXVsdGljb2x1bW4uaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1hdXRvLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
b3ZlcmZsb3ctYXV0by5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LW92ZXJmbG93LWhpZGRlbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWhpZGRlbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXBvc2l0aW9uZWQtY2hp
bGRyZW4tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNl
dC9maWVsZHNldC1wb3NpdGlvbmVkLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25lZC1sZWdlbmQtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlv
bmVkLWxlZ2VuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LXNlbGYtcGFpbnRpbmctbGVnZW5kLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtc2VsZi1wYWludGluZy1sZWdlbmQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5n
LW1vZGVzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRz
ZXQvZmllbGRzZXQtd3JpdGluZy1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxNy0wMy0wMyAgSmF2
aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBV
bnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
ZWxkc2V0L2Ficy1wb3MtY2hpbGQtc2l6aW5nLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9hYnMtcG9zLWNoaWxkLXNpemluZy1leHBl
Y3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRz
ZXQvYWJzLXBvcy1jaGlsZC1zaXppbmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAg
ICAgIGh0bWwsYm9keSB7CisgICAgICAgICAgICAgICAgY29sb3I6YmxhY2s7IGJhY2tncm91bmQt
Y29sb3I6d2hpdGU7IGZvbnQtc2l6ZToxNnB4OyBwYWRkaW5nOjA7IG1hcmdpbjowOworICAgICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwyNTUsMCwwLjUpOworICAg
ICAgICAgICAgdG9wOjA7IGJvdHRvbTowOworICAgICAgICAgICAgbGVmdDowOyByaWdodDowOwor
ICAgICAgICAgICAgei1pbmRleDogMDsKKyAgICAgICAgfQorICAgICAgICBjIHsKKyAgICAgICAg
ICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAg
ICAgICAgIGhlaWdodDoxMDAlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsZWdlbmQg
eyBoZWlnaHQ6IDI0cHg7IH0KKyAgICAgICAgCisgICAgICAgIGZpZWxkc2V0IHsKKyAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGJvcmRlcjogMnB4IGdyZWVuIHNv
bGlkOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206NDBweDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgI3QxLCN0MyB7IHBhZGRpbmc6IDNweCA1cHggN3B4IDExcHg7IH0KKyAgICAgICAg
I3QyLCN0NCB7IHBhZGRpbmc6IDA7IH0KKyAgICAgICAgCisgICAgICAgICN0MSBkaXYsICN0MyBk
aXYgeworICAgICAgICAgICAgLyogc2FtZSBudW1iZXJzIGFzIHBhZGRpbmcgYWJvdmUgKi8KKyAg
ICAgICAgICAgIGxlZnQ6IC0xMXB4OyByaWdodDogLTVweDsKKyAgICAgICAgICAgIHRvcDogIC0z
cHg7ICBib3R0b206LTdweDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgI3QyIHsgdG9w
OiAxMjBweDsgfQorICAgICAgICAjdDMgeyB0b3A6IDI0MHB4OyB9CisgICAgICAgICN0NCB7IHRv
cDogMzYwcHg7IH0KKyAgICAgICAgCisgICAgICAgIHggeworICAgICAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICAgICAgd2lkdGg6MTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6
MTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3QxIHgsICN0MiB4IHsKKyAgICAgICAgICAgIGhl
aWdodDo3OHB4OyAvKiBjb21wZW5zYXRlIGZvciBsZWdlbmQgKi8KKyAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgCisgICAgCisgICAgPGZpZWxkc2V0IGlk
PSJ0MSI+CisgICAgICAgIDxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+CisgICAgICAgIDx4PjxkaXY+
PC9kaXY+PGM+PC9jPjwveD4KKyAgICA8L2ZpZWxkc2V0PgorICAgIAorICAgIDxmaWVsZHNldCBp
ZD0idDIiPgorICAgICAgICA8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPgorICAgICAgICA8eD48ZGl2
PjwvZGl2PjwveD4KKyAgICA8L2ZpZWxkc2V0PgorICAgIAorICAgIDxmaWVsZHNldCBpZD0idDMi
PgorICAgICAgICA8eD48ZGl2PjwvZGl2PjxjPjwvYz48L3g+CisgICAgPC9maWVsZHNldD4KKyAg
ICAKKyAgICA8ZmllbGRzZXQgaWQ9InQ0Ij4KKyAgICAgICAgPHg+PGRpdj48L2Rpdj48L3g+Cisg
ICAgPC9maWVsZHNldD4KKyAgICAKKyAgICAKKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9hYnMtcG9zLWNoaWxkLXNpemluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvYWJzLXBvcy1jaGls
ZC1zaXppbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
ZWxkc2V0L2Ficy1wb3MtY2hpbGQtc2l6aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2NCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICAgICBo
dG1sLGJvZHkgeworICAgICAgICAgICAgICAgIGNvbG9yOmJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9y
OndoaXRlOyBmb250LXNpemU6MTZweDsgcGFkZGluZzowOyBtYXJnaW46MDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGRpdiB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMjU1LDAsMC41KTsKKyAgICAgICAg
ICAgIHRvcDowOyBib3R0b206MDsKKyAgICAgICAgICAgIGxlZnQ6MDsgcmlnaHQ6MDsKKyAgICAg
ICAgICAgIHotaW5kZXg6IDA7CisgICAgICAgIH0KKyAgICAgICAgYyB7CisgICAgICAgICAgICBk
aXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgICAgICAg
ICBoZWlnaHQ6MTAwJTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbGVnZW5kIHsgaGVp
Z2h0OiAyNHB4OyB9CisgICAgICAgIAorICAgICAgICBmaWVsZHNldCB7CisgICAgICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBib3JkZXI6IDJweCBncmVlbiBzb2xpZDsK
KyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICBtYXJnaW4tYm90dG9tOjQwcHg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgICN0MSwjdDMgeyBwYWRkaW5nOiAzcHggNXB4IDdweCAxMXB4OyB9CisgICAgICAgICN0Miwj
dDQgeyBwYWRkaW5nOiAwOyB9CisgICAgICAgIAorICAgICAgICAjdDIgeyB0b3A6IDEyMHB4OyB9
CisgICAgICAgICN0MyB7IHRvcDogMjQwcHg7IH0KKyAgICAgICAgI3Q0IHsgdG9wOiAzNjBweDsg
fQorICAgICAgICAgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIAorICAgIAorICAg
IDxmaWVsZHNldCBpZD0idDEiPgorICAgICAgICA8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPgorICAg
ICAgICA8ZGl2PjwvZGl2PjxjPjwvYz4KKyAgICA8L2ZpZWxkc2V0PgorICAgIAorICAgIDxmaWVs
ZHNldCBpZD0idDIiPgorICAgICAgICA8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPgorICAgICAgICA8
ZGl2PjwvZGl2PgorICAgIDwvZmllbGRzZXQ+CisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ0MyI+
CisgICAgICAgIDxkaXY+PC9kaXY+PGM+PC9jPgorICAgIDwvZmllbGRzZXQ+CisgICAgCisgICAg
PGZpZWxkc2V0IGlkPSJ0NCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9maWVsZHNldD4K
KyAgICAKKyAgICAKKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1kZXByZWNhdGVkLWZsZXhib3gtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRl
cHJlY2F0ZWQtZmxleGJveC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1mbGV4Ym94LWV4cGVj
dGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZmllbGRz
ZXQgPiBkaXYgeyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2Nj
Y2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4
ICB9CisgICAgICAgICAgICBmaWVsZHNldCB7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0
b207IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDo4
MHB4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczog
c3RyZXRjaDsgYmFja2dyb3VuZC1jb2xvcjojZGRkZGRkOyBib3JkZXI6MTJweCBzb2xpZCBuYXZ5
OyBwYWRkaW5nOjI4cHggfQorICAgICAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHk+CisgICAgICAgIDxmaWVsZHNldD4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kPC9s
ZWdlbmQ+CisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAg
ICAgICAgICAgCisgICAgICAgIDwvZmllbGRzZXQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kZXByZWNhdGVkLWZs
ZXhib3guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LWRlcHJlY2F0ZWQtZmxleGJveC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1mbGV4Ym94Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZmllbGRzZXQgPiBk
aXYgeyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsg
LXdlYmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4ICB9Cisg
ICAgICAgICAgICBmaWVsZHNldCB7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13
ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDo4MHB4OyBk
aXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDsgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOyAtd2Vi
a2l0LWJveC1hbGlnbjogc3RyZXRjaDsgYmFja2dyb3VuZC1jb2xvcjojZGRkZGRkOyBib3JkZXI6
MTJweCBzb2xpZCBuYXZ5OyBwYWRkaW5nOjI4cHggfQorICAgICAgICAgICAgPC9zdHlsZT4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxmaWVsZHNldD4KKyAgICAgICAgICAgIDxs
ZWdlbmQ+TGVnZW5kPC9sZWdlbmQ+CisgICAgICAgICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8
L2Rpdj4KKyAgICAgICAgICAgCisgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50
czwvZGl2PgorICAgICAgICAgICAKKyAgICAgICA8L2ZpZWxkc2V0PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxl
eGJveC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC1leHBlY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5maWVsZHNl
dCA+IGRpdiB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2Nj
Y2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHgg
IH0KKyAgICAgICAgICAgIC5maWVsZHNldCB7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0
b207IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDo4
MHB4OyBkaXNwbGF5OmlubGluZS1mbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24t
aXRlbXM6IHN0cmV0Y2g7IGJhY2tncm91bmQtY29sb3I6I2RkZGRkZDsgYm9yZGVyOjEycHggc29s
aWQgbmF2eTsgcGFkZGluZzoyOHB4IH0KKyAgICAgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0IHN0eWxlPSJ3cml0aW5n
LW1vZGU6dmVydGljYWwtbHI7Ij4KKyAgICAgICAgICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8
L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRl
bnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgPC9kaXY+CisgICAgICAgIAorICAgICAg
ICA8ZGl2IGNsYXNzPWZpZWxkc2V0IHN0eWxlPSJ3cml0aW5nLW1vZGU6dmVydGljYWwtcmw7ICI+
CisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgIDwvZGl2PgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDxkaXYgY2xh
c3M9ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTpob3Jpem9udGFsLWJ0Ij4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgPGRpdj5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAg
ICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZsZXhib3guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZsZXhib3gu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LWZsZXhib3guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICBmaWVsZHNldCA+IGRpdiB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3Vu
ZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdp
bi1hZnRlcjo2cHggIH0KKyAgICAgICAgICAgIGZpZWxkc2V0IHsgbWFyZ2luOjA7IHZlcnRpY2Fs
LWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyAtd2Via2l0LWxvZ2lj
YWwtaGVpZ2h0OjgwcHg7IGRpc3BsYXk6aW5saW5lLWZsZXg7IGp1c3RpZnktY29udGVudDogY2Vu
dGVyOyBhbGlnbi1pdGVtczogc3RyZXRjaDsgYmFja2dyb3VuZC1jb2xvcjojZGRkZGRkOyBib3Jk
ZXI6MTJweCBzb2xpZCBuYXZ5OyBwYWRkaW5nOjI4cHggfQorICAgICAgICAgICAgPC9zdHlsZT4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxmaWVsZHNldCBzdHlsZT0id3JpdGlu
Zy1tb2RlOnZlcnRpY2FsLWxyOyI+CisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRz
PC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250
ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgIDwvZmllbGRzZXQ+CisKKyAgICAgICAg
PGZpZWxkc2V0IHN0eWxlPSJ3cml0aW5nLW1vZGU6dmVydGljYWwtcmw7ICI+CisgICAgICAgICAg
ICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAg
IDwvZmllbGRzZXQ+CisgICAgICAgIAorICAgICAgICAKKyAgICAgICA8ZmllbGRzZXQgc3R5bGU9
IndyaXRpbmctbW9kZTpob3Jpem9udGFsLWJ0Ij4KKyAgICAgICAgICAgPGRpdj5GaWVsZHNldCBD
b250ZW50czwvZGl2PgorICAgICAgICAgICAKKyAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0
IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgIAorICAgICAgIDwvZmllbGRzZXQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1ncmlkLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1ncmlkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1ncmlkLWV4cGVjdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGZpZWxkc2V0IHN0eWxlPSJvdmVyZmxvdzpoaWRk
ZW47IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7Ij4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVn
ZW5kPC9sZWdlbmQ+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQt
dGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsNTBweCk7IGdyaWQtYXV0by1yb3dzOiAyMHB4OyI+
CisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAg
ICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAg
ICAgICAgICAgICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAg
IDxwPlgKKyAgICAgICAgICAgICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAg
ICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2ZpZWxkc2V0Pgor
ICAgICAgICA8ZmllbGRzZXQ+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZDwvbGVnZW5kPgor
ICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyBncmlkLWF1dG8tY29sdW1uczog
NTBweDsgZ3JpZC1hdXRvLXJvd3M6IDIwcHg7Ij4KKyAgICAgICAgICAgICAgICA8cD5YCisgICAg
ICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgICAgICA8
cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAgICAg
ICAgICAgICA8cD5YCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9maWVsZHNldD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LWdyaWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LWdyaWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWdyaWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxib2R5PgorICAg
ICAgICA8ZmllbGRzZXQgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgb3ZlcmZsb3c6aGlkZGVuOyBncmlk
LXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LDUwcHgpOyBncmlkLWF1dG8tcm93czogMjBweDsg
d2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsiPgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQ8
L2xlZ2VuZD4KKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAg
IDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxw
PlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgK
KyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgPC9maWVsZHNldD4K
KyAgICAgICAgPGZpZWxkc2V0IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQtYXV0by1jb2x1bW5z
OiA1MHB4OyBncmlkLWF1dG8tcm93czogMjBweDsiPgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdl
bmQ8L2xlZ2VuZD4KKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAg
ICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAg
IDxwPlgKKyAgICAgICAgICAgIDxwPlgKKyAgICAgICAgPC9maWVsZHNldD4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LW11bHRpY29sdW1uLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1tdWx0aWNvbHVtbi1leHBlY3RlZC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtbXVs
dGljb2x1bW4tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8
ZmllbGRzZXQgc3R5bGU9ImZsb2F0OmxlZnQiPjxsZWdlbmQgc3R5bGU9ImZvbnQtc2l6ZTo0OHB4
Ij5MZWdlbmQgVGl0bGU8L2xlZ2VuZD4KKyAgICA8ZGl2IHN0eWxlPSJjb2x1bW5zOjI7Ij4KKyAg
ICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxk
IGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCBy
ZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBj
b2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxk
IGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNv
bnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4K
KyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hv
dWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJ
dCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3
byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hv
dWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlz
IGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxi
cj4KKyAgICA8L2Rpdj4KKzwvZmllbGRzZXQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LW11bHRpY29sdW1uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1tdWx0aWNvbHVtbi5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtbXVs
dGljb2x1bW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8ZmllbGRzZXQg
c3R5bGU9ImNvbHVtbnM6MjtmbG9hdDpsZWZ0Ij48bGVnZW5kIHN0eWxlPSJmb250LXNpemU6NDhw
eCI+TGVnZW5kIFRpdGxlPC9sZWdlbmQ+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0
d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+CisgICAgVGhpcyBjb250ZW50IHNo
b3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+CisgICAgVGhp
cyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48
YnI+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVhbGx5
IHNob3VsZCBiZS48YnI+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29sdW1u
cy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBp
biB0d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+CisgICAgVGhpcyBjb250ZW50
IHNob3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+CisgICAg
VGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVhbGx5IHNob3VsZCBi
ZS48YnI+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29sdW1ucy4gSXQgcmVh
bGx5IHNob3VsZCBiZS48YnI+CisgICAgVGhpcyBjb250ZW50IHNob3VsZCBiZSBpbiB0d28gY29s
dW1ucy4gSXQgcmVhbGx5IHNob3VsZCBiZS48YnI+Cis8L2ZpZWxkc2V0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1hdXRvLWV4cGVjdGVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1vdmVyZmxvdy1hdXRvLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1hdXRvLWV4cGVjdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmNvbnRlbnRz
IHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13
ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCB9CisgICAg
ICAgICAgICAuZmllbGRzZXQgeyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNh
bC13aWR0aDozMjBweDsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAg
cGFkZGluZzo0MHB4OyAtd2Via2l0LXBhZGRpbmctYmVmb3JlOjB9CisgICAgICAgICAgICAubGVn
ZW5kIHsgIC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRo
OiAyODRweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6MzRweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMDgw
ZjA7IGJvcmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAgICAg
ICAgICAuYmVoaW5kLWJveCB7IHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXI6MTJweCBzb2xpZCBu
YXZ5OyB6LWluZGV4Oi0xIH0KKyAgICAgICAgICAgICNzY3JvbGwgeyBvdmVyZmxvdzphdXRvOyBw
b3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDsgdG9wOjgwcHg7IGJvdHRv
bToxMnB4OyByaWdodDoxMnB4OyBsZWZ0OjEycHg7IHBhZGRpbmc6MjhweCAyOHB4IDAgMjhweCAg
fQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRp
diBjbGFzcz1maWVsZHNldD4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlaGluZC1ib3giIHN0
eWxlPSJsZWZ0OjA7IHRvcDozNHB4OyByaWdodDowOyBib3R0b206MDsiPjwvZGl2PgorICAgICAg
ICAgICAgPGRpdiBjbGFzcz1sZWdlbmQ+TGVnZW5kIFRpdGxlPC9kaXY+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIDxkaXYgaWQ9c2Nyb2xsPgorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgPGRpdiBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5Nb3JlIEZpZWxkc2V0IENv
bnRlbnRzPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRz
ZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Y29udGVudHM+TW9yZSBG
aWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5N
b3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRl
bnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
Y29udGVudHMgc3R5bGU9Im1hcmdpbi1ib3R0b206MCI+TW9yZSBGaWVsZHNldCBDb250ZW50czwv
ZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIAorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWF1dG8uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWF1dG8u
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LW92ZXJmbG93LWF1dG8uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICBmaWVsZHNldCBkaXY6bm90KC5wb3NpdGlvbmVkKSB7IGJvcmRlcjoycHggc29s
aWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZv
cmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHggIH0KKyAgICAgICAgICAgIGZpZWxkc2V0
IHsgb3ZlcmZsb3c6YXV0bzsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowOyB2ZXJ0aWNhbC1h
bGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsgZGlzcGxheTppbmxpbmUt
YmxvY2s7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6MjhweCB9CisgICAgICAgICAg
ICBsZWdlbmQgeyBwYWRkaW5nOjA7IC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtp
dC1sb2dpY2FsLXdpZHRoOiAyODRweDsgYmFja2dyb3VuZC1jb2xvcjojMzA4MGYwOyBib3JkZXI6
OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1zaXplOjQ4cHggfQorICAgICAgICAgICAgLnBvc2l0
aW9uZWQgeyBoZWlnaHQ6MCB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8ZmllbGRzZXQ+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZCBUaXRs
ZTwvbGVnZW5kPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPXBvc2l0aW9u
ZWQ+CisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAg
ICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwv
ZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVu
dHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENv
bnRlbnRzPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICA8
L2ZpZWxkc2V0PgorCisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1oaWRkZW4tZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92
ZXJmbG93LWhpZGRlbi1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctaGlkZGVuLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmNvbnRlbnRzIHsg
Ym9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJr
aXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCB9CisgICAgICAg
ICAgICAuZmllbGRzZXQgeyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13
aWR0aDozMjBweDsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAgcGFk
ZGluZzo0MHB4OyAtd2Via2l0LXBhZGRpbmctYmVmb3JlOjB9CisgICAgICAgICAgICAubGVnZW5k
IHsgIC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAy
ODRweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6MzRweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA7
IGJvcmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAgICAgICAg
ICAuYmVoaW5kLWJveCB7IHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXI6MTJweCBzb2xpZCBuYXZ5
OyB6LWluZGV4Oi0xIH0KKyAgICAgICAgICAgCisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0PgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9wOjM0cHg7IHJpZ2h0OjA7
IGJvdHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWxlZ2VuZD5MZWdlbmQg
VGl0bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50
cz5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2
IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctaGlk
ZGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9m
aWVsZHNldC1vdmVyZmxvdy1oaWRkZW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWhpZGRlbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGZpZWxkc2V0ID4gZGl2Om5vdCgu
cG9zaXRpb25lZCkgeyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6
I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6
NnB4ICB9CisgICAgICAgICAgICBmaWVsZHNldCB7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246
cmVsYXRpdmU7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNh
bC13aWR0aDozMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRlcjoxMnB4IHNvbGlkIG5h
dnk7IHBhZGRpbmc6MjhweCB9CisgICAgICAgICAgICBsZWdlbmQgeyBwYWRkaW5nOjA7IC13ZWJr
aXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRweDsgYmFj
a2dyb3VuZC1jb2xvcjojMzA4MGYwOyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1z
aXplOjQ4cHggfQorICAgICAgICAgICAgCisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5PgorICAgICAgICA8ZmllbGRzZXQ+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2Vu
ZCBUaXRsZTwvbGVnZW5kPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0
IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVs
ZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAg
PC9maWVsZHNldD4KKworICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25lZC1jaGlsZHJlbi1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtcG9zaXRpb25lZC1jaGlsZHJlbi1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25lZC1jaGlsZHJl
bi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5jb250ZW50cyB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjoj
Y2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2
cHggfQorICAgICAgICAgICAgLmZpZWxkc2V0IHsgdmVydGljYWwtYWxpZ246Ym90dG9tOyAtd2Vi
a2l0LWxvZ2ljYWwtd2lkdGg6MzIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmlubGlu
ZS1ibG9jazsgIHBhZGRpbmc6NDBweDsgLXdlYmtpdC1wYWRkaW5nLWJlZm9yZTowfQorICAgICAg
ICAgICAgLmxlZ2VuZCB7ICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjY0cHg7IC13ZWJraXQtbG9n
aWNhbC13aWR0aDogMjg0cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjM0cHg7YmFja2dyb3VuZC1j
b2xvcjojMzA4MGYwOyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1zaXplOjQ4cHgg
fQorICAgICAgICAgICAgLmJlaGluZC1ib3ggeyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyOjEy
cHggc29saWQgbmF2eTsgei1pbmRleDotMSB9CisgICAgICAgICAgICAucG9zaXRpb25lZCB7IHBv
c2l0aW9uOmFic29sdXRlOyB0b3A6OTBweDsgYm90dG9tOjIycHg7IHJpZ2h0OjIycHg7IGxlZnQ6
MjJweDsgYmFja2dyb3VuZC1jb2xvcjpkYXJrYmx1ZTsgei1pbmRleDotMSB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxk
c2V0PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9ImxlZnQ6MDsg
dG9wOjM0cHg7IHJpZ2h0OjA7IGJvdHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPWxlZ2VuZD5MZWdlbmQgVGl0bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
PGRpdiBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAg
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8
L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb25lZCI+
PC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlv
bmVkLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWNoaWxkcmVuLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWNo
aWxkcmVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZmll
bGRzZXQgPiBkaXY6bm90KC5wb3NpdGlvbmVkKSB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsg
YmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Vi
a2l0LW1hcmdpbi1hZnRlcjo2cHggIH0KKyAgICAgICAgICAgIGZpZWxkc2V0IHsgcG9zaXRpb246
cmVsYXRpdmU7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNh
bC13aWR0aDozMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRlcjoxMnB4IHNvbGlkIG5h
dnk7IHBhZGRpbmc6MjhweCB9CisgICAgICAgICAgICBsZWdlbmQgeyBwYWRkaW5nOjA7IC13ZWJr
aXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRweDsgYmFj
a2dyb3VuZC1jb2xvcjojMzA4MGYwOyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1z
aXplOjQ4cHggfQorICAgICAgICAgICAgLnBvc2l0aW9uZWQgeyBwb3NpdGlvbjphYnNvbHV0ZTsg
dG9wOjEwcHg7IGJvdHRvbToxMHB4OyByaWdodDoxMHB4OyBsZWZ0OjEwcHg7IGJhY2tncm91bmQt
Y29sb3I6ZGFya2JsdWU7IHotaW5kZXg6LTEgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGZpZWxkc2V0PgorICAgICAgICAgICAgPGxlZ2VuZD5M
ZWdlbmQgVGl0bGU8L2xlZ2VuZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5GaWVs
ZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUg
RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdiBj
bGFzcz1wb3NpdGlvbmVkPjwvZGl2PgorICAgICAgICA8L2ZpZWxkc2V0PgorCisgICAgPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNl
dC1wb3NpdGlvbmVkLWxlZ2VuZC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25lZC1sZWdlbmQtZXhwZWN0
ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LXBvc2l0aW9uZWQtbGVnZW5kLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmNvbnRlbnRzIHsgYm9yZGVyOjJweCBzb2xpZCBz
a3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJraXQtbWFyZ2luLWJlZm9yZTo2
cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweDsgIH0KKyAgICAgICAgICAgIC5maWVsZHNldCB7
IHBvc2l0aW9uOnJlbGF0aXZlOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNh
bC13aWR0aDozMjBweDsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAg
IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6MjhweDsgfQorICAgICAgICAgICAgLmxl
Z2VuZCB7ICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjY0cHg7IC13ZWJraXQtbG9naWNhbC13aWR0
aDogMjg0cHg7YmFja2dyb3VuZC1jb2xvcjojMzA4MGYwODA7IGJvcmRlcjo4cHggc29saWQgbGln
aHRibHVlOyBmb250LXNpemU6NDhweDsgcG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7cmlnaHQ6
MDsgcG9zaXRpb246YWJzb2x1dGUgfQorICAgICAgICAgICAgLmJlaGluZC1ib3ggeyBwb3NpdGlv
bjphYnNvbHV0ZTs7IHotaW5kZXg6LTE7ICB9CisgICAgICAgICAgIAorICAgICAgICA8L3N0eWxl
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBjbGFzcz1maWVsZHNldD4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlaGluZC1ib3giIHN0eWxlPSJsZWZ0OjA7IHRvcDoz
NHB4OyByaWdodDowOyBib3R0b206MDsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz1s
ZWdlbmQ+TGVnZW5kIFRpdGxlPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Y29udGVudHM+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LXBvc2l0aW9uZWQtbGVnZW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWxlZ2VuZC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25l
ZC1sZWdlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBm
aWVsZHNldCA+IGRpdjpub3QoLnBvc2l0aW9uZWQpIHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVl
OyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13
ZWJraXQtbWFyZ2luLWFmdGVyOjZweDsgICB9CisgICAgICAgICAgICBmaWVsZHNldCB7IHBvc2l0
aW9uOnJlbGF0aXZlOyBtYXJnaW46MDsgdmVydGljYWwtYWxpZ246Ym90dG9tOyAtd2Via2l0LWxv
Z2ljYWwtd2lkdGg6MzIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBib3JkZXI6MTJweCBzb2xp
ZCBuYXZ5OyBwYWRkaW5nOjI4cHg7IH0KKyAgICAgICAgICAgIGxlZ2VuZCB7IHBhZGRpbmc6MDsg
LXdlYmtpdC1sb2dpY2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA4MDsgYm9yZGVyOjhweCBzb2xpZCBsaWdodGJsdWU7
IGZvbnQtc2l6ZTo0OHB4OyBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtyaWdodDowIH0KKyAg
ICAgICAgICAgIAorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAg
ICAgICAgPGZpZWxkc2V0PgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQgVGl0bGU8L2xlZ2Vu
ZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5GaWVsZHNldCBDb250ZW50czwvZGl2
PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8
L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIDwvZmllbGRzZXQ+CisK
KyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LXNlbGYtcGFpbnRpbmctbGVnZW5kLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1zZWxmLXBhaW50
aW5nLWxlZ2VuZC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtc2VsZi1wYWludGluZy1sZWdlbmQtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuY29udGVudHMg
eyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsgLXdl
YmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4OyAgfQorICAg
ICAgICAgICAgLmZpZWxkc2V0IHsgdmVydGljYWwtYWxpZ246Ym90dG9tOyAtd2Via2l0LWxvZ2lj
YWwtd2lkdGg6MzIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmlubGluZS1ibG9jazsg
IHBhZGRpbmc6NDBweDsgLXdlYmtpdC1wYWRkaW5nLWJlZm9yZTowOyAgfQorICAgICAgICAgICAg
LmxlZ2VuZCB7ICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjY0cHg7IC13ZWJraXQtbG9naWNhbC13
aWR0aDogMjg0cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjM0cHg7YmFja2dyb3VuZC1jb2xvcjoj
MzA4MGYwODA7IGJvcmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweDsgdHJh
bnNmb3JtOnRyYW5zbGF0ZVgoMTBweCkgfQorICAgICAgICAgICAgLmJlaGluZC1ib3ggeyBwb3Np
dGlvbjphYnNvbHV0ZTsgYm9yZGVyOjEycHggc29saWQgbmF2eTsgei1pbmRleDotMTsgYm9yZGVy
LXRvcDoxMnB4IHNvbGlkIHRyYW5zcGFyZW50IH0KKyAgICAgICAgICAgCisgICAgICAgIDwvc3R5
bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9w
OjM0cHg7IHJpZ2h0OjA7IGJvdHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PWxlZ2VuZD5MZWdlbmQgVGl0bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRp
diBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rp
dj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtc2VsZi1wYWludGluZy1sZWdlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXNlbGYtcGFpbnRpbmctbGVnZW5kLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1z
ZWxmLXBhaW50aW5nLWxlZ2VuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIGZpZWxkc2V0ID4gZGl2Om5vdCgucG9zaXRpb25lZCkgeyBib3JkZXI6MnB4IHNv
bGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVm
b3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4OyAgIH0KKyAgICAgICAgICAgIGZpZWxk
c2V0IHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207
IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRl
cjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6MjhweDsgYm9yZGVyLXRvcDoxMnB4IHNvbGlkIHRy
YW5zcGFyZW50IH0KKyAgICAgICAgICAgIGxlZ2VuZCB7IHBhZGRpbmc6MDsgLXdlYmtpdC1sb2dp
Y2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiMzMDgwZjA4MDsgYm9yZGVyOjhweCBzb2xpZCBsaWdodGJsdWU7IGZvbnQtc2l6ZTo0
OHB4OyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMHB4KTsgfQorICAgICAgICAgICAgCisgICAgICAg
IDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZmllbGRzZXQ+Cisg
ICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZCBUaXRsZTwvbGVnZW5kPgorICAgICAgICAgICAgCisg
ICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAg
CisgICAgICAgICAgICAKKyAgICAgICAgPC9maWVsZHNldD4KKworICAgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtd3JpdGlu
Zy1tb2Rlcy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmllbGRzZXQvZmllbGRzZXQtd3JpdGluZy1tb2Rlcy1leHBlY3RlZC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtd3JpdGlu
Zy1tb2Rlcy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5jb250ZW50cyB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1j
b2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1h
ZnRlcjo2cHggfQorICAgICAgICAgICAgLmZpZWxkc2V0IHsgdmVydGljYWwtYWxpZ246Ym90dG9t
OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6MzIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5
OmlubGluZS1ibG9jazsgd3JpdGluZy1tb2RlOnZlcnRpY2FsLXJsOyBwYWRkaW5nOjQwcHg7IC13
ZWJraXQtcGFkZGluZy1iZWZvcmU6MH0KKyAgICAgICAgICAgIC5sZWdlbmQgeyAgLXdlYmtpdC1s
b2dpY2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyAtd2Via2l0
LW1hcmdpbi1hZnRlcjozNHB4O2JhY2tncm91bmQtY29sb3I6IzMwODBmMDsgYm9yZGVyOjhweCBz
b2xpZCBsaWdodGJsdWU7IGZvbnQtc2l6ZTo0OHB4IH0KKyAgICAgICAgICAgIC5iZWhpbmQtYm94
IHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6I2RkZGRkZDsgYm9yZGVyOjEy
cHggc29saWQgbmF2eTsgei1pbmRleDotMSB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0IHN0eWxlPSJ3cml0aW5n
LW1vZGU6dmVydGljYWwtbHIiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIg
c3R5bGU9ImxlZnQ6MzRweDsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTowOyI+PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2IGNsYXNzPWxlZ2VuZD5MZWdlbmQgVGl0bGU8L2Rpdj4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2
PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmll
bGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgCisgICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2ZXJ0
aWNhbC1ybDsiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9InJp
Z2h0OjM0cHg7IHRvcDowOyBsZWZ0OjA7IGJvdHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPWxlZ2VuZD5MZWdlbmQgVGl0bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAg
ICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29u
dGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICAgICAgCisgICAg
ICAgIAorICAgICAgIAorICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQgc3R5bGU9IndyaXRpbmct
bW9kZTpob3Jpem9udGFsLWJ0Ij4KKyAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIg
c3R5bGU9ImJvdHRvbTozNHB4OyB0b3A6MDsgcmlnaHQ6MDsgbGVmdDowOyI+PC9kaXY+CisgICAg
ICAgICAgIDxkaXYgY2xhc3M9bGVnZW5kPkxlZ2VuZCBUaXRsZTwvZGl2PgorICAgICAgICAgICAK
KyAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5GaWVsZHNldCBDb250ZW50czwvZGl2Pgor
ICAgICAgICAgICAKKyAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5Nb3JlIEZpZWxkc2V0
IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgIAorICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
d3JpdGluZy1tb2Rlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmllbGRzZXQvZmllbGRzZXQtd3JpdGluZy1tb2Rlcy5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtd3JpdGluZy1tb2Rlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGZpZWxkc2V0ID4gZGl2
IHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13
ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCAgfQorICAg
ICAgICAgICAgZmllbGRzZXQgeyBtYXJnaW46MDsgdmVydGljYWwtYWxpZ246Ym90dG9tOyAtd2Vi
a2l0LWxvZ2ljYWwtd2lkdGg6MzIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5k
LWNvbG9yOiNkZGRkZGQ7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6MjhweCB9Cisg
ICAgICAgICAgICBsZWdlbmQgeyBwYWRkaW5nOjA7IC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6NjRw
eDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRweDsgYmFja2dyb3VuZC1jb2xvcjojMzA4MGYw
OyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1zaXplOjQ4cHggfQorICAgICAgICA8
L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGZpZWxkc2V0IHN0eWxl
PSJ3cml0aW5nLW1vZGU6dmVydGljYWwtbHI7Ij4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5k
IFRpdGxlPC9sZWdlbmQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+RmllbGRzZXQg
Q29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxk
c2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgPC9maWVsZHNldD4KKwor
ICAgICAgICA8ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2ZXJ0aWNhbC1ybDsgIj4KKyAg
ICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kIFRpdGxlPC9sZWdlbmQ+CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAK
KyAgICAgICAgPC9maWVsZHNldD4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgIDxmaWVsZHNl
dCBzdHlsZT0id3JpdGluZy1tb2RlOmhvcml6b250YWwtYnQiPgorICAgICAgICAgICA8bGVnZW5k
PkxlZ2VuZCBUaXRsZTwvbGVnZW5kPgorICAgICAgICAgICAKKyAgICAgICAgICAgPGRpdj5GaWVs
ZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAKKyAgICAgICAgICAgPGRpdj5Nb3JlIEZp
ZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgIAorICAgICAgIDwvZmllbGRzZXQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="324995"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303518</attachid>
            <date>2017-03-06 09:00:45 -0800</date>
            <delta_ts>2017-03-06 09:00:45 -0800</delta_ts>
            <desc>Patch for EWS to make sure GTK builds</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>127456</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMiBAQAorMjAxNy0wMy0wNiAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgZmllbGRzZXRzIHRvIGJl
IGZsZXhib3hlcywgZ3JpZHMgYW5kIG11bHRpY29sdW1uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyBpbiBmYXN0L2Zvcm1zL2Zp
ZWxkc2V0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyBSZW5kZXJGaWVsZHNldCBh
bmQgbW92ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byBSZW5kZXJCbG9jayBzbyB0aGF0CisgICAg
ICAgIGRlcml2ZWQgY2xhc3NlcyBjYW4gYWxzbyBiZSBmaWVsZHNldHMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgIFJlbW92ZSBSZW5kZXJGaWVsZHNldCBmcm9tIHRoZSBwcm9qZWN0LgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxlVUlFbGVtZW50
KToKKyAgICAgICAgQ2FsbCBpbiB0byBSZW5kZXJCbG9jayBub3cgaW5zdGVhZCBvZiBSZW5kZXJG
aWVsZHNldC4KKworICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICBUaGUgZmll
bGRzZXQgRE9NIGVsZW1lbnQgbm93IHVzZXMgUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yIHRvIG1h
a2UgcmVuZGVyZXJzIHNvIHRoYXQgbXVsdGlwbGUgZGlzcGxheSB0eXBlcworICAgICAgICBjYW4g
YmUgc3VwcG9ydGVkLiBBIHNwZWNpYWwgZmxhZyBoYXMgYmVlbiBhZGRlZCB0aGF0IGluZGljYXRl
cyBvbmx5IHRvIG1ha2UgZmxleGJveCBhbmQgYmxvY2stcmVsYXRlZAorICAgICAgICByZW5kZXJl
cnMgKG5vdCB0YWJsZSBkaXNwbGF5IHR5cGVzKS4KKworICAgICAgICAqIHJlbmRlcmluZy9PcmRl
ckl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVySXRlcmF0b3I6OnNob3VsZFNr
aXBDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yUG9wdWxhdG9yOjpjb2xs
ZWN0Q2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmg6CisgICAgICAg
IFN0cmVhbWxpbmUgY2hpbGQgY29sbGVjdGlvbiBmb3IgZmxleGJveGVzIGFuZCBncmlkcyB0byBp
bmRpY2F0ZSB3aGV0aGVyIHRoZSBjaGlsZCBzaG91bGQgYmUgc2tpcHBlZCBhcyBhIHJldHVybgor
ICAgICAgICB2YWx1ZSBmcm9tIGNvbGxlY3RDaGlsZC4gQWRkIGEgc2hvdWxkU2tpcENoaWxkIG1l
dGhvZCB0aGF0IHNraXBzIGJvdGggb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBvYmplY3RzIGFuZAor
ICAgICAgICBleGNsdWRlZCBjaGlsZHJlbiBsaWtlIHRoZSBsZWdlbmRzIG9mIGZpZWxkc2V0cy4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja1JhcmVEYXRhOjpSZW5kZXJCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgV2hl
biB0aGUgbGVnZW5kIGlzIHRhbGxlciB0aGFuIHRoZSBmaWVsZHNldCdzIGJvcmRlckJlZm9yZSgp
LCBpbnRyaW5zaWMgYm9yZGVyIGlzIGFkZGVkIHRvIHRoZSBDU1MgYm9yZGVyIHdpZHRoLgorICAg
ICAgICBUaGlzIGludHJpbnNpYyBib3JkZXIgYmVpbmcgZmFjdG9yZWQgaW4gZW5zdXJlcyB0aGF0
IHRoZSBwYWRkaW5nIGFuZCBjb250ZW50IGJveGVzIG9mIGZpZWxkc2V0cyBhcmUgY29ycmVjdAor
ICAgICAgICBhY3Jvc3MgYW55IGxheW91dCBzeXN0ZW0sIHNpbmNlIHRoZSBsZWdlbmQgaXMgbm93
IGp1c3QgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBib3JkZXIuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyk6
CisgICAgICAgIENhbGwgdGhlIG5ldyBjb21wdXRlUHJlZmVycmVkV2lkdGhzRm9yRXhjbHVkZWRD
aGlsZHJlbiB0byBlbnN1cmUgdGhhdCBleGNsdWRlZCBjaGlsZHJlbiBjb250cmlidXRlIHRvCisg
ICAgICAgIHByZWZlcnJlZCB3aWR0aCBpbiB0aGVpciBvd24gd2F5IGFuZCBub3QgYXMgcGFydCBv
ZiBhIHNwZWNpZmljIGxheW91dCBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZW5kZXJOYW1lKToKKyAgICAgICAgSGFja2VkIHRvIHN0aWxsIHJldHVybiBSZW5kZXJG
aWVsZFNldCBmb3IgUmVuZGVyQmxvY2tGbG93LWJhY2tlZCBmaWVsZHNldHMgZm9yIGxheW91dCB0
ZXN0IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlv
dXRFeGNsdWRlZENoaWxkcmVuKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGxheW91dFNwZWNpYWxF
eGNsdWRlZENoaWxkIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBmYWN0IHRoYXQgbXVs
dGlwbGUgZXhjbHVkZWQgY2hpbGRyZW4KKyAgICAgICAgY2FuIGJlIGluY2x1ZGVkIGhlcmUgKGUu
Zy4sIGJvdGggYSBtdWx0aWNvbHVtbiBmbG93IHRocmVhZCBhbmQgYSBsZWdlbmQpLiBUaGUgUmVu
ZGVyQmxvY2sgYmFzZSBjbGFzcyBoYW5kbGVzCisgICAgICAgIHRoZSBsYXlvdXQgb2YgbGVnZW5k
cyBieSBib3RoIHBsYWNpbmcgdGhlbSBhbmQgc2V0dGluZyB0aGUgY29ycmVjdCBpbnRyaW5zaWMg
Ym9yZGVyIGJlZm9yZSBhbW91bnQgb24gdGhlCisgICAgICAgIGJsb2NrLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6ZmluZEZpZWxkc2V0TGVnZW5kKToKKyAgICAgICAgTW92ZWQg
ZnJvbSBSZW5kZXJGaWVsZHNldC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFk
anVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6cGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlcik6CisgICAgICAgIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgd2hlbiBwYWludGluZyB0byBzaHJpbmsgdGhlIGJvcmRlciBib3ggYXMgbmVl
ZGVkIHRvIGFjY291bnQgZm9yIHRoZSBsZWdlbmQgYW5kIHRvCisgICAgICAgIHByb3ZpZGUgdGhl
IHBvcnRpb24gb2YgdGhlIGJvcmRlciB0aGF0IG5lZWRzIHRvIGJlIGNsaXBwZWQgb3V0LiBUaGVz
ZSBtZXRob2RzIGhhdmUgYmVlbiBlbmhhbmNlZCB0bworICAgICAgICBwcm9wZXJseSBzdXBwb3J0
IGFsbCB3cml0aW5nIG1vZGVzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aW50
cmluc2ljQm9yZGVyRm9yRmllbGRzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnNldEludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpib3JkZXJUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJvcmRl
ckxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJvcmRlckJvdHRvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Ym9yZGVyUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmJvcmRlckJlZm9yZSk6CisgICAgICAgIFRoZXNlIG1ldGhvZHMg
YXJlIG92ZXJyaWRkZW4gZm9yIGJvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgaW50cmluc2ljIGJv
cmRlciBhZGRlZCBieSBhIHRhbGwgbGVnZW5kIGlzCisgICAgICAgIHByb3Blcmx5IGZhY3RvcmVk
IGluLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZVByZWZlcnJlZFdp
ZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oOgorICAgICAgICBUaGlzIG1ldGhvZCBjb21wdXRlcyB0aGUgcHJlZmVycmVkIHdpZHRocyBm
b3IgbGVnZW5kIGNoaWxkcmVuIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBsZWdlbmQgcHJv
cGVybHkKKyAgICAgICAgZ3Jvd3MgdGhlIHdpZHRoIG9mIHRoZSBmaWVsZHNldCB3aGVuIGl0IGlz
IHRoZSB3aWRlc3QgaXRlbS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkanVz
dEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKToK
KyAgICAgICAgUHJlc2VydmUgdGhlIGJlaGF2aW9yIG9mIGZpZWxkc2V0cyBpbiB0aGF0IHRoZSBh
dmFpbGFibGUgY29udGVudCBzaXplIGluY2x1ZGVzIHRoZSBzcGFjZSBsb3N0IGFjY291bnRpbmcK
KyAgICAgICAgZm9yIHRoZSBsZWdlbmQuIEkgZG9uJ3QgdGhpbmsgdGhpcyBtYWtlcyBtdWNoIHNl
bnNlLCBidXQgaXQgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgYnJvd3NlcnMKKyAgICAg
ICAgKGFuZCBvdXIgb2xkIGJlaGF2aW9yKS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBhaW50RXhjbHVkZWRDaGlsZHJlbkluQm9yZGVyKToKKyAgICAgICAgTWV0aG9kIGZvciBw
YWludGluZyB0aGUgZXhjbHVkZWQgY2hpbGRyZW4gdGhhdCBtaWdodCBiZSBwcmVzZW50IGluIG91
ciBib3JkZXIuIFdlIG9ubHkgZG8gdGhpcyBpZiB0aGUKKyAgICAgICAgcGFpbnQgcGhhc2UgaXMg
YSBib3ggZGVjb3JhdGlvbiBwYWludGluZyBwaGFzZSBhbmQgaWYgdGhlIGxlZ2VuZCBpc24ndCBz
ZWxmLXBhaW50aW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1bW5zKToK
KyAgICAgICAgQWxsb3cgZmllbGRzZXRzIHRvIGNyZWF0ZSBjb2x1bW5zIG5vdy4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbik6Cisg
ICAgICAgIFJlbmFtZWQgdGhpcyBtZXRob2QgYW5kIGNoYW5nZSBpdCB0byBjYWxsIHRoZSBiYXNl
IGNsYXNzIHRvIGVuc3VyZSB0aGF0IGxlZ2VuZHMgaW4gbXVsdGljb2x1bW4gZmllbGRzZXRzCisg
ICAgICAgIGdldCBoYW5kbGVkIHByb3Blcmx5LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmFkZENoaWxkKToKKyAgICAgICAgUGF0Y2hlZCB0byBtYWtlIHN1cmUgbGVnZW5k
cyBkb24ndCBnZXQgcHV0IGludG8gdGhlIG11bHRpY29sdW1uIGZsb3cgdGhyZWFkLCBhcyB0aGV5
IG5lZWQgdG8KKyAgICAgICAgcmVtYWluIG91dHNpZGUgb2YgaXQuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOiBEZWxldGVk
LgorICAgICAgICBSZW5hbWVkIHRvIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4uCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2spOgorICAgICAgICBQ
YXRjaGVkIHRvIGNhbGwgdGhlIG5ldyBhZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcgYW5k
IHBhaW50UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIgbWV0aG9kcyBpbgorICAgICAgICBvcmRlciB0
byBwcm9wZXJseSBzaHJpbmsgdGhlIGJvcmRlciBib3ggcmVjdCBmb3IgcGFpbnRpbmcgYW5kIHRv
IGNsaXAgb3V0IHRoZSBwb3J0aW9uIG9mIHRoZSBib3JkZXIKKyAgICAgICAgY292ZXJlZCBieSB0
aGUgbGVnZW5kLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2b2lkc0Zsb2F0cyk6
CisgICAgICAgIEFkZCBmaWVsZHNldHMgYXMgYXZvaWRpbmcgZmxvYXRzLiBSZW5kZXJGaWVsZHNl
dCB1c2VkIHRvIHN1YmNsYXNzIHRoaXMgbWV0aG9kIHRvIHJldHVybiB0cnVlLCBidXQgd2l0aAor
ICAgICAgICBpdHMgcmVtb3ZhbCwgd2UgbmVlZCB0byBwdXQgdGhpcyBpbiB0aGUgYmFzZSBjbGFz
cyBhbG9uZyB3aXRoIGxlZ2VuZHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzR3JpZEl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojppc0ZsZXhJdGVtKToKKyAgICAgICAgUGF0Y2hlZCB0byBleGNsdWRl
IGxlZ2VuZHMgc28gdGhhdCB0aGV5IGRvbid0IHRyeSB0byBzaXplIGxpa2UgdGhleSBhcmUgcmVh
bGx5IGluIHRoZSBncmlkIG9yIGZsZXhib3guCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6YWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKToKKyAgICAgICAgVGhpcyBtZXRob2Qg
aXMgb3ZlcnJpZGRlbiBieSBSZW5kZXJCTG9jayB0byBoYW5kbGUgYWRqdXN0aW5nIGZpZWxkc2V0
IGJvcmRlciByZWN0cyBmb3IgcGFpbnRpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFJlY3RU
b0NsaXBPdXRGcm9tQm9yZGVyKToKKyAgICAgICAgUGF0Y2hlZCB0byBwcm9wZXJseSBwYWludCBm
aWVsZHNldHMgdXNpbmcgdGhlIG5ldyBoZWxwZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbGV4Qm94
SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICBNYWtlIHN1cmUgZGVw
cmVjYXRlZCBmbGV4aWJsZSBib3hlcyBsYXkgb3V0IHRoZWlyIGxlZ2VuZHMgcHJvcGVybHkgYnkg
Y2FsbGluZyBsYXlvdXRFeGNsdWRlZENoaWxkcmVuLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y3JlYXRl
Rm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICBQYXRj
aGVkIHRvIHRha2UgYSBmbGFnIHRoYXQgbGltaXRzIHdoYXQgcmVuZGVyZXJzIGNhbiBiZSBjcmVh
dGVkIHNvIHRoYXQgZmllbGRzZXRzIGRvbid0IG1ha2UgdGFibGUKKyAgICAgICAgZGlzcGxheSB0
eXBlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6IFJlbW92ZWQuCisgICAgICAg
IFJlbW92ZSBSZW5kZXJGaWVsZHNldCBmaWxlcyBmcm9tIHRoZSB0cmVlLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lucyk6Cisg
ICAgICAgIE1ha2Ugc3VyZSBmbGV4aWJsZSBib3hlcyBsYXkgb3V0IHRoZWlyIGxlZ2VuZHMgcHJv
cGVybHkgYnkgY2FsbGluZyBsYXlvdXRFeGNsdWRlZENoaWxkcmVuLgorICAgICAgICBQYXRjaCBt
ZXRob2RzIHRvIHVzZSB0aGUgT3JkZXJJdGVyYXRvcidzIG5ldyBzaG91bGRTa2lwQ2hpbGQgbWV0
aG9kIHRvIGVuc3VyZSBsZWdlbmRzIGFyZW4ndAorICAgICAgICBwYXJ0IG9mIHRoZSBmbGV4aWJs
ZSBib3ggbGF5b3V0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKToKKyAgICAgICAgTWFr
ZSBzdXJlIGdyaWRzIGxheSBvdXQgdGhlaXIgbGVnZW5kcyBwcm9wZXJseSBieSBjYWxsaW5nIGxh
eW91dEV4Y2x1ZGVkQ2hpbGRyZW4uCisgICAgICAgIFBhdGNoIG1ldGhvZHMgdG8gdXNlIHRoZSBP
cmRlckl0ZXJhdG9yJ3MgbmV3IHNob3VsZFNraXBDaGlsZCBtZXRob2QgdG8gZW5zdXJlIGxlZ2Vu
ZHMgYXJlbid0CisgICAgICAgIHBhcnQgb2YgdGhlIGdyaWQncyBsYXlvdXQuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6cG9wdWxhdGUpOgorICAgICAgICBQ
dWxsIGxlZ2VuZHMgYmFjayB1cCBpbnRvIHRoZSBibG9jayBhbmQgZG9uJ3QgbGV0IHRoZW0gYmUg
cGFydCBvZiB0aGUgZmxvdyB0aHJlYWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6
OnJlcXVpcmVzQmFsYW5jaW5nKToKKyAgICAgICAgRml4IGFuIGFzc2VydCB0byBhbGxvdyBsZWdl
bmRzIHRvIGV4aXN0IGFzIHNpYmxpbmdzIG9mIG11bHRpY29sdW1uIHNldHMuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6aXNGaWVsZHNldCk6CisgICAgICAgIENoYW5nZWQgdG8gZXhhbWluZSB0aGUgSFRNTCBl
bGVtZW50IHJhdGhlciB0aGFuIFJlbmRlckZpZWxkc2V0LgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0V4Y2x1
ZGVkRnJvbU5vcm1hbExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNl
dElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6UmVuZGVyT2JqZWN0Qml0ZmllbGRzOjpSZW5kZXJPYmplY3RCaXRmaWVsZHMpOgorICAg
ICAgICBSZW5kZXJPYmplY3RzIG5vdyBoYXZlIGEgbmV3IGJpdCB0aGF0IGlzIHNldCBmb3IgZXhj
bHVkZWQgb2JqZWN0cyBsaWtlIGxlZ2VuZHMsIGZsb3cgdGhyZWFkcywKKyAgICAgICAgcGxhY2Vo
b2xkZXJzLCBhbmQgcnVieSB0ZXh0LiBUaGlzIGJpdCBsZXRzIGNvZGUgZWFzaWx5IGRldGVjdCB0
aGF0IGFuIG9iamVjdCBpcyBleGNsdWRlZCBmcm9tCisgICAgICAgIHRoZSBsYXlvdXQgc3lzdGVt
IGFuZCBjYW4gYmUgc2tpcHBlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpp
c0V4Y2x1ZGVkQW5kUGxhY2VkSW5Cb3JkZXIpOgorICAgICAgICBIZWxwZXIgbWV0aG9kIGZvciBh
c2tpbmcgaWYgYW4gb2JqZWN0IGlzIHBhaW50aW5nIGluc2lkZSB0aGUgYm9yZGVyLiBVc2VkIHRv
IGtub3cgd2UKKyAgICAgICAgbmVlZCB0byBmYWN0b3IgaXQgaW50byBwcmVmZXJyZWQgd2lkdGgg
Y2FsY3VsYXRpb25zIG91dHNpZGUgb2YgYW55IG9uZSBsYXlvdXQgc3lzdGVtCisgICAgICAgIGFu
ZCBhbHNvIHRvIGtub3cgdGhhdCB3ZSBuZWVkIHRvIHBhaW50IGl0IHdoZW4gd2UgcGFpbnQgdGhl
IGZpZWxkc2V0J3MgYm9yZGVyIGluc3RlYWQgb2YKKyAgICAgICAgbGF0ZXIgKGFmdGVyIHdlIG1p
Z2h0IGhhdmUgc2Nyb2xsZWQgb3IgY2xpcHBlZCB0aGUgY2hpbGQgcGFpbnRpbmcgYXJlYSkuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJ1YnlSdW46OmxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICBSZW5hbWUgbGF5
b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQgdG8gbGF5b3V0RXhjbHVkZWRDaGlsZHJlbi4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpwYWludE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6
OnN1YnRyYWN0Q2FwdGlvblJlY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICBQYXRjaGVkIHRhYmxlcyB0byBzaGFyZSB0aGUgc2FtZSBib3Jk
ZXIgYm94IHJlY3QgYWRqdXN0bWVudCB1c2VkIGJ5IGZpZWxkc2V0cyB3aGVuIHN1YnRyYWN0aW5n
CisgICAgICAgIG91dCBjYXB0aW9ucy4gVGhpcyBpcyBwcmVwIHdvcmsgdG8gYWxsb3cgdGFibGVz
IHRvIGJlIGZpZWxkc2V0cywgYnV0IGZvciBub3cgSSBkaWRuJ3QgZ28gYWxsIHRoZQorICAgICAg
ICB3YXkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50TWFzayk6CisgICAgICAgIE1ha2Ug
c3VyZSB0YWJsZSBjZWxscyBhZGp1c3QgdGhlaXIgYm9yZGVyIGJveCByZWN0cyBmb3IgcGFpbnRp
bmcuIEFnYWluIHRoaXMgaXMgcHJlcCB3b3JrIGZvcgorICAgICAgICBjZWxscyBwb3RlbnRpYWxs
eSBiZWluZyBmaWVsZHNldHMsIGJ1dCBub3Qgc3VwcG9ydGVkIHlldC4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbDo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bGF5b3V0U3BlY2lhbEV4
Y2x1ZGVkQ2hpbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5oOgorICAgICAgICBSZW5hbWVkIHRoZSBtZXRob2RzIGZvciBkb2luZyB0
aGUgZXhjbHVkZWQgY2hpbGQgbGF5b3V0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVS
ZW5kZXJPYmplY3QpOgorICAgICAgICBNYWtlIHN1cmUgdG8gZHVtcCB0aGUgb3JpZ2luYWwgZmll
bGRzZXQgYm9yZGVyIGFuZCBub3QgdGhlIGJvcmRlciB3aXRoIHRoZSBleHRyYSBsZWdlbmQgc3R1
ZmYgaW4gaXQuCisKIDIwMTctMDMtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2xhcmlmeSBzb21lIHRlcm1pbm9sb2d5IGluIFJlbmRlckxheWVy
QmFja2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxMzQzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDIxLDcgKzI0
MjEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlckRldGFpbHNN
YXJrZXIuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCiAgICAgcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5j
cHAKICAgICByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTI0LDggKzQ1MjQs
NiBAQAogCQlBOERGNEFFRjA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVTZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGNEFFNTA5
ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVTZWN0aW9uLmggKi87IH07CiAJCUE4REY0QUYw
MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZVJvdy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGNEFFNjA5ODBDNDJDMDA1Mjk4MUIgLyog
UmVuZGVyVGFibGVSb3cuY3BwICovOyB9OwogCQlBOERGNEFGMTA5ODBDNDJDMDA1Mjk4MUIgLyog
UmVuZGVyVGFibGVDb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4REY0QUU3MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZUNvbC5oICovOyB9
OwotCQlBOEVBNzNDMzBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmllbGRzZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTczQUYwQTE5MDBF
MzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNwcCAqLzsgfTsKLQkJQThFQTczQzQwQTE5MDBF
MzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEVBNzNCMDBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmll
bGRzZXQuaCAqLzsgfTsKIAkJQThFQTc5RjEwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxPTGlzdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
RUE3OUU1MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MT0xpc3RFbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThFQTc5RjIwQTE5MTZERjAw
QThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE3OUU2MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxpc3RF
bGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQThFQTc5RjMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTc5RTcwQTE5MTZE
RjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTI0NDAsOCArMTI0
MzgsNiBAQAogCQlBOERGNEFFNTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVTZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUYWJsZVNlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjRBRTYwOTgwQzQyQzAwNTI5ODFC
IC8qIFJlbmRlclRhYmxlUm93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJUYWJsZVJvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
REY0QUU3MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZUNvbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGFibGVDb2wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThFQTczQUYwQTE5MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGaWVsZHNldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4RUE3M0IwMEExOTAwRTMwMEE4RUY1
RiAvKiBSZW5kZXJGaWVsZHNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyRmllbGRzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFQTc5RTUw
QTE5MTZERjAwQThFRjVGIC8qIEhUTUxPTGlzdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxPTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThFQTc5RTYwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxVTGlzdEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFQTc5RTcwQTE5MTZERjAwQThFRjVGIC8qIEhU
TUxVTGlzdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxVTGlzdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQz
MjMsOCArMjQzMTksNiBAQAogCQkJCUU0M0EwMjNBMTdFQjM3MEEwMDRDREQyNSAvKiBSZW5kZXJF
bGVtZW50LmggKi8sCiAJCQkJMEY1QjdBNTIxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcCAqLywKIAkJCQkwRjVCN0E1MzEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCAqLywKLQkJCQlBOEVBNzNBRjBBMTkwMEUzMDBBOEVGNUYgLyogUmVu
ZGVyRmllbGRzZXQuY3BwICovLAotCQkJCUE4RUE3M0IwMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5k
ZXJGaWVsZHNldC5oICovLAogCQkJCTA2NkM3NzJFMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5jcHAgKi8sCiAJCQkJMDY2Qzc3MkYwQUI2MDNGRDAwMjM4Q0M0IC8q
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmggKi8sCiAJCQkJNTNDODI5OEIxM0Q4RDkyNzAwREUy
REVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmNwcCAqLywKQEAgLTI3OTI5LDcgKzI3OTIzLDYgQEAK
IAkJCQk5QjMyQ0RBOTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQzQTAyM0IxN0VCMzcwQTAwNENERDI1IC8qIFJlbmRlckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJF
bWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThFQTczQzQwQTE5MDBFMzAwQThF
RjVGIC8qIFJlbmRlckZpZWxkc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzczMTBBQjYw
M0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2OTUsNyArMzE2ODgsNiBAQAogCQkJCTlCMzJDREFB
MTNERjdGQTkwMEYzNEQxMyAvKiBSZW5kZXJlZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUU0M0EwMjNEMTdFQjM3MTMwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNUI3QTU0MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBOEVBNzNDMzBBMTkwMEUzMDBBOEVGNUYgLyog
UmVuZGVyRmllbGRzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDY2Qzc3MzAwQUI2MDNGRDAw
MjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzQzgyOThEMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVh
ZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJC
dXR0b24uaCIKLSNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgogI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySFRNTENhbnZhcy5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0xMDgxLDcgKzEwODAsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiAgICAgCiAgICAgLy8gaWYgaXNGaWVsZHNldCBpcyB0
cnVlLCB0aGUgcmVuZGVyZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIFJlbmRlckZpZWxkc2V0CiAg
ICAgaWYgKGlzRmllbGRzZXQoKSkKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoZG93bmNhc3Q8UmVuZGVyRmllbGRzZXQ+KCptX3JlbmRlcmVyKS5maW5kTGVnZW5k
KFJlbmRlckZpZWxkc2V0OjpJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdykpOworICAgICAgICBy
ZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShkb3duY2FzdDxSZW5kZXJCbG9jaz4o
Km1fcmVuZGVyZXIpLmZpbmRGaWVsZHNldExlZ2VuZChSZW5kZXJCbG9jazo6RmllbGRzZXRJbmNs
dWRlRmxvYXRpbmdPck91dE9mRmxvdykpOwogICAgIAogICAgIGlmIChpc0ZpZ3VyZSgpKQogICAg
ICAgICByZXR1cm4gY2FwdGlvbkZvckZpZ3VyZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJSZW5kZXJBbmNlc3Rvckl0ZXJhdG9yLmgiCi0jaW5j
bHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtMTg2LDkgKzE4NiwxMSBAQCBzdGF0aWMgdm9pZCBzZXRBdGtSZWxhdGlv
blNldEZyb21Db3JlT2JqCiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYWJlbCA9
IGNvcmVPYmplY3QtPnRpdGxlVUlFbGVtZW50KCkpCiAgICAgICAgICAgICBhdGtfcmVsYXRpb25f
c2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fTEFCRUxM
RURfQlksIGxhYmVsLT53cmFwcGVyKCkpOwogICAgIH0gZWxzZSBpZiAoY29yZU9iamVjdC0+cm9s
ZVZhbHVlKCkgPT0gTGVnZW5kUm9sZSkgewotICAgICAgICBpZiAoUmVuZGVyRmllbGRzZXQqIHJl
bmRlckZpZWxkc2V0ID0gYW5jZXN0b3JzT2ZUeXBlPFJlbmRlckZpZWxkc2V0PigqY29yZU9iamVj
dC0+cmVuZGVyZXIoKSkuZmlyc3QoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZmllbGRzZXQgPSBjb3JlT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJl
bmRlckZpZWxkc2V0KTsKLSAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9u
X2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9GT1IsIGZpZWxkc2V0LT53
cmFwcGVyKCkpOworICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIHJlbmRlckZpZWxkc2V0ID0gYW5j
ZXN0b3JzT2ZUeXBlPFJlbmRlckJsb2NrPigqY29yZU9iamVjdC0+cmVuZGVyZXIoKSkuZmlyc3Qo
KSkgeworICAgICAgICAgICAgaWYgKHJlbmRlckZpZWxkc2V0LT5pc0ZpZWxkc2V0KCkpIHsKKyAg
ICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaWVsZHNldCA9IGNvcmVPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyRmllbGRzZXQpOworICAgICAgICAg
ICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQs
IEFUS19SRUxBVElPTl9MQUJFTF9GT1IsIGZpZWxkc2V0LT53cmFwcGVyKCkpOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250
cm9sID0gY29yZU9iamVjdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSkg
ewogICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9u
U2V0LCBBVEtfUkVMQVRJT05fTEFCRUxfRk9SLCBjb250cm9sLT53cmFwcGVyKCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIK
LSNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxGaWVsZFNldEVsZW1lbnQ6
CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigq
dGhpcywgV1RGTW92ZShzdHlsZSksIFJlbmRlckVsZW1lbnQ6Ok9ubHlDcmVhdGVCbG9ja0FuZEZs
ZXhib3hSZW5kZXJlcnMpOwogfQogCiBIVE1MTGVnZW5kRWxlbWVudCogSFRNTEZpZWxkU2V0RWxl
bWVudDo6bGVnZW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5oCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOwotY2xhc3MgUmVuZGVyRmllbGRTZXQ7CiAKIGNsYXNz
IEhUTUxGaWVsZFNldEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCB7CiBwdWJsaWM6CkBAIC00Nyw4ICs0Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEludmFs
aWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmKTsKICAgICB2b2lkIHJl
bW92ZUludmFsaWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmKTsKIAot
ICAgIFJlbmRlckZpZWxkU2V0KiByZW5kZXJlcigpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIEhU
TUxGaWVsZFNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZv
cm1FbGVtZW50Kik7CiAgICAgfkhUTUxGaWVsZFNldEVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIxMzQzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMTQgKzc3LDIwIEBAIHZvaWQgT3JkZXJJdGVyYXRvcjo6cmVzZXQoKQogICAgIG1f
aXNSZXNldCA9IHRydWU7CiB9CiAKK2Jvb2wgT3JkZXJJdGVyYXRvcjo6c2hvdWxkU2tpcENoaWxk
KGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoaWxkLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGNoaWxkLmlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0
KCk7Cit9CisKIE9yZGVySXRlcmF0b3JQb3B1bGF0b3I6On5PcmRlckl0ZXJhdG9yUG9wdWxhdG9y
KCkKIHsKICAgICBtX2l0ZXJhdG9yLnJlc2V0KCk7CiB9CiAKLXZvaWQgT3JkZXJJdGVyYXRvclBv
cHVsYXRvcjo6Y29sbGVjdENoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCitib29sIE9yZGVy
SXRlcmF0b3JQb3B1bGF0b3I6OmNvbGxlY3RDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQog
ewogICAgIG1faXRlcmF0b3IubV9vcmRlclZhbHVlcy5pbnNlcnQoY2hpbGQuc3R5bGUoKS5vcmRl
cigpKTsKKyAgICByZXR1cm4gIW1faXRlcmF0b3Iuc2hvdWxkU2tpcENoaWxkKGNoaWxkKTsKIH0K
IAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgJKHJldmlz
aW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyT2JqZWN0OwogICAgIAogY2xhc3MgT3JkZXJJ
dGVyYXRvciB7CiBwdWJsaWM6CkBAIC00OCw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJC
b3gqIGZpcnN0KCk7CiAgICAgUmVuZGVyQm94KiBuZXh0KCk7CiAKKyAgICBib29sIHNob3VsZFNr
aXBDaGlsZChjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lk
IHJlc2V0KCk7CiAKQEAgLTY5LDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB+T3JkZXJJ
dGVyYXRvclBvcHVsYXRvcigpOwogCi0gICAgdm9pZCBjb2xsZWN0Q2hpbGQoY29uc3QgUmVuZGVy
Qm94Jik7CisgICAgYm9vbCBjb2xsZWN0Q2hpbGQoY29uc3QgUmVuZGVyQm94Jik7CiAKIHByaXZh
dGU6CiAgICAgT3JkZXJJdGVyYXRvciYgbV9pdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDE1
ICsyNDUsMTMgQEAgc3RydWN0IFJlbmRlckJsb2NrUmFyZURhdGEgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlbmRlckJsb2NrUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhKCkKLSAgICAgICAgOiBtX3BhZ2luYXRp
b25TdHJ1dCgwKQotICAgICAgICAsIG1fcGFnZUxvZ2ljYWxPZmZzZXQoMCkKLSAgICAgICAgLCBt
X2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2soc3RkOjpudWxsb3B0KQogICAgIHsKICAgICB9CiAK
ICAgICBMYXlvdXRVbml0IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIExheW91dFVuaXQgbV9wYWdl
TG9naWNhbE9mZnNldDsKLQorICAgIExheW91dFVuaXQgbV9pbnRyaW5zaWNCb3JkZXJGb3JGaWVs
ZHNldDsKKyAgICAKICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlckZsb3dUaHJlYWQqPiBtX2Zsb3dU
aHJlYWRDb250YWluaW5nQmxvY2s7CiB9OwogCkBAIC0xNjA1LDYgKzE2MDMsOSBAQCB2b2lkIFJl
bmRlckJsb2NrOjpwYWludENoaWxkcmVuKFBhaW50SW5mCiAKIGJvb2wgUmVuZGVyQmxvY2s6OnBh
aW50Q2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWludEluZm9Gb3JDaGlsZCwgYm9v
bCB1c2VQcmludFJlY3QsIFBhaW50QmxvY2tUeXBlIHBhaW50VHlwZSkKIHsKKyAgICBpZiAoY2hp
bGQuaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgLy8gQ2hlY2sgZm9yIHBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMsIGFuZCBpZiBpdCdz
IHNldCwgYnJlYWsgYW5kIGJhaWwuCiAgICAgYm9vbCBjaGVja0JlZm9yZUFsd2F5cyA9ICFjaGls
ZHJlbklubGluZSgpICYmICh1c2VQcmludFJlY3QgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0
eWxlKCkuYnJlYWtCZWZvcmUoKSkpOwogICAgIExheW91dFVuaXQgYWJzb2x1dGVDaGlsZFkgPSBw
YWludE9mZnNldC55KCkgKyBjaGlsZC55KCk7CkBAIC0xNjk1LDcgKzE2OTYsMTEgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgICAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAg
Ly8gUGFpbnQgbGVnZW5kcyBqdXN0IGFib3ZlIHRoZSBib3JkZXIgYmVmb3JlIHdlIHNjcm9sbCBv
ciBjbGlwLgorICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQg
fHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQorICAgICAgICBwYWludEV4Y2x1ZGVkQ2hpbGRy
ZW5JbkJvcmRlcihwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAKICAgICBpZiAocGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlTWFzayAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KSB7CiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjc2Nyw5ICsyNzcyLDIwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVC
bG9ja1ByZWZlcnJlZEwKICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwog
ICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2so
KTsKICAgICBMYXlvdXRVbml0IGZsb2F0TGVmdFdpZHRoID0gMCwgZmxvYXRSaWdodFdpZHRoID0g
MDsKKworICAgIExheW91dFVuaXQgY2hpbGRNaW5XaWR0aDsKKyAgICBMYXlvdXRVbml0IGNoaWxk
TWF4V2lkdGg7CisgICAgYm9vbCBoYWRFeGNsdWRlZENoaWxkcmVuID0gY29tcHV0ZVByZWZlcnJl
ZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4oY2hpbGRNaW5XaWR0aCwgY2hpbGRNYXhXaWR0aCk7
CisgICAgaWYgKGhhZEV4Y2x1ZGVkQ2hpbGRyZW4pIHsKKyAgICAgICAgbWluTG9naWNhbFdpZHRo
ID0gc3RkOjptYXgoY2hpbGRNaW5XaWR0aCwgbWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWF4
TG9naWNhbFdpZHRoID0gc3RkOjptYXgoY2hpbGRNYXhXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsK
KyAgICB9CisKICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgLy8gUG9zaXRpb25lZCBjaGls
ZHJlbiBkb24ndCBhZmZlY3QgdGhlIG1pbi9tYXggd2lkdGgKLSAgICAgICAgaWYgKGNoaWxkLT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAvLyBQb3NpdGlvbmVkIGNoaWxkcmVu
IGRvbid0IGFmZmVjdCB0aGUgbWluL21heCB3aWR0aC4gTGVnZW5kcyBpbiBmaWVsZHNldHMgYXJl
IHNraXBwZWQgaGVyZQorICAgICAgICAvLyBzaW5jZSB0aGV5IGNvbXB1dGUgb3V0c2lkZSBvZiBh
bnkgb25lIGxheW91dCBzeXN0ZW0uIE90aGVyIGNoaWxkcmVuIGV4Y2x1ZGVkIGZyb20KKyAgICAg
ICAgLy8gbm9ybWFsIGxheW91dCBhcmUgb25seSB1c2VkIHdpdGggYmxvY2sgZmxvd3MsIHNvIGl0
J3Mgb2sgdG8gY2FsY3VsYXRlIHRoZW0gaGVyZS4KKyAgICAgICAgaWYgKGNoaWxkLT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+aXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkp
IHsKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMzc3MCw3ICszNzg2LDggQEAgY29uc3QgY2hhciog
UmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjbwogewogICAgIGlmIChpc0JvZHkoKSkKICAgICAg
ICAgcmV0dXJuICJSZW5kZXJCb2R5IjsgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHVudGlsIHdl
IGtub3cgdGhhdCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBwYXNzLgotCisgICAgaWYgKGlzRmllbGRz
ZXQoKSkKKyAgICAgICAgcmV0dXJuICJSZW5kZXJGaWVsZFNldCI7IC8vIEZJWE1FOiBSZW1vdmUg
ZXZlbnR1YWxseSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9tIGJyZWFraW5nLgogICAgIGlm
IChpc0Zsb2F0aW5nKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSI7
CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtMzkwMiw0ICszOTE5LDI2NyBA
QCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphCiAgICAgCiAgICAgcmV0
dXJuIGF2YWlsYWJsZUhlaWdodDsKIH0KKyAgICAKK3ZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEV4
Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKQoreworICAgIGlmICghaXNGaWVs
ZHNldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRJbnRyaW5zaWNCb3JkZXJGb3JGaWVs
ZHNldCgwKTsKKworICAgIFJlbmRlckJveCogYm94ID0gZmluZEZpZWxkc2V0TGVnZW5kKCk7Cisg
ICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybjsKKworICAgIGJveC0+c2V0SXNFeGNsdWRlZEZy
b21Ob3JtYWxMYXlvdXQodHJ1ZSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZU
eXBlPFJlbmRlckJveD4oKnRoaXMpKSB7CisgICAgICAgIGlmICgmY2hpbGQgPT0gYm94IHx8ICFj
aGlsZC5pc0xlZ2VuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNoaWxkLnNl
dElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGZhbHNlKTsKKyAgICB9CisKKyAgICBSZW5kZXJC
b3gmIGxlZ2VuZCA9ICpib3g7CisgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4pCisgICAgICAgIGxl
Z2VuZC5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgbGVnZW5kLmxheW91
dElmTmVlZGVkKCk7CisgICAgCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdDsKKyAgICBpZiAo
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKKyAgICAgICAgc3dpdGNoIChsZWdl
bmQuc3R5bGUoKS50ZXh0QWxpZ24oKSkgeworICAgICAgICBjYXNlIENFTlRFUjoKKyAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0ID0gKGxvZ2ljYWxXaWR0aCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQo
bGVnZW5kKSkgLyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUklHSFQ6Cisg
ICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGxvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyRW5kKCkgLSBw
YWRkaW5nRW5kKCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdlbmQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGJvcmRl
clN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKSArIG1hcmdpblN0YXJ0Rm9yQ2hpbGQobGVnZW5kKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dp
dGNoIChsZWdlbmQuc3R5bGUoKS50ZXh0QWxpZ24oKSkgeworICAgICAgICBjYXNlIExFRlQ6Cisg
ICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENFTlRFUjogeworICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGV4dHJhIHBpeGVsIGdvZXMgdG8gdGhlIGVuZCBzaWRlIGlu
IFJUTCAoc2luY2UgaXQgd2VudCB0byB0aGUgZW5kIHNpZGUKKyAgICAgICAgICAgIC8vIGluIExU
UikuCisgICAgICAgICAgICBMYXlvdXRVbml0IGNlbnRlcmVkV2lkdGggPSBsb2dpY2FsV2lkdGgo
KSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCk7CisgICAgICAgICAgICBsb2dpY2FsTGVm
dCA9IGNlbnRlcmVkV2lkdGggLSBjZW50ZXJlZFdpZHRoIC8gMjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBsb2dpY2FsTGVmdCA9
IGxvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyU3RhcnQoKSAtIHBhZGRpbmdTdGFydCgpIC0gbWFyZ2lu
U3RhcnRGb3JDaGlsZChsZWdlbmQpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHNldExvZ2ljYWxM
ZWZ0Rm9yQ2hpbGQobGVnZW5kLCBsb2dpY2FsTGVmdCk7CisgICAgCisgICAgTGF5b3V0VW5pdCBm
aWVsZHNldEJvcmRlckJlZm9yZSA9IGJvcmRlckJlZm9yZSgpOworICAgIExheW91dFVuaXQgbGVn
ZW5kTG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChsZWdlbmQpOworICAgIExh
eW91dFVuaXQgbGVnZW5kQWZ0ZXJNYXJnaW4gPSBtYXJnaW5BZnRlckZvckNoaWxkKGxlZ2VuZCk7
CisgICAgTGF5b3V0VW5pdCB0b3BQb3NpdGlvbkZvckxlZ2VuZCA9IHN0ZDo6bWF4KExheW91dFVu
aXQoKSwgKGZpZWxkc2V0Qm9yZGVyQmVmb3JlIC0gbGVnZW5kTG9naWNhbEhlaWdodCkgLyAyKTsK
KyAgICBMYXlvdXRVbml0IGJvdHRvbVBvc2l0aW9uRm9yTGVnZW5kID0gdG9wUG9zaXRpb25Gb3JM
ZWdlbmQgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbGVnZW5kQWZ0ZXJNYXJnaW47CisKKyAgICAv
LyBQbGFjZSB0aGUgbGVnZW5kIG5vdy4KKyAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQobGVnZW5k
LCB0b3BQb3NpdGlvbkZvckxlZ2VuZCk7CisKKyAgICAvLyBJZiB0aGUgYm90dG9tIG9mIHRoZSBs
ZWdlbmQgKGluY2x1ZGluZyBpdHMgYWZ0ZXIgbWFyZ2luKSBpcyBiZWxvdyB0aGUgZmllbGRzZXQg
Ym9yZGVyLAorICAgIC8vIHRoZW4gd2UgbmVlZCB0byBhZGQgaW4gc3VmZmljaWVudCBpbnRyaW5z
aWMgYm9yZGVyIHRvIGFjY291bnQgZm9yIHRoaXMgZ2FwLgorICAgIC8vIEZJWE1FOiBTaG91bGQg
d2Ugc3VwcG9ydCB0aGUgYmVmb3JlIG1hcmdpbiBvZiB0aGUgbGVnZW5kPyBOb3QgZW50aXJlbHkg
Y2xlYXIuCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGRyb3BwaW5nIHN1cHBvcnQgZm9yIHRoZSBh
ZnRlciBtYXJnaW4gb2YgdGhlIGxlZ2VuZC4gTm90IHN1cmUgb3RoZXIKKyAgICAvLyBicm93c2Vy
cyBzdXBwb3J0IHRoYXQgYW55d2F5LgorICAgIGlmIChib3R0b21Qb3NpdGlvbkZvckxlZ2VuZCA+
IGZpZWxkc2V0Qm9yZGVyQmVmb3JlKQorICAgICAgICBzZXRJbnRyaW5zaWNCb3JkZXJGb3JGaWVs
ZHNldChib3R0b21Qb3NpdGlvbkZvckxlZ2VuZCAtIGZpZWxkc2V0Qm9yZGVyQmVmb3JlKTsKKyAg
ICAKKyAgICAvLyBOb3cgdGhhdCB0aGUgbGVnZW5kIGlzIGluY2x1ZGVkIGluIHRoZSBib3JkZXIg
ZXh0ZW50LCB3ZSBjYW4gc2V0IG91ciBsb2dpY2FsIGhlaWdodAorICAgIC8vIHRvIHRoZSBib3Jk
ZXJCZWZvcmUgKHdoaWNoIGluY2x1ZGVzIHRoZSBsZWdlbmQgYW5kIGl0cyBhZnRlciBtYXJnaW4g
aWYgdGhleSB3ZXJlIGJpZ2dlcgorICAgIC8vIHRoYW4gdGhlIGFjdHVhbCBmaWVsZHNldCBib3Jk
ZXIpIGFuZCB0aGVuIGFkZCBpbiBvdXIgcGFkZGluZyBiZWZvcmUuCisgICAgc2V0TG9naWNhbEhl
aWdodChib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKSk7Cit9CisKK1JlbmRlckJveCog
UmVuZGVyQmxvY2s6OmZpbmRGaWVsZHNldExlZ2VuZChGaWVsZHNldEZpbmRMZWdlbmRPcHRpb24g
b3B0aW9uKSBjb25zdAoreworICAgIGZvciAoYXV0byYgbGVnZW5kIDogY2hpbGRyZW5PZlR5cGU8
UmVuZGVyQm94PigqdGhpcykpIHsKKyAgICAgICAgaWYgKG9wdGlvbiA9PSBGaWVsZHNldElnbm9y
ZUZsb2F0aW5nT3JPdXRPZkZsb3cgJiYgbGVnZW5kLmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGVnZW5kLmlzTGVn
ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJCb3gqPigmbGVnZW5k
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OmFk
anVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyhMYXlvdXRSZWN0JiBwYWludFJlY3QpCit7Cisg
ICAgaWYgKCFpc0ZpZWxkc2V0KCkgfHwgIWludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvKiBsZWdlbmQgPSBmaW5kRmllbGRzZXRMZWdl
bmQoKTsKKyAgICBpZiAoIWxlZ2VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0eWxl
KCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgeworICAgICAgICBMYXlvdXRVbml0IHlPZmYg
PSBzdGQ6Om1heChMYXlvdXRVbml0KCksIChsZWdlbmQtPmhlaWdodCgpIC0gUmVuZGVyQm94Ojpi
b3JkZXJCZWZvcmUoKSkgLyAyKTsKKyAgICAgICAgcGFpbnRSZWN0LnNldEhlaWdodChwYWludFJl
Y3QuaGVpZ2h0KCkgLSB5T2ZmKTsKKyAgICAgICAgaWYgKHN0eWxlKCkud3JpdGluZ01vZGUoKSA9
PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKQorICAgICAgICAgICAgcGFpbnRSZWN0LnNldFkocGFp
bnRSZWN0LnkoKSArIHlPZmYpOworICAgIH0gZWxzZSB7CisgICAgICAgIExheW91dFVuaXQgeE9m
ZiA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgKGxlZ2VuZC0+d2lkdGgoKSAtIFJlbmRlckJveDo6
Ym9yZGVyQmVmb3JlKCkpIC8gMik7CisgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChwYWludFJl
Y3Qud2lkdGgoKSAtIHhPZmYpOworICAgICAgICBpZiAoc3R5bGUoKS53cml0aW5nTW9kZSgpID09
IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpCisgICAgICAgICAgICBwYWludFJlY3Quc2V0WChwYWlu
dFJlY3QueCgpICsgeE9mZik7CisgICAgfQorfQorCitMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpw
YWludFJlY3RUb0NsaXBPdXRGcm9tQm9yZGVyKGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkK
K3sKKyAgICBMYXlvdXRSZWN0IGNsaXBSZWN0OworICAgIGlmICghaXNGaWVsZHNldCgpKQorICAg
ICAgICByZXR1cm4gY2xpcFJlY3Q7CisgICAgYXV0byogbGVnZW5kID0gZmluZEZpZWxkc2V0TGVn
ZW5kKCk7CisgICAgaWYgKCFsZWdlbmQpCisgICAgICAgIHJldHVybiBjbGlwUmVjdDsKKworICAg
IExheW91dFVuaXQgYm9yZGVyRXh0ZW50ID0gUmVuZGVyQm94Ojpib3JkZXJCZWZvcmUoKTsKKyAg
ICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CisgICAgICAgIGNsaXBS
ZWN0LnNldFgocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpKTsKKyAgICAgICAgY2xpcFJlY3Qu
c2V0WShzdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSA/IHBh
aW50UmVjdC55KCkgOiBwYWludFJlY3QueSgpICsgcGFpbnRSZWN0LmhlaWdodCgpIC0gYm9yZGVy
RXh0ZW50KTsKKyAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgobGVnZW5kLT53aWR0aCgpKTsKKyAg
ICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KGJvcmRlckV4dGVudCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY2xpcFJlY3Quc2V0WChzdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gTGVmdFRvUmlnaHRX
cml0aW5nTW9kZSA/IHBhaW50UmVjdC54KCkgOiBwYWludFJlY3QueCgpICsgcGFpbnRSZWN0Lndp
ZHRoKCkgLSBib3JkZXJFeHRlbnQpOworICAgICAgICBjbGlwUmVjdC5zZXRZKHBhaW50UmVjdC55
KCkgKyBsZWdlbmQtPnkoKSk7CisgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKGJvcmRlckV4dGVu
dCk7CisgICAgICAgIGNsaXBSZWN0LnNldEhlaWdodChsZWdlbmQtPmhlaWdodCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGNsaXBSZWN0OworfQorCitMYXlvdXRVbml0IFJlbmRlckJsb2NrOjppbnRy
aW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpIGNvbnN0Cit7CisgICAgYXV0byogcmFyZURhdGEgPSBn
ZXRCbG9ja1JhcmVEYXRhKHRoaXMpOworICAgIHJldHVybiByYXJlRGF0YSA/IHJhcmVEYXRhLT5t
X2ludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0IDogTGF5b3V0VW5pdCgpOworfQorCit2b2lkIFJl
bmRlckJsb2NrOjpzZXRJbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldChMYXlvdXRVbml0IHBhZGRp
bmcpCit7CisgICAgYXV0byogcmFyZURhdGEgPSBnZXRCbG9ja1JhcmVEYXRhKHRoaXMpOworICAg
IGlmICghcmFyZURhdGEpIHsKKyAgICAgICAgaWYgKCFwYWRkaW5nKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICByYXJlRGF0YSA9ICZlbnN1cmVCbG9ja1JhcmVEYXRhKHRoaXMpOworICAg
IH0KKyAgICByYXJlRGF0YS0+bV9pbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCA9IHBhZGRpbmc7
Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJvcmRlclRvcCgpIGNvbnN0Cit7CisgICAg
aWYgKHN0eWxlKCkud3JpdGluZ01vZGUoKSAhPSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8ICFp
bnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpi
b3JkZXJUb3AoKTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpib3JkZXJUb3AoKSArIGludHJpbnNp
Y0JvcmRlckZvckZpZWxkc2V0KCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJvcmRl
ckxlZnQoKSBjb25zdAoreworICAgIGlmIChzdHlsZSgpLndyaXRpbmdNb2RlKCkgIT0gTGVmdFRv
UmlnaHRXcml0aW5nTW9kZSB8fCAhaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKSkKKyAgICAg
ICAgcmV0dXJuIFJlbmRlckJveDo6Ym9yZGVyTGVmdCgpOworICAgIHJldHVybiBSZW5kZXJCb3g6
OmJvcmRlckxlZnQoKSArIGludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCk7Cit9CisKK0xheW91
dFVuaXQgUmVuZGVyQmxvY2s6OmJvcmRlckJvdHRvbSgpIGNvbnN0Cit7CisgICAgaWYgKHN0eWxl
KCkud3JpdGluZ01vZGUoKSAhPSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlIHx8ICFpbnRyaW5zaWNC
b3JkZXJGb3JGaWVsZHNldCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpib3JkZXJCb3R0
b20oKTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpib3JkZXJCb3R0b20oKSArIGludHJpbnNpY0Jv
cmRlckZvckZpZWxkc2V0KCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJvcmRlclJp
Z2h0KCkgY29uc3QKK3sKKyAgICBpZiAoc3R5bGUoKS53cml0aW5nTW9kZSgpICE9IFJpZ2h0VG9M
ZWZ0V3JpdGluZ01vZGUgfHwgIWludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCkpCisgICAgICAg
IHJldHVybiBSZW5kZXJCb3g6OmJvcmRlclJpZ2h0KCk7CisgICAgcmV0dXJuIFJlbmRlckJveDo6
Ym9yZGVyUmlnaHQoKSArIGludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KCk7Cit9CisKK0xheW91
dFVuaXQgUmVuZGVyQmxvY2s6OmJvcmRlckJlZm9yZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJl
bmRlckJveDo6Ym9yZGVyQmVmb3JlKCkgKyBpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOwor
fQorCitib29sIFJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVkV2lkdGhzRm9yRXhjbHVkZWRD
aGlsZHJlbihMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNvbnN0
Cit7CisgICAgaWYgKCFpc0ZpZWxkc2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBhdXRvKiBsZWdlbmQgPSBmaW5kRmllbGRzZXRMZWdlbmQoKTsKKyAgICBpZiAoIWxlZ2Vu
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGxlZ2VuZC0+c2V0SXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQodHJ1ZSk7CisKKyAgICBjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCpsZWdlbmQsIG1pbldpZHRoLCBtYXhXaWR0aCk7CisgICAgCisgICAgLy8gVGhl
c2UgYXJlIGdvaW5nIHRvIGJlIGFkZGVkIGluIGxhdGVyLCBzbyB3ZSBzdWJ0cmFjdCB0aGVtIG91
dCB0byByZWZsZWN0IHRoZQorICAgIC8vIGZhY3QgdGhhdCB0aGUgbGVnZW5kIGlzIG91dHNpZGUg
dGhlIHNjcm9sbGFibGUgYXJlYS4KKyAgICBhdXRvIHNjcm9sbGJhcldpZHRoID0gaW50cmluc2lj
U2Nyb2xsYmFyTG9naWNhbFdpZHRoKCk7CisgICAgbWluV2lkdGggLT0gc2Nyb2xsYmFyV2lkdGg7
CisgICAgbWF4V2lkdGggLT0gc2Nyb2xsYmFyV2lkdGg7CisgICAgCisgICAgY29uc3QgYXV0byYg
Y2hpbGRTdHlsZSA9IGxlZ2VuZC0+c3R5bGUoKTsKKyAgICBhdXRvIHN0YXJ0TWFyZ2luTGVuZ3Ro
ID0gY2hpbGRTdHlsZS5tYXJnaW5TdGFydFVzaW5nKCZzdHlsZSgpKTsKKyAgICBhdXRvIGVuZE1h
cmdpbkxlbmd0aCA9IGNoaWxkU3R5bGUubWFyZ2luRW5kVXNpbmcoJnN0eWxlKCkpOworICAgIExh
eW91dFVuaXQgbWFyZ2luOworICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQ7CisgICAgTGF5b3V0
VW5pdCBtYXJnaW5FbmQ7CisgICAgaWYgKHN0YXJ0TWFyZ2luTGVuZ3RoLmlzRml4ZWQoKSkKKyAg
ICAgICAgbWFyZ2luU3RhcnQgKz0gc3RhcnRNYXJnaW5MZW5ndGgudmFsdWUoKTsKKyAgICBpZiAo
ZW5kTWFyZ2luTGVuZ3RoLmlzRml4ZWQoKSkKKyAgICAgICAgbWFyZ2luRW5kICs9IGVuZE1hcmdp
bkxlbmd0aC52YWx1ZSgpOworICAgIG1hcmdpbiA9IG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOwor
ICAgIAorICAgIG1pbldpZHRoICs9IG1hcmdpbjsKKyAgICBtYXhXaWR0aCArPSBtYXJnaW47CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0Qm9y
ZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdodCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogV2UncmUgZG9pbmcgdGhpcyB0byBtYXRjaCBvdGhlciBicm93c2Vy
cyBldmVuIHRob3VnaCBpdCdzIHF1ZXN0aW9uYWJsZS4KKyAgICAvLyBTaG91bGRuJ3QgaGVpZ2h0
OjEwMHB4IG1lYW4gdGhlIGZpZWxkc2V0IGNvbnRlbnQgZ2V0cyAxMDBweCBvZiBoZWlnaHQgZXZl
biBpZiB0aGUKKyAgICAvLyByZXN1bHRpbmcgZmllbGRzZXQgYmVjb21lcyBtdWNoIHRhbGxlciBi
ZWNhdXNlIG9mIHRoZSBsZWdlbmQ/CisgICAgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcg
PSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOworICAgIGlmIChzdHlsZSgpLmJveFNp
emluZygpID09IENPTlRFTlRfQk9YKQorICAgICAgICByZXR1cm4gaGVpZ2h0ICsgYm9yZGVyc1Bs
dXNQYWRkaW5nIC0gaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKKyAgICByZXR1cm4gc3Rk
OjptYXgoaGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcpOworfQorCitMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjphZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2UncmUg
ZG9pbmcgdGhpcyB0byBtYXRjaCBvdGhlciBicm93c2VycyBldmVuIHRob3VnaCBpdCdzIHF1ZXN0
aW9uYWJsZS4KKyAgICAvLyBTaG91bGRuJ3QgaGVpZ2h0OjEwMHB4IG1lYW4gdGhlIGZpZWxkc2V0
IGNvbnRlbnQgZ2V0cyAxMDBweCBvZiBoZWlnaHQgZXZlbiBpZiB0aGUKKyAgICAvLyByZXN1bHRp
bmcgZmllbGRzZXQgYmVjb21lcyBtdWNoIHRhbGxlciBiZWNhdXNlIG9mIHRoZSBsZWdlbmQ/Cisg
ICAgaWYgKCFoZWlnaHQpCisgICAgICAgIHJldHVybiAwOworICAgIExheW91dFVuaXQgcmVzdWx0
ID0gaGVpZ2h0LnZhbHVlKCk7CisgICAgaWYgKHN0eWxlKCkuYm94U2l6aW5nKCkgPT0gQk9SREVS
X0JPWCkKKyAgICAgICAgcmVzdWx0IC09IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7
CisgICAgZWxzZQorICAgICAgICByZXN1bHQgLT0gaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQo
KTsKKyAgICByZXR1cm4gc3RkOjptYXgoTGF5b3V0VW5pdCgpLCByZXN1bHQpOworfQorCit2b2lk
IFJlbmRlckJsb2NrOjpwYWludEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQoreworICAgIGlmICghaXNG
aWVsZHNldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUmVuZGVyQm94KiBib3ggPSBm
aW5kRmllbGRzZXRMZWdlbmQoKTsKKyAgICBpZiAoIWJveCB8fCAhYm94LT5pc0V4Y2x1ZGVkRnJv
bU5vcm1hbExheW91dCgpIHx8IGJveC0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBmbGlwRm9yV3JpdGlu
Z01vZGVGb3JDaGlsZChib3gsIHBhaW50T2Zmc2V0KTsKKyAgICBib3gtPnBhaW50QXNJbmxpbmVC
bG9jayhwYWludEluZm8sIGNoaWxkUG9pbnQpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9u
IDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsT2Zmc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlTG9naWNhbE9mZnNldChM
YXlvdXRVbml0KTsKIAorICAgIC8vIEZpZWxkc2V0IGxlZ2VuZHMgdGhhdCBhcmUgdGFsbGVyIHRo
YW4gdGhlIGZpZWxkc2V0IGJvcmRlciBhZGQgaW4gaW50cmluc2ljIGJvcmRlcgorICAgIC8vIGlu
IG9yZGVyIHRvIGVuc3VyZSB0aGF0IGNvbnRlbnQgZ2V0cyBwcm9wZXJseSBwdXNoZWQgZG93biBh
Y3Jvc3MgYWxsIGxheW91dCBzeXN0ZW1zCisgICAgLy8gKGZsZXhib3gsIGJsb2NrLCBldGMuKQor
ICAgIExheW91dFVuaXQgaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKSBjb25zdDsKKyAgICB2
b2lkIHNldEludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0KExheW91dFVuaXQpOworICAgIExheW91
dFVuaXQgYm9yZGVyVG9wKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBib3JkZXJC
b3R0b20oKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBib3JkZXJCZWZvcmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlv
dXRVbml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5p
dCBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWln
aHQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRFeGNsdWRlZENoaWxkcmVuSW5Cb3Jk
ZXIoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICAKICAgICAvLyBBY2Nlc3Nv
cnMgZm9yIGxvZ2ljYWwgd2lkdGgvaGVpZ2h0IGFuZCBtYXJnaW5zIGluIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgYmxvY2stZmxvdyBkaXJlY3Rpb24uCiAgICAgZW51bSBBcHBseUxheW91dERlbHRh
TW9kZSB7IEFwcGx5TGF5b3V0RGVsdGEsIERvTm90QXBwbHlMYXlvdXREZWx0YSB9OwogICAgIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLndpZHRoKCkgOiBj
aGlsZC5oZWlnaHQoKTsgfQpAQCAtMzgzLDYgKzM5NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gY2hp
bGRyZW4uCiAgICAgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKKyAgICBlbnVtIEZpZWxkc2V0RmluZExlZ2VuZE9wdGlvbiB7IEZpZWxkc2V0SWdub3JlRmxv
YXRpbmdPck91dE9mRmxvdywgRmllbGRzZXRJbmNsdWRlRmxvYXRpbmdPck91dE9mRmxvdyB9Owor
ICAgIFJlbmRlckJveCogZmluZEZpZWxkc2V0TGVnZW5kKEZpZWxkc2V0RmluZExlZ2VuZE9wdGlv
biA9IEZpZWxkc2V0SWdub3JlRmxvYXRpbmdPck91dE9mRmxvdykgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCAvKnJlbGF5b3V0Q2hpbGRyZW4qLyk7
CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxk
cmVuKExheW91dFVuaXQmLCBMYXlvdXRVbml0JikgY29uc3Q7CisgICAgCisgICAgdm9pZCBhZGp1
c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdCYpIG92ZXJyaWRlOworICAgIExh
eW91dFJlY3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlcihjb25zdCBMYXlvdXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93
RnJvbUNoaWxkcmVuKCk7CiAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6
YXRpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJldmlz
aW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmNvbXB1dGVDb2x1bW5Db3VudAogYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVD
b2x1bW5zKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QK
IHsKICAgICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBub3Qgc3VwcG9zZWQgdG8gY3JlYXRl
IG11bHRpY29sIGNvbnRleHQuCi0gICAgaWYgKGlzRmllbGRzZXQoKSB8fCBpc0ZpbGVVcGxvYWRD
b250cm9sKCkgfHwgaXNUZXh0Q29udHJvbCgpIHx8IGlzTGlzdEJveCgpKQorICAgIGlmIChpc0Zp
bGVVcGxvYWRDb250cm9sKCkgfHwgaXNUZXh0Q29udHJvbCgpIHx8IGlzTGlzdEJveCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkKQEAgLTYzNyw3ICs2
MzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tDaGlsZHJlCiAgICAgLy8g
RmllbGRzZXRzIG5lZWQgdG8gZmluZCB0aGVpciBsZWdlbmQgYW5kIHBvc2l0aW9uIGl0IGluc2lk
ZSB0aGUgYm9yZGVyIG9mIHRoZSBvYmplY3QuCiAgICAgLy8gVGhlIGxlZ2VuZCB0aGVuIGdldHMg
c2tpcHBlZCBkdXJpbmcgbm9ybWFsIGxheW91dC4gVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgcnVieSB0
ZXh0LgogICAgIC8vIEl0IGRvZXNuJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBub3JtYWwgbGF5b3V0
IHByb2Nlc3MgYnV0IGlzIGluc3RlYWQgc2tpcHBlZC4KLSAgICBSZW5kZXJPYmplY3QqIGNoaWxk
VG9FeGNsdWRlID0gbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQocmVsYXlvdXRDaGlsZHJlbik7
CisgICAgbGF5b3V0RXhjbHVkZWRDaGlsZHJlbihyZWxheW91dENoaWxkcmVuKTsKIAogICAgIExh
eW91dFVuaXQgcHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20gPSAwOwogICAgIG1heEZsb2F0TG9n
aWNhbEJvdHRvbSA9IDA7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmxheW91dEJsb2NrQ2hpbGRyZQogICAgICAgICBSZW5kZXJCb3gmIGNoaWxkID0gKm5leHQ7CiAg
ICAgICAgIG5leHQgPSBjaGlsZC5uZXh0U2libGluZ0JveCgpOwogCi0gICAgICAgIGlmIChjaGls
ZFRvRXhjbHVkZSA9PSAmY2hpbGQpCisgICAgICAgIGlmIChjaGlsZC5pc0V4Y2x1ZGVkRnJvbU5v
cm1hbExheW91dCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBjaGlsZCwg
c2luY2UgaXQgd2lsbCBiZSBwb3NpdGlvbmVkIGJ5IHRoZSBzcGVjaWFsaXplZCBzdWJjbGFzcyAo
ZmllbGRzZXRzIGFuZCBydWJ5IHJ1bnMpLgogCiAgICAgICAgIHVwZGF0ZUJsb2NrQ2hpbGREaXJ0
eUJpdHNCZWZvcmVMYXlvdXQocmVsYXlvdXRDaGlsZHJlbiwgY2hpbGQpOwpAQCAtMzg3NCwxMSAr
Mzg3NCwxNSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Q29tcHV0ZWRGb250CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJl
bikKK3ZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKIHsKLSAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKKyAgICBSZW5kZXJCbG9jazo6bGF5b3V0
RXhjbHVkZWRDaGlsZHJlbihyZWxheW91dENoaWxkcmVuKTsKKworICAgIGF1dG8qIGZsb3dUaHJl
YWQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICBpZiAoIWZsb3dUaHJlYWQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm47CisKKyAgICBmbG93VGhyZWFkLT5z
ZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCh0cnVlKTsKIAogICAgIHNldExvZ2ljYWxUb3BG
b3JDaGlsZCgqZmxvd1RocmVhZCwgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpKTsKIApAQCAtMzkw
NCwxMyArMzkwOCwxMSBAQCBSZW5kZXJPYmplY3QqIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0U3Bl
CiAgICAgICAgIGZsb3dUaHJlYWQtPnNldE5lZWRzSGVpZ2h0c1JlY2FsY3VsYXRpb24oZmFsc2Up
OwogICAgIH0KICAgICBkZXRlcm1pbmVMb2dpY2FsTGVmdFBvc2l0aW9uRm9yQ2hpbGQoKmZsb3dU
aHJlYWQpOwotCi0gICAgcmV0dXJuIGZsb3dUaHJlYWQ7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkKQogewotICAgIGlmIChtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKKyAgICBpZiAobXVs
dGlDb2x1bW5GbG93VGhyZWFkKCkgJiYgKCFpc0ZpZWxkc2V0KCkgfHwgIW5ld0NoaWxkLT5pc0xl
Z2VuZCgpKSkKICAgICAgICAgcmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5hZGRDaGls
ZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwogICAgIGF1dG8qIGJlZm9yZUNoaWxkT3JQbGFjZWhv
bGRlciA9IGJlZm9yZUNoaWxkOwogICAgIGlmIChhdXRvKiBjb250YWluaW5nRmxvd1RocmVhZCA9
IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDE4
ICs0NjksMTkgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVByaW9y
Q2hhcmFjdGVyc0lmTmVlZGVkKGNvbnN0IExhenlMaW5lQnJlYWtJdGVyYXRvciYpIHt9OwogICAg
IAorcHJvdGVjdGVkOgorICAgIC8vIENhbGxlZCB0byBsYXkgb3V0IHRoZSBsZWdlbmQgZm9yIGEg
ZmllbGRzZXQgb3IgdGhlIHJ1YnkgdGV4dCBvZiBhIHJ1YnkgcnVuLiBBbHNvIHVzZWQgYnkgbXVs
dGktY29sdW1uIGxheW91dCB0byBoYW5kbGUKKyAgICAvLyB0aGUgZmxvdyB0aHJlYWQgY2hpbGQu
CisgICAgdm9pZCBsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikg
b3ZlcnJpZGU7CisgICAgCiBwcml2YXRlOgogICAgIGJvb2wgcmVjb21wdXRlTG9naWNhbFdpZHRo
QW5kQ29sdW1uV2lkdGgoKTsKICAgICBMYXlvdXRVbml0IGNvbHVtbkdhcCgpIGNvbnN0OwogICAg
IAogICAgIFJlbmRlckJsb2NrRmxvdyogcHJldmlvdXNTaWJsaW5nV2l0aE92ZXJoYW5naW5nRmxv
YXRzKGJvb2wmIHBhcmVudEhhc0Zsb2F0cykgY29uc3Q7CiAKLSAgICAvLyBDYWxsZWQgdG8gbGF5
IG91dCB0aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2YgYSBydWJ5
IHJ1bi4gQWxzbyB1c2VkIGJ5IG11bHRpLWNvbHVtbiBsYXlvdXQgdG8gaGFuZGxlCi0gICAgLy8g
dGhlIGZsb3cgdGhyZWFkIGNoaWxkLgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRT
cGVjaWFsRXhjbHVkZWRDaGlsZChib29sIC8qcmVsYXlvdXRDaGlsZHJlbiovKTsKLQogICAgIHZv
aWQgY2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdodENoYW5nZShib29sJiByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0JiBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCYgcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkKTsKLSAgICAKKwogICAgIHZvaWQgcGFpbnRJbmxpbmVDaGlsZHJlbihQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRGbG9h
dHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHByZXNlcnZlUGhhc2UgPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbgogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3Qg
PSBib3JkZXJCb3hSZWN0SW5SZWdpb24oY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkp
OwogICAgIHBhaW50UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOworICAgIGFkanVzdEJvcmRlckJv
eFJlY3RGb3JQYWludGluZyhwYWludFJlY3QpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8v
IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MjA5NzYzPi4gRm9yY2UgdGhlIHBhaW50
aW5nIGJvdW5kcyBvZiBjaGVja2JveGVzIGFuZCByYWRpbyBjb250cm9scyB0byBiZSBzcXVhcmUu
CkBAIC0xNTg1LDYgKzE1ODYsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNrKFBhaW50SW5m
byYgcGFpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5
b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKKyAgICBhZGp1c3RCb3JkZXJCb3hSZWN0Rm9y
UGFpbnRpbmcocGFpbnRSZWN0KTsKICAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBwYWlu
dFJlY3QpOwogfQogCkBAIC00NTY1LDcgKzQ1NjcsNyBAQCBib29sIFJlbmRlckJveDo6Y3JlYXRl
c05ld0Zvcm1hdHRpbmdDb250CiAKIGJvb2wgUmVuZGVyQm94Ojphdm9pZHNGbG9hdHMoKSBjb25z
dAogewotICAgIHJldHVybiAoaXNSZXBsYWNlZCgpICYmICFpc0Fub255bW91c0lubGluZUJsb2Nr
KCkpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4
dCgpOworICAgIHJldHVybiAoaXNSZXBsYWNlZCgpICYmICFpc0Fub255bW91c0lubGluZUJsb2Nr
KCkpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGlzRmllbGRzZXQoKSB8fCBjcmVhdGVzTmV3
Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmFkZFZpc3VhbEVmZmVj
dE92ZXJmbG93KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMzI4LDkgKzMyOCwxMSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0U2l6ZSBv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJv
b2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmco
TGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0
VW5pdCB3aWR0aCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29u
c3Q7CisKKyAgICAvLyBPdmVycmlkZGVuIGJ5IGZpZWxkc2V0cyB0byBzdWJ0cmFjdCBvdXQgdGhl
IGludHJpbnNpYyBib3JkZXIuCisgICAgdmlydHVhbCBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNp
emluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgewogICAgICAgICBMYXlvdXRVbml0IG1fYmVmb3JlOwpA
QCAtNjE4LDggKzYyMCwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZW5kZXJCb3gqIGZpbmRF
bmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc0dy
aWRJdGVtKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50KCktPmlzUmVuZGVyR3Jp
ZCgpOyB9Ci0gICAgYm9vbCBpc0ZsZXhJdGVtKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCkgJiYg
cGFyZW50KCktPmlzRmxleGlibGVCb3goKTsgfQorICAgIGJvb2wgaXNHcmlkSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc1JlbmRlckdyaWQoKSAmJiAhaXNFeGNs
dWRlZEZyb21Ob3JtYWxMYXlvdXQoKTsgfQorICAgIGJvb2wgaXNGbGV4SXRlbSgpIGNvbnN0IHsg
cmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94KCkgJiYgIWlzRXhjbHVk
ZWRGcm9tTm9ybWFsTGF5b3V0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCb3JkZXJC
b3hSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdCYpIHsgfTsKIAogcHJvdGVjdGVkOgogICAgIFJl
bmRlckJveChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTgsNiArMTcxOCwxMiBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjCiAgICAgaWYgKHJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIHJlY3RUb0NsaXBPdXQgPSBwYWludFJl
Y3RUb0NsaXBPdXRGcm9tQm9yZGVyKHJlY3QpOworICAgIGJvb2wgYXBwbGllZENsaXBBbHJlYWR5
ID0gIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlKGdyYXBoaWNzQ29udGV4dCwgYXBwbGllZENsaXBBbHJlYWR5KTsKKyAgICBp
ZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQorICAgICAgICBncmFwaGljc0NvbnRleHQuY2xp
cE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3RUb0NsaXBPdXQsIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSkpOworCiAgICAgLy8gYm9yZGVyLWltYWdlIGlzIG5vdCBhZmZlY3Rl
ZCBieSBib3JkZXItcmFkaXVzLgogICAgIGlmIChwYWludE5pbmVQaWVjZUltYWdlKGdyYXBoaWNz
Q29udGV4dCwgcmVjdCwgc3R5bGUsIHN0eWxlLmJvcmRlckltYWdlKCkpKQogICAgICAgICByZXR1
cm47CkBAIC0xODU2LDcgKzE4NjIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjCiAgICAgfQogCiAgICAgYm9vbCBjbGlwVG9PdXRlckJvcmRlciA9IG91dGVyQm9y
ZGVyLmlzUm91bmRlZCgpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRl
ciAmJiAhYXBwbGllZENsaXBBbHJlYWR5KTsKICAgICBpZiAoY2xpcFRvT3V0ZXJCb3JkZXIpIHsK
ICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAg
ICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5
TGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsOCBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGludWF0aW9uKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRl
cihjb25zdCBMYXlvdXRSZWN0JikgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9OworICAgIAogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlz
aW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICAgICAgaWYgKG1fY3VycmVudENoaWxkICYmIG5vdEZpcnN0T3JkaW5hbFZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgbV9vcmRpbmFsVmFsdWVzLmFkZChtX2N1cnJlbnRDaGlsZC0+
c3R5bGUoKS5ib3hPcmRpbmFsR3JvdXAoKSk7Ci0gICAgICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRD
aGlsZCB8fCAoIW1fY3VycmVudENoaWxkLT5pc0Fub255bW91cygpCisgICAgICAgIH0gd2hpbGUg
KCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRDaGlsZC0+aXNFeGNsdWRlZEZyb21Ob3JtYWxM
YXlvdXQoKSB8fCAoIW1fY3VycmVudENoaWxkLT5pc0Fub255bW91cygpCiAgICAgICAgICAgICAg
ICAgICYmIG1fY3VycmVudENoaWxkLT5zdHlsZSgpLmJveE9yZGluYWxHcm91cCgpICE9IG1fY3Vy
cmVudE9yZGluYWwpKTsKICAgICAgICAgcmV0dXJuIG1fY3VycmVudENoaWxkOwogICAgIH0KQEAg
LTMwMiw2ICszMDIsMTEgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91
dAogICAgIExheW91dFNpemUgb2xkTGF5b3V0RGVsdGEgPSB2aWV3KCkubGF5b3V0RGVsdGEoKTsK
ICNlbmRpZgogCisgICAgLy8gRmllbGRzZXRzIG5lZWQgdG8gZmluZCB0aGVpciBsZWdlbmQgYW5k
IHBvc2l0aW9uIGl0IGluc2lkZSB0aGUgYm9yZGVyIG9mIHRoZSBvYmplY3QuCisgICAgLy8gVGhl
IGxlZ2VuZCB0aGVuIGdldHMgc2tpcHBlZCBkdXJpbmcgbm9ybWFsIGxheW91dC4gVGhlIHNhbWUg
aXMgdHJ1ZSBmb3IgcnVieSB0ZXh0LgorICAgIC8vIEl0IGRvZXNuJ3QgZ2V0IGluY2x1ZGVkIGlu
IHRoZSBub3JtYWwgbGF5b3V0IHByb2Nlc3MgYnV0IGlzIGluc3RlYWQgc2tpcHBlZC4KKyAgICBs
YXlvdXRFeGNsdWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAgQ2hpbGRGcmFt
ZVJlY3RzIG9sZENoaWxkUmVjdHM7CiAgICAgYXBwZW5kQ2hpbGRGcmFtZVJlY3RzKHRoaXMsIG9s
ZENoaWxkUmVjdHMpOwogICAgIApAQCAtNDI3LDkgKzQzMiw2IEBAIHZvaWQgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXBw
bHkgdGhlIGNoaWxkJ3MgY3VycmVudCBsYXlvdXQgZGVsdGEuCiAgICAgICAgICAgICBsYXlvdXRD
aGlsZElmTmVlZGVkQXBwbHlpbmdEZWx0YShjaGlsZCwgY2hpbGRMYXlvdXREZWx0YSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIE5vdyBkbyB0aGUgbGF5b3V0LgotICAgICAgICAgICAg
bGF5b3V0Q2hpbGRJZk5lZWRlZEFwcGx5aW5nRGVsdGEoY2hpbGQsIGNoaWxkTGF5b3V0RGVsdGEp
OwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0
LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCQkFTRUxJTkUpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU2LDEzICsxNTYsMTMgQEAgUmVuZGVyRWxlbWVudDo6flJlbmRl
ckVsZW1lbnQoKQogICAgICAgICB2aWV3KCkudW5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0
Q2FsbGJhY2soKnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlbmRlcmVyQ3JlYXRpb25UeXBlIGNyZWF0
aW9uVHlwZSkKIHsKICAgICAvLyBNaW5pbWFsIHN1cHBvcnQgZm9yIGNvbnRlbnQgcHJvcGVydGll
cyByZXBsYWNpbmcgYW4gZW50aXJlIGVsZW1lbnQuCiAgICAgLy8gV29ya3Mgb25seSBpZiB3ZSBo
YXZlIGV4YWN0bHkgb25lIHBpZWNlIG9mIGNvbnRlbnQgYW5kIGl0J3MgYSBVUkwuCiAgICAgLy8g
T3RoZXJ3aXNlIGFjdHMgYXMgaWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAg
IGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7Ci0g
ICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGlzPEltYWdlQ29u
dGVudERhdGE+KCpjb250ZW50RGF0YSkgJiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkpIHsK
KyAgICBpZiAoY3JlYXRpb25UeXBlID09IENyZWF0ZUFsbFJlbmRlcmVycyAmJiBjb250ZW50RGF0
YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIFN0eWxlOjps
b2FkUGVuZGluZ1Jlc291cmNlcyhzdHlsZSwgZWxlbWVudC5kb2N1bWVudCgpLCAmZWxlbWVudCk7
CiAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpLmltYWdlKCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJJbWFnZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5bGVJ
bWFnZSo+KCZzdHlsZUltYWdlKSk7CkBAIC0xNzUsMzIgKzE3NSwxNSBAQCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6CiAgICAgY2FzZSBDT05URU5UUzoKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBJTkxJTkU6Ci0gICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJJbmxpbmU+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAg
aWYgKGNyZWF0aW9uVHlwZSA9PSBDcmVhdGVBbGxSZW5kZXJlcnMpCisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7
CisgICAgICAgIEZBTExUSFJPVUdIOyAvLyBGaWVsZHNldHMgc2hvdWxkIG1ha2UgYSBibG9jayBm
bG93IGlmIGRpc3BsYXk6aW5saW5lIGlzIHNldC4KICAgICBjYXNlIEJMT0NLOgogICAgIGNhc2Ug
SU5MSU5FX0JMT0NLOgogICAgIGNhc2UgQ09NUEFDVDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgIGNh
c2UgTElTVF9JVEVNOgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlzdEl0
ZW0+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIFRBQkxFOgotICAgIGNhc2Ug
SU5MSU5FX1RBQkxFOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKLSAg
ICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlvbj4oZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSkpOwotICAgIGNhc2UgVEFCTEVfUk9XOgotICAgICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsK
LSAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0NPTFVNTjoKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ29sPihlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBUQUJMRV9DRUxMOgotICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyVGFibGVDZWxsPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAg
Y2FzZSBUQUJMRV9DQVBUSU9OOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
VGFibGVDYXB0aW9uPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBCT1g6Ci0g
ICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgY2Fz
ZSBGTEVYOgogICAgIGNhc2UgSU5MSU5FX0ZMRVg6CiAgICAgY2FzZSBXRUJLSVRfRkxFWDoKQEAg
LTIwOSw2ICsxOTIsMzQgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6
OgogICAgIGNhc2UgR1JJRDoKICAgICBjYXNlIElOTElORV9HUklEOgogICAgICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyR3JpZD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAg
IGNhc2UgQk9YOgorICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpOworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgaWYgKGNyZWF0aW9uVHlwZSA9PSBPbmx5Q3Jl
YXRlQmxvY2tBbmRGbGV4Ym94UmVuZGVyZXJzKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAgICAg
ICBzd2l0Y2ggKHN0eWxlLmRpc3BsYXkoKSkgeworICAgICAgICBjYXNlIFRBQkxFOgorICAgICAg
ICBjYXNlIElOTElORV9UQUJMRToKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJUYWJsZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOworICAgICAgICBjYXNlIFRBQkxF
X0NFTEw6CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDZWxs
PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNhcHRpb24+KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6Cisg
ICAgICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgICAgICBjYXNlIFRBQkxFX0ZPT1RF
Ul9HUk9VUDoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVNl
Y3Rpb24+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9ST1c6
CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKTsKKyAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Cisg
ICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclRhYmxlQ29sPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTIwOCw5ICsxMjE5LDEwIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRBc0lubGlu
ZUJsb2NrKFAKICAgICAvLyBQYWludCBhbGwgcGhhc2VzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0
aGUgZWxlbWVudCBlc3RhYmxpc2hlZCBpdHMgb3duIHN0YWNraW5nIGNvbnRleHQuCiAgICAgLy8g
KFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40IG9uIGlubGluZSBibG9jay90YWJsZS9yZXBs
YWNlZCBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xIHNwZWNpZmljYXRpb24uKQogICAgIC8vIFRoaXMg
aXMgYWxzbyB1c2VkIGJ5IG90aGVyIGVsZW1lbnRzIChlLmcuIGZsZXggaXRlbXMgYW5kIGdyaWQg
aXRlbXMpLgotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikg
eworICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZVRvVXNlID0gaXNFeGNsdWRlZEFuZFBsYWNlZElu
Qm9yZGVyKCkgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlRm9yZWdyb3VuZDsKKyAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHBhaW50
KHBhaW50SW5mbywgY2hpbGRQb2ludCk7Ci0gICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKKyAgICBlbHNlIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gcGFpbnRQaGFzZVRvVXNlKSB7CiAgICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQsIHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAgICAgIHBhaW50
UGhhc2UoKnRoaXMsIFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsIHBhaW50SW5mbywg
Y2hpbGRQb2ludCk7CiAgICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhhc2VGbG9hdCwg
cGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKQEAgLTEyMTgsNyArMTIzMCw3IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6cGFpbnRBc0lubGluZUJsb2NrKFAKICAgICAgICAgcGFpbnRQaGFzZSgqdGhpcywg
UGFpbnRQaGFzZU91dGxpbmUsIHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAKICAgICAgICAgLy8g
UmVzZXQgfHBhaW50SW5mb3wgdG8gdGhlIG9yaWdpbmFsIHBoYXNlLgotICAgICAgICBwYWludElu
Zm8ucGhhc2UgPSBQYWludFBoYXNlRm9yZWdyb3VuZDsKKyAgICAgICAgcGFpbnRJbmZvLnBoYXNl
ID0gcGFpbnRQaGFzZVRvVXNlOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4
IEBAIGNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2JqZWMKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW5kZXJFbGVtZW50KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgZW51bSBS
ZW5kZXJlckNyZWF0aW9uVHlwZSB7IENyZWF0ZUFsbFJlbmRlcmVycywgT25seUNyZWF0ZUJsb2Nr
QW5kRmxleGJveFJlbmRlcmVycyB9OworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBSZW5kZXJlckNyZWF0aW9uVHlw
ZSA9IENyZWF0ZUFsbFJlbmRlcmVycyk7CiAKICAgICBib29sIGhhc0luaXRpYWxpemVkU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRpYWxpemVkU3R5bGU7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiAyMTM0MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMjIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBs
ZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQu
aCIKLQotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TExlZ2VuZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJQYWlu
dEluZm8uaCIKLSNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotUmVuZGVyRmllbGRzZXQ6
OlJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
Ci17Ci19Ci0KLXZvaWQgUmVuZGVyRmllbGRzZXQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKLXsKLSAgICBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCk7Ci0gICAgaWYgKFJlbmRlckJveCogbGVnZW5kID0gZmluZExlZ2VuZCgpKSB7Ci0gICAg
ICAgIGludCBsZWdlbmRNaW5XaWR0aCA9IGxlZ2VuZC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCk7Ci0KLSAgICAgICAgTGVuZ3RoIGxlZ2VuZE1hcmdpbkxlZnQgPSBsZWdlbmQtPnN0eWxlKCku
bWFyZ2luTGVmdCgpOwotICAgICAgICBMZW5ndGggbGVnZW5kTWFyZ2luUmlnaHQgPSBsZWdlbmQt
PnN0eWxlKCkubWFyZ2luTGVmdCgpOwotCi0gICAgICAgIGlmIChsZWdlbmRNYXJnaW5MZWZ0Lmlz
Rml4ZWQoKSkKLSAgICAgICAgICAgIGxlZ2VuZE1pbldpZHRoICs9IGxlZ2VuZE1hcmdpbkxlZnQu
dmFsdWUoKTsKLQotICAgICAgICBpZiAobGVnZW5kTWFyZ2luUmlnaHQuaXNGaXhlZCgpKQotICAg
ICAgICAgICAgbGVnZW5kTWluV2lkdGggKz0gbGVnZW5kTWFyZ2luUmlnaHQudmFsdWUoKTsKLQot
ICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoLCBsZWdlbmRNaW5XaWR0aCArIGhvcml6b250YWxCb3JkZXJBbmRQYWRk
aW5nRXh0ZW50KCkpOwotICAgIH0KLX0KLQotUmVuZGVyT2JqZWN0KiBSZW5kZXJGaWVsZHNldDo6
bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQotewotICAg
IFJlbmRlckJveCogYm94ID0gZmluZExlZ2VuZCgpOwotICAgIGlmICghYm94KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlckJveCYgbGVnZW5kID0gKmJveDsKLSAgICBpZiAo
cmVsYXlvdXRDaGlsZHJlbikKLSAgICAgICAgbGVnZW5kLnNldE5lZWRzTGF5b3V0KCk7Ci0gICAg
bGVnZW5kLmxheW91dElmTmVlZGVkKCk7Ci0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0Owot
ICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICBzd2l0
Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgQ0VOVEVSOgot
ICAgICAgICAgICAgbG9naWNhbExlZnQgPSAobG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsV2lkdGhG
b3JDaGlsZChsZWdlbmQpKSAvIDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBS
SUdIVDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJF
bmQoKSAtIHBhZGRpbmdFbmQoKSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0
ID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpICsgbWFyZ2luU3RhcnRGb3JDaGlsZChs
ZWdlbmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICBzd2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2Ug
TEVGVDoKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdT
dGFydCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0VOVEVSOiB7Ci0gICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgcGl4ZWwgZ29lcyB0byB0aGUgZW5k
IHNpZGUgaW4gUlRMIChzaW5jZSBpdCB3ZW50IHRvIHRoZSBlbmQgc2lkZQotICAgICAgICAgICAg
Ly8gaW4gTFRSKS4KLSAgICAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRXaWR0aCA9IGxvZ2lj
YWxXaWR0aCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKLSAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0ID0gY2VudGVyZWRXaWR0aCAtIGNlbnRlcmVkV2lkdGggLyAyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJTdGFydCgpIC0gcGFkZGluZ1N0YXJ0KCkg
LSBtYXJnaW5TdGFydEZvckNoaWxkKGxlZ2VuZCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdl
bmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRMb2dp
Y2FsTGVmdEZvckNoaWxkKGxlZ2VuZCwgbG9naWNhbExlZnQpOwotCi0gICAgTGF5b3V0VW5pdCBm
aWVsZHNldEJvcmRlckJlZm9yZSA9IGJvcmRlckJlZm9yZSgpOwotICAgIExheW91dFVuaXQgbGVn
ZW5kTG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChsZWdlbmQpOwotCi0gICAg
TGF5b3V0VW5pdCBsZWdlbmRMb2dpY2FsVG9wOwotICAgIExheW91dFVuaXQgY29sbGFwc2VkTGVn
ZW5kRXh0ZW50OwotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBsZWdl
bmQncyBtYXJnaW4gYmVmb3JlIHRvby4KLSAgICBpZiAoZmllbGRzZXRCb3JkZXJCZWZvcmUgPiBs
ZWdlbmRMb2dpY2FsSGVpZ2h0KSB7Ci0gICAgICAgIC8vIFRoZSA8bGVnZW5kPiBpcyBzbWFsbGVy
IHRoYW4gdGhlIGFzc29jaWF0ZWQgZmllbGRzZXQgYmVmb3JlIGJvcmRlcgotICAgICAgICAvLyBz
byB0aGUgbGF0dGVyIGRldGVybWluZXMgcG9zaXRpb25pbmcgb2YgdGhlIDxsZWdlbmQ+LiBUaGUg
c2l6aW5nIGRlcGVuZHMKLSAgICAgICAgLy8gb24gdGhlIGxlZ2VuZCdzIG1hcmdpbnMgYXMgd2Ug
d2FudCB0byBzdGlsbCBmb2xsb3cgdGhlIGF1dGhvcidzIGN1ZXMuCi0gICAgICAgIC8vIEZpcmVm
b3ggY29tcGxldGVseSBpZ25vcmVzIHRoZSBtYXJnaW5zIGluIHRoaXMgY2FzZSB3aGljaCBzZWVt
cyB3cm9uZy4KLSAgICAgICAgbGVnZW5kTG9naWNhbFRvcCA9IChmaWVsZHNldEJvcmRlckJlZm9y
ZSAtIGxlZ2VuZExvZ2ljYWxIZWlnaHQpIC8gMjsKLSAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0
ZW50ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oZmllbGRzZXRCb3JkZXJCZWZvcmUsIGxlZ2VuZExv
Z2ljYWxUb3AgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChsZWdl
bmQpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gbGVnZW5k
TG9naWNhbEhlaWdodCArIG1hcmdpbkFmdGVyRm9yQ2hpbGQobGVnZW5kKTsKLQotICAgIHNldExv
Z2ljYWxUb3BGb3JDaGlsZChsZWdlbmQsIGxlZ2VuZExvZ2ljYWxUb3ApOwotICAgIHNldExvZ2lj
YWxIZWlnaHQocGFkZGluZ0JlZm9yZSgpICsgY29sbGFwc2VkTGVnZW5kRXh0ZW50KTsKLQotICAg
IHJldHVybiAmbGVnZW5kOwotfQotCi1SZW5kZXJCb3gqIFJlbmRlckZpZWxkc2V0OjpmaW5kTGVn
ZW5kKEZpbmRMZWdlbmRPcHRpb24gb3B0aW9uKQotewotICAgIGZvciAoYXV0byYgbGVnZW5kIDog
Y2hpbGRyZW5PZlR5cGU8UmVuZGVyQm94PigqdGhpcykpIHsKLSAgICAgICAgaWYgKG9wdGlvbiA9
PSBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93ICYmIGxlZ2VuZC5pc0Zsb2F0aW5nT3JPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChpczxIVE1MTGVnZW5kRWxlbWVudD4obGVnZW5kLmVsZW1lbnQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gJmxlZ2VuZDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQg
UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKLXsKLSAgICBpZiAoIXBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXlv
dXRSZWN0IHBhaW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBSZW5kZXJCb3gqIGxl
Z2VuZCA9IGZpbmRMZWdlbmQoKTsKLSAgICBpZiAoIWxlZ2VuZCkKLSAgICAgICAgcmV0dXJuIFJl
bmRlckJsb2NrRmxvdzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0
KTsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAiYnQiIGJs
b2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCi0gICAgLy8gY2FzZXMgdGhlIGxlZ2VuZCBp
cyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3RpdmVseS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYKLSAg
ICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIExheW91
dFVuaXQgeU9mZiA9IChsZWdlbmQtPnkoKSA+IDApID8gTGF5b3V0VW5pdCgpIDogKGxlZ2VuZC0+
aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyOwotICAgICAgICBwYWludFJlY3Quc2V0SGVpZ2h0
KHBhaW50UmVjdC5oZWlnaHQoKSAtIHlPZmYpOwotICAgICAgICBwYWludFJlY3Quc2V0WShwYWlu
dFJlY3QueSgpICsgeU9mZik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTGF5b3V0VW5pdCB4T2Zm
ID0gKGxlZ2VuZC0+eCgpID4gMCkgPyBMYXlvdXRVbml0KCkgOiAobGVnZW5kLT53aWR0aCgpIC0g
Ym9yZGVyTGVmdCgpKSAvIDI7Ci0gICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChwYWludFJlY3Qu
d2lkdGgoKSAtIHhPZmYpOwotICAgICAgICBwYWludFJlY3Quc2V0WChwYWludFJlY3QueCgpICsg
eE9mZik7Ci0gICAgfQotCi0gICAgaWYgKCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZShwYWludEluZm8uY29udGV4dCgpKSkpCi0gICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwotICAgIHBhaW50RmlsbExheWVycyhw
YWludEluZm8sIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVjdCk7Ci0gICAg
cGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIEluc2V0KTsKLQot
ICAgIGlmICghc3R5bGUoKS5oYXNCb3JkZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IC8vIENyZWF0ZSBhIGNsaXBwaW5nIHJlZ2lvbiBhcm91bmQgdGhlIGxlZ2VuZCBhbmQgcGFpbnQg
dGhlIGJvcmRlciBhcyBub3JtYWwKLSAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB3
b3JrIHdpdGggInJsIiBhbmQgImJ0IiBibG9jayBmbG93IGRpcmVjdGlvbnMuICBJbiB0aG9zZQot
ICAgIC8vIGNhc2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBib3R0
b20gYm9yZGVycyByZXNwZWN0aXZlbHkuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3MjM2Ci0gICAgTGF5b3V0UmVjdCBjbGlwUmVjdDsKLSAgICBpZiAo
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGNsaXBSZWN0LnNl
dFgocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0WShw
YWludFJlY3QueSgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgobGVnZW5kLT53aWR0aCgp
KTsKLSAgICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxl
KCkuYm9yZGVyVG9wV2lkdGgoKSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5kLT5oZWlnaHQo
KSAtIGJvcmRlclRvcCgpKSAvIDIpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xpcFJlY3Qu
c2V0WChwYWludFJlY3QueCgpKTsKLSAgICAgICAgY2xpcFJlY3Quc2V0WShwYWludFJlY3QueSgp
ICsgbGVnZW5kLT55KCkpOwotICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlv
dXRVbml0PihzdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpLCBsZWdlbmQtPndpZHRoKCkpKTsKLSAg
ICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KGxlZ2VuZC0+aGVpZ2h0KCkpOwotICAgIH0KLSAgICBn
cmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLQotICAgIHBhaW50Qm9yZGVyKHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsKLX0KLQotdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCi17Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXlv
dXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7Ci0gICAg
UmVuZGVyQm94KiBsZWdlbmQgPSBmaW5kTGVnZW5kKCk7Ci0gICAgaWYgKCFsZWdlbmQpCi0gICAg
ICAgIHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OnBhaW50TWFzayhwYWludEluZm8sIHBhaW50T2Zm
c2V0KTsKLQotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAiYnQi
IGJsb2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCi0gICAgLy8gY2FzZXMgdGhlIGxlZ2Vu
ZCBpcyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3RpdmVs
eS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYK
LSAgICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgeU9mZiA9IChsZWdlbmQtPnkoKSA+IDApID8gTGF5b3V0VW5pdCgpIDogKGxlZ2Vu
ZC0+aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyOwotICAgICAgICBwYWludFJlY3QuZXhwYW5k
KDAsIC15T2ZmKTsKLSAgICAgICAgcGFpbnRSZWN0Lm1vdmUoMCwgeU9mZik7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgTGF5b3V0VW5pdCB4T2ZmID0gKGxlZ2VuZC0+eCgpID4gMCkgPyBMYXlvdXRV
bml0KCkgOiAobGVnZW5kLT53aWR0aCgpIC0gYm9yZGVyTGVmdCgpKSAvIDI7Ci0gICAgICAgIHBh
aW50UmVjdC5leHBhbmQoLXhPZmYsIDApOwotICAgICAgICBwYWludFJlY3QubW92ZSh4T2ZmLCAw
KTsKLSAgICB9Ci0KLSAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBwYWludFJlY3QpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmllbGRzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmllbGRzZXQuaAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0g
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudDsKLQotY2xhc3MgUmVuZGVyRmllbGRzZXQgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKLXB1YmxpYzoKLSAgICBSZW5kZXJGaWVsZHNldChI
VE1MRmllbGRTZXRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7Ci0KLSAgICBlbnVtIEZpbmRMZWdl
bmRPcHRpb24geyBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93LCBJbmNsdWRlRmxvYXRpbmdPck91
dE9mRmxvdyB9OwotICAgIFJlbmRlckJveCogZmluZExlZ2VuZChGaW5kTGVnZW5kT3B0aW9uID0g
SWdub3JlRmxvYXRpbmdPck91dE9mRmxvdyk7Ci0KLSAgICBIVE1MRmllbGRTZXRFbGVtZW50JiBm
aWVsZFNldEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7Ci0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZpZWxkU2V0IjsgfQotICAgIGJvb2wgaXNGaWVs
ZHNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIFJlbmRlck9iamVj
dCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKLSAgICBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQotICAgIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJGaWVsZHNldCwgaXNG
aWVsZHNldCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMiArNzksMTYg
QEAgY29uc3QgY2hhciogUmVuZGVyRmxleGlibGVCb3g6OnJlbmRlck5hbQogCiB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKKyAg
ICBMYXlvdXRVbml0IGNoaWxkTWluV2lkdGg7CisgICAgTGF5b3V0VW5pdCBjaGlsZE1heFdpZHRo
OworICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNG
b3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgsIGNoaWxkTWF4V2lkdGgpOworCiAgICAg
Ly8gRklYTUU6IFdlJ3JlIGlnbm9yaW5nIGZsZXgtYmFzaXMgaGVyZSBhbmQgd2Ugc2hvdWxkbid0
LiBXZSBjYW4ndCBzdGFydAogICAgIC8vIGhvbm9yaW5nIGl0IHRob3VnaCB1bnRpbCB0aGUgZmxl
eCBzaG9ydGhhbmQgc3RvcHMgc2V0dGluZyBpdCB0byAwLiBTZWUKICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTE3IGFuZAogICAgIC8vIGh0dHBzOi8v
Y3JidWcuY29tLzI0MDc2NS4KICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxk
Qm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAg
IGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmIChjaGlsZC0+
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgY2hpbGQtPmlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5
b3V0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIExheW91dFVu
aXQgbWFyZ2luID0gbWFyZ2luSW50cmluc2ljTG9naWNhbFdpZHRoRm9yQ2hpbGQoKmNoaWxkKTsK
QEAgLTExNyw2ICsxMjEsMTEgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJp
bnNpYwogICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgbWluTG9n
aWNhbFdpZHRoKTsKICAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChMYXlvdXRVbml0KCks
IG1heExvZ2ljYWxXaWR0aCk7CiAgICAgCisgICAgaWYgKGhhZEV4Y2x1ZGVkQ2hpbGRyZW4pIHsK
KyAgICAgICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgobWluTG9naWNhbFdpZHRoLCBjaGls
ZE1pbldpZHRoKTsKKyAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjptYXgobWF4TG9naWNh
bFdpZHRoLCBjaGlsZE1heFdpZHRoKTsKKyAgICB9CisKICAgICBMYXlvdXRVbml0IHNjcm9sbGJh
cldpZHRoKHNjcm9sbGJhckxvZ2ljYWxXaWR0aCgpKTsKICAgICBtYXhMb2dpY2FsV2lkdGggKz0g
c2Nyb2xsYmFyV2lkdGg7CiAgICAgbWluTG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwpA
QCAtMTc0LDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6
ZmkKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGludCBjaGls
ZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9y
LmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKLSAgICAg
ICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKG1fb3Jk
ZXJJdGVyYXRvci5zaG91bGRTa2lwQ2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoYWxpZ25tZW50Rm9yQ2hpbGQoKmNoaWxkKSA9PSBJdGVtUG9zaXRpb25C
YXNlbGluZSAmJiAhaGFzQXV0b01hcmdpbnNJbkNyb3NzQXhpcygqY2hpbGQpKSB7CiAgICAgICAg
ICAgICBiYXNlbGluZUNoaWxkID0gY2hpbGQ7CkBAIC0yNzUsOCArMjg0LDE0IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wKIAogICAgIHByZXBhcmVPcmRlckl0ZXJh
dG9yQW5kTWFyZ2lucygpOwogCisgICAgLy8gRmllbGRzZXRzIG5lZWQgdG8gZmluZCB0aGVpciBs
ZWdlbmQgYW5kIHBvc2l0aW9uIGl0IGluc2lkZSB0aGUgYm9yZGVyIG9mIHRoZSBvYmplY3QuCisg
ICAgLy8gVGhlIGxlZ2VuZCB0aGVuIGdldHMgc2tpcHBlZCBkdXJpbmcgbm9ybWFsIGxheW91dC4g
VGhlIHNhbWUgaXMgdHJ1ZSBmb3IgcnVieSB0ZXh0LgorICAgIC8vIEl0IGRvZXNuJ3QgZ2V0IGlu
Y2x1ZGVkIGluIHRoZSBub3JtYWwgbGF5b3V0IHByb2Nlc3MgYnV0IGlzIGluc3RlYWQgc2tpcHBl
ZC4KKyAgICBsYXlvdXRFeGNsdWRlZENoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4pOworCiAgICAg
Q2hpbGRGcmFtZVJlY3RzIG9sZENoaWxkUmVjdHM7CiAgICAgYXBwZW5kQ2hpbGRGcmFtZVJlY3Rz
KG9sZENoaWxkUmVjdHMpOworCiAgICAgbGF5b3V0RmxleEl0ZW1zKHJlbGF5b3V0Q2hpbGRyZW4p
OwogCiAgICAgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKTsKQEAgLTUwMiw4ICs1MTcsNiBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpt
YWluQXhpc0NvCiAgICAgcmV0dXJuIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAotLy8gTUVS
R0VQT0lOVAotCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpj
b21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBTaXpl
VHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplKQogewogICAgIC8vIElmIHdlIGhhdmUg
YSBob3Jpem9udGFsIGZsb3csIHRoYXQgbWVhbnMgdGhlIG1haW4gc2l6ZSBpcyB0aGUgd2lkdGgu
CkBAIC04NDYsOSArODU5LDEwIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJ
dGVtcygKICAgICBWZWN0b3I8RmxleEl0ZW0+IGFsbEl0ZW1zOwogICAgIG1fb3JkZXJJdGVyYXRv
ci5maXJzdCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5j
dXJyZW50Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkgewot
ICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAgIGlm
IChtX29yZGVySXRlcmF0b3Iuc2hvdWxkU2tpcENoaWxkKCpjaGlsZCkpIHsKICAgICAgICAgICAg
IC8vIE91dC1vZi1mbG93IGNoaWxkcmVuIGFyZSBub3QgZmxleCBpdGVtcywgc28gd2Ugc2tpcCB0
aGVtIGhlcmUuCi0gICAgICAgICAgICBwcmVwYXJlQ2hpbGRGb3JQb3NpdGlvbmVkTGF5b3V0KCpj
aGlsZCk7CisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQor
ICAgICAgICAgICAgICAgIHByZXBhcmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQoKmNoaWxkKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGFsbEl0ZW1zLmFwcGVu
ZChjb25zdHJ1Y3RGbGV4SXRlbSgqY2hpbGQsIHJlbGF5b3V0Q2hpbGRyZW4pKTsKQEAgLTEwMzks
OSArMTA1Myw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXIKICAg
ICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihtX29yZGVySXRlcmF0b3IpOwogCiAg
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBwb3B1bGF0b3IuY29sbGVjdENo
aWxkKCpjaGlsZCk7Ci0KLSAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKKyAgICAgICAgaWYgKCFwb3B1bGF0b3IuY29sbGVjdENoaWxkKCpjaGlsZCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBCZWZvcmUgcnVubmluZyB0aGUgZmxleCBhbGdv
cml0aG0sICdhdXRvJyBoYXMgYSBtYXJnaW4gb2YgMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHJldmlzaW9uIDIxMzQzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSwx
MSBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvCiAgICAgc2V0TG9n
aWNhbEhlaWdodCgwKTsKICAgICB1cGRhdGVMb2dpY2FsV2lkdGgoKTsKIAorICAgIC8vIEZpZWxk
c2V0cyBuZWVkIHRvIGZpbmQgdGhlaXIgbGVnZW5kIGFuZCBwb3NpdGlvbiBpdCBpbnNpZGUgdGhl
IGJvcmRlciBvZiB0aGUgb2JqZWN0LgorICAgIC8vIFRoZSBsZWdlbmQgdGhlbiBnZXRzIHNraXBw
ZWQgZHVyaW5nIG5vcm1hbCBsYXlvdXQuIFRoZSBzYW1lIGlzIHRydWUgZm9yIHJ1YnkgdGV4dC4K
KyAgICAvLyBJdCBkb2Vzbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGxheW91dCBwcm9j
ZXNzIGJ1dCBpcyBpbnN0ZWFkIHNraXBwZWQuCisgICAgbGF5b3V0RXhjbHVkZWRDaGlsZHJlbihy
ZWxheW91dENoaWxkcmVuKTsKKwogICAgIHBsYWNlSXRlbXNPbkdyaWQobV9ncmlkLCBUcmFja1Np
emluZyk7CiAKICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBsb2dpY2FsIHdpZHRoIGlzIGFsd2F5
cyBkZWZpbml0ZSBhcyB0aGUgYWJvdmUgY2FsbCB0byB1cGRhdGVMb2dpY2FsV2lkdGgoKQpAQCAt
MzkzLDEyICszOTgsMjEgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpndXR0ZXJzU2l6ZShjb25z
dAogCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25z
dAogeworICAgIExheW91dFVuaXQgY2hpbGRNaW5XaWR0aDsKKyAgICBMYXlvdXRVbml0IGNoaWxk
TWF4V2lkdGg7CisgICAgYm9vbCBoYWRFeGNsdWRlZENoaWxkcmVuID0gY29tcHV0ZVByZWZlcnJl
ZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4oY2hpbGRNaW5XaWR0aCwgY2hpbGRNYXhXaWR0aCk7
CisgICAgCiAgICAgR3JpZCBncmlkKGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCY+KCp0aGlzKSk7CiAg
ICAgcGxhY2VJdGVtc09uR3JpZChncmlkLCBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24pOwogCiAg
ICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBncmlkKTsKICAgICBj
b21wdXRlVHJhY2tTaXplc0ZvckluZGVmaW5pdGVTaXplKGFsZ29yaXRobSwgRm9yQ29sdW1ucywg
Z3JpZCwgbWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogCisgICAgaWYgKGhhZEV4
Y2x1ZGVkQ2hpbGRyZW4pIHsKKyAgICAgICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgobWlu
TG9naWNhbFdpZHRoLCBjaGlsZE1pbldpZHRoKTsKKyAgICAgICAgbWF4TG9naWNhbFdpZHRoID0g
c3RkOjptYXgobWF4TG9naWNhbFdpZHRoLCBjaGlsZE1heFdpZHRoKTsKKyAgICB9CisKICAgICBM
YXlvdXRVbml0IHNjcm9sbGJhcldpZHRoID0gaW50cmluc2ljU2Nyb2xsYmFyTG9naWNhbFdpZHRo
KCk7CiAgICAgbWluTG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogICAgIG1heExvZ2lj
YWxXaWR0aCArPSBzY3JvbGxiYXJXaWR0aDsKQEAgLTU4MSw3ICs1OTUsNyBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZCYgCiAgICAgVmVjdG9yPFJlbmRlckJveCo+IHNw
ZWNpZmllZE1ham9yQXhpc0F1dG9HcmlkSXRlbXM7CiAgICAgYm9vbCBoYXNBbnlPcnRob2dvbmFs
R3JpZEl0ZW0gPSBmYWxzZTsKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZ3JpZC5vcmRlckl0ZXJh
dG9yKCkuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gZ3JpZC5vcmRlckl0ZXJhdG9yKCkubmV4dCgp
KSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAg
IGlmIChncmlkLm9yZGVySXRlcmF0b3IoKS5zaG91bGRTa2lwQ2hpbGQoKmNoaWxkKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGhhc0FueU9ydGhvZ29uYWxHcmlkSXRlbSA9IGhh
c0FueU9ydGhvZ29uYWxHcmlkSXRlbSB8fCBpc09ydGhvZ29uYWxDaGlsZCgqY2hpbGQpOwpAQCAt
NjI0LDcgKzYzOCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkJiAK
IAogI2lmIEVOQUJMRShBU1NFUlQpCiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGdyaWQub3JkZXJJ
dGVyYXRvcigpLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGdyaWQub3JkZXJJdGVyYXRvcigpLm5l
eHQoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAg
ICAgICBpZiAoZ3JpZC5vcmRlckl0ZXJhdG9yKCkuc2hvdWxkU2tpcENoaWxkKCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBHcmlkQXJlYSBhcmVhID0gZ3JpZC5ncmlk
SXRlbUFyZWEoKmNoaWxkKTsKQEAgLTY0NCwxMSArNjU4LDkgQEAgdm9pZCBSZW5kZXJHcmlkOjpw
b3B1bGF0ZUV4cGxpY2l0R3JpZEFuZAogICAgIHVuc2lnbmVkIG1heGltdW1Db2x1bW5JbmRleCA9
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwg
YXV0b1JlcGVhdENvbHVtbnMpOwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAg
ICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoIXBv
cHVsYXRvci5jb2xsZWN0Q2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIHBvcHVsYXRvci5jb2xsZWN0Q2hpbGQoKmNoaWxkKTsKLQorICAgICAgICAKICAgICAg
ICAgR3JpZFNwYW4gcm93UG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZl
R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvclJvd3MsIGF1dG9SZXBl
YXRSb3dzKTsKICAgICAgICAgaWYgKCFyb3dQb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKICAg
ICAgICAgICAgIHNtYWxsZXN0Um93U3RhcnQgPSBzdGQ6Om1pbihzbWFsbGVzdFJvd1N0YXJ0LCBy
b3dQb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOwpAQCAtODg0LDggKzg5NiwxMCBA
QCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCiAgICAgcG9wdWxhdGVHcmlkUG9z
aXRpb25zRm9yRGlyZWN0aW9uKEZvclJvd3MpOwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxk
ID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3go
KSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAg
ICAgICAgICBwcmVwYXJlQ2hpbGRGb3JQb3NpdGlvbmVkTGF5b3V0KCpjaGlsZCk7CisgICAgICAg
IAorICAgICAgICBpZiAobV9ncmlkLm9yZGVySXRlcmF0b3IoKS5zaG91bGRTa2lwQ2hpbGQoKmNo
aWxkKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkK
KyAgICAgICAgICAgICAgICBwcmVwYXJlQ2hpbGRGb3JQb3NpdGlvbmVkTGF5b3V0KCpjaGlsZCk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNw
cAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTQg
QEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnBvcHVsYQogICAgIExheW91dFN0
YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwogICAgIFJlbmRlclRyZWVJ
bnRlcm5hbE11dGF0aW9uU2NvcGUgcmVwYXJlbnRpbmdJc09uKHZpZXcoKSk7CiAgICAgbXVsdGlj
b2xDb250YWluZXItPm1vdmVDaGlsZHJlblRvKHRoaXMsIG11bHRpY29sQ29udGFpbmVyLT5maXJz
dENoaWxkKCksIHRoaXMsIHRydWUpOworICAgIAorICAgIGlmIChtdWx0aWNvbENvbnRhaW5lci0+
aXNGaWVsZHNldCgpKSB7CisgICAgICAgIC8vIEtlZXAgbGVnZW5kcyBvdXQgb2YgdGhlIGZsb3cg
dGhyZWFkLgorICAgICAgICBmb3IgKGF1dG8mIGJveCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckJv
eD4oKnRoaXMpKSB7CisgICAgICAgICAgICBpZiAoYm94LmlzTGVnZW5kKCkpCisgICAgICAgICAg
ICAgICAgbW92ZUNoaWxkVG8obXVsdGljb2xDb250YWluZXIsICZib3gsIHRydWUpOworICAgICAg
ICB9CisgICAgfQogfQogCiB2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6ZXZhY3Vh
dGVBbmREZXN0cm95KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmNwcAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE5LDcgKzMxOSw3IEBAIGJvb2wgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnJlcXVpcmVzQmFsYW4K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFJlbmRlckJveCogbmV4dCA9IFJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZDo6bmV4dENvbHVtblNldE9yU3Bhbm5lclNpYmxpbmdPZih0
aGlzKSkgewotICAgICAgICBpZiAoIW5leHQtPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSkgewor
ICAgICAgICBpZiAoIW5leHQtPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSAmJiAhbmV4dC0+aXNM
ZWdlbmQoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UncmUgZm9sbG93ZWQgYnkgYSBzcGFubmVy
LCB3ZSBuZWVkIHRvIGJhbGFuY2UuCiAgICAgICAgICAgICBBU1NFUlQobXVsdGlDb2x1bW5GbG93
VGhyZWFkKCktPmZpbmRDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIobmV4dCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw2ICsxNTgsMTIgQEAgYm9vbCBS
ZW5kZXJPYmplY3Q6OmlzTGVnZW5kKCkgY29uc3QKICAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUo
KS0+aGFzVGFnTmFtZShsZWdlbmRUYWcpOwogfQogCisgICAgCitib29sIFJlbmRlck9iamVjdDo6
aXNGaWVsZHNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1Rh
Z05hbWUoZmllbGRzZXRUYWcpOworfQorCiBib29sIFJlbmRlck9iamVjdDo6aXNIVE1MTWFycXVl
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPnJlbmRlcmVyKCkgPT0g
dGhpcyAmJiBub2RlKCktPmhhc1RhZ05hbWUobWFycXVlZVRhZyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw3
ICsyMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhaWxzTWFya2VyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbWJlZGRlZE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRmllbGRzZXQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpA
QCAtNDQ4LDYgKzQ0OCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPdXRsaW5lQXV0b0FuY2Vz
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YSgpLmhhc091dGxpbmVBdXRvQW5jZXN0b3IoKTsgfQogICAgIGJvb2wgaXNSZWdpc3RlcmVkRm9y
VmlzaWJsZUluVmlld3BvcnRDYWxsYmFjaygpIHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVE
YXRhKCkgJiYgcmFyZURhdGEoKS5pc1JlZ2lzdGVyZWRGb3JWaXNpYmxlSW5WaWV3cG9ydENhbGxi
YWNrKCk7IH0KIAorICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CisgICAg
dm9pZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0
ZmllbGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQorICAgIGJv
b2wgaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CisKICAgICBlbnVtIFZpc2libGVJ
blZpZXdwb3J0U3RhdGUgewogICAgICAgICBWaXNpYmlsaXR5VW5rbm93biwKICAgICAgICAgVmlz
aWJsZUluVmlld3BvcnQsCkBAIC05MDEsNiArOTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICwgbV9oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
ZXZlckhhZExheW91dChmYWxzZSkKICAgICAgICAgICAgICwgbV9jaGlsZHJlbklubGluZShmYWxz
ZSkKKyAgICAgICAgICAgICwgbV9pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChmYWxzZSkKICAg
ICAgICAgICAgICwgbV9wb3NpdGlvbmVkU3RhdGUoSXNTdGF0aWNhbGx5UG9zaXRpb25lZCkKICAg
ICAgICAgICAgICwgbV9zZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25Ob25lKQogICAgICAgICAgICAg
LCBtX2Zsb3dUaHJlYWRTdGF0ZShOb3RJbnNpZGVGbG93VGhyZWFkKQpAQCAtOTM2LDYgKzk0MSw4
IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gZnJvbSBSZW5kZXJCbG9jawogICAgICAgICBBRERf
Qk9PTEVBTl9CSVRGSUVMRChjaGlsZHJlbklubGluZSwgQ2hpbGRyZW5JbmxpbmUpOworICAgICAg
ICAKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlv
dXQsIElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHVuc2lnbmVkIG1fcG9zaXRpb25lZFN0YXRlIDogMjsgLy8gUG9zaXRpb25lZFN0YXRlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCShyZXZpc2lvbiAy
MTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMywxNyArMjEzLDE5IEBAIFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1
YnlSdW46OnN0YXRpY0NyZWEKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKLVJlbmRlck9iamVj
dCogUmVuZGVyUnVieVJ1bjo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91
dENoaWxkcmVuKQordm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKKyAgICBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1
ZGVkQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbik7CisKICAgICBTdGFja1N0YXRzOjpMYXlvdXRD
aGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CiAgICAgLy8gRG9uJ3QgYm90aGVyIHBvc2l0aW9u
aW5nIHRoZSBSZW5kZXJSdWJ5UnVuIHlldC4KICAgICBSZW5kZXJSdWJ5VGV4dCogcnQgPSBydWJ5
VGV4dCgpOwogICAgIGlmICghcnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47
CisgICAgcnQtPnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KHRydWUpOwogICAgIGlmIChy
ZWxheW91dENoaWxkcmVuKQogICAgICAgICBydC0+c2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25s
eVRoaXMpOwogICAgIHJ0LT5sYXlvdXRJZk5lZWRlZCgpOwotICAgIHJldHVybiBydDsKIH0KIAog
dm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieVJ1bi5oCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2UoKSBjb25zdDsKICAgICBSZW5k
ZXJSdWJ5QmFzZSogcnVieUJhc2VTYWZlKCk7IC8vIGNyZWF0ZXMgdGhlIGJhc2UgaWYgaXQgZG9l
c24ndCBhbHJlYWR5IGV4aXN0CiAKLSAgICBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNs
dWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlv
dXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMjEzNDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50T2JqZWN0KFBh
aW50SW5mbyYKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChwYWlu
dE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGU6OnN1YnRyYWN0Q2FwdGlv
blJlY3QoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgUmVuZGVyVGFibGU6OmFkanVzdEJv
cmRlckJveFJlY3RGb3JQYWludGluZyhMYXlvdXRSZWN0JiByZWN0KQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2NhcHRpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIExheW91
dFVuaXQgY2FwdGlvbkxvZ2ljYWxIZWlnaHQgPSBtX2NhcHRpb25zW2ldLT5sb2dpY2FsSGVpZ2h0
KCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5CZWZvcmUoKSArIG1fY2FwdGlvbnNbaV0tPm1hcmdp
bkFmdGVyKCk7CkBAIC03NjgsNiArNzY4LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3VidHJhY3RD
YXB0aW9uUmVjdChMYQogICAgICAgICAgICAgICAgIHJlY3QubW92ZShjYXB0aW9uTG9naWNhbEhl
aWdodCwgMCk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgUmVuZGVyQmxvY2s6OmFkanVz
dEJvcmRlckJveFJlY3RGb3JQYWludGluZyhyZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZTo6
cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQpAQCAtNzc2LDggKzc3OCw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBy
ZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwotICAgIHN1YnRyYWN0Q2FwdGlvblJlY3QocmVjdCk7
Ci0KKyAgICBhZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcocmVjdCk7CisgICAgCiAgICAg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0gZGV0ZXJtaW5lQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGlmICghYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24oKSwgYmxlZWRBdm9p
ZGFuY2UpKQogICAgICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHJlY3QsIHN0eWxlKCks
IE5vcm1hbCk7CkBAIC03OTQsNyArNzk2LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRNYXNr
KFBhaW50SW5mbyYgcAogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHJlY3QocGFp
bnRPZmZzZXQsIHNpemUoKSk7Ci0gICAgc3VidHJhY3RDYXB0aW9uUmVjdChyZWN0KTsKKyAgICBh
ZGp1c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcocmVjdCk7CiAKICAgICBwYWludE1hc2tJbWFn
ZXMocGFpbnRJbmZvLCByZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgZmluYWw7CiAKLSAgICB2b2lk
IHN1YnRyYWN0Q2FwdGlvblJlY3QoTGF5b3V0UmVjdCYpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0
Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgcmVjYWxjQ29sbGFwc2VkQm9yZGVycygpOwogICAgIHZvaWQgcmVjYWxjU2VjdGlvbnMoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwNyw2ICsxMzA3LDggQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbgogICAgICAgICByZXR1cm47CiAKICAg
ICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIGZyYW1lUmVj
dCgpLnNpemUoKSk7CisgICAgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKHBhaW50UmVj
dCk7CisKICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwg
Tm9ybWFsKTsKICAgICAKICAgICAvLyBQYWludCBvdXIgY2VsbCBiYWNrZ3JvdW5kLgpAQCAtMTMy
OSw3ICsxMzMxLDEwIEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludE1hc2soUGFpbnRJbmYK
ICAgICBpZiAoIXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2Vs
bHMoKSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKICAgIAotICAg
IHBhaW50TWFza0ltYWdlcyhwYWludEluZm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQsIGZyYW1l
UmVjdCgpLnNpemUoKSkpOworICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChw
YWludE9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICBhZGp1c3RCb3JkZXJCb3hSZWN0
Rm9yUGFpbnRpbmcocGFpbnRSZWN0KTsKKworICAgIHBhaW50TWFza0ltYWdlcyhwYWludEluZm8s
IHBhaW50UmVjdCk7CiB9CiAKIGJvb2wgUmVuZGVyVGFibGVDZWxsOjpib3hTaGFkb3dTaG91bGRC
ZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiAyMTM0MzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcsMTkgKzE5NywyMiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1
c1JpbmdSZWN0CiAgICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFkZGl0aW9uYWxPZmZz
ZXQsIHNpemUoKSkpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclRleHRDb250cm9sOjpsYXlv
dXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCit2b2lkIFJlbmRl
clRleHRDb250cm9sOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJl
bikKIHsKKyAgICBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4ocmVsYXlv
dXRDaGlsZHJlbik7CisKICAgICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXIgPSB0ZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KCkucGxhY2Vob2xkZXJFbGVtZW50KCk7CiAgICAgUmVuZGVyRWxlbWVudCog
cGxhY2Vob2xkZXJSZW5kZXJlciA9IHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXItPnJlbmRlcmVy
KCkgOiAwOwogICAgIGlmICghcGxhY2Vob2xkZXJSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybjsKKyAgICBwbGFjZWhvbGRlclJlbmRlcmVyLT5zZXRJc0V4Y2x1ZGVk
RnJvbU5vcm1hbExheW91dCh0cnVlKTsKKwogICAgIGlmIChyZWxheW91dENoaWxkcmVuKSB7CiAg
ICAgICAgIC8vIFRoZSBtYXJrUGFyZW50cyBhcmd1bWVudHMgc2hvdWxkIGJlIGZhbHNlIGJlY2F1
c2UgdGhpcyBmdW5jdGlvbiBpcwogICAgICAgICAvLyBjYWxsZWQgZnJvbSBsYXlvdXQoKSBvZiB0
aGUgcGFyZW50IGFuZCB0aGUgcGxhY2Vob2xkZXIgbGF5b3V0IGRvZXNuJ3QKICAgICAgICAgLy8g
YWZmZWN0IHRoZSBwYXJlbnQgbGF5b3V0LgogICAgICAgICBwbGFjZWhvbGRlclJlbmRlcmVyLT5z
ZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgfQotICAgIHJldHVybiBwbGFj
ZWhvbGRlclJlbmRlcmVyOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDIxMzQzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCA9IDA7CiAKICAgICBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlbmRlck9i
amVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBv
dmVycmlkZTsKKyAgICB2b2lkIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENo
aWxkcmVuKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gMjEzNDMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsOSArODcsMTMgQEAgaW50IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
OjpiYXNlbGluZQogICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CiB9CiAKLVJl
bmRlck9iamVjdCogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmxheW91dFNwZWNpYWxFeGNs
dWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKQog
ewotICAgIFJlbmRlck9iamVjdCogcGxhY2Vob2xkZXJSZW5kZXJlciA9IFJlbmRlclRleHRDb250
cm9sOjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChyZWxheW91dENoaWxkcmVuKTsKKyAgICBS
ZW5kZXJUZXh0Q29udHJvbDo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbihyZWxheW91dENoaWxkcmVu
KTsKKyAgICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXIgPSB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KCkucGxhY2Vob2xkZXJFbGVtZW50KCk7CisgICAgUmVuZGVyRWxlbWVudCogcGxhY2Vob2xkZXJS
ZW5kZXJlciA9IHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXItPnJlbmRlcmVyKCkgOiAwOworICAg
IGlmICghcGxhY2Vob2xkZXJSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChpczxS
ZW5kZXJCb3g+KHBsYWNlaG9sZGVyUmVuZGVyZXIpKSB7CiAgICAgICAgIGF1dG8mIHBsYWNlaG9s
ZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcGxhY2Vob2xkZXJSZW5kZXJlcik7CiAgICAg
ICAgIHBsYWNlaG9sZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldExvZ2ljYWxXaWR0aChMZW5ndGgo
Y29udGVudExvZ2ljYWxXaWR0aCgpIC0gcGxhY2Vob2xkZXJCb3guYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxXaWR0aCgpLCBGaXhlZCkpOwpAQCAtOTcsNyArMTAxLDYgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZQogICAgICAgICBwbGFjZWhvbGRlckJveC5zZXRYKGJv
cmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkpOwogICAgICAgICBwbGFjZWhvbGRlckJveC5zZXRZ
KGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIHBsYWNlaG9s
ZGVyUmVuZGVyZXI7CiB9CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAkocmV2aXNpb24gMjEzNDMx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRV
bml0IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExh
eW91dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0RXhjbHVkZWRD
aGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogfTsKIAogaW5saW5lIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lKiBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcigp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCShyZXZpc2lvbiAyMTM0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MiwxNCArMjcyLDMwIEBAIHZv
aWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94ID0gZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KG8pOwotICAgICAgICBpZiAoYm94LmJvcmRlclRvcCgpIHx8
IGJveC5ib3JkZXJSaWdodCgpIHx8IGJveC5ib3JkZXJCb3R0b20oKSB8fCBib3guYm9yZGVyTGVm
dCgpKSB7CisgICAgICAgIExheW91dFVuaXQgYm9yZGVyVG9wID0gYm94LmJvcmRlclRvcCgpOwor
ICAgICAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0ID0gYm94LmJvcmRlclJpZ2h0KCk7CisgICAg
ICAgIExheW91dFVuaXQgYm9yZGVyQm90dG9tID0gYm94LmJvcmRlckJvdHRvbSgpOworICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlckxlZnQgPSBib3guYm9yZGVyTGVmdCgpOworICAgICAgICBpZiAo
Ym94LmlzRmllbGRzZXQoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYgYmxvY2sgPSBkb3du
Y2FzdDxSZW5kZXJCbG9jaz4oYm94KTsKKyAgICAgICAgICAgIGlmIChvLnN0eWxlKCkud3JpdGlu
Z01vZGUoKSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKQorICAgICAgICAgICAgICAgIGJvcmRl
clRvcCAtPSBibG9jay5pbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOworICAgICAgICAgICAg
ZWxzZSBpZiAoby5zdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9k
ZSkKKyAgICAgICAgICAgICAgICBib3JkZXJCb3R0b20gLT0gYmxvY2suaW50cmluc2ljQm9yZGVy
Rm9yRmllbGRzZXQoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG8uc3R5bGUoKS53cml0aW5nTW9k
ZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpCisgICAgICAgICAgICAgICAgYm9yZGVyTGVm
dCAtPSBibG9jay5pbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOworICAgICAgICAgICAgZWxz
ZSBpZiAoby5zdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gUmlnaHRUb0xlZnRXcml0aW5nTW9kZSkK
KyAgICAgICAgICAgICAgICBib3JkZXJSaWdodCAtPSBibG9jay5pbnRyaW5zaWNCb3JkZXJGb3JG
aWVsZHNldCgpOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgaWYgKGJvcmRlclRv
cCB8fCBib3JkZXJSaWdodCB8fCBib3JkZXJCb3R0b20gfHwgYm9yZGVyTGVmdCkgewogICAgICAg
ICAgICAgdHMgPDwgIiBbYm9yZGVyOiI7CiAKICAgICAgICAgICAgIEJvcmRlclZhbHVlIHByZXZC
b3JkZXIgPSBvLnN0eWxlKCkuYm9yZGVyVG9wKCk7Ci0gICAgICAgICAgICBpZiAoIWJveC5ib3Jk
ZXJUb3AoKSkKKyAgICAgICAgICAgIGlmICghYm9yZGVyVG9wKQogICAgICAgICAgICAgICAgIHRz
IDw8ICIgbm9uZSI7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cyA8PCAi
ICgiIDw8IGJveC5ib3JkZXJUb3AoKSA8PCAicHggIjsKKyAgICAgICAgICAgICAgICB0cyA8PCAi
ICgiIDw8IGJvcmRlclRvcCA8PCAicHggIjsKICAgICAgICAgICAgICAgICBwcmludEJvcmRlclN0
eWxlKHRzLCBvLnN0eWxlKCkuYm9yZGVyVG9wU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgQ29s
b3IgY29sID0gby5zdHlsZSgpLmJvcmRlclRvcENvbG9yKCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFjb2wuaXNWYWxpZCgpKQpAQCAtMjg5LDEwICszMDUsMTAgQEAgdm9pZCBSZW5kZXJUcmVlQXNU
ZXh0Ojp3cml0ZVJlbmRlck9iamVjdAogCiAgICAgICAgICAgICBpZiAoby5zdHlsZSgpLmJvcmRl
clJpZ2h0KCkgIT0gcHJldkJvcmRlcikgewogICAgICAgICAgICAgICAgIHByZXZCb3JkZXIgPSBv
LnN0eWxlKCkuYm9yZGVyUmlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWJveC5ib3JkZXJS
aWdodCgpKQorICAgICAgICAgICAgICAgIGlmICghYm9yZGVyUmlnaHQpCiAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgbm9uZSI7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRzIDw8ICIgKCIgPDwgYm94LmJvcmRlclJpZ2h0KCkgPDwgInB4ICI7CisgICAg
ICAgICAgICAgICAgICAgIHRzIDw8ICIgKCIgPDwgYm9yZGVyUmlnaHQgPDwgInB4ICI7CiAgICAg
ICAgICAgICAgICAgICAgIHByaW50Qm9yZGVyU3R5bGUodHMsIG8uc3R5bGUoKS5ib3JkZXJSaWdo
dFN0eWxlKCkpOwogICAgICAgICAgICAgICAgICAgICBDb2xvciBjb2wgPSBvLnN0eWxlKCkuYm9y
ZGVyUmlnaHRDb2xvcigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbC5pc1ZhbGlkKCkp
CkBAIC0zMDMsMTAgKzMxOSwxMCBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVy
T2JqZWN0CiAKICAgICAgICAgICAgIGlmIChvLnN0eWxlKCkuYm9yZGVyQm90dG9tKCkgIT0gcHJl
dkJvcmRlcikgewogICAgICAgICAgICAgICAgIHByZXZCb3JkZXIgPSBib3guc3R5bGUoKS5ib3Jk
ZXJCb3R0b20oKTsKLSAgICAgICAgICAgICAgICBpZiAoIWJveC5ib3JkZXJCb3R0b20oKSkKKyAg
ICAgICAgICAgICAgICBpZiAoIWJvcmRlckJvdHRvbSkKICAgICAgICAgICAgICAgICAgICAgdHMg
PDwgIiBub25lIjsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
dHMgPDwgIiAoIiA8PCBib3guYm9yZGVyQm90dG9tKCkgPDwgInB4ICI7CisgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgKCIgPDwgYm9yZGVyQm90dG9tIDw8ICJweCAiOwogICAgICAgICAgICAg
ICAgICAgICBwcmludEJvcmRlclN0eWxlKHRzLCBvLnN0eWxlKCkuYm9yZGVyQm90dG9tU3R5bGUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJCb3R0
b21Db2xvcigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbC5pc1ZhbGlkKCkpCkBAIC0z
MTcsMTAgKzMzMywxMCBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0
CiAKICAgICAgICAgICAgIGlmIChvLnN0eWxlKCkuYm9yZGVyTGVmdCgpICE9IHByZXZCb3JkZXIp
IHsKICAgICAgICAgICAgICAgICBwcmV2Qm9yZGVyID0gby5zdHlsZSgpLmJvcmRlckxlZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWJveC5ib3JkZXJMZWZ0KCkpCisgICAgICAgICAgICAgICAg
aWYgKCFib3JkZXJMZWZ0KQogICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIG5vbmUiOwogICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICgiIDw8IGJv
eC5ib3JkZXJMZWZ0KCkgPDwgInB4ICI7CisgICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgKCIg
PDwgYm9yZGVyTGVmdCA8PCAicHggIjsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRCb3JkZXJT
dHlsZSh0cywgby5zdHlsZSgpLmJvcmRlckxlZnRTdHlsZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgQ29sb3IgY29sID0gby5zdHlsZSgpLmJvcmRlckxlZnRDb2xvcigpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNvbC5pc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxMzQzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJEZXRhaWxzTWFya2VyLmNwcCIKICNp
bmNsdWRlICJSZW5kZXJFbGVtZW50LmNwcCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAiCi0jaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuY3BwIgogI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcCIKICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5jcHAiCiAj
aW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5jcHAiCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTM0MzEp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBA
QAorMjAxNy0wMy0wNiAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBF
bmFibGUgZmllbGRzZXRzIHRvIGJlIGZsZXhib3hlcywgZ3JpZHMgYW5kIG11bHRpY29sdW1uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9maWVsZHNldC9hYnMtcG9zLWNoaWxkLXNpemluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2Ficy1wb3MtY2hpbGQtc2l6aW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1m
bGV4Ym94LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRz
ZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1mbGV4Ym94Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZsZXhib3guaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1ncmlkLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZ3Jp
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW11
bHRpY29sdW1uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmll
bGRzZXQvZmllbGRzZXQtbXVsdGljb2x1bW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1hdXRvLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctYXV0by5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJm
bG93LWhpZGRlbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zp
ZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWhpZGRlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXBvc2l0aW9uZWQtY2hpbGRyZW4tZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3Np
dGlvbmVkLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRz
ZXQvZmllbGRzZXQtcG9zaXRpb25lZC1sZWdlbmQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWxlZ2VuZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXNlbGYtcGFp
bnRpbmctbGVnZW5kLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZmllbGRzZXQvZmllbGRzZXQtc2VsZi1wYWludGluZy1sZWdlbmQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5nLW1vZGVzLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtd3Jp
dGluZy1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxNy0wMy0wNCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIxMzM3OS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvYWJzLXBvcy1j
aGlsZC1zaXppbmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpZWxkc2V0L2Ficy1wb3MtY2hpbGQtc2l6aW5nLWV4cGVjdGVkLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9hYnMtcG9zLWNoaWxk
LXNpemluZy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICAgICAgaHRtbCxib2R5IHsK
KyAgICAgICAgICAgICAgICBjb2xvcjpibGFjazsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgZm9u
dC1zaXplOjE2cHg7IHBhZGRpbmc6MDsgbWFyZ2luOjA7CisgICAgICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBkaXYgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDI1NSwwLDAuNSk7CisgICAgICAgICAgICB0b3A6MDsg
Ym90dG9tOjA7CisgICAgICAgICAgICBsZWZ0OjA7IHJpZ2h0OjA7CisgICAgICAgICAgICB6LWlu
ZGV4OiAwOworICAgICAgICB9CisgICAgICAgIGMgeworICAgICAgICAgICAgZGlzcGxheTogYmxv
Y2s7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgICAgICAgICAgaGVpZ2h0OjEw
MCU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGxlZ2VuZCB7IGhlaWdodDogMjRweDsg
fQorICAgICAgICAKKyAgICAgICAgZmllbGRzZXQgeworICAgICAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgICAgICAgYm9yZGVyOiAycHggZ3JlZW4gc29saWQ7CisgICAgICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAg
bWFyZ2luLWJvdHRvbTo0MHB4OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAjdDEsI3Qz
IHsgcGFkZGluZzogM3B4IDVweCA3cHggMTFweDsgfQorICAgICAgICAjdDIsI3Q0IHsgcGFkZGlu
ZzogMDsgfQorICAgICAgICAKKyAgICAgICAgI3QxIGRpdiwgI3QzIGRpdiB7CisgICAgICAgICAg
ICAvKiBzYW1lIG51bWJlcnMgYXMgcGFkZGluZyBhYm92ZSAqLworICAgICAgICAgICAgbGVmdDog
LTExcHg7IHJpZ2h0OiAtNXB4OworICAgICAgICAgICAgdG9wOiAgLTNweDsgIGJvdHRvbTotN3B4
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAjdDIgeyB0b3A6IDEyMHB4OyB9CisgICAg
ICAgICN0MyB7IHRvcDogMjQwcHg7IH0KKyAgICAgICAgI3Q0IHsgdG9wOiAzNjBweDsgfQorICAg
ICAgICAKKyAgICAgICAgeCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgICAgICB3aWR0aDoxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDoxMDBweDsKKyAgICAgICAg
fQorICAgICAgICAjdDEgeCwgI3QyIHggeworICAgICAgICAgICAgaGVpZ2h0Ojc4cHg7IC8qIGNv
bXBlbnNhdGUgZm9yIGxlZ2VuZCAqLworICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICAKKyAgICAKKyAgICA8ZmllbGRzZXQgaWQ9InQxIj4KKyAgICAgICAg
PGxlZ2VuZD5sZWdlbmQ8L2xlZ2VuZD4KKyAgICAgICAgPHg+PGRpdj48L2Rpdj48Yz48L2M+PC94
PgorICAgIDwvZmllbGRzZXQ+CisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ0MiI+CisgICAgICAg
IDxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+CisgICAgICAgIDx4PjxkaXY+PC9kaXY+PC94PgorICAg
IDwvZmllbGRzZXQ+CisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ0MyI+CisgICAgICAgIDx4Pjxk
aXY+PC9kaXY+PGM+PC9jPjwveD4KKyAgICA8L2ZpZWxkc2V0PgorICAgIAorICAgIDxmaWVsZHNl
dCBpZD0idDQiPgorICAgICAgICA8eD48ZGl2PjwvZGl2PjwveD4KKyAgICA8L2ZpZWxkc2V0Pgor
ICAgIAorICAgIAorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpZWxkc2V0L2Ficy1wb3MtY2hpbGQtc2l6aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9hYnMtcG9zLWNoaWxkLXNpemluZy5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvYWJzLXBvcy1j
aGlsZC1zaXppbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPjxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgICAgIGh0bWwsYm9keSB7CisgICAg
ICAgICAgICAgICAgY29sb3I6YmxhY2s7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGZvbnQtc2l6
ZToxNnB4OyBwYWRkaW5nOjA7IG1hcmdpbjowOworICAgICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgZGl2IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAg
IGJhY2tncm91bmQ6IHJnYmEoMCwyNTUsMCwwLjUpOworICAgICAgICAgICAgdG9wOjA7IGJvdHRv
bTowOworICAgICAgICAgICAgbGVmdDowOyByaWdodDowOworICAgICAgICAgICAgei1pbmRleDog
MDsKKyAgICAgICAgfQorICAgICAgICBjIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwor
ICAgICAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAgICAgICAgIGhlaWdodDoxMDAlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsZWdlbmQgeyBoZWlnaHQ6IDI0cHg7IH0KKyAg
ICAgICAgCisgICAgICAgIGZpZWxkc2V0IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgICAgIGJvcmRlcjogMnB4IGdyZWVuIHNvbGlkOworICAgICAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdp
bi1ib3R0b206NDBweDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgI3QxLCN0MyB7IHBh
ZGRpbmc6IDNweCA1cHggN3B4IDExcHg7IH0KKyAgICAgICAgI3QyLCN0NCB7IHBhZGRpbmc6IDA7
IH0KKyAgICAgICAgCisgICAgICAgICN0MiB7IHRvcDogMTIwcHg7IH0KKyAgICAgICAgI3QzIHsg
dG9wOiAyNDBweDsgfQorICAgICAgICAjdDQgeyB0b3A6IDM2MHB4OyB9CisgICAgICAgICAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgCisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ0
MSI+CisgICAgICAgIDxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+CisgICAgICAgIDxkaXY+PC9kaXY+
PGM+PC9jPgorICAgIDwvZmllbGRzZXQ+CisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ0MiI+Cisg
ICAgICAgIDxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAg
PC9maWVsZHNldD4KKyAgICAKKyAgICA8ZmllbGRzZXQgaWQ9InQzIj4KKyAgICAgICAgPGRpdj48
L2Rpdj48Yz48L2M+CisgICAgPC9maWVsZHNldD4KKyAgICAKKyAgICA8ZmllbGRzZXQgaWQ9InQ0
Ij4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2ZpZWxkc2V0PgorICAgIAorICAgIAorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LWRlcHJlY2F0ZWQtZmxleGJveC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVjYXRlZC1mbGV4Ym94
LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1kZXByZWNhdGVkLWZsZXhib3gtZXhwZWN0ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBmaWVsZHNldCA+IGRpdiB7IGJvcmRl
cjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1h
cmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHggIH0KKyAgICAgICAgICAg
IGZpZWxkc2V0IHsgbWFyZ2luOjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dp
Y2FsLXdpZHRoOjMyMHB4OyAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjgwcHg7IGRpc3BsYXk6Zmxl
eDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyBiYWNrZ3Jv
dW5kLWNvbG9yOiNkZGRkZGQ7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6MjhweCB9
CisgICAgICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PGZpZWxkc2V0PgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQ8L2xlZ2VuZD4KKyAgICAgICAg
ICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAg
ICAgPC9maWVsZHNldD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRlcHJlY2F0ZWQtZmxleGJveC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGVwcmVj
YXRlZC1mbGV4Ym94Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWVsZHNldC9maWVsZHNldC1kZXByZWNhdGVkLWZsZXhib3guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBmaWVsZHNldCA+IGRpdiB7IGJvcmRlcjoycHgg
c29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1i
ZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHggIH0KKyAgICAgICAgICAgIGZpZWxk
c2V0IHsgbWFyZ2luOjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdp
ZHRoOjMyMHB4OyAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjgwcHg7IGRpc3BsYXk6LXdlYmtpdC1p
bmxpbmUtYm94OyAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7IC13ZWJraXQtYm94LWFsaWduOiBz
dHJldGNoOyBiYWNrZ3JvdW5kLWNvbG9yOiNkZGRkZGQ7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7
IHBhZGRpbmc6MjhweCB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPGZpZWxkc2V0PgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQ8L2xl
Z2VuZD4KKyAgICAgICAgICAgPGRpdj5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAKKyAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAg
ICAgIAorICAgICAgIDwvZmllbGRzZXQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mbGV4Ym94LWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNl
dC1mbGV4Ym94LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mbGV4Ym94LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmZpZWxkc2V0ID4gZGl2IHsgYm9yZGVy
OjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJraXQtbWFy
Z2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCAgfQorICAgICAgICAgICAg
LmZpZWxkc2V0IHsgbWFyZ2luOjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dp
Y2FsLXdpZHRoOjMyMHB4OyAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjgwcHg7IGRpc3BsYXk6aW5s
aW5lLWZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogc3RyZXRjaDsg
YmFja2dyb3VuZC1jb2xvcjojZGRkZGRkOyBib3JkZXI6MTJweCBzb2xpZCBuYXZ5OyBwYWRkaW5n
OjI4cHggfQorICAgICAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2ZXJ0aWNhbC1s
cjsiPgorICAgICAgICAgICAgPGRpdj5GaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAg
ICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICAgICAgCisgICAgICAgIDxkaXYgY2xhc3M9Zmll
bGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2ZXJ0aWNhbC1ybDsgIj4KKyAgICAgICAgICAgIDxk
aXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRp
dj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgPC9k
aXY+CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgPGRpdiBjbGFzcz1maWVsZHNldCBzdHls
ZT0id3JpdGluZy1tb2RlOmhvcml6b250YWwtYnQiPgorICAgICAgICAgICAgCisgICAgICAgICAg
ICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZmxleGJveC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGZpZWxkc2V0ID4g
ZGl2IHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7
IC13ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCAgfQor
ICAgICAgICAgICAgZmllbGRzZXQgeyBtYXJnaW46MDsgdmVydGljYWwtYWxpZ246Ym90dG9tOyAt
d2Via2l0LWxvZ2ljYWwtd2lkdGg6MzIwcHg7IC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6ODBweDsg
ZGlzcGxheTppbmxpbmUtZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1z
OiBzdHJldGNoOyBiYWNrZ3JvdW5kLWNvbG9yOiNkZGRkZGQ7IGJvcmRlcjoxMnB4IHNvbGlkIG5h
dnk7IHBhZGRpbmc6MjhweCB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keT4KKyAgICAgICAgPGZpZWxkc2V0IHN0eWxlPSJ3cml0aW5nLW1vZGU6dmVydGljYWwt
bHI7Ij4KKyAgICAgICAgICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAg
ICAgICAgICAKKyAgICAgICAgPC9maWVsZHNldD4KKworICAgICAgICA8ZmllbGRzZXQgc3R5bGU9
IndyaXRpbmctbW9kZTp2ZXJ0aWNhbC1ybDsgIj4KKyAgICAgICAgICAgIDxkaXY+RmllbGRzZXQg
Q29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxk
c2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgPC9maWVsZHNldD4KKyAg
ICAgICAgCisgICAgICAgIAorICAgICAgIDxmaWVsZHNldCBzdHlsZT0id3JpdGluZy1tb2RlOmhv
cml6b250YWwtYnQiPgorICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+Cisg
ICAgICAgICAgIAorICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4K
KyAgICAgICAgICAgCisgICAgICAgPC9maWVsZHNldD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWdyaWQtZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LWdyaWQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWdyaWQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxib2R5
PgorICAgICAgICA8ZmllbGRzZXQgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MjAwcHg7
IGhlaWdodDoyMDBweDsiPgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQ8L2xlZ2VuZD4KKyAg
ICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
OiByZXBlYXQoNCw1MHB4KTsgZ3JpZC1hdXRvLXJvd3M6IDIwcHg7Ij4KKyAgICAgICAgICAgICAg
ICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAg
ICAgICAgICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxw
PlgKKyAgICAgICAgICAgICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAg
ICAgICAgIDxwPlgKKyAgICAgICAgICAgICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAor
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZmllbGRzZXQ+CisgICAgICAgIDxmaWVsZHNl
dD4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kPC9sZWdlbmQ+CisgICAgICAgICAgICA8ZGl2
IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQtYXV0by1jb2x1bW5zOiA1MHB4OyBncmlkLWF1dG8t
cm93czogMjBweDsiPgorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAgICAgICA8cD5Y
CisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAgICAgICAgICAg
ICAgICA8cD5YCisgICAgICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgICAgIDxwPlgKKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2ZpZWxkc2V0PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZ3JpZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtZ3JpZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmll
bGRzZXQvZmllbGRzZXQtZ3JpZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxmaWVsZHNldCBz
dHlsZT0iZGlzcGxheTpncmlkOyBvdmVyZmxvdzpoaWRkZW47IGdyaWQtdGVtcGxhdGUtY29sdW1u
czogcmVwZWF0KDQsNTBweCk7IGdyaWQtYXV0by1yb3dzOiAyMHB4OyB3aWR0aDoyMDBweDsgaGVp
Z2h0OjIwMHB4OyI+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZDwvbGVnZW5kPgorICAgICAg
ICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAg
ICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAg
PHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+
WAorICAgICAgICAgICAgPHA+WAorICAgICAgICA8L2ZpZWxkc2V0PgorICAgICAgICA8ZmllbGRz
ZXQgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7IGdyaWQtYXV0
by1yb3dzOiAyMHB4OyI+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZDwvbGVnZW5kPgorICAg
ICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAg
ICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAgICAgPHA+WAorICAgICAgICAg
ICAgPHA+WAorICAgICAgICA8L2ZpZWxkc2V0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtbXVsdGljb2x1bW4tZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LW11bHRpY29sdW1uLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1tdWx0aWNvbHVtbi1leHBlY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzxmaWVsZHNldCBzdHlsZT0i
ZmxvYXQ6bGVmdCI+PGxlZ2VuZCBzdHlsZT0iZm9udC1zaXplOjQ4cHgiPkxlZ2VuZCBUaXRsZTwv
bGVnZW5kPgorICAgIDxkaXYgc3R5bGU9ImNvbHVtbnM6MjsiPgorICAgIFRoaXMgY29udGVudCBz
aG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAgIFRo
aXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUu
PGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxs
eSBzaG91bGQgYmUuPGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNvbHVt
bnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQgYmUg
aW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAgIFRoaXMgY29udGVu
dCBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAg
IFRoaXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQg
YmUuPGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJl
YWxseSBzaG91bGQgYmUuPGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQgYmUgaW4gdHdvIGNv
bHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAgIFRoaXMgY29udGVudCBzaG91bGQg
YmUgaW4gdHdvIGNvbHVtbnMuIEl0IHJlYWxseSBzaG91bGQgYmUuPGJyPgorICAgIDwvZGl2Pgor
PC9maWVsZHNldD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRz
ZXQtbXVsdGljb2x1bW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LW11bHRpY29sdW1uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1tdWx0aWNvbHVtbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzxmaWVsZHNldCBzdHlsZT0iY29sdW1uczoy
O2Zsb2F0OmxlZnQiPjxsZWdlbmQgc3R5bGU9ImZvbnQtc2l6ZTo0OHB4Ij5MZWdlbmQgVGl0bGU8
L2xlZ2VuZD4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCBy
ZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBj
b2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxk
IGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNv
bnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4K
KyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hv
dWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJ
dCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3
byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlzIGNvbnRlbnQgc2hv
dWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxicj4KKyAgICBUaGlz
IGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkgc2hvdWxkIGJlLjxi
cj4KKyAgICBUaGlzIGNvbnRlbnQgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zLiBJdCByZWFsbHkg
c2hvdWxkIGJlLjxicj4KKzwvZmllbGRzZXQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWF1dG8tZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWF1
dG8tZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93LWF1dG8tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuY29udGVudHMgeyBib3JkZXI6MnB4IHNv
bGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVm
b3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4IH0KKyAgICAgICAgICAgIC5maWVsZHNl
dCB7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBw
b3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7ICBwYWRkaW5nOjQwcHg7IC13
ZWJraXQtcGFkZGluZy1iZWZvcmU6MH0KKyAgICAgICAgICAgIC5sZWdlbmQgeyAgLXdlYmtpdC1s
b2dpY2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyAtd2Via2l0
LW1hcmdpbi1hZnRlcjozNHB4O2JhY2tncm91bmQtY29sb3I6IzMwODBmMDsgYm9yZGVyOjhweCBz
b2xpZCBsaWdodGJsdWU7IGZvbnQtc2l6ZTo0OHB4IH0KKyAgICAgICAgICAgIC5iZWhpbmQtYm94
IHsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHotaW5kZXg6LTEg
fQorICAgICAgICAgICAgI3Njcm9sbCB7IG92ZXJmbG93OmF1dG87IHBvc2l0aW9uOmFic29sdXRl
O2JvdHRvbTowO2xlZnQ6MDtyaWdodDowOyB0b3A6ODBweDsgYm90dG9tOjEycHg7IHJpZ2h0OjEy
cHg7IGxlZnQ6MTJweDsgcGFkZGluZzoyOHB4IDI4cHggMCAyOHB4ICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9w
OjM0cHg7IHJpZ2h0OjA7IGJvdHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PWxlZ2VuZD5MZWdlbmQgVGl0bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRp
diBpZD1zY3JvbGw+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNv
bnRlbnRzPkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAg
ICAgICAgICAgIDxkaXYgY2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5Nb3JlIEZpZWxkc2V0IENvbnRlbnRz
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29u
dGVudHM8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNl
dCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cyBzdHlsZT0i
bWFyZ2luLWJvdHRvbTowIj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQv
ZmllbGRzZXQtb3ZlcmZsb3ctYXV0by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctYXV0by5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ct
YXV0by5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGZpZWxk
c2V0IGRpdjpub3QoLnBvc2l0aW9uZWQpIHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNr
Z3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQt
bWFyZ2luLWFmdGVyOjZweCAgfQorICAgICAgICAgICAgZmllbGRzZXQgeyBvdmVyZmxvdzphdXRv
OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdl
YmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOjEy
cHggc29saWQgbmF2eTsgcGFkZGluZzoyOHB4IH0KKyAgICAgICAgICAgIGxlZ2VuZCB7IHBhZGRp
bmc6MDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6
IDI4NHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA7IGJvcmRlcjo4cHggc29saWQgbGlnaHRi
bHVlOyBmb250LXNpemU6NDhweCB9CisgICAgICAgICAgICAucG9zaXRpb25lZCB7IGhlaWdodDow
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxm
aWVsZHNldD4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kIFRpdGxlPC9sZWdlbmQ+CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIDxkaXYgY2xhc3M9cG9zaXRpb25lZD4KKyAgICAgICAgICAg
IDxkaXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
PGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAg
ICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAg
ICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgIDwvZmllbGRzZXQ+CisKKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LW92ZXJmbG93LWhpZGRlbi1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctaGlkZGVuLWV4
cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVs
ZHNldC9maWVsZHNldC1vdmVyZmxvdy1oaWRkZW4tZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuY29udGVudHMgeyBib3JkZXI6MnB4IHNvbGlk
IHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVmb3Jl
OjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4IH0KKyAgICAgICAgICAgIC5maWVsZHNldCB7
IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBwb3Np
dGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7ICBwYWRkaW5nOjQwcHg7IC13ZWJr
aXQtcGFkZGluZy1iZWZvcmU6MH0KKyAgICAgICAgICAgIC5sZWdlbmQgeyAgLXdlYmtpdC1sb2dp
Y2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyAtd2Via2l0LW1h
cmdpbi1hZnRlcjozNHB4O2JhY2tncm91bmQtY29sb3I6IzMwODBmMDsgYm9yZGVyOjhweCBzb2xp
ZCBsaWdodGJsdWU7IGZvbnQtc2l6ZTo0OHB4IH0KKyAgICAgICAgICAgIC5iZWhpbmQtYm94IHsg
cG9zaXRpb246YWJzb2x1dGU7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHotaW5kZXg6LTEgfQor
ICAgICAgICAgICAKKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQ+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZWhp
bmQtYm94IiBzdHlsZT0ibGVmdDowOyB0b3A6MzRweDsgcmlnaHQ6MDsgYm90dG9tOjA7Ij48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9bGVnZW5kPkxlZ2VuZCBUaXRsZTwvZGl2PgorICAg
ICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPkZpZWxkc2V0IENvbnRl
bnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Y29udGVudHM+
TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICAK
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1vdmVyZmxvdy1oaWRkZW4uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LW92ZXJmbG93
LWhpZGRlbi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmll
bGRzZXQvZmllbGRzZXQtb3ZlcmZsb3ctaGlkZGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHN0eWxlPgorICAgICAgICAgICAgZmllbGRzZXQgPiBkaXY6bm90KC5wb3NpdGlvbmVkKSB7IGJv
cmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0
LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHggIH0KKyAgICAgICAg
ICAgIGZpZWxkc2V0IHsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2lu
OjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBk
aXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOjEycHggc29saWQgbmF2eTsgcGFkZGluZzoyOHB4
IH0KKyAgICAgICAgICAgIGxlZ2VuZCB7IHBhZGRpbmc6MDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdo
dDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMz
MDgwZjA7IGJvcmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAg
ICAgICAgICAKKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDxmaWVsZHNldD4KKyAgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kIFRpdGxlPC9sZWdlbmQ+
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+RmllbGRzZXQgQ29udGVudHM8L2Rpdj4K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5Nb3JlIEZpZWxkc2V0IENvbnRlbnRzPC9k
aXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICA8L2ZpZWxkc2V0PgorCisg
ICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNl
dC9maWVsZHNldC1wb3NpdGlvbmVkLWNoaWxkcmVuLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWNo
aWxkcmVuLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWNoaWxkcmVuLWV4cGVjdGVkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmNvbnRlbnRzIHsgYm9y
ZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13ZWJraXQt
bWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCB9CisgICAgICAgICAg
ICAuZmllbGRzZXQgeyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13aWR0
aDozMjBweDsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAgcGFkZGlu
Zzo0MHB4OyAtd2Via2l0LXBhZGRpbmctYmVmb3JlOjB9CisgICAgICAgICAgICAubGVnZW5kIHsg
IC13ZWJraXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRw
eDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6MzRweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA7IGJv
cmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAgICAgICAgICAu
YmVoaW5kLWJveCB7IHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXI6MTJweCBzb2xpZCBuYXZ5OyB6
LWluZGV4Oi0xIH0KKyAgICAgICAgICAgIC5wb3NpdGlvbmVkIHsgcG9zaXRpb246YWJzb2x1dGU7
IHRvcDo5MHB4OyBib3R0b206MjJweDsgcmlnaHQ6MjJweDsgbGVmdDoyMnB4OyBiYWNrZ3JvdW5k
LWNvbG9yOmRhcmtibHVlOyB6LWluZGV4Oi0xIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQ+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJiZWhpbmQtYm94IiBzdHlsZT0ibGVmdDowOyB0b3A6MzRweDsgcmlnaHQ6
MDsgYm90dG9tOjA7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9bGVnZW5kPkxlZ2Vu
ZCBUaXRsZTwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRl
bnRzPkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxk
aXYgY2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbmVkIj48L2Rpdj4KKyAgICAgICAg
ICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXBvc2l0aW9uZWQtY2hpbGRyZW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LXBvc2l0aW9uZWQtY2hpbGRyZW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXBvc2l0aW9uZWQtY2hpbGRyZW4uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBmaWVsZHNldCA+IGRpdjpub3Qo
LnBvc2l0aW9uZWQpIHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9y
OiNjY2NjY2M7IC13ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVy
OjZweCAgfQorICAgICAgICAgICAgZmllbGRzZXQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2lu
OjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBk
aXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOjEycHggc29saWQgbmF2eTsgcGFkZGluZzoyOHB4
IH0KKyAgICAgICAgICAgIGxlZ2VuZCB7IHBhZGRpbmc6MDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdo
dDo2NHB4OyAtd2Via2l0LWxvZ2ljYWwtd2lkdGg6IDI4NHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMz
MDgwZjA7IGJvcmRlcjo4cHggc29saWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAg
ICAgICAgICAucG9zaXRpb25lZCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTBweDsgYm90dG9t
OjEwcHg7IHJpZ2h0OjEwcHg7IGxlZnQ6MTBweDsgYmFja2dyb3VuZC1jb2xvcjpkYXJrYmx1ZTsg
ei1pbmRleDotMSB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5Pgor
ICAgICAgICA8ZmllbGRzZXQ+CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZCBUaXRsZTwvbGVn
ZW5kPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9k
aXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50
czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPXBvc2l0aW9uZWQ+
PC9kaXY+CisgICAgICAgIDwvZmllbGRzZXQ+CisKKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXBvc2l0aW9uZWQtbGVn
ZW5kLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWxlZ2VuZC1leHBlY3RlZC5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRp
b25lZC1sZWdlbmQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuY29udGVudHMgeyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91
bmQtY29sb3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJn
aW4tYWZ0ZXI6NnB4OyAgfQorICAgICAgICAgICAgLmZpZWxkc2V0IHsgcG9zaXRpb246cmVsYXRp
dmU7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOjMyMHB4OyBw
b3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7ICAgYm9yZGVyOjEycHggc29s
aWQgbmF2eTsgcGFkZGluZzoyOHB4OyB9CisgICAgICAgICAgICAubGVnZW5kIHsgIC13ZWJraXQt
bG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRweDtiYWNrZ3Jv
dW5kLWNvbG9yOiMzMDgwZjA4MDsgYm9yZGVyOjhweCBzb2xpZCBsaWdodGJsdWU7IGZvbnQtc2l6
ZTo0OHB4OyBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtyaWdodDowOyBwb3NpdGlvbjphYnNv
bHV0ZSB9CisgICAgICAgICAgICAuYmVoaW5kLWJveCB7IHBvc2l0aW9uOmFic29sdXRlOzsgei1p
bmRleDotMTsgIH0KKyAgICAgICAgICAgCisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPWZpZWxkc2V0PgorICAgICAgICAgICAgPGRp
diBjbGFzcz0iYmVoaW5kLWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9wOjM0cHg7IHJpZ2h0OjA7IGJv
dHRvbTowOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPWxlZ2VuZD5MZWdlbmQgVGl0
bGU8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdiBjbGFzcz1jb250ZW50cz5G
aWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNs
YXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtcG9zaXRpb25lZC1sZWdl
bmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LXBvc2l0aW9uZWQtbGVnZW5kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1wb3NpdGlvbmVkLWxlZ2VuZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGZpZWxkc2V0ID4gZGl2Om5v
dCgucG9zaXRpb25lZCkgeyBib3JkZXI6MnB4IHNvbGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29s
b3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0
ZXI6NnB4OyAgIH0KKyAgICAgICAgICAgIGZpZWxkc2V0IHsgcG9zaXRpb246cmVsYXRpdmU7IG1h
cmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBw
eDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRlcjoxMnB4IHNvbGlkIG5hdnk7IHBhZGRpbmc6
MjhweDsgfQorICAgICAgICAgICAgbGVnZW5kIHsgcGFkZGluZzowOyAtd2Via2l0LWxvZ2ljYWwt
aGVpZ2h0OjY0cHg7IC13ZWJraXQtbG9naWNhbC13aWR0aDogMjg0cHg7IGJhY2tncm91bmQtY29s
b3I6IzMwODBmMDgwOyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1zaXplOjQ4cHg7
IHBvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3JpZ2h0OjAgfQorICAgICAgICAgICAgCisgICAg
ICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZmllbGRzZXQ+
CisgICAgICAgICAgICA8bGVnZW5kPkxlZ2VuZCBUaXRsZTwvbGVnZW5kPgorICAgICAgICAgICAg
CisgICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIDxkaXY+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAg
ICAgCisgICAgICAgICAgICAKKyAgICAgICAgPC9maWVsZHNldD4KKworICAgIDwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtc2Vs
Zi1wYWludGluZy1sZWdlbmQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXNlbGYtcGFpbnRpbmctbGVnZW5kLWV4cGVj
dGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNl
dC9maWVsZHNldC1zZWxmLXBhaW50aW5nLWxlZ2VuZC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjQgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5jb250ZW50cyB7IGJvcmRlcjoycHggc29s
aWQgc2t5Ymx1ZTsgYmFja2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZv
cmU6NnB4OyAtd2Via2l0LW1hcmdpbi1hZnRlcjo2cHg7ICB9CisgICAgICAgICAgICAuZmllbGRz
ZXQgeyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13aWR0aDozMjBweDsg
cG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAgcGFkZGluZzo0MHB4OyAt
d2Via2l0LXBhZGRpbmctYmVmb3JlOjA7ICB9CisgICAgICAgICAgICAubGVnZW5kIHsgIC13ZWJr
aXQtbG9naWNhbC1oZWlnaHQ6NjRweDsgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiAyODRweDsgLXdl
YmtpdC1tYXJnaW4tYWZ0ZXI6MzRweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA4MDsgYm9yZGVy
OjhweCBzb2xpZCBsaWdodGJsdWU7IGZvbnQtc2l6ZTo0OHB4OyB0cmFuc2Zvcm06dHJhbnNsYXRl
WCgxMHB4KSB9CisgICAgICAgICAgICAuYmVoaW5kLWJveCB7IHBvc2l0aW9uOmFic29sdXRlOyBi
b3JkZXI6MTJweCBzb2xpZCBuYXZ5OyB6LWluZGV4Oi0xOyBib3JkZXItdG9wOjEycHggc29saWQg
dHJhbnNwYXJlbnQgfQorICAgICAgICAgICAKKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQ+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJiZWhpbmQtYm94IiBzdHlsZT0ibGVmdDowOyB0b3A6MzRweDsgcmlnaHQ6MDsg
Ym90dG9tOjA7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9bGVnZW5kPkxlZ2VuZCBU
aXRsZTwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRz
PkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXYg
Y2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAg
CisgICAgICAgICAgICAKKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1zZWxmLXBhaW50aW5n
LWxlZ2VuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRz
ZXQvZmllbGRzZXQtc2VsZi1wYWludGluZy1sZWdlbmQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LXNlbGYtcGFpbnRpbmctbGVn
ZW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZmllbGRz
ZXQgPiBkaXY6bm90KC5wb3NpdGlvbmVkKSB7IGJvcmRlcjoycHggc29saWQgc2t5Ymx1ZTsgYmFj
a2dyb3VuZC1jb2xvcjojY2NjY2NjOyAtd2Via2l0LW1hcmdpbi1iZWZvcmU6NnB4OyAtd2Via2l0
LW1hcmdpbi1hZnRlcjo2cHg7ICAgfQorICAgICAgICAgICAgZmllbGRzZXQgeyBwb3NpdGlvbjpy
ZWxhdGl2ZTsgbWFyZ2luOjA7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgLXdlYmtpdC1sb2dpY2Fs
LXdpZHRoOjMyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOjEycHggc29saWQgbmF2
eTsgcGFkZGluZzoyOHB4OyBib3JkZXItdG9wOjEycHggc29saWQgdHJhbnNwYXJlbnQgfQorICAg
ICAgICAgICAgbGVnZW5kIHsgcGFkZGluZzowOyAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjY0cHg7
IC13ZWJraXQtbG9naWNhbC13aWR0aDogMjg0cHg7IGJhY2tncm91bmQtY29sb3I6IzMwODBmMDgw
OyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsgZm9udC1zaXplOjQ4cHg7IHRyYW5zZm9ybTp0
cmFuc2xhdGVYKDEwcHgpOyB9CisgICAgICAgICAgICAKKyAgICAgICAgPC9zdHlsZT4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxmaWVsZHNldD4KKyAgICAgICAgICAgIDxsZWdl
bmQ+TGVnZW5kIFRpdGxlPC9sZWdlbmQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkaXY+
RmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5N
b3JlIEZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAor
ICAgICAgICA8L2ZpZWxkc2V0PgorCisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5nLW1vZGVzLWV4cGVjdGVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC13cml0aW5nLW1vZGVzLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5nLW1vZGVzLWV4cGVjdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmNvbnRlbnRz
IHsgYm9yZGVyOjJweCBzb2xpZCBza3libHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7IC13
ZWJraXQtbWFyZ2luLWJlZm9yZTo2cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjZweCB9CisgICAg
ICAgICAgICAuZmllbGRzZXQgeyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNh
bC13aWR0aDozMjBweDsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3
cml0aW5nLW1vZGU6dmVydGljYWwtcmw7IHBhZGRpbmc6NDBweDsgLXdlYmtpdC1wYWRkaW5nLWJl
Zm9yZTowfQorICAgICAgICAgICAgLmxlZ2VuZCB7ICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OjY0
cHg7IC13ZWJraXQtbG9naWNhbC13aWR0aDogMjg0cHg7IC13ZWJraXQtbWFyZ2luLWFmdGVyOjM0
cHg7YmFja2dyb3VuZC1jb2xvcjojMzA4MGYwOyBib3JkZXI6OHB4IHNvbGlkIGxpZ2h0Ymx1ZTsg
Zm9udC1zaXplOjQ4cHggfQorICAgICAgICAgICAgLmJlaGluZC1ib3ggeyBwb3NpdGlvbjphYnNv
bHV0ZTsgYmFja2dyb3VuZC1jb2xvcjojZGRkZGRkOyBib3JkZXI6MTJweCBzb2xpZCBuYXZ5OyB6
LWluZGV4Oi0xIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2ZXJ0aWNhbC1s
ciI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZWhpbmQtYm94IiBzdHlsZT0ibGVmdDozNHB4
OyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9bGVnZW5kPkxlZ2VuZCBUaXRsZTwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8
ZGl2IGNsYXNzPWNvbnRlbnRzPkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNldCBDb250ZW50czwv
ZGl2PgorICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgICAgICAKKyAgICAgICAgPGRp
diBjbGFzcz1maWVsZHNldCBzdHlsZT0id3JpdGluZy1tb2RlOnZlcnRpY2FsLXJsOyI+CisgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJiZWhpbmQtYm94IiBzdHlsZT0icmlnaHQ6MzRweDsgdG9wOjA7
IGxlZnQ6MDsgYm90dG9tOjA7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9bGVnZW5k
PkxlZ2VuZCBUaXRsZTwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2IGNsYXNz
PWNvbnRlbnRzPkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9Y29udGVudHM+TW9yZSBGaWVsZHNldCBDb250ZW50czwvZGl2PgorICAg
ICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgCisg
ICAgICAgPGRpdiBjbGFzcz1maWVsZHNldCBzdHlsZT0id3JpdGluZy1tb2RlOmhvcml6b250YWwt
YnQiPgorICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZWhpbmQtYm94IiBzdHlsZT0iYm90dG9tOjM0
cHg7IHRvcDowOyByaWdodDowOyBsZWZ0OjA7Ij48L2Rpdj4KKyAgICAgICAgICAgPGRpdiBjbGFz
cz1sZWdlbmQ+TGVnZW5kIFRpdGxlPC9kaXY+CisgICAgICAgICAgIAorICAgICAgICAgICA8ZGl2
IGNsYXNzPWNvbnRlbnRzPkZpZWxkc2V0IENvbnRlbnRzPC9kaXY+CisgICAgICAgICAgIAorICAg
ICAgICAgICA8ZGl2IGNsYXNzPWNvbnRlbnRzPk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4K
KyAgICAgICAgICAgCisgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5nLW1vZGVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNl
dC13cml0aW5nLW1vZGVzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC13cml0aW5nLW1vZGVzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZmllbGRzZXQgPiBkaXYgeyBib3JkZXI6MnB4IHNv
bGlkIHNreWJsdWU7IGJhY2tncm91bmQtY29sb3I6I2NjY2NjYzsgLXdlYmtpdC1tYXJnaW4tYmVm
b3JlOjZweDsgLXdlYmtpdC1tYXJnaW4tYWZ0ZXI6NnB4ICB9CisgICAgICAgICAgICBmaWVsZHNl
dCB7IG1hcmdpbjowOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IC13ZWJraXQtbG9naWNhbC13aWR0
aDozMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6I2RkZGRkZDsg
Ym9yZGVyOjEycHggc29saWQgbmF2eTsgcGFkZGluZzoyOHB4IH0KKyAgICAgICAgICAgIGxlZ2Vu
ZCB7IHBhZGRpbmc6MDsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDo2NHB4OyAtd2Via2l0LWxvZ2lj
YWwtd2lkdGg6IDI4NHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMDgwZjA7IGJvcmRlcjo4cHggc29s
aWQgbGlnaHRibHVlOyBmb250LXNpemU6NDhweCB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZmllbGRzZXQgc3R5bGU9IndyaXRpbmctbW9kZTp2
ZXJ0aWNhbC1scjsiPgorICAgICAgICAgICAgPGxlZ2VuZD5MZWdlbmQgVGl0bGU8L2xlZ2VuZD4K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5GaWVsZHNldCBDb250ZW50czwvZGl2Pgor
ICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8L2Rp
dj4KKyAgICAgICAgICAgIAorICAgICAgICA8L2ZpZWxkc2V0PgorCisgICAgICAgIDxmaWVsZHNl
dCBzdHlsZT0id3JpdGluZy1tb2RlOnZlcnRpY2FsLXJsOyAiPgorICAgICAgICAgICAgPGxlZ2Vu
ZD5MZWdlbmQgVGl0bGU8L2xlZ2VuZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGRpdj5G
aWVsZHNldCBDb250ZW50czwvZGl2PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8ZGl2Pk1v
cmUgRmllbGRzZXQgQ29udGVudHM8L2Rpdj4KKyAgICAgICAgICAgIAorICAgICAgICA8L2ZpZWxk
c2V0PgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgPGZpZWxkc2V0IHN0eWxlPSJ3cml0aW5n
LW1vZGU6aG9yaXpvbnRhbC1idCI+CisgICAgICAgICAgIDxsZWdlbmQ+TGVnZW5kIFRpdGxlPC9s
ZWdlbmQ+CisgICAgICAgICAgIAorICAgICAgICAgICA8ZGl2PkZpZWxkc2V0IENvbnRlbnRzPC9k
aXY+CisgICAgICAgICAgIAorICAgICAgICAgICA8ZGl2Pk1vcmUgRmllbGRzZXQgQ29udGVudHM8
L2Rpdj4KKyAgICAgICAgICAgCisgICAgICAgPC9maWVsZHNldD4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>