<?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>217535</bug_id>
          
          <creation_ts>2020-10-09 14:06:10 -0700</creation_ts>
          <short_desc>[Media in GPU Process] Move AudioSessionRoutingArbitratorProxy to the GPU process</short_desc>
          <delta_ts>2021-05-04 16:50:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>
          
          <blocked>223564</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696357</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-09 14:06:10 -0700</bug_when>
    <thetext>Currently AudioSessionRoutingArbitratorProxy is in the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696358</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-09 14:06:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/70152548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743524</commentid>
    <comment_count>2</comment_count>
      <attachid>424177</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-24 13:47:38 -0700</bug_when>
    <thetext>Created attachment 424177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743533</commentid>
    <comment_count>3</comment_count>
      <attachid>424177</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-03-24 14:00:09 -0700</bug_when>
    <thetext>Comment on attachment 424177
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        moved into WebCore to be used both there and in tihs new object.

s/tihs/this/g.

&gt; Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.h:53
&gt; +    bool isInRoutingArbitrationForToken(Token&amp;);

const Token&amp;?

&gt; Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.mm:123
&gt; +    ASSERT(isInRoutingArbitrationForToken(token));

Not a problem of this patch. Is it possible that this function is called when `m_setupArbitrationOngoing` is true?

&gt; Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.cpp:47
&gt; +

Nit. An empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743536</commentid>
    <comment_count>4</comment_count>
      <attachid>424179</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-24 14:04:12 -0700</bug_when>
    <thetext>Created attachment 424179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743537</commentid>
    <comment_count>5</comment_count>
      <attachid>424180</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-24 14:04:29 -0700</bug_when>
    <thetext>Created attachment 424180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743540</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-24 14:10:08 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #3)
&gt; Comment on attachment 424177 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424177&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; +        moved into WebCore to be used both there and in tihs new object.
&gt; 
&gt; s/tihs/this/g.

Whoops! Fixed.

&gt; &gt; Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.h:53
&gt; &gt; +    bool isInRoutingArbitrationForToken(Token&amp;);
&gt; 
&gt; const Token&amp;?

Sure.

&gt; &gt; Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.mm:123
&gt; &gt; +    ASSERT(isInRoutingArbitrationForToken(token));
&gt; 
&gt; Not a problem of this patch. Is it possible that this function is called
&gt; when `m_setupArbitrationOngoing` is true?

The caller shouldn&apos;t end arbitration until the begin arbitration callback is complete.  We do handle that case, however.

&gt; &gt; Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.cpp:47
&gt; &gt; +
&gt; 
&gt; Nit. An empty line.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743545</commentid>
    <comment_count>7</comment_count>
      <attachid>424181</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-24 14:18:01 -0700</bug_when>
    <thetext>Created attachment 424181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756560</commentid>
    <comment_count>8</comment_count>
      <attachid>424181</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-05-04 09:38:02 -0700</bug_when>
    <thetext>Comment on attachment 424181
Patch

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

r=me once the bots are happy

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:204
&gt; +    , m_routingArbitrator(LocalAudioSessionRoutingArbitrator::create())

Is it possible to create this lazily?

&gt; Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.cpp:57
&gt; +    m_arbitrationUpdateTime = WallTime::now();

MonotonicTime?

&gt; Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h:54
&gt; +    WallTime arbitrationUpdateTime() const { return m_arbitrationUpdateTime; }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756566</commentid>
    <comment_count>9</comment_count>
      <attachid>427679</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-04 09:59:30 -0700</bug_when>
    <thetext>Created attachment 427679
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756568</commentid>
    <comment_count>10</comment_count>
      <attachid>427680</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-04 10:00:48 -0700</bug_when>
    <thetext>Created attachment 427680
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756661</commentid>
    <comment_count>11</comment_count>
      <attachid>427697</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-04 13:55:53 -0700</bug_when>
    <thetext>Created attachment 427697
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756718</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-04 16:50:13 -0700</bug_when>
    <thetext>Committed r276993 (237316@main): &lt;https://commits.webkit.org/237316@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427697.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424177</attachid>
            <date>2021-03-24 13:47:38 -0700</date>
            <delta_ts>2021-03-24 14:04:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217535-20210324134737.patch</filename>
            <type>text/plain</type>
            <size>41405</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1NzQ3ZjllMjBlYzQy
NDBhYmJhNWRmMTI2OTcyNTA2Mjg4MjM0My4uOTM4MjI3MjgwNWQzNmYxMjg2YmI1MjcwZGQ2Zjc2
NTU1YjBmNzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAzLTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2hhcmVkIG9iamVj
dCwgU2hhcmVkUm91dGluZ0FyYml0cmF0b3IsIHRvIGJlIHVzZWQgYm90aCBpbiB0aGUgVUlQcm9j
ZXNzICh3aGVuIG1lZGlhCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxl
ZCkgYW5kIHRoZSBHUFVQcm9jZXNzICh3aGVuIGl0IGlzKS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKToKKwogMjAyMS0wMy0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdW09wdXNdIFByb3RlY3QgYWdhaW5zdCB2YXJpYWJsZSBmcmFtZSBk
dXJhdGlvbiBwYWNrZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE3ZDRiMDM2YTViODExMzI4YjE5NjkzNzZlZjFh
NDQxNWFjMjM1M2UuLmQ4MzBhZDBkNzQ3NDk0NTVmOWY1MGJkOWJiNjEwMGMyZDYyMzYxOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDMtMjQgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBNb3ZlIEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MzUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcwMTUyNTQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldywgbG9jYWwtb25seSBvYmplY3Qgd2hpY2ggY2Fu
IGFnZ3JlZ2F0ZSBjaGFuZ2VzIHRvIHRoZSBhdWRpbyByb3V0aW5nLgorICAgICAgICBUaGUgVUlQ
cm9jZXNzIHZlcnNpb24gb2YgdGhpcyBvYmplY3Qgc3BhbnMgYSBwcm9jZXNzIGJvdW5kYXJ5LCBi
dXQgdGhpcyBuZXcKKyAgICAgICAgb2JqZWN0IGNhbiBvcGVyYXRlIGxvY2FsbHkgd2l0aG91dCBh
biBYUEMgY29tbXVuaWNhdGlvbiBjaGFubmVsLiBBcyBwYXJ0IG9mIHRoaXMKKyAgICAgICAgY2hh
bmdlLCB0aGUgIlNoYXJlZEFyYml0cmF0b3IiIGluIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHlDb2NvYSBoYXMgYmVlbgorICAgICAgICBtb3ZlZCBpbnRvIFdlYkNvcmUgdG8gYmUg
dXNlZCBib3RoIHRoZXJlIGFuZCBpbiB0aWhzIG5ldyBvYmplY3QuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvcjo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcik6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvcjo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0
cmF0aW9uV2l0aENhdGVnb3J5KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcjo6bGVhdmVSb3V0aW5nQWJyaXRyYXRpb24pOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlh
L2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6QXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAo
V2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHk6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbik6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJbnN0
YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OmlzSW5S
b3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6ZW5kUm91dGlu
Z0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9TZXNz
aW9uOjpzZXRDYXRlZ29yeSk6CisKIDIwMjEtMDMtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIDIgd2ViIGF1ZGlvIFdQVCB0ZXN0cyBmYWlsIHdo
ZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggYjNiZDMwZDQ2MWIwY2JiNDg4MGNlMGViNTExZmNjMzRiY2MzN2I5Mi4uYzBlMjg2ZDIx
YjY1MDQxYTNkODJlYmVjN2Y5YmM0ZjExMmRiOWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yMjcsNiArMjI3LDcgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuY3BwCiBw
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9tYWMv
RkZURnJhbWVNYWMuY3BwCitwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0
b3IubW0KIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhMTBkNDRmZWYxNDQ3NTMzYjFhMGQ2NzcwYzJjZmM4MTVjNmIyNmViLi43N2QwYzY0ODUxNDUx
YjEyOTNjNzkwODA4NzRjMGJkNTkxZWZmNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjY1LDYgKzQyNjUsNyBAQAogCQlD
RDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzM2RjY1MTdG
QTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwICovOyB9OwogCQlD
RDMzNkY2ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2NjE3RkEw
QUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CiAJCUNEMzZD
MTYyMjYwN0U3ODYwMEM4QzUyOSAvKiBBdWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTYxMjYwN0U3ODYwMEM4QzUyOSAv
KiBBdWRpb1Nlc3Npb25JT1MuaCAqLzsgfTsKKwkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8q
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDM2QzE2ODI2MEE2M0QzMDBDOEM1MjkgLyogU2hhcmVkUm91dGlu
Z0FyYml0cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU2MTdBOUQwMUIw
MDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRF
NDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87
IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlE
MDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9OwpAQCAtMTQ3MjQsNiArMTQ3
MjUsOCBAQAogCQlDRDMzNkY2NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM2QzE1RjI2MDY3
QzFGMDBDOEM1MjkgLyogQXVkaW9TZXNzaW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vz
c2lvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM2QzE2MTI2MDdFNzg2
MDBDOEM1MjkgLyogQXVkaW9TZXNzaW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lv
bklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2ODI2MEE2M0QzMDBD
OEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzNkMx
NjkyNjBBNjNENDAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9n
Z2luZ0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0Iz
NzUxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzQTQ5NTUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMDc2LDYgKzMxMDc5LDggQEAK
IAkJCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1MjkgLyogQXVkaW9TZXNzaW9uTWFjLmggKi8sCiAJ
CQkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5tbSAqLywKIAkJ
CQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovLAorCQkJCUNE
MzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovLAor
CQkJCUNEMzZDMTY5MjYwQTYzRDQwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTMxMzQ1LDYgKzMxMzUwLDcgQEAKIAkJCQk1N0QxMzUyNTIyOTRBMzNDMDA4Mjc0MDEgLyog
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThD
NEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRB
ODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
MzZDMTZCMjYwQTY1Q0MwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRBODE0REExQzcwRTEwRDAwQkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5n
ZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNUIyNjUyNDU1RTk2RjAwNUM1
MkQwIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdBMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggZWZhOTlkMWE1NWE1N2M0
ZTM1ZTk2YzM1MWNiZWI0YjhiOWRhNDI5ZC4uZTlhZGFkZTJhODdiZmVjZDNjYTNkNmQ5NDFlMzNh
MGQyZWMyNjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmgKQEAgLTE0Miw3ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBSb3V0aW5n
QXJiaXRyYXRpb25FcnJvciA6IHVpbnQ4X3QgeyBOb25lLCBGYWlsZWQsIENhbmNlbGxlZCB9Owog
ICAgIGVudW0gY2xhc3MgRGVmYXVsdFJvdXRlQ2hhbmdlZCA6IGJvb2wgeyBObywgWWVzIH07CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0Fy
Yml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPiYmKSA9IDA7CisgICAgdXNpbmcg
QXJiaXRyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0
cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPjsKKworICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXZl
Um91dGluZ0Ficml0cmF0aW9uKCkgPSAwOwogCiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjA1Njc4YTMzOGFiMzcxYzA3ZDk1OTc2MGIxNzFjNjc5YzRmYTI3ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9f
Uk9VVElOR19BUkJJVEVSKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkUm91dGluZ0FyYml0cmF0b3ImIHNoYXJlZElu
c3RhbmNlKCk7CisKKyAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7Cisg
ICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKKyAgICB1c2luZyBBcmJpdHJhdGlvbkNh
bGxiYWNrID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlv
bkNhbGxiYWNrOworCisgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgVG9rZW4gOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VG9rZW4+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVW5pcXVlUmVmPFRva2VuPiBjcmVhdGUoKTsKKyAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgVW5pcXVlUmVmPFRva2VuPiBXVEY6Om1ha2VVbmlx
dWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRva2VuPigpOworICAgICAgICBUb2tlbigpID0g
ZGVmYXVsdDsKKyAgICB9OworCisgICAgYm9vbCBpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9r
ZW4oVG9rZW4mKTsKKyAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oVG9r
ZW4mLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKFRva2VuJik7CisKK3ByaXZh
dGU6CisgICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3VycmVudENh
dGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07CisgICAgV2Vha0hhc2hTZXQ8VG9rZW4+IG1f
dG9rZW5zOworICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVkQ2FsbGJh
Y2tzOworICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNDBkYjE2
M2ViZTkwNDY0MWI4NDJhOWIzOGMxYjNlOGMzZTM2MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0K
QEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJ
VFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VuaXF1ZVJlZjxTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvcjo6VG9rZW4+IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxUb2tlbj4oKTsKK30KKworU2hhcmVkUm91
dGluZ0FyYml0cmF0b3ImIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yPiBp
bnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK2Jvb2wgU2hhcmVkUm91dGluZ0Fy
Yml0cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihUb2tlbiYgdG9rZW4pCit7
CisgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKK30KKwordm9pZCBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihUb2tlbiYg
dG9rZW4sIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIHJlcXVlc3RlZENhdGVnb3J5LCBBcmJp
dHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFpc0luUm91dGluZ0Fy
Yml0cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKworICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25P
bmdvaW5nKSB7CisgICAgICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFr
VG9rZW4gPSBtYWtlV2Vha1B0cih0b2tlbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0
ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yID09IFJvdXRpbmdBcmJp
dHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtUb2tlbikKKyAgICAgICAgICAgICAgICBtX3Rva2Vu
cy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNo
YW5nZWQpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fY3VycmVudENhdGVnb3J5KSB7CisgICAgICAgIGlmICgqbV9jdXJyZW50Q2F0ZWdvcnkgPj0g
cmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICAgICAgICAgIG1fdG9rZW5zLmFkZCh0b2tlbik7Cisg
ICAgICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSwgRGVmYXVs
dFJvdXRlQ2hhbmdlZDo6Tm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGlu
Z0FyYml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOworICAgIH0KKworICAgIG1fY3VycmVudENhdGVn
b3J5ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7CisKKyAgICBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9u
Q2F0ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25D
YXRlZ29yeVBsYXliYWNrOworICAgIHN3aXRjaCAocmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICBj
YXNlIEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRl
Z29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3JkQXVkaW86CisgICAgICAgIGFy
Yml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5
QW5kUmVjb3JkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UGxheUFu
ZFJlY29yZDoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgbV9z
ZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7CisgICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5h
cHBlbmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFrUHRyKHRva2VuKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0
Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvciA9
PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrVG9rZW4pCisgICAgICAgICAg
ICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJv
dXRlQ2hhbmdlZCk7CisgICAgfSk7CisKKyAgICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJp
dGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gYmVnaW5BcmJpdHJhdGlvbldpdGhDYXRl
Z29yeTphcmJpdHJhdGlvbkNhdGVnb3J5IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzXShCT09MIGRl
ZmF1bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWZhdWx0RGV2aWNlQ2hhbmdlZCwgZXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVn
aW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbjogJXMgZmFpbGVkIHdpdGggZXJyb3IgJXM6JXMi
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50Q2F0ZWdvcnkpLmFzY2lpKCku
ZGF0YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtbZXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1
bHQgZGV2aWNlPworICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZpY2VDaGFuZ2VkKQorICAgICAg
ICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1
bHREZXZpY2VDaGFuZ2VkISIpOworCisgICAgICAgICAgICBWZWN0b3I8QXJiaXRyYXRpb25DYWxs
YmFjaz4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2FsbGJhY2tzKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6RmFpbGVkIDogUm91dGluZ0Fy
Yml0cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFuZ2VkID8gRGVmYXVsdFJvdXRl
Q2hhbmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworCisgICAgICAgICAgICBt
X3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIH1dOwor
fQorCit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRSb3V0aW5nQXJiaXRyYXRpb25G
b3JUb2tlbihUb2tlbiYgdG9rZW4pCit7CisgICAgQVNTRVJUKGlzSW5Sb3V0aW5nQXJiaXRyYXRp
b25Gb3JUb2tlbih0b2tlbikpOworICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbik7CisKKyAgICBp
ZiAoIW1fdG9rZW5zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IG1fZW5xdWV1ZWRDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNr
KFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpDYW5jZWxsZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6
Ok5vKTsKKworICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBtX2N1cnJlbnRD
YXRlZ29yeS5yZXNldCgpOworICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFz
cygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9uXTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggM2FhNzY3YTg2ZWU4ZThlYzRhZjI0MGY4MGZhNWIwN2YzNzE4
MDYzMC4uNjViYzI5N2UxOTIxZTU0MTE0MDE3ZDg3YTNkYTJhN2U2OTY4NWIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMTMxLDYgKzEzMSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVlA5VXRpbGl0aWVz
Q29jb2EuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhB
VkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisjaW5jbHVkZSAiTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5Niw2ICsyMDAsOSBAQCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nl
c3MsIFdlYgogICAgICwgbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOjpjcmVhdGUoKnRoaXMpKQogI2VuZGlmCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJC
SVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgLCBtX3JvdXRp
bmdBcmJpdHJhdG9yKExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmNyZWF0ZSgp
KQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0yMjYsNiArMjMzLDEwIEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgbV9yb3V0
aW5nQXJiaXRyYXRvci0+cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOworI2VuZGlmCisKICNpZiBVU0Uo
QVVESU9fU0VTU0lPTikKICAgICBpZiAobV9hdWRpb1Nlc3Npb25Qcm94eSkgewogICAgICAgICBn
cHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigpLnJlbW92ZVByb3h5KCptX2F1ZGlvU2Vz
c2lvblByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDY0OWEzNTJmNDQyY2I0NjBmNmY2ZDQ2YmI4ZmU1MjRh
MThjMmE0MzMuLmY0Zjc1YTMxNWRiZTZmMDdjZGRjMTczYjU0ZjE5YjU4MDJjMTdkZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJv
Y2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OworY2xhc3MgTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OwogY2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CkBAIC0yNjksNiArMjcwLDEwIEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHk+
IG1fcmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyOwogICAgIGJvb2wgbV9pc0FjdGl2ZU5vd1Bs
YXlpbmdQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9O
KSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQorICAgIFVuaXF1ZVJlZjxMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBtX3JvdXRpbmdBcmJpdHJhdG9yOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YzU4ZTI0OTlhY2NiZDNhOGE5MDg0NDZhYzMxODIyZWE3
MmJiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xv
Y2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvci5oIgorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04p
ICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3I+IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvcj4oKTsKK30KKworTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
cjo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpCisgICAgOiBtX3Rva2VuKFNo
YXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkpCit7Cit9CisKK0xvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yKCkKK3sKKworfQorCit2b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3I6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQoreworICAgIGlmIChTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90
b2tlbikpCisgICAgICAgIGxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCk7Cit9CisKK3ZvaWQgTG9j
YWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25X
aXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5n
ZWQpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICBtX2Fy
Yml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6OlBlbmRpbmc7CisgICAgbV9hcmJp
dHJhdGlvblVwZGF0ZVRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisKKyAgICBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRv
a2VuKG1fdG9rZW4sIGNhdGVnb3J5LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJv
ciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hcmJpdHJhdGlvblN0YXR1cyA9
IGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lID8gQXJiaXRyYXRpb25TdGF0
dXM6OkFjdGl2ZSA6IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOworICAgICAgICBjYWxsYmFjayhl
cnJvciwgcm91dGVDaGFuZ2VkKTsKKyAgICB9KTsKK30KKwordm9pZCBMb2NhbEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yOjpsZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbigpCit7CisgICAgU2hh
cmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0
aW9uRm9yVG9rZW4obV90b2tlbik7CisgICAgbV9hcmJpdHJhdGlvblN0YXR1cyA9IEFyYml0cmF0
aW9uU3RhdHVzOjpOb25lOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ5MmJiNjg5ODJlZDQ2Mjg2ZTg0ZGVhNWRlMTA1ZWY2
MTU3N2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9M
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04p
ICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yIGZpbmFsCisgICAgOiBwdWJsaWMgV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZnJpZW5kIFVuaXF1ZVJlZjxMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+KCk7CitwdWJs
aWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yKCk7CisKKyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6QXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OworCisgICAgZW51bSBjbGFzcyBBcmJpdHJhdGlv
blN0YXR1cyA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBQZW5kaW5nLAorICAg
ICAgICBBY3RpdmUsCisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwor
ICAgIEFyYml0cmF0aW9uU3RhdHVzIGFyYml0cmF0aW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4g
bV9hcmJpdHJhdGlvblN0YXR1czsgfQorICAgIFdhbGxUaW1lIGFyYml0cmF0aW9uVXBkYXRlVGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOyB9CisKK3ByaXZhdGU6
CisgICAgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpOworCisgICAgLy8gQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxlYXZlUm91dGluZ0Fi
cml0cmF0aW9uKCkgZmluYWw7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OlRva2VuPiBtX3Rva2VuOworICAgIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246Ok5vbmUgfTsK
KyAgICBBcmJpdHJhdGlvblN0YXR1cyBtX2FyYml0cmF0aW9uU3RhdHVzIHsgQXJiaXRyYXRpb25T
dGF0dXM6Ok5vbmUgfTsKKyAgICBXYWxsVGltZSBtX2FyYml0cmF0aW9uVXBkYXRlVGltZTsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDRkMmQzM2U1ZTcwMzQ2
ZWI0ZDNmYzZiM2EyYzUxNzMxOTFlYmE1Ny4uMDJhNzlmZTI0ODQ4NWQ2NDY2MWI3YjA0ZmQ1NzRi
OWI3YWUwOWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjAsNiArNjAsNyBAQCBHUFVQ
cm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNlRW50cnlQb2ludC5t
bQogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAog
R1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vz
c01hYy5tbQorR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
ci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgKaW5kZXggYjQzNTExOWU3ZGVkNmU4NDQxMzE3NjAy
Y2Y4Mzg0NTQ3N2EyN2E1NS4uNGQ5MmU4ZTdkNTZhOGU0NDk0NzE5YzUzNmY4ZjkyN2RjYTk4ZjU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01l
ZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaApAQCAtMzIsNiArMzIsMTAg
QEAKICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CisjaWYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKyNpbXBvcnQgPFdlYkNvcmUvU2hh
cmVkUm91dGluZ0FyYml0cmF0b3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1
c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CiAgICAgdXNpbmcg
RGVmYXVsdFJvdXRlQ2hhbmdlZCA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKLSAgICB1c2luZyBBcmJpdHJhdGlvbkNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciwg
RGVmYXVsdFJvdXRlQ2hhbmdlZCk+OworICAgIHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJhY2sgPSBX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkFyYml0cmF0aW9u
Q2FsbGJhY2s7CiAKICAgICBlbnVtIGNsYXNzIEFyYml0cmF0aW9uU3RhdHVzIDogdWludDhfdCB7
CiAgICAgICAgIE5vbmUsCkBAIC03Myw2ICs3NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBXZWJDb3JlOjpBdWRpb1Nl
c3Npb246Ok5vbmUgfTsKICAgICBBcmJpdHJhdGlvblN0YXR1cyBtX2FyYml0cmF0aW9uU3RhdHVz
IHsgQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmUgfTsKICAgICBXYWxsVGltZSBtX2FyYml0cmF0aW9u
VXBkYXRlVGltZTsKKworI2lmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgVW5p
cXVlUmVmPFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbj4gbV90b2tlbjsK
KyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVk
aWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGJjNzBkNDVlZTcwOTJhNjQxZjI3NTU0MjVlZGY5ODFl
YjI0NmQ5ZTcuLjM4MjEyY2I1MzdhOWIzNGE3OTgzOTVhYzg0NDY1MzRhNjdmYzU1NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9NZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0K
QEAgLTMzLDEzMiArMzMsMTQgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgotI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLWNsYXNzIFNoYXJlZEFyYml0cmF0b3IgewotcHVibGljOgotICAgIHN0YXRp
YyBTaGFyZWRBcmJpdHJhdG9yJiBzaGFyZWRJbnN0YW5jZSgpOwotCi0gICAgdXNpbmcgUm91dGlu
Z0FyYml0cmF0aW9uRXJyb3IgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6
OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOwotICAgIHVzaW5nIERlZmF1bHRSb3V0ZUNoYW5nZWQg
PSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkRlZmF1bHRSb3V0ZUNoYW5n
ZWQ7Ci0gICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHk6OkFyYml0cmF0aW9uQ2FsbGJhY2s7Ci0KLSAgICBib29sIGlzSW5Sb3V0
aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
UHJveHkmKTsKLSAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcihB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiwgQXJiaXRyYXRpb25DYWxsYmFjayYm
KTsKLSAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYpOwotCi1wcml2YXRlOgotICAgIE9wdGlvbmFsPEF1
ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPiBtX2N1cnJlbnRDYXRlZ29yeSB7IEF1ZGlvU2Vzc2lv
bjo6Tm9uZSB9OwotICAgIFdlYWtIYXNoU2V0PEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
UHJveHk+IG1fYXJiaXRyYXRvcnM7Ci0gICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IG1f
ZW5xdWV1ZWRDYWxsYmFja3M7Ci0gICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nIHsg
ZmFsc2UgfTsKLX07Ci0KLVNoYXJlZEFyYml0cmF0b3ImIFNoYXJlZEFyYml0cmF0b3I6OnNoYXJl
ZEluc3RhbmNlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkQXJiaXRyYXRv
cj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotfQotCi1ib29sIFNoYXJlZEFyYml0
cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHkmIHByb3h5KQotewotICAgIHJldHVybiBtX2FyYml0cmF0b3Jz
LmNvbnRhaW5zKHByb3h5KTsKLX0KLQotdm9pZCBTaGFyZWRBcmJpdHJhdG9yOjpiZWdpblJvdXRp
bmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQ
cm94eSYgcHJveHksIEFyYml0cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBBU1NF
UlQoIWlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKHByb3h5KSk7Ci0KLSAgICBp
ZiAobV9zZXR1cEFyYml0cmF0aW9uT25nb2luZykgewotICAgICAgICBtX2VucXVldWVkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgd2Vha1Byb3h5ID0gbWFrZVdlYWtQdHIocHJveHkpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERl
ZmF1bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
IChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrUHJveHkpCi0g
ICAgICAgICAgICAgICAgbV9hcmJpdHJhdG9ycy5hZGQoKndlYWtQcm94eSk7Ci0KLSAgICAgICAg
ICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOwotICAgICAgICB9KTsKLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byByZXF1ZXN0ZWRDYXRlZ29yeSA9IHByb3h5LmNh
dGVnb3J5KCk7Ci0KLSAgICBpZiAobV9jdXJyZW50Q2F0ZWdvcnkpIHsKLSAgICAgICAgaWYgKCpt
X2N1cnJlbnRDYXRlZ29yeSA+PSByZXF1ZXN0ZWRDYXRlZ29yeSkgewotICAgICAgICAgICAgbV9h
cmJpdHJhdG9ycy5hZGQocHJveHkpOwotICAgICAgICAgICAgY2FsbGJhY2soUm91dGluZ0FyYml0
cmF0aW9uRXJyb3I6Ok5vbmUsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0Fy
Yml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9uXTsKLSAg
ICB9Ci0KLSAgICBtX2N1cnJlbnRDYXRlZ29yeSA9IHJlcXVlc3RlZENhdGVnb3J5OwotCi0gICAg
QVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5IGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBB
VkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5YmFjazsKLSAgICBzd2l0Y2ggKHJl
cXVlc3RlZENhdGVnb3J5KSB7Ci0gICAgY2FzZSBBdWRpb1Nlc3Npb246Ok1lZGlhUGxheWJhY2s6
Ci0gICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9u
Q2F0ZWdvcnlQbGF5YmFjazsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdWRpb1Nlc3Npb246
OlJlY29yZEF1ZGlvOgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRp
bmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheUFuZFJlY29yZDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBdWRpb1Nlc3Npb246OlBsYXlBbmRSZWNvcmQ6Ci0gICAgICAgIGFyYml0cmF0aW9uQ2F0
ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkVm9p
Y2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIH0KLQotICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOwot
ICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrUHJveHkgPSBtYWtlV2Vh
a1B0cihwcm94eSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRy
YXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFi
bGUgewotICAgICAgICBpZiAoZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUg
JiYgd2Vha1Byb3h5KQotICAgICAgICAgICAgbV9hcmJpdHJhdG9ycy5hZGQoKndlYWtQcm94eSk7
Ci0KLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7Ci0gICAgfSk7Ci0KLSAg
ICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJi
aXRlcl0gYmVnaW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeTphcmJpdHJhdGlvbkNhdGVnb3J5IGNv
bXBsZXRpb25IYW5kbGVyOlt0aGlzXShCT09MIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9y
ICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBk
ZWZhdWx0RGV2aWNlQ2hhbmdlZCwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJTaGFyZWRBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3I6
ICVzIGZhaWxlZCB3aXRoIGVycm9yICVzOiVzIiwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
Km1fY3VycmVudENhdGVnb3J5KS5hc2NpaSgpLmRhdGEoKSwgW1tlcnJvciBkb21haW5dIFVURjhT
dHJpbmddLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci0KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHNhbXBsZSByYXRlIGFuZCBi
dWZmZXIgc2l6ZSBmb3IgdGhlIG5ldyBkZWZhdWx0IGRldmljZT8KLSAgICAgICAgICAgIGlmIChk
ZWZhdWx0RGV2aWNlQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nl
c3Npb246OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0RGV2aWNlQ2hhbmdlZCEiKTsKLQotICAgICAg
ICAgICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrcyA9IFdURk1vdmUobV9l
bnF1ZXVlZENhbGxiYWNrcyk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2Fs
bGJhY2tzKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gUm91dGluZ0FyYml0cmF0
aW9uRXJyb3I6OkZhaWxlZCA6IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lLCBkZWZhdWx0
RGV2aWNlQ2hhbmdlZCA/IERlZmF1bHRSb3V0ZUNoYW5nZWQ6OlllcyA6IERlZmF1bHRSb3V0ZUNo
YW5nZWQ6Ok5vKTsKLQotICAgICAgICAgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IGZh
bHNlOwotICAgICAgICB9KTsKLSAgICB9XTsKLX0KLQotdm9pZCBTaGFyZWRBcmJpdHJhdG9yOjpl
bmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHkmIHByb3h5KQotewotICAgIEFTU0VSVChpc0luUm91dGluZ0FyYml0cmF0aW9u
Rm9yQXJiaXRyYXRvcihwcm94eSkpOwotICAgIG1fYXJiaXRyYXRvcnMucmVtb3ZlKHByb3h5KTsK
LQotICAgIGlmICghbV9hcmJpdHJhdG9ycy5jb21wdXRlc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2VucXVldWVkQ2FsbGJhY2tzKQotICAg
ICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Q2FuY2VsbGVkLCBEZWZhdWx0
Um91dGVDaGFuZ2VkOjpObyk7Ci0KLSAgICBtX2VucXVldWVkQ2FsbGJhY2tzLmNsZWFyKCk7Ci0g
ICAgbV9jdXJyZW50Q2F0ZWdvcnkucmVzZXQoKTsKLSAgICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRp
bmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gbGVhdmVBcmJpdHJhdGlvbl07
Ci19Ci0KIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OkF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKICAgICA6IG1fcHJv
Y2Vzcyhwcm94eSkKKyAgICAsIG1fdG9rZW4oU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2Vu
OjpjcmVhdGUoKSkKIHsKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGRlc3RpbmF0aW9uSWQoKSwgKnRoaXMpOwogfQpAQCAtMTcwLDcgKzUyLDcgQEAgQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6fkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHkoKQogCiB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OnBy
b2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIGlmIChTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJ
bnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlzKSkKKyAg
ICBpZiAoU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuaXNJblJvdXRp
bmdBcmJpdHJhdGlvbkZvclRva2VuKG1fdG9rZW4pKQogICAgICAgICBlbmRSb3V0aW5nQXJiaXRy
YXRpb24oKTsKIH0KIApAQCAtMTc5LDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvclByb3h5OjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWIK
ICAgICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICAgbV9hcmJpdHJhdGlvblN0YXR1cyA9IEFy
Yml0cmF0aW9uU3RhdHVzOjpQZW5kaW5nOwogICAgIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lID0g
V2FsbFRpbWU6Om5vdygpOwotICAgIFNoYXJlZEFyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCku
YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlzLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5n
QXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQp
IG11dGFibGUgeworICAgIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgp
LmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbiwgY2F0ZWdvcnksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRl
Q2hhbmdlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdl
YWtUaGlzLT5tX2FyYml0cmF0aW9uU3RhdHVzID0gZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9u
RXJyb3I6Ok5vbmUgPyBBcmJpdHJhdGlvblN0YXR1czo6QWN0aXZlIDogQXJiaXRyYXRpb25TdGF0
dXM6Ok5vbmU7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOwpAQCAtMTg4
LDcgKzcwLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpiZWdp
blJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWIKIAogdm9pZCBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5OjplbmRSb3V0aW5nQXJiaXRyYXRpb24oKQogewotICAgIFNo
YXJlZEFyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0aW9uRm9y
QXJiaXRyYXRvcigqdGhpcyk7CisgICAgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZElu
c3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbik7CiAgICAgbV9h
cmJpdHJhdGlvblN0YXR1cyA9IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMDQzYjA2
YjVhYzZkZTM3NDNhNWM3N2EyODJhMTQ1MmU1YzNlMjQwLi42OTJhMWM3YTkxOWU5ODhkNmEzMDRm
YWU5NjJlZTliMzU5NWM0MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MzgsNiArNTUzOCw4IEBACiAJCUNEMjBDRTc3MjVDRDJC
OUQwMDY5QjU0MiAvKiBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMENFNzgyNUNE
MkI5RDAwNjlCNTQyIC8qIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzUmVwbGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1Jl
cGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMENFNzkyNUNEMkI5RTAw
NjlCNTQyIC8qIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTZDMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Qz
NkMxNkQyNjBBNkVCRTAwQzhDNTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0VFRjMxMjU3OTk2MTgw
MDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRUVGMzIyNTc5OTYxODAwNjU2M0JCIC8qIFJlbW90
ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0VFRjMzMjU3OTk3MTcwMDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03NDk4LDYgKzc1MDAsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQ5RkIy
MDgyMzc1MjA5RDAwNDlGOTM2IC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbiAq
LywKIAkJCQkyRDlGQjIwNzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzc01hYy5tbSAqLywK
KwkJCQlDRDM2QzE2QzI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvci5oICovLAorCQkJCUNEMzZDMTZEMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFj
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcAppbmRleCA3MDA5
MjMyMjgzMzgwNGE1NGU2YTZiMGE1OWNjM2E4MjQxY2QzOWMyLi5lZWYxNjViZTFlN2Y1ZDZkMDM4
OTk0MjRiYTlhODM2MjA3NGQxNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIElQQzo6Q29ubmVjdGlvbiYgUmVtb3RlQXVkaW9TZXNzaW9uOjpjb25uZWN0aW9uKCkKIAog
dm9pZCBSZW1vdGVBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBS
b3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5KQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKHR5cGUgPT0gbV9jb25maWd1cmF0aW9uLmNhdGVn
b3J5ICYmIHBvbGljeSA9PSBtX2NvbmZpZ3VyYXRpb24ucm91dGVTaGFyaW5nUG9saWN5KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTc1LDkgKzc1LDYgQEAgdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWMK
ICAgICBtX2NvbmZpZ3VyYXRpb24ucm91dGVTaGFyaW5nUG9saWN5ID0gcG9saWN5OwogCiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5OjpTZXRD
YXRlZ29yeSh0eXBlLCBwb2xpY3kpLCB7IH0pOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIC8v
IEZJWE1FOiBNb3ZlIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQ
VSBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjE3NTM1KQotICAgIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0
ZWdvcnkodHlwZSwgcG9saWN5KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwogICAg
IFVOVVNFRF9QQVJBTShwb2xpY3kpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424179</attachid>
            <date>2021-03-24 14:04:12 -0700</date>
            <delta_ts>2021-03-24 14:04:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217535-20210324140411.patch</filename>
            <type>text/plain</type>
            <size>16045</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhYjAzOWM5YTNiNDlh
ZjdkOTgwZDgyMjM0MDg4Nzc5MmExZTJlYS4uYWRhZTI4YWEzZDRiMjM0MmRjYmE2YTIwZGIwZjBm
NzkzY2Y1NmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAzLTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2hhcmVkIG9iamVj
dCwgU2hhcmVkUm91dGluZ0FyYml0cmF0b3IsIHRvIGJlIHVzZWQgYm90aCBpbiB0aGUgVUlQcm9j
ZXNzICh3aGVuIG1lZGlhCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxl
ZCkgYW5kIHRoZSBHUFVQcm9jZXNzICh3aGVuIGl0IGlzKS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKToKKwogMjAyMS0wMy0yNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3MzE1NCk6IFtpT1NdIFR3byBtYWduaWZpZXIg
c3ltYm9scyBvbiBnb29nbGUuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBkMzEzZTlm
OWVhZjIyOWU2ZDkxZTczNGYxNDViYmM5NTAxYTk3NDg4Li5mOWU4YWFkZGQ3MmRjMzRjNGVkYjhi
NjVmNGUwMWM1ZWFhOGZhZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTIyNyw2ICsy
MjcsNyBAQCBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYWMubW0KIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5j
cHAKK3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbQogcGxhdGZv
cm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
IHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3YmViZTIxMmZm
OTY0YTVkYzk2ODAxNzY3MjVkOTAzZWEyYWNkNjMuLmViYjJiN2MwYTAzOWI2NThiZmEwODY1MjQw
OTdmYjQ0ZjA0MDdkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQyNzAsNiArNDI3MCw3IEBACiAJCUNEMzM2RjY0MTdGQTBB
NEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjMxN0ZBMEE0RDAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAv
KiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQy5jcHAgKi87IH07CiAJCUNEMzM2RjY4MTdGQTBBQzYwMERERENEMCAv
KiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuaCAqLzsgfTsKKwkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNo
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDM2QzE2ODI2MEE2M0QzMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0Fy
Yml0cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU2MTdBOUQwMUIwMDI3
NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87IH07
CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9OwpAQCAtMTQ3NDEsNiArMTQ3NDIs
OCBAQAogCQlDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVBVkYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzMzZGNjUxN0ZBMEFDNjAwREREQ0Qw
IC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDMzNkY2NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2
ODI2MEE2M0QzMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0QzNkMxNjkyNjBBNjNENDAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzQTQ5NTUxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMDk5LDYg
KzMxMTAyLDggQEAKIAkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9PdXRwdXRV
bml0QWRhcHRvck1hYy5jcHAgKi8sCiAJCQkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1
ZGlvU2Vzc2lvbk1hYy5tbSAqLywKIAkJCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZU
RnJhbWVNYWMuY3BwICovLAorCQkJCUNEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUNEMzZDMTY5MjYwQTYzRDQwMEM4QzUyOSAvKiBT
aGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMzY4LDYgKzMxMzczLDcgQEAKIAkJCQk1N0Qx
MzUyNTIyOTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzZDMTZCMjYwQTY1Q0MwMEM4QzUyOSAvKiBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBODE0REExQzcwRTEwRDAw
QkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNFNUIyNjUyNDU1RTk2RjAwNUM1MkQwIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDdBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmgKaW5kZXggYTI1MTI5YWJjMDMzZDFmMzVjOWZhZTYxY2E2ODBlNTA3OWE3MzhmYy4uYTBkOGFh
Mjk5NDUxZDgxY2IyNjZhNDYzMmY2NjdkOGNkMGE3MDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTE0NSw3ICsxNDUsOSBAQCBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA6IHVpbnQ4X3QgeyBOb25l
LCBGYWlsZWQsIENhbmNlbGxlZCB9OwogICAgIGVudW0gY2xhc3MgRGVmYXVsdFJvdXRlQ2hhbmdl
ZCA6IGJvb2wgeyBObywgWWVzIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5n
ZWQpPiYmKSA9IDA7CisgICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQp
PjsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29y
eShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCkgPSAwOwogCiAgICAg
dXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1No
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA1Njc4YTMzOGFiMzcxYzA3ZDk1
OTc2MGIxNzFjNjc5YzRmYTI3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklU
UkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQorCisjaW5jbHVkZSAiQXVk
aW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkUm91
dGluZ0FyYml0cmF0b3ImIHNoYXJlZEluc3RhbmNlKCk7CisKKyAgICB1c2luZyBSb3V0aW5nQXJi
aXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91
dGluZ0FyYml0cmF0aW9uRXJyb3I7CisgICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsK
KyAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOworCisgICAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VG9rZW4+IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVW5pcXVl
UmVmPFRva2VuPiBjcmVhdGUoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgVW5pcXVl
UmVmPFRva2VuPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRva2Vu
PigpOworICAgICAgICBUb2tlbigpID0gZGVmYXVsdDsKKyAgICB9OworCisgICAgYm9vbCBpc0lu
Um91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oVG9rZW4mKTsKKyAgICB2b2lkIGJlZ2luUm91dGlu
Z0FyYml0cmF0aW9uRm9yVG9rZW4oVG9rZW4mLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwg
QXJiaXRyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKFRva2VuJik7CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGU+IG1fY3VycmVudENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07Cisg
ICAgV2Vha0hhc2hTZXQ8VG9rZW4+IG1fdG9rZW5zOworICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNh
bGxiYWNrPiBtX2VucXVldWVkQ2FsbGJhY2tzOworICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9u
T25nb2luZyB7IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxNDBkYjE2M2ViZTkwNDY0MWI4NDJhOWIzOGMxYjNlOGMzZTM2MjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hh
cmVkUm91dGluZ0FyYml0cmF0b3IubW0KQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgiCisK
KyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdf
QVJCSVRFUikKKworI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1VuaXF1ZVJlZjxTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6VG9rZW4+IFNoYXJlZFJvdXRpbmdB
cmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxU
b2tlbj4oKTsKK30KKworU2hhcmVkUm91dGluZ0FyYml0cmF0b3ImIFNoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNo
YXJlZFJvdXRpbmdBcmJpdHJhdG9yPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9
CisKK2Jvb2wgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25G
b3JUb2tlbihUb2tlbiYgdG9rZW4pCit7CisgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRv
a2VuKTsKK30KKwordm9pZCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25Gb3JUb2tlbihUb2tlbiYgdG9rZW4sIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBl
IHJlcXVlc3RlZENhdGVnb3J5LCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7Cisg
ICAgQVNTRVJUKCFpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKworICAg
IGlmIChtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7CisgICAgICAgIG1fZW5xdWV1ZWRDYWxs
YmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrVG9rZW4gPSBtYWtlV2Vha1B0cih0b2tlbiksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwg
RGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtUb2tlbikK
KyAgICAgICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgICAg
IGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOworICAgICAgICB9KTsKKworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fY3VycmVudENhdGVnb3J5KSB7CisgICAgICAgIGlm
ICgqbV9jdXJyZW50Q2F0ZWdvcnkgPj0gcmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICAgICAgICAg
IG1fdG9rZW5zLmFkZCh0b2tlbik7CisgICAgICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRy
YXRpb25FcnJvcjo6Tm9uZSwgRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJi
aXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOworICAg
IH0KKworICAgIG1fY3VycmVudENhdGVnb3J5ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7CisKKyAgICBB
VkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFW
QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOworICAgIHN3aXRjaCAocmVx
dWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoK
KyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25D
YXRlZ29yeVBsYXliYWNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6
UmVjb3JkQXVkaW86CisgICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGlu
Z0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEF1ZGlvU2Vzc2lvbjo6UGxheUFuZFJlY29yZDoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRl
Z29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2lj
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7Cisg
ICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFr
UHRyKHRva2VuKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJh
dGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAm
JiB3ZWFrVG9rZW4pCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7CisgICAgfSk7CisKKyAgICBbW1BB
TDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0g
YmVnaW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeTphcmJpdHJhdGlvbkNhdGVnb3J5IGNvbXBsZXRp
b25IYW5kbGVyOlt0aGlzXShCT09MIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9yICogX051
bGxhYmxlIGVycm9yKSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWZhdWx0
RGV2aWNlQ2hhbmdlZCwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJTaGFy
ZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbjogJXMg
ZmFpbGVkIHdpdGggZXJyb3IgJXM6JXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9j
dXJyZW50Q2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmlu
Z10sIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAg
ICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZl
ciBzaXplIGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNlPworICAgICAgICAgICAgaWYgKGRlZmF1
bHREZXZpY2VDaGFuZ2VkKQorICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1bHREZXZpY2VDaGFuZ2VkISIpOworCisgICAgICAgICAg
ICBWZWN0b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVl
dWVkQ2FsbGJhY2tzKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFj
a3MpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25F
cnJvcjo6RmFpbGVkIDogUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZp
Y2VDaGFuZ2VkID8gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdl
ZDo6Tm8pOworCisgICAgICAgICAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7
CisgICAgICAgIH0pOworICAgIH1dOworfQorCit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
OjplbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihUb2tlbiYgdG9rZW4pCit7CisgICAgQVNT
RVJUKGlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbih0b2tlbikpOworICAgIG1fdG9rZW5z
LnJlbW92ZSh0b2tlbik7CisKKyAgICBpZiAoIW1fdG9rZW5zLmNvbXB1dGVzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fZW5xdWV1ZWRDYWxs
YmFja3MpCisgICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpDYW5jZWxs
ZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKKworICAgIG1fZW5xdWV1ZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICBtX2N1cnJlbnRDYXRlZ29yeS5yZXNldCgpOworICAgIFtbUEFMOjpnZXRB
VkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFy
Yml0cmF0aW9uXTsKK30KKworfQorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424180</attachid>
            <date>2021-03-24 14:04:29 -0700</date>
            <delta_ts>2021-03-24 14:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217535-20210324140428.patch</filename>
            <type>text/plain</type>
            <size>41482</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhYjAzOWM5YTNiNDlh
ZjdkOTgwZDgyMjM0MDg4Nzc5MmExZTJlYS4uYWRhZTI4YWEzZDRiMjM0MmRjYmE2YTIwZGIwZjBm
NzkzY2Y1NmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAzLTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2hhcmVkIG9iamVj
dCwgU2hhcmVkUm91dGluZ0FyYml0cmF0b3IsIHRvIGJlIHVzZWQgYm90aCBpbiB0aGUgVUlQcm9j
ZXNzICh3aGVuIG1lZGlhCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxl
ZCkgYW5kIHRoZSBHUFVQcm9jZXNzICh3aGVuIGl0IGlzKS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKToKKwogMjAyMS0wMy0yNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3MzE1NCk6IFtpT1NdIFR3byBtYWduaWZpZXIg
c3ltYm9scyBvbiBnb29nbGUuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NTgxZmYwMjQyYTNmMmJhYjc4NGRi
MjMyNjI1MjdhMGI2N2M5N2YuLjlhMTZlMzE5MTY3MzE2ZDY5YmU5NzkyZjAzNTdkNDg2OTAyNWIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDMtMjQgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBNb3Zl
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQVSBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMTUyNTQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldywgbG9jYWwtb25seSBvYmplY3Qgd2hp
Y2ggY2FuIGFnZ3JlZ2F0ZSBjaGFuZ2VzIHRvIHRoZSBhdWRpbyByb3V0aW5nLgorICAgICAgICBU
aGUgVUlQcm9jZXNzIHZlcnNpb24gb2YgdGhpcyBvYmplY3Qgc3BhbnMgYSBwcm9jZXNzIGJvdW5k
YXJ5LCBidXQgdGhpcyBuZXcKKyAgICAgICAgb2JqZWN0IGNhbiBvcGVyYXRlIGxvY2FsbHkgd2l0
aG91dCBhbiBYUEMgY29tbXVuaWNhdGlvbiBjaGFubmVsLiBBcyBwYXJ0IG9mIHRoaXMKKyAgICAg
ICAgY2hhbmdlLCB0aGUgIlNoYXJlZEFyYml0cmF0b3IiIGluIEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHlDb2NvYSBoYXMgYmVlbgorICAgICAgICBtb3ZlZCBpbnRvIFdlYkNvcmUg
dG8gYmUgdXNlZCBib3RoIHRoZXJlIGFuZCBpbiB0aWhzIG5ldyBvYmplY3QuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvcjo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcik6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmJlZ2luUm91dGlu
Z0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6bGVhdmVSb3V0aW5nQWJyaXRyYXRpb24pOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaDoK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYS9B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAg
ICAgICAoV2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpiZWdpblJv
dXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbik6CisgICAg
ICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpzaGFy
ZWRJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6
OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJp
dHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6ZW5k
Um91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6CisKIDIwMjEtMDMtMjQgIEthdGUgQ2hlbmV5ICA8a2F0
aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgV0tN
ZWRpYVBsYXliYWNrIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQzMTNlOWY5ZWFm
MjI5ZTZkOTFlNzM0ZjE0NWJiYzk1MDFhOTc0ODguLmY5ZThhYWRkZDcyZGMzNGM0ZWRiOGI2NWY0
ZTAxYzVlYWE4ZmFlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjI3LDYgKzIyNyw3
IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5tbQogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAor
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tCiBwbGF0Zm9ybS9j
Zi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdiZWJlMjEyZmY5NjRh
NWRjOTY4MDE3NjcyNWQ5MDNlYTJhY2Q2My4uZWJiMmI3YzBhMDM5YjY1OGJmYTA4NjUyNDA5N2Zi
NDRmMDQwN2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDI3MCw2ICs0MjcwLDcgQEAKIAkJQ0QzMzZGNjQxN0ZBMEE0RDAw
REREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9U
cmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5oICovOyB9OworCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTYxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCAqLzsgfTsKIAkJ
Q0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTVDMTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CkBAIC0xNDc0MSw2ICsxNDc0Miw4IEBA
CiAJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMzNkY2NTE3RkEwQUM2MDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTY4MjYw
QTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDM2QzE2OTI2MEE2M0Q0MDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1NTE3QTlEMDFCMDAyNzRFNDIgLyog
TWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEwOTksNiArMzEx
MDIsOCBAQAogCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRB
ZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9T
ZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCisJCQkJQ0QzNkMxNjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQ0QzNkMxNjkyNjBBNjNENDAwQzhDNTI5IC8qIFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzEzNjgsNiArMzEzNzMsNyBAQAogCQkJCTU3RDEzNTI1
MjI5NEEzM0MwMDgyNzQwMSAvKiBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEM0QTgwRDA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1
QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0U1QjI2NTI0NTVFOTZGMDA1QzUyRDAgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwN0ExMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQXJyYXkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApp
bmRleCBhMjUxMjlhYmMwMzNkMWYzNWM5ZmFlNjFjYTY4MGU1MDc5YTczOGZjLi5hMGQ4YWEyOTk0
NTFkODFjYjI2NmE0NjMyZjY2N2Q4Y2QwYTcwOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMTQ1LDcgKzE0NSw5IEBAIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIDogdWludDhfdCB7IE5vbmUsIEZh
aWxlZCwgQ2FuY2VsbGVkIH07CiAgICAgZW51bSBjbGFzcyBEZWZhdWx0Um91dGVDaGFuZ2VkIDog
Ym9vbCB7IE5vLCBZZXMgfTsKIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJh
dGlvbldpdGhDYXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+
JiYpID0gMDsKKyAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+Owor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KEF1
ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgbGVhdmVSb3V0aW5nQWJyaXRyYXRpb24oKSA9IDA7CiAKICAgICB1c2lu
ZyBXZWFrVmFsdWVUeXBlID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDU2NzhhMzM4YWIzNzFjMDdkOTU5NzYw
YjE3MWM2NzljNGZhMjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJ
T04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKKyNpbmNsdWRlICJBdWRpb1Nl
c3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkUm91dGluZ0FyYml0cmF0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvciYgc2hhcmVkSW5zdGFuY2UoKTsKKworICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJh
dGlvbkVycm9yID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5n
QXJiaXRyYXRpb25FcnJvcjsKKyAgICB1c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOworICAg
IHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJhY2sgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRp
b25DbGllbnQ6OkFyYml0cmF0aW9uQ2FsbGJhY2s7CisKKyAgICBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBUb2tlbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUb2tlbj4geworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBVbmlxdWVSZWY8
VG9rZW4+IGNyZWF0ZSgpOworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBVbmlxdWVSZWY8
VG9rZW4+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VG9rZW4+KCk7
CisgICAgICAgIFRva2VuKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBib29sIGlzSW5Sb3V0
aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihUb2tlbiYpOworICAgIHZvaWQgYmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25Gb3JUb2tlbihUb2tlbiYsIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBBcmJp
dHJhdGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9r
ZW4oVG9rZW4mKTsKKworcHJpdmF0ZToKKyAgICBPcHRpb25hbDxBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZT4gbV9jdXJyZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246Ok5vbmUgfTsKKyAgICBX
ZWFrSGFzaFNldDxUb2tlbj4gbV90b2tlbnM7CisgICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJh
Y2s+IG1fZW5xdWV1ZWRDYWxsYmFja3M7CisgICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25Pbmdv
aW5nIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTE0MGRiMTYzZWJlOTA0NjQxYjg0MmE5YjM4YzFiM2U4YzNlMzYyOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5tbQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCIKKworI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJ
VEVSKQorCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2ltcG9ydCA8cGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVW5p
cXVlUmVmPFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbj4gU2hhcmVkUm91dGluZ0FyYml0
cmF0b3I6OlRva2VuOjpjcmVhdGUoKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFRva2Vu
PigpOworfQorCitTaGFyZWRSb3V0aW5nQXJiaXRyYXRvciYgU2hhcmVkUm91dGluZ0FyYml0cmF0
b3I6OnNoYXJlZEluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVk
Um91dGluZ0FyYml0cmF0b3I+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKwor
Ym9vbCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6aXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvclRv
a2VuKFRva2VuJiB0b2tlbikKK3sKKyAgICByZXR1cm4gbV90b2tlbnMuY29udGFpbnModG9rZW4p
OworfQorCit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJh
dGlvbkZvclRva2VuKFRva2VuJiB0b2tlbiwgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgcmVx
dWVzdGVkQ2F0ZWdvcnksIEFyYml0cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBB
U1NFUlQoIWlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbih0b2tlbikpOworCisgICAgaWYg
KG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcpIHsKKyAgICAgICAgbV9lbnF1ZXVlZENhbGxiYWNr
cy5hcHBlbmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFrUHRyKHRva2VuKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZh
dWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
ZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUgJiYgd2Vha1Rva2VuKQorICAg
ICAgICAgICAgICAgIG1fdG9rZW5zLmFkZCgqd2Vha1Rva2VuKTsKKworICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAobV9jdXJyZW50Q2F0ZWdvcnkpIHsKKyAgICAgICAgaWYgKCpt
X2N1cnJlbnRDYXRlZ29yeSA+PSByZXF1ZXN0ZWRDYXRlZ29yeSkgeworICAgICAgICAgICAgbV90
b2tlbnMuYWRkKHRva2VuKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlv
bkVycm9yOjpOb25lLCBEZWZhdWx0Um91dGVDaGFuZ2VkOjpObyk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVy
Q2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gbGVhdmVBcmJpdHJhdGlvbl07CisgICAgfQor
CisgICAgbV9jdXJyZW50Q2F0ZWdvcnkgPSByZXF1ZXN0ZWRDYXRlZ29yeTsKKworICAgIEFWQXVk
aW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeSBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRp
b1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheWJhY2s7CisgICAgc3dpdGNoIChyZXF1ZXN0
ZWRDYXRlZ29yeSkgeworICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrOgorICAg
ICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVn
b3J5UGxheWJhY2s7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpSZWNv
cmRBdWRpbzoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QXVkaW9TZXNzaW9uOjpQbGF5QW5kUmVjb3JkOgorICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5
ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheUFuZFJlY29yZFZvaWNlOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gdHJ1ZTsKKyAgICBt
X2VucXVldWVkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgd2Vha1Rva2VuID0gbWFrZVdlYWtQdHIo
dG9rZW4pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9u
RXJyb3IgZXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdl
YWtUb2tlbikKKyAgICAgICAgICAgIG1fdG9rZW5zLmFkZCgqd2Vha1Rva2VuKTsKKworICAgICAg
ICBjYWxsYmFjayhlcnJvciwgcm91dGVDaGFuZ2VkKTsKKyAgICB9KTsKKworICAgIFtbUEFMOjpn
ZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBiZWdp
bkFyYml0cmF0aW9uV2l0aENhdGVnb3J5OmFyYml0cmF0aW9uQ2F0ZWdvcnkgY29tcGxldGlvbkhh
bmRsZXI6W3RoaXNdKEJPT0wgZGVmYXVsdERldmljZUNoYW5nZWQsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGRlZmF1bHREZXZp
Y2VDaGFuZ2VkLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKKyAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlNoYXJlZFJv
dXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuOiAlcyBmYWls
ZWQgd2l0aCBlcnJvciAlczolcyIsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKCptX2N1cnJl
bnRDYXRlZ29yeSkuYXNjaWkoKS5kYXRhKCksIFtbZXJyb3IgZG9tYWluXSBVVEY4U3RyaW5nXSwg
W1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworCisgICAgICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byByZXNldCBzYW1wbGUgcmF0ZSBhbmQgYnVmZmVyIHNp
emUgZm9yIHRoZSBuZXcgZGVmYXVsdCBkZXZpY2U/CisgICAgICAgICAgICBpZiAoZGVmYXVsdERl
dmljZUNoYW5nZWQpCisgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpz
ZXRDYXRlZ29yeSgpIC0gZGVmYXVsdERldmljZUNoYW5nZWQhIik7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fZW5xdWV1ZWRD
YWxsYmFja3MpOworICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9y
OjpGYWlsZWQgOiBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSwgZGVmYXVsdERldmljZUNo
YW5nZWQgPyBEZWZhdWx0Um91dGVDaGFuZ2VkOjpZZXMgOiBEZWZhdWx0Um91dGVDaGFuZ2VkOjpO
byk7CisKKyAgICAgICAgICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSBmYWxzZTsKKyAg
ICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVu
ZFJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKFRva2VuJiB0b2tlbikKK3sKKyAgICBBU1NFUlQo
aXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKHRva2VuKSk7CisgICAgbV90b2tlbnMucmVt
b3ZlKHRva2VuKTsKKworICAgIGlmICghbV90b2tlbnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9lbnF1ZXVlZENhbGxiYWNr
cykKKyAgICAgICAgY2FsbGJhY2soUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6OkNhbmNlbGxlZCwg
RGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworCisgICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5jbGVh
cigpOworICAgIG1fY3VycmVudENhdGVnb3J5LnJlc2V0KCk7CisgICAgW1tQQUw6OmdldEFWQXVk
aW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGxlYXZlQXJiaXRy
YXRpb25dOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2NDJhYmJlNmM5ZGVlMWIy
M2U0MTM2YzkyZDc3ODkzM2M3ZGI1MzI1Li4yYjNkZWQyNDBjYmRiMDlmNWJlNWU5ZjNlZmQ5YjMz
MTZkMWI5ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMzEsNiArMTMxLDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9WUDlVdGlsaXRpZXNDb2NvYS5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUk9VVElO
R19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKyNpbmNsdWRl
ICJMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTk2LDYgKzIwMCw5
IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
R1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgLCBtX2F1ZGlvVHJhY2tSZW5kZXJlck1h
bmFnZXIoUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpjcmVhdGUo
KnRoaXMpKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZSgqdGhpcykpCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJC
SVRFUikKKyAgICAsIG1fcm91dGluZ0FyYml0cmF0b3IoTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcjo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTIyNiw2ICsyMzMsMTAgQEAgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogCiB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsK
KyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdf
QVJCSVRFUikKKyAgICBtX3JvdXRpbmdBcmJpdHJhdG9yLT5wcm9jZXNzRGlkVGVybWluYXRlKCk7
CisjZW5kaWYKKwogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmIChtX2F1ZGlvU2Vzc2lv
blByb3h5KSB7CiAgICAgICAgIGdwdVByb2Nlc3MoKS5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkucmVt
b3ZlUHJveHkoKm1fYXVkaW9TZXNzaW9uUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNmMwMTA1ODAyYWZj
OThhODRjZGM1YjUzNGNkZjRmNjhlMzRlMDAxMy4uZWMxOWQ2NjQ2MGVlNmZiMDU4NmQwY2I0NmM4
MDU1OTkzY2I3MThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7Citj
bGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOwogY2xhc3MgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBjbGFzcyBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsK
QEAgLTI2OSw2ICsyNzAsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxSZW1vdGVSZW1vdGVD
b21tYW5kTGlzdGVuZXJQcm94eT4gbV9yZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAg
Ym9vbCBtX2lzQWN0aXZlTm93UGxheWluZ1Byb2Nlc3MgeyBmYWxzZSB9OworCisjaWYgRU5BQkxF
KFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisg
ICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IG1fcm91dGlu
Z0FyYml0cmF0b3I7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhjNThlMjQ5OWFjY2Jk
M2E4YTkwODQ0NmFjMzE4MjJlYTcyYmI3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAK
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUo
Uk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitVbmlxdWVS
ZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4gTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPigpOworfQorCitMb2NhbEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yOjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
KCkKKyAgICA6IG1fdG9rZW4oU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUo
KSkKK3sKK30KKworTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6fkxvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IoKQoreworCit9CisKK3ZvaWQgTG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCit7CisgICAgaWYg
KFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJi
aXRyYXRpb25Gb3JUb2tlbihtX3Rva2VuKSkKKyAgICAgICAgbGVhdmVSb3V0aW5nQWJyaXRyYXRp
b24oKTsKK30KKwordm9pZCBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpiZWdp
blJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSBjYXRlZ29yeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJv
ciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+JiYgY2FsbGJhY2spCit7CisgICAgbV9jYXRlZ29yeSA9
IGNhdGVnb3J5OworICAgIG1fYXJiaXRyYXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0YXR1czo6
UGVuZGluZzsKKyAgICBtX2FyYml0cmF0aW9uVXBkYXRlVGltZSA9IFdhbGxUaW1lOjpub3coKTsK
KworICAgIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmJlZ2luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbiwgY2F0ZWdvcnksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdB
cmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2FyYml0cmF0aW9uU3RhdHVzID0gZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5v
bmUgPyBBcmJpdHJhdGlvblN0YXR1czo6QWN0aXZlIDogQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmU7
CisgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOworICAgIH0pOworfQorCit2
b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmxlYXZlUm91dGluZ0Ficml0
cmF0aW9uKCkKK3sKKyAgICBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2Uo
KS5lbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rva2VuKTsKKyAgICBtX2FyYml0cmF0
aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmU7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNDkyYmI2ODk4MmVk
NDYyODZlODRkZWE1ZGUxMDVlZjYxNTc3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaApA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
Uk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKwor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IgZmlu
YWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25D
bGllbnQKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBmcmll
bmQgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IFdURjo6bWFr
ZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcj4oKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVW5pcXVlUmVmPExvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkxvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IoKTsKKworICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUg
PSBXZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ7CisKKyAgICBl
bnVtIGNsYXNzIEFyYml0cmF0aW9uU3RhdHVzIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisg
ICAgICAgIFBlbmRpbmcsCisgICAgICAgIEFjdGl2ZSwKKyAgICB9OworCisgICAgdm9pZCBwcm9j
ZXNzRGlkVGVybWluYXRlKCk7CisgICAgQXJiaXRyYXRpb25TdGF0dXMgYXJiaXRyYXRpb25TdGF0
dXMoKSBjb25zdCB7IHJldHVybiBtX2FyYml0cmF0aW9uU3RhdHVzOyB9CisgICAgV2FsbFRpbWUg
YXJiaXRyYXRpb25VcGRhdGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9hcmJpdHJhdGlvblVwZGF0
ZVRpbWU7IH0KKworcHJpdmF0ZToKKyAgICBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yKCk7CisKKyAgICAvLyBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQKKyAg
ICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgbGVhdmVSb3V0aW5nQWJyaXRyYXRpb24oKSBmaW5hbDsKKworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6VG9rZW4+IG1fdG9rZW47CisgICAgV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeSB7IFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6Tm9uZSB9OworICAgIEFyYml0cmF0aW9uU3RhdHVzIG1fYXJiaXRyYXRpb25T
dGF0dXMgeyBBcmJpdHJhdGlvblN0YXR1czo6Tm9uZSB9OworICAgIFdhbGxUaW1lIG1fYXJiaXRy
YXRpb25VcGRhdGVUaW1lOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBkZDRkMmE1MDc2NTc2YmEzZDQ1NjJlY2FjMzMxYjE5OTkzYzk5NjlmLi4yZDc0OGU4ZDk4
ZDU4YjlkMjA2ZWE4ODM5M2RkZDExYmQ0YmIxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC02MCw2ICs2MCw3IEBAIEdQVVByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL0dQ
VVNlcnZpY2VFbnRyeVBvaW50Lm1tCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQ
cm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCitHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nv
dXJjZVByb3ZpZGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL0F1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaAppbmRleCBiNDM1
MTE5ZTdkZWQ2ZTg0NDEzMTc2MDJjZjgzODQ1NDc3YTI3YTU1Li40ZDkyZThlN2Q1NmE4ZTQ0OTQ3
MTljNTM2ZjhmOTI3ZGNhOThmNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQor
I2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CkBAIC01MCw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yID0gV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5nQXJiaXRyYXRp
b25FcnJvcjsKICAgICB1c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOwotICAg
IHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRp
bmdBcmJpdHJhdGlvbkVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkKT47CisgICAgdXNpbmcgQXJi
aXRyYXRpb25DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlv
bkNsaWVudDo6QXJiaXRyYXRpb25DYWxsYmFjazsKIAogICAgIGVudW0gY2xhc3MgQXJiaXRyYXRp
b25TdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTczLDYgKzc3LDEwIEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29y
eSB7IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OwogICAgIEFyYml0cmF0aW9uU3RhdHVz
IG1fYXJiaXRyYXRpb25TdGF0dXMgeyBBcmJpdHJhdGlvblN0YXR1czo6Tm9uZSB9OwogICAgIFdh
bGxUaW1lIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOworCisjaWYgSEFWRShBVkFVRElPX1JPVVRJ
TkdfQVJCSVRFUikKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0
b3I6OlRva2VuPiBtX3Rva2VuOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
clByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9BdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0KaW5kZXggYmM3MGQ0NWVlNzA5
MmE2NDFmMjc1NTQyNWVkZjk4MWViMjQ2ZDllNy4uMzgyMTJjYjUzN2E5YjM0YTc5ODM5NWFjODQ0
NjUzNGE2N2ZjNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEv
Y29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHlDb2NvYS5tbQpAQCAtMzMsMTMyICszMywxNCBAQAogI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUv
QXVkaW9TZXNzaW9uLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY2xhc3MgU2hhcmVkQXJiaXRyYXRvciB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZEFyYml0cmF0b3ImIHNoYXJlZEluc3RhbmNlKCk7
Ci0KLSAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7Ci0gICAgdXNpbmcg
RGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVu
dDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKLSAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0g
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6QXJiaXRyYXRpb25DYWxsYmFjazsK
LQotICAgIGJvb2wgaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYpOwotICAgIHZvaWQgYmVnaW5Sb3V0aW5nQXJiaXRy
YXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmLCBB
cmJpdHJhdGlvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgZW5kUm91dGluZ0FyYml0cmF0aW9uRm9y
QXJiaXRyYXRvcihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Jik7Ci0KLXByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3VycmVudENh
dGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07Ci0gICAgV2Vha0hhc2hTZXQ8QXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eT4gbV9hcmJpdHJhdG9yczsKLSAgICBWZWN0b3I8QXJi
aXRyYXRpb25DYWxsYmFjaz4gbV9lbnF1ZXVlZENhbGxiYWNrczsKLSAgICBib29sIG1fc2V0dXBB
cmJpdHJhdGlvbk9uZ29pbmcgeyBmYWxzZSB9OwotfTsKLQotU2hhcmVkQXJiaXRyYXRvciYgU2hh
cmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFyZWRBcmJpdHJhdG9yPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci19
Ci0KLWJvb2wgU2hhcmVkQXJiaXRyYXRvcjo6aXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0
cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYgcHJveHkpCi17Ci0gICAg
cmV0dXJuIG1fYXJiaXRyYXRvcnMuY29udGFpbnMocHJveHkpOwotfQotCi12b2lkIFNoYXJlZEFy
Yml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcihBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSwgQXJiaXRyYXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrKQotewotICAgIEFTU0VSVCghaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0
b3IocHJveHkpKTsKLQotICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7Ci0gICAg
ICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrUHJveHkgPSBtYWtlV2Vh
a1B0cihwcm94eSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRy
YXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFi
bGUgewotICAgICAgICAgICAgaWYgKGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpO
b25lICYmIHdlYWtQcm94eSkKLSAgICAgICAgICAgICAgICBtX2FyYml0cmF0b3JzLmFkZCgqd2Vh
a1Byb3h5KTsKLQotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHJlcXVlc3Rl
ZENhdGVnb3J5ID0gcHJveHkuY2F0ZWdvcnkoKTsKLQotICAgIGlmIChtX2N1cnJlbnRDYXRlZ29y
eSkgewotICAgICAgICBpZiAoKm1fY3VycmVudENhdGVnb3J5ID49IHJlcXVlc3RlZENhdGVnb3J5
KSB7Ci0gICAgICAgICAgICBtX2FyYml0cmF0b3JzLmFkZChwcm94eSk7Ci0gICAgICAgICAgICBj
YWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSwgRGVmYXVsdFJvdXRlQ2hhbmdl
ZDo6Tm8pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW1tQQUw6
OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGxl
YXZlQXJiaXRyYXRpb25dOwotICAgIH0KLQotICAgIG1fY3VycmVudENhdGVnb3J5ID0gcmVxdWVz
dGVkQ2F0ZWdvcnk7Ci0KLSAgICBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnkgYXJi
aXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXli
YWNrOwotICAgIHN3aXRjaCAocmVxdWVzdGVkQ2F0ZWdvcnkpIHsKLSAgICBjYXNlIEF1ZGlvU2Vz
c2lvbjo6TWVkaWFQbGF5YmFjazoKLSAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVk
aW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3JkQXVkaW86Ci0gICAgICAgIGFyYml0cmF0aW9uQ2F0
ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UGxheUFuZFJlY29yZDoKLSAg
ICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRl
Z29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgbV9zZXR1cEFyYml0cmF0
aW9uT25nb2luZyA9IHRydWU7Ci0gICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMs
IHdlYWtQcm94eSA9IG1ha2VXZWFrUHRyKHByb3h5KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2Vk
IHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvciA9PSBSb3V0aW5nQXJi
aXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrUHJveHkpCi0gICAgICAgICAgICBtX2FyYml0cmF0
b3JzLmFkZCgqd2Vha1Byb3h5KTsKLQotICAgICAgICBjYWxsYmFjayhlcnJvciwgcm91dGVDaGFu
Z2VkKTsKLSAgICB9KTsKLQotICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFz
cygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5OmFy
Yml0cmF0aW9uQ2F0ZWdvcnkgY29tcGxldGlvbkhhbmRsZXI6W3RoaXNdKEJPT0wgZGVmYXVsdERl
dmljZUNoYW5nZWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKLSAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3RoaXMsIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBlcnJvciA9IHJldGFpblB0
cihlcnJvcildIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIlNoYXJlZEFyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0
cmF0aW9uRm9yQXJiaXRyYXRvcjogJXMgZmFpbGVkIHdpdGggZXJyb3IgJXM6JXMiLCBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50Q2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBb
W2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25d
IFVURjhTdHJpbmddKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVz
ZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNl
PwotICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZpY2VDaGFuZ2VkKQotICAgICAgICAgICAgICAg
IExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1bHREZXZpY2VD
aGFuZ2VkISIpOwotCi0gICAgICAgICAgICBWZWN0b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gY2Fs
bGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2FsbGJhY2tzKTsKLSAgICAgICAgICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJy
b3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6RmFpbGVkIDogUm91dGluZ0FyYml0cmF0aW9u
RXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFuZ2VkID8gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6
WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOwotCi0gICAgICAgICAgICBtX3NldHVwQXJi
aXRyYXRpb25PbmdvaW5nID0gZmFsc2U7Ci0gICAgICAgIH0pOwotICAgIH1dOwotfQotCi12b2lk
IFNoYXJlZEFyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYgcHJveHkpCi17Ci0gICAgQVNTRVJUKGlz
SW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKHByb3h5KSk7Ci0gICAgbV9hcmJpdHJh
dG9ycy5yZW1vdmUocHJveHkpOwotCi0gICAgaWYgKCFtX2FyYml0cmF0b3JzLmNvbXB1dGVzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fZW5x
dWV1ZWRDYWxsYmFja3MpCi0gICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9y
OjpDYW5jZWxsZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKLQotICAgIG1fZW5xdWV1ZWRD
YWxsYmFja3MuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRDYXRlZ29yeS5yZXNldCgpOwotICAgIFtb
UEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVy
XSBsZWF2ZUFyYml0cmF0aW9uXTsKLX0KLQogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQ
cm94eTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eShXZWJQcm9jZXNzUHJveHkm
IHByb3h5KQogICAgIDogbV9wcm9jZXNzKHByb3h5KQorICAgICwgbV90b2tlbihTaGFyZWRSb3V0
aW5nQXJiaXRyYXRvcjo6VG9rZW46OmNyZWF0ZSgpKQogewogICAgIG1fcHJvY2Vzcy5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVzdGluYXRpb25JZCgpLCAqdGhpcyk7CiB9CkBAIC0x
NzAsNyArNTIsNyBAQCBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Ojp+QXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSgpCiAKIHZvaWQgQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCiB7Ci0gICAgaWYgKFNoYXJl
ZEFyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFy
Yml0cmF0b3IoKnRoaXMpKQorICAgIGlmIChTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVk
SW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbikpCiAgICAg
ICAgIGVuZFJvdXRpbmdBcmJpdHJhdGlvbigpOwogfQogCkBAIC0xNzksNyArNjEsNyBAQCB2b2lk
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmJlZ2luUm91dGluZ0FyYml0cmF0
aW9uV2l0aENhdGVnb3J5KFdlYgogICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKICAgICBtX2Fy
Yml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6OlBlbmRpbmc7CiAgICAgbV9hcmJp
dHJhdGlvblVwZGF0ZVRpbWUgPSBXYWxsVGltZTo6bm93KCk7Ci0gICAgU2hhcmVkQXJiaXRyYXRv
cjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3Io
KnRoaXMsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVD
aGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgU2hhcmVkUm91dGluZ0FyYml0cmF0
b3I6OnNoYXJlZEluc3RhbmNlKCkuYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rv
a2VuLCBjYXRlZ29yeSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1
bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtU
aGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPm1fYXJiaXRyYXRpb25TdGF0dXMgPSBlcnJvciA9
PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSA/IEFyYml0cmF0aW9uU3RhdHVzOjpBY3Rp
dmUgOiBBcmJpdHJhdGlvblN0YXR1czo6Tm9uZTsKICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJv
dXRlQ2hhbmdlZCk7CkBAIC0xODgsNyArNzAsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHk6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KFdlYgog
CiB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmVuZFJvdXRpbmdBcmJp
dHJhdGlvbigpCiB7Ci0gICAgU2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5lbmRS
b3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlzKTsKKyAgICBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5lbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tl
bihtX3Rva2VuKTsKICAgICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6
Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDdlZmY0ZjI2ZTMzNTEyMmIwZjZlYjU5Y2I4MDE0YzExYmFkZTBlZWYuLmYz
ZWNkMzBjYmQwYWUxMmY4ODM2ZTI4YWI0ZDdhMTcxNjk4ZDBiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTU0OCw2ICs1NTQ4LDgg
QEAKIAkJQ0QyMENFNzcyNUNEMkI5RDAwNjlCNTQyIC8qIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb0hh
cmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDIwQ0U3ODI1Q0QyQjlEMDA2OUI1NDIgLyogUmVtb3RlQXVkaW9IYXJkd2FyZUxp
c3RlbmVyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvSGFyZHdh
cmVMaXN0ZW5lck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDIwQ0U3OTI1Q0QyQjlFMDA2OUI1NDIgLyogUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzNkMxNkMyNjBBNkVCRTAw
QzhDNTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRDM2QzE2RDI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0QzRUVGMzEyNTc5OTYxODAwNjU2M0JCIC8qIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNFRUYzMjI1Nzk5
NjE4MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRUVGMzMyNTc5OTcxNzAwNjU2
M0JCIC8qIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MDgsNiArNzUxMCw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQkyRDlGQjIwODIzNzUyMDlEMDA0OUY5MzYgLyogY29tLmFwcGxlLldlYktp
dC5HUFVQcm9jZXNzLnNiLmluICovLAogCQkJCTJEOUZCMjA3MjM3NTIwOUQwMDQ5RjkzNiAvKiBH
UFVQcm9jZXNzTWFjLm1tICovLAorCQkJCUNEMzZDMTZDMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQ0QzNkMxNkQyNjBBNkVC
RTAwQzhDNTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAog
CQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb24uY3BwCmluZGV4IDcwMDkyMzIyODMzODA0YTU0ZTZhNmIwYTU5Y2MzYTgyNDFjZDM5YzIu
LmVlZjE2NWJlMWU3ZjVkNmQwMzg5OTQyNGJhOWE4MzYyMDc0ZDE2YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
bi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVBdWRpb1Nlc3Np
b246OmNvbm5lY3Rpb24oKQogCiB2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnko
Q2F0ZWdvcnlUeXBlIHR5cGUsIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAodHlwZSA9PSBt
X2NvbmZpZ3VyYXRpb24uY2F0ZWdvcnkgJiYgcG9saWN5ID09IG1fY29uZmlndXJhdGlvbi5yb3V0
ZVNoYXJpbmdQb2xpY3kpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzUsOSArNzUsNiBAQCB2b2lk
IFJlbW90ZUF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIHR5cGUsIFJvdXRl
U2hhcmluZ1BvbGljeSBwb2xpYwogICAgIG1fY29uZmlndXJhdGlvbi5yb3V0ZVNoYXJpbmdQb2xp
Y3kgPSBwb2xpY3k7CiAKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVk
aW9TZXNzaW9uUHJveHk6OlNldENhdGVnb3J5KHR5cGUsIHBvbGljeSksIHsgfSk7Ci0jZWxpZiBQ
TEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IE1vdmUgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eSB0byB0aGUgR1BVIHByb2Nlc3MgKHdlYmtpdC5vcmcvYi8yMTc1MzUpCi0gICAg
QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSh0eXBlLCBwb2xpY3kpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0odHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKHBvbGljeSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424181</attachid>
            <date>2021-03-24 14:18:01 -0700</date>
            <delta_ts>2021-05-04 09:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217535-20210324141800.patch</filename>
            <type>text/plain</type>
            <size>41525</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FhYjAzOWM5YTNiNDlh
ZjdkOTgwZDgyMjM0MDg4Nzc5MmExZTJlYS4uYWRhZTI4YWEzZDRiMjM0MmRjYmE2YTIwZGIwZjBm
NzkzY2Y1NmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAzLTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2hhcmVkIG9iamVj
dCwgU2hhcmVkUm91dGluZ0FyYml0cmF0b3IsIHRvIGJlIHVzZWQgYm90aCBpbiB0aGUgVUlQcm9j
ZXNzICh3aGVuIG1lZGlhCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxl
ZCkgYW5kIHRoZSBHUFVQcm9jZXNzICh3aGVuIGl0IGlzKS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKToKKwogMjAyMS0wMy0yNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3MzE1NCk6IFtpT1NdIFR3byBtYWduaWZpZXIg
c3ltYm9scyBvbiBnb29nbGUuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NTgxZmYwMjQyYTNmMmJhYjc4NGRi
MjMyNjI1MjdhMGI2N2M5N2YuLmM4ZDkyZDYyYjhkZWJhYmMwYTE0NDdjYTM3NzlhNGM5ZmZlYTk4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDMtMjQgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBNb3Zl
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQVSBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMTUyNTQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldywgbG9jYWwtb25seSBvYmplY3Qgd2hp
Y2ggY2FuIGFnZ3JlZ2F0ZSBjaGFuZ2VzIHRvIHRoZSBhdWRpbyByb3V0aW5nLgorICAgICAgICBU
aGUgVUlQcm9jZXNzIHZlcnNpb24gb2YgdGhpcyBvYmplY3Qgc3BhbnMgYSBwcm9jZXNzIGJvdW5k
YXJ5LCBidXQgdGhpcyBuZXcKKyAgICAgICAgb2JqZWN0IGNhbiBvcGVyYXRlIGxvY2FsbHkgd2l0
aG91dCBhbiBYUEMgY29tbXVuaWNhdGlvbiBjaGFubmVsLiBBcyBwYXJ0IG9mIHRoaXMKKyAgICAg
ICAgY2hhbmdlLCB0aGUgIlNoYXJlZEFyYml0cmF0b3IiIGluIEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHlDb2NvYSBoYXMgYmVlbgorICAgICAgICBtb3ZlZCBpbnRvIFdlYkNvcmUg
dG8gYmUgdXNlZCBib3RoIHRoZXJlIGFuZCBpbiB0aGlzIG5ldyBvYmplY3QuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvcjo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcik6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmJlZ2luUm91dGlu
Z0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6bGVhdmVSb3V0aW5nQWJyaXRyYXRpb24pOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaDoK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYS9B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAg
ICAgICAoV2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpiZWdpblJv
dXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbik6CisgICAg
ICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpzaGFy
ZWRJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6
OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJp
dHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6ZW5k
Um91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6CisKIDIwMjEtMDMtMjQgIEthdGUgQ2hlbmV5ICA8a2F0
aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgV0tN
ZWRpYVBsYXliYWNrIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQzMTNlOWY5ZWFm
MjI5ZTZkOTFlNzM0ZjE0NWJiYzk1MDFhOTc0ODguLmY5ZThhYWRkZDcyZGMzNGM0ZWRiOGI2NWY0
ZTAxYzVlYWE4ZmFlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjI3LDYgKzIyNyw3
IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5tbQogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAor
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tCiBwbGF0Zm9ybS9j
Zi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAogcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdiZWJlMjEyZmY5NjRh
NWRjOTY4MDE3NjcyNWQ5MDNlYTJhY2Q2My4uZDk0MGMwOWYyZmUwYTk4MWQ0ZmNmZDUxYTJkZmY0
M2YxOWQ2YWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDI3MCw2ICs0MjcwLDcgQEAKIAkJQ0QzMzZGNjQxN0ZBMEE0RDAw
REREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9U
cmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5oICovOyB9OworCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTYxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCAqLzsgfTsKIAkJ
Q0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTVDMTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CkBAIC0xNDc0MSw2ICsxNDc0Miw4IEBA
CiAJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMzNkY2NTE3RkEwQUM2MDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTY4MjYw
QTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDM2QzE2OTI2MEE2M0Q0MDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1NTE3QTlEMDFCMDAyNzRFNDIgLyog
TWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEwOTksNiArMzEx
MDIsOCBAQAogCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRB
ZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9T
ZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCisJCQkJQ0QzNkMxNjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQ0QzNkMxNjkyNjBBNjNENDAwQzhDNTI5IC8qIFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzQ4NjYsNiArMzQ4NzEsNyBAQAogCQkJCTFEOUYwRkMx
MjEyMjAyOUIwMDVEOEZENCAvKiBTaGFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5
NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMEE5MURDMjRDRjQ2RkUwMEJGRDg5QyAvKiBTaGFyZWRHYW1lcGFkVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEMzZDMTZCMjYwQTY1Q0MwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVCIC8q
IFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMw
MDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREYxOUUyQUMyNDc3
MkJDMTAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmgKaW5kZXggYTI1MTI5YWJjMDMzZDFmMzVjOWZhZTYxY2E2ODBlNTA3OWE3MzhmYy4uYTBkOGFh
Mjk5NDUxZDgxY2IyNjZhNDYzMmY2NjdkOGNkMGE3MDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTE0NSw3ICsxNDUsOSBAQCBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA6IHVpbnQ4X3QgeyBOb25l
LCBGYWlsZWQsIENhbmNlbGxlZCB9OwogICAgIGVudW0gY2xhc3MgRGVmYXVsdFJvdXRlQ2hhbmdl
ZCA6IGJvb2wgeyBObywgWWVzIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5n
ZWQpPiYmKSA9IDA7CisgICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQp
PjsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29y
eShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCkgPSAwOwogCiAgICAg
dXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRS
b3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1No
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZkZjRiYjA4MjYyMDIzZjg4NGYx
OTVkZTVjNDZlOTFkOGZiOTg5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklU
UkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQorCisjaW5jbHVkZSAiQXVk
aW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkUm91
dGluZ0FyYml0cmF0b3ImIHNoYXJlZEluc3RhbmNlKCk7CisKKyAgICB1c2luZyBSb3V0aW5nQXJi
aXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91
dGluZ0FyYml0cmF0aW9uRXJyb3I7CisgICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsK
KyAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOworCisgICAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VG9rZW4+IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgVW5pcXVl
UmVmPFRva2VuPiBjcmVhdGUoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgVW5pcXVl
UmVmPFRva2VuPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRva2Vu
PigpOworICAgICAgICBUb2tlbigpID0gZGVmYXVsdDsKKyAgICB9OworCisgICAgYm9vbCBpc0lu
Um91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9rZW4mKTsKKyAgICB2b2lkIGJlZ2lu
Um91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9rZW4mLCBBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGVuZFJvdXRpbmdB
cmJpdHJhdGlvbkZvclRva2VuKGNvbnN0IFRva2VuJik7CisKK3ByaXZhdGU6CisgICAgT3B0aW9u
YWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3VycmVudENhdGVnb3J5IHsgQXVkaW9T
ZXNzaW9uOjpOb25lIH07CisgICAgV2Vha0hhc2hTZXQ8VG9rZW4+IG1fdG9rZW5zOworICAgIFZl
Y3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVkQ2FsbGJhY2tzOworICAgIGJvb2wg
bV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NTI3ZTdiNWRiNmI5Yzg4ZmQyZDg5
ZTlhMTBhYmY5NTNmZmNmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW0KQEAgLTAsMCArMSwxMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1VuaXF1ZVJlZjxTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6VG9r
ZW4+IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxUb2tlbj4oKTsKK30KKworU2hhcmVkUm91dGluZ0FyYml0cmF0b3Im
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yPiBpbnN0YW5jZTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2U7Cit9CisKK2Jvb2wgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmlzSW5S
b3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tlbiYgdG9rZW4pCit7CisgICAgcmV0
dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKK30KKwordm9pZCBTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tlbiYgdG9r
ZW4sIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIHJlcXVlc3RlZENhdGVnb3J5LCBBcmJpdHJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFpc0luUm91dGluZ0FyYml0
cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKworICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25Pbmdv
aW5nKSB7CisgICAgICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrVG9r
ZW4gPSBtYWtlV2Vha1B0cih0b2tlbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChS
b3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNo
YW5nZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yID09IFJvdXRpbmdBcmJpdHJh
dGlvbkVycm9yOjpOb25lICYmIHdlYWtUb2tlbikKKyAgICAgICAgICAgICAgICBtX3Rva2Vucy5h
ZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5n
ZWQpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
Y3VycmVudENhdGVnb3J5KSB7CisgICAgICAgIGlmICgqbV9jdXJyZW50Q2F0ZWdvcnkgPj0gcmVx
dWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICAgICAgICAgIG1fdG9rZW5zLmFkZCh0b2tlbik7CisgICAg
ICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSwgRGVmYXVsdFJv
dXRlQ2hhbmdlZDo6Tm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0Fy
Yml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOworICAgIH0KKworICAgIG1fY3VycmVudENhdGVnb3J5
ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7CisKKyAgICBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0
ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRl
Z29yeVBsYXliYWNrOworICAgIHN3aXRjaCAocmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICBjYXNl
IEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29y
eSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3JkQXVkaW86CisgICAgICAgIGFyYml0
cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5k
UmVjb3JkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UGxheUFuZFJl
Y29yZDoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRy
YXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgbV9zZXR1
cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7CisgICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFrUHRyKHRva2VuKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91
dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvciA9PSBS
b3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrVG9rZW4pCisgICAgICAgICAgICBt
X3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRl
Q2hhbmdlZCk7CisgICAgfSk7CisKKyAgICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVy
Q2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gYmVnaW5BcmJpdHJhdGlvbldpdGhDYXRlZ29y
eTphcmJpdHJhdGlvbkNhdGVnb3J5IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzXShCT09MIGRlZmF1
bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWZhdWx0RGV2aWNlQ2hhbmdlZCwgZXJyb3IgPSByZXRh
aW5QdHIoZXJyb3IpXSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5S
b3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbjogJXMgZmFpbGVkIHdpdGggZXJyb3IgJXM6JXMiLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50Q2F0ZWdvcnkpLmFzY2lpKCkuZGF0
YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtbZXJyb3IgbG9jYWxpemVkRGVzY3Jp
cHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
dG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1bHQg
ZGV2aWNlPworICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZpY2VDaGFuZ2VkKQorICAgICAgICAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1bHRE
ZXZpY2VDaGFuZ2VkISIpOworCisgICAgICAgICAgICBWZWN0b3I8QXJiaXRyYXRpb25DYWxsYmFj
az4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2FsbGJhY2tzKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6RmFpbGVkIDogUm91dGluZ0FyYml0
cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFuZ2VkID8gRGVmYXVsdFJvdXRlQ2hh
bmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworCisgICAgICAgICAgICBtX3Nl
dHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIH1dOworfQor
Cit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbihjb25zdCBUb2tlbiYgdG9rZW4pCit7CisgICAgQVNTRVJUKGlzSW5Sb3V0aW5nQXJiaXRy
YXRpb25Gb3JUb2tlbih0b2tlbikpOworICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbik7CisKKyAg
ICBpZiAoIW1fdG9rZW5zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IG1fZW5xdWV1ZWRDYWxsYmFja3MpCisgICAgICAgIGNhbGxi
YWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpDYW5jZWxsZWQsIERlZmF1bHRSb3V0ZUNoYW5n
ZWQ6Ok5vKTsKKworICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBtX2N1cnJl
bnRDYXRlZ29yeS5yZXNldCgpOworICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJD
bGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9uXTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjQyYWJiZTZjOWRlZTFiMjNlNDEzNmM5MmQ3Nzg5MzNj
N2RiNTMyNS4uMmIzZGVkMjQwY2JkYjA5ZjViZTVlOWYzZWZkOWIzMzE2ZDFiOWQxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtMTMxLDYgKzEzMSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVlA5VXRpbGl0
aWVzQ29jb2EuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYm
IEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisjaW5jbHVkZSAiTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5Niw2ICsyMDAsOSBAQCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVBy
b2Nlc3MsIFdlYgogICAgICwgbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKnRoaXMpKQogI2VuZGlmCisjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgLCBtX3Jv
dXRpbmdBcmJpdHJhdG9yKExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmNyZWF0
ZSgpKQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0yMjYsNiArMjMzLDEwIEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisjaWYgRU5BQkxFKFJPVVRJ
TkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgbV9y
b3V0aW5nQXJiaXRyYXRvci0+cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOworI2VuZGlmCisKICNpZiBV
U0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAobV9hdWRpb1Nlc3Npb25Qcm94eSkgewogICAgICAg
ICBncHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigpLnJlbW92ZVByb3h5KCptX2F1ZGlv
U2Vzc2lvblByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDZjMDEwNTgwMmFmYzk4YTg0Y2RjNWI1MzRjZGY0
ZjY4ZTM0ZTAwMTMuLmVjMTlkNjY0NjBlZTZmYjA1ODZkMGNiNDZjODA1NTk5M2NiNzE4ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BV
UHJvY2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OworY2xhc3MgTG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOwogY2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CkBAIC0yNjksNiArMjcwLDEw
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJv
eHk+IG1fcmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyOwogICAgIGJvb2wgbV9pc0FjdGl2ZU5v
d1BsYXlpbmdQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFU
SU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQorICAgIFVuaXF1ZVJlZjxMb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBtX3JvdXRpbmdBcmJpdHJhdG9yOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YmM0Y2NjNjQ0MTUzZDA5NWMzZmNhODBmYmE2YzBh
Mzc5YTA3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFj
L0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oIgorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJ
T04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I+IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcj4oKTsKK30KKworTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvcjo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpCisgICAgOiBtX3Rva2Vu
KFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkpCit7Cit9CisKK0xvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yKCkgPSBkZWZhdWx0OworCit2b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3I6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQoreworICAgIGlmIChTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9r
ZW4obV90b2tlbikpCisgICAgICAgIGxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCk7Cit9CisKK3Zv
aWQgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRy
YXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0
ZUNoYW5nZWQpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAg
ICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6OlBlbmRpbmc7CisgICAg
bV9hcmJpdHJhdGlvblVwZGF0ZVRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisKKyAgICBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlv
bkZvclRva2VuKG1fdG9rZW4sIGNhdGVnb3J5LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJv
ciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hcmJpdHJhdGlvblN0
YXR1cyA9IGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lID8gQXJiaXRyYXRp
b25TdGF0dXM6OkFjdGl2ZSA6IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOworICAgICAgICBjYWxs
YmFjayhlcnJvciwgcm91dGVDaGFuZ2VkKTsKKyAgICB9KTsKK30KKwordm9pZCBMb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpsZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbigpCit7Cisg
ICAgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0Fy
Yml0cmF0aW9uRm9yVG9rZW4obV90b2tlbik7CisgICAgbV9hcmJpdHJhdGlvblN0YXR1cyA9IEFy
Yml0cmF0aW9uU3RhdHVzOjpOb25lOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ5MmJiNjg5ODJlZDQ2Mjg2ZTg0ZGVhNWRl
MTA1ZWY2MTU3N2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRS
QVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yIGZpbmFsCisgICAgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZnJpZW5kIFVuaXF1ZVJlZjxM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+KCk7
CitwdWJsaWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yKCk7CisKKyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OworCisgICAgZW51bSBjbGFzcyBBcmJp
dHJhdGlvblN0YXR1cyA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBQZW5kaW5n
LAorICAgICAgICBBY3RpdmUsCisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0
ZSgpOworICAgIEFyYml0cmF0aW9uU3RhdHVzIGFyYml0cmF0aW9uU3RhdHVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcmJpdHJhdGlvblN0YXR1czsgfQorICAgIFdhbGxUaW1lIGFyYml0cmF0aW9uVXBk
YXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOyB9CisKK3By
aXZhdGU6CisgICAgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpOworCisgICAg
Ly8gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgdm9pZCBiZWdpblJv
dXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxlYXZlUm91
dGluZ0Ficml0cmF0aW9uKCkgZmluYWw7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
Um91dGluZ0FyYml0cmF0b3I6OlRva2VuPiBtX3Rva2VuOworICAgIFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246Ok5v
bmUgfTsKKyAgICBBcmJpdHJhdGlvblN0YXR1cyBtX2FyYml0cmF0aW9uU3RhdHVzIHsgQXJiaXRy
YXRpb25TdGF0dXM6Ok5vbmUgfTsKKyAgICBXYWxsVGltZSBtX2FyYml0cmF0aW9uVXBkYXRlVGlt
ZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZGQ0ZDJhNTA3
NjU3NmJhM2Q0NTYyZWNhYzMzMWIxOTk5M2M5OTY5Zi4uMmQ3NDhlOGQ5OGQ1OGI5ZDIwNmVhODgz
OTNkZGQxMWJkNGJiMTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjAsNiArNjAsNyBA
QCBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNlRW50cnlQ
b2ludC5tbQogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcAogR1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BV
UHJvY2Vzc01hYy5tbQorR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAK
IEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgKaW5kZXggYjQzNTExOWU3ZGVkNmU4NDQx
MzE3NjAyY2Y4Mzg0NTQ3N2EyN2E1NS4uNGQ5MmU4ZTdkNTZhOGU0NDk0NzE5YzUzNmY4ZjkyN2Rj
YTk4ZjU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaApAQCAtMzIsNiAr
MzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCisjaWYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKyNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwpAQCAtNTAsNyArNTQsNyBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CiAgICAg
dXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKLSAgICB1c2luZyBBcmJpdHJh
dGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25F
cnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+OworICAgIHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJh
Y2sgPSBXZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkFyYml0
cmF0aW9uQ2FsbGJhY2s7CiAKICAgICBlbnVtIGNsYXNzIEFyYml0cmF0aW9uU3RhdHVzIDogdWlu
dDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC03Myw2ICs3NywxMCBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBXZWJDb3JlOjpB
dWRpb1Nlc3Npb246Ok5vbmUgfTsKICAgICBBcmJpdHJhdGlvblN0YXR1cyBtX2FyYml0cmF0aW9u
U3RhdHVzIHsgQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmUgfTsKICAgICBXYWxsVGltZSBtX2FyYml0
cmF0aW9uVXBkYXRlVGltZTsKKworI2lmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbj4gbV90
b2tlbjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGJjNzBkNDVlZTcwOTJhNjQxZjI3NTU0MjVl
ZGY5ODFlYjI0NmQ5ZTcuLjM4MjEyY2I1MzdhOWIzNGE3OTgzOTVhYzg0NDY1MzRhNjdmYzU1NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9NZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29j
b2EubW0KQEAgLTMzLDEzMiArMzMsMTQgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5o
PgotI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLWNsYXNzIFNoYXJlZEFyYml0cmF0b3IgewotcHVibGljOgotICAg
IHN0YXRpYyBTaGFyZWRBcmJpdHJhdG9yJiBzaGFyZWRJbnN0YW5jZSgpOwotCi0gICAgdXNpbmcg
Um91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25D
bGllbnQ6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOwotICAgIHVzaW5nIERlZmF1bHRSb3V0ZUNo
YW5nZWQgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkRlZmF1bHRSb3V0
ZUNoYW5nZWQ7Ci0gICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHk6OkFyYml0cmF0aW9uQ2FsbGJhY2s7Ci0KLSAgICBib29sIGlz
SW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHkmKTsKLSAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRy
YXRvcihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiwgQXJiaXRyYXRpb25DYWxs
YmFjayYmKTsKLSAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYpOwotCi1wcml2YXRlOgotICAgIE9wdGlv
bmFsPEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPiBtX2N1cnJlbnRDYXRlZ29yeSB7IEF1ZGlv
U2Vzc2lvbjo6Tm9uZSB9OwotICAgIFdlYWtIYXNoU2V0PEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHk+IG1fYXJiaXRyYXRvcnM7Ci0gICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJh
Y2s+IG1fZW5xdWV1ZWRDYWxsYmFja3M7Ci0gICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25Pbmdv
aW5nIHsgZmFsc2UgfTsKLX07Ci0KLVNoYXJlZEFyYml0cmF0b3ImIFNoYXJlZEFyYml0cmF0b3I6
OnNoYXJlZEluc3RhbmNlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkQXJi
aXRyYXRvcj4gaW5zdGFuY2U7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotfQotCi1ib29sIFNoYXJl
ZEFyYml0cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmIHByb3h5KQotewotICAgIHJldHVybiBtX2FyYml0
cmF0b3JzLmNvbnRhaW5zKHByb3h5KTsKLX0KLQotdm9pZCBTaGFyZWRBcmJpdHJhdG9yOjpiZWdp
blJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eSYgcHJveHksIEFyYml0cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAg
ICBBU1NFUlQoIWlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKHByb3h5KSk7Ci0K
LSAgICBpZiAobV9zZXR1cEFyYml0cmF0aW9uT25nb2luZykgewotICAgICAgICBtX2VucXVldWVk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgd2Vha1Byb3h5ID0gbWFrZVdlYWtQdHIocHJveHkpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJy
b3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlmIChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrUHJv
eHkpCi0gICAgICAgICAgICAgICAgbV9hcmJpdHJhdG9ycy5hZGQoKndlYWtQcm94eSk7Ci0KLSAg
ICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOwotICAgICAgICB9KTsKLQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byByZXF1ZXN0ZWRDYXRlZ29yeSA9IHBy
b3h5LmNhdGVnb3J5KCk7Ci0KLSAgICBpZiAobV9jdXJyZW50Q2F0ZWdvcnkpIHsKLSAgICAgICAg
aWYgKCptX2N1cnJlbnRDYXRlZ29yeSA+PSByZXF1ZXN0ZWRDYXRlZ29yeSkgewotICAgICAgICAg
ICAgbV9hcmJpdHJhdG9ycy5hZGQocHJveHkpOwotICAgICAgICAgICAgY2FsbGJhY2soUm91dGlu
Z0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91
dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9u
XTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRDYXRlZ29yeSA9IHJlcXVlc3RlZENhdGVnb3J5Owot
Ci0gICAgQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5IGFyYml0cmF0aW9uQ2F0ZWdv
cnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5YmFjazsKLSAgICBzd2l0
Y2ggKHJlcXVlc3RlZENhdGVnb3J5KSB7Ci0gICAgY2FzZSBBdWRpb1Nlc3Npb246Ok1lZGlhUGxh
eWJhY2s6Ci0gICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0
cmF0aW9uQ2F0ZWdvcnlQbGF5YmFjazsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdWRpb1Nl
c3Npb246OlJlY29yZEF1ZGlvOgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRp
b1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheUFuZFJlY29yZDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBdWRpb1Nlc3Npb246OlBsYXlBbmRSZWNvcmQ6Ci0gICAgICAgIGFyYml0cmF0
aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVj
b3JkVm9pY2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSB0
cnVlOwotICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrUHJveHkgPSBt
YWtlV2Vha1B0cihwcm94eSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5n
QXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQp
IG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6
Ok5vbmUgJiYgd2Vha1Byb3h5KQotICAgICAgICAgICAgbV9hcmJpdHJhdG9ycy5hZGQoKndlYWtQ
cm94eSk7Ci0KLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7Ci0gICAgfSk7
Ci0KLSAgICBbW1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0
aW5nQXJiaXRlcl0gYmVnaW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeTphcmJpdHJhdGlvbkNhdGVn
b3J5IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzXShCT09MIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0
aGlzLCBkZWZhdWx0RGV2aWNlQ2hhbmdlZCwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWEsICJTaGFyZWRBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0
cmF0b3I6ICVzIGZhaWxlZCB3aXRoIGVycm9yICVzOiVzIiwgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoKm1fY3VycmVudENhdGVnb3J5KS5hc2NpaSgpLmRhdGEoKSwgW1tlcnJvciBkb21haW5d
IFVURjhTdHJpbmddLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7
Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHNhbXBsZSByYXRl
IGFuZCBidWZmZXIgc2l6ZSBmb3IgdGhlIG5ldyBkZWZhdWx0IGRldmljZT8KLSAgICAgICAgICAg
IGlmIChkZWZhdWx0RGV2aWNlQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJB
dWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0RGV2aWNlQ2hhbmdlZCEiKTsKLQot
ICAgICAgICAgICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrcyA9IFdURk1v
dmUobV9lbnF1ZXVlZENhbGxiYWNrcyk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogY2FsbGJhY2tzKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gUm91dGluZ0Fy
Yml0cmF0aW9uRXJyb3I6OkZhaWxlZCA6IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lLCBk
ZWZhdWx0RGV2aWNlQ2hhbmdlZCA/IERlZmF1bHRSb3V0ZUNoYW5nZWQ6OlllcyA6IERlZmF1bHRS
b3V0ZUNoYW5nZWQ6Ok5vKTsKLQotICAgICAgICAgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2lu
ZyA9IGZhbHNlOwotICAgICAgICB9KTsKLSAgICB9XTsKLX0KLQotdm9pZCBTaGFyZWRBcmJpdHJh
dG9yOjplbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yUHJveHkmIHByb3h5KQotewotICAgIEFTU0VSVChpc0luUm91dGluZ0FyYml0
cmF0aW9uRm9yQXJiaXRyYXRvcihwcm94eSkpOwotICAgIG1fYXJiaXRyYXRvcnMucmVtb3ZlKHBy
b3h5KTsKLQotICAgIGlmICghbV9hcmJpdHJhdG9ycy5jb21wdXRlc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2VucXVldWVkQ2FsbGJhY2tz
KQotICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Q2FuY2VsbGVkLCBE
ZWZhdWx0Um91dGVDaGFuZ2VkOjpObyk7Ci0KLSAgICBtX2VucXVldWVkQ2FsbGJhY2tzLmNsZWFy
KCk7Ci0gICAgbV9jdXJyZW50Q2F0ZWdvcnkucmVzZXQoKTsKLSAgICBbW1BBTDo6Z2V0QVZBdWRp
b1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gbGVhdmVBcmJpdHJh
dGlvbl07Ci19Ci0KIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OkF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKICAgICA6
IG1fcHJvY2Vzcyhwcm94eSkKKyAgICAsIG1fdG9rZW4oU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6
OlRva2VuOjpjcmVhdGUoKSkKIHsKICAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIGRlc3RpbmF0aW9uSWQoKSwgKnRoaXMpOwogfQpAQCAtMTcwLDcgKzUyLDcgQEAg
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6fkF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHkoKQogCiB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJv
eHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIGlmIChTaGFyZWRBcmJpdHJhdG9yOjpz
aGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlz
KSkKKyAgICBpZiAoU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuaXNJ
blJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKG1fdG9rZW4pKQogICAgICAgICBlbmRSb3V0aW5n
QXJiaXRyYXRpb24oKTsKIH0KIApAQCAtMTc5LDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5OjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29y
eShXZWIKICAgICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICAgbV9hcmJpdHJhdGlvblN0YXR1
cyA9IEFyYml0cmF0aW9uU3RhdHVzOjpQZW5kaW5nOwogICAgIG1fYXJiaXRyYXRpb25VcGRhdGVU
aW1lID0gV2FsbFRpbWU6Om5vdygpOwotICAgIFNoYXJlZEFyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKCkuYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlzLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChS
b3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNo
YW5nZWQpIG11dGFibGUgeworICAgIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0
YW5jZSgpLmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbiwgY2F0ZWdvcnks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2Vk
IHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX2FyYml0cmF0aW9uU3RhdHVzID0gZXJyb3IgPT0gUm91dGluZ0FyYml0
cmF0aW9uRXJyb3I6Ok5vbmUgPyBBcmJpdHJhdGlvblN0YXR1czo6QWN0aXZlIDogQXJiaXRyYXRp
b25TdGF0dXM6Ok5vbmU7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOwpA
QCAtMTg4LDcgKzcwLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
OjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWIKIAogdm9pZCBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjplbmRSb3V0aW5nQXJiaXRyYXRpb24oKQogewot
ICAgIFNoYXJlZEFyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0
aW9uRm9yQXJiaXRyYXRvcigqdGhpcyk7CisgICAgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNo
YXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tlbik7CiAg
ICAgbV9hcmJpdHJhdGlvblN0YXR1cyA9IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
ZWZmNGYyNmUzMzUxMjJiMGY2ZWI1OWNiODAxNGMxMWJhZGUwZWVmLi4xZGI3YjM2OTVjNDhkMjM4
ZDc5MjE4MTU1MzBhMzEwNzM3YTc4OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1NDgsNiArNTU0OCw4IEBACiAJCUNEMjBDRTc3
MjVDRDJCOUQwMDY5QjU0MiAvKiBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMENF
NzgyNUNEMkI5RDAwNjlCNTQyIC8qIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNz
YWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMENFNzkyNUNE
MkI5RTAwNjlCNTQyIC8qIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTZDMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0QzNkMxNkQyNjBBNkVCRTAwQzhDNTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0VFRjMxMjU3
OTk2MTgwMDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRUVGMzIyNTc5OTYxODAwNjU2M0JCIC8q
IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0VFRjMzMjU3OTk3MTcwMDY1NjNCQiAvKiBSZW1vdGVN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NTA4LDYgKzc1MTAsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
MkQ5RkIyMDgyMzc1MjA5RDAwNDlGOTM2IC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5z
Yi5pbiAqLywKIAkJCQkyRDlGQjIwNzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzc01hYy5t
bSAqLywKKwkJCQlDRDM2QzE2RDI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvci5jcHAgKi8sCisJCQkJQ0QzNkMxNkMyNjBBNkVCRTAwQzhDNTI5IC8q
IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcAppbmRl
eCA3MDA5MjMyMjgzMzgwNGE1NGU2YTZiMGE1OWNjM2E4MjQxY2QzOWMyLi5lZWYxNjViZTFlN2Y1
ZDZkMDM4OTk0MjRiYTlhODM2MjA3NGQxNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIElQQzo6Q29ubmVjdGlvbiYgUmVtb3RlQXVkaW9TZXNzaW9uOjpjb25uZWN0aW9u
KCkKIAogdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0
eXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5KQogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKHR5cGUgPT0gbV9jb25maWd1cmF0aW9u
LmNhdGVnb3J5ICYmIHBvbGljeSA9PSBtX2NvbmZpZ3VyYXRpb24ucm91dGVTaGFyaW5nUG9saWN5
KQogICAgICAgICByZXR1cm47CiAKQEAgLTc1LDkgKzc1LDYgQEAgdm9pZCBSZW1vdGVBdWRpb1Nl
c3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kg
cG9saWMKICAgICBtX2NvbmZpZ3VyYXRpb24ucm91dGVTaGFyaW5nUG9saWN5ID0gcG9saWN5Owog
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
OjpTZXRDYXRlZ29yeSh0eXBlLCBwb2xpY3kpLCB7IH0pOwotI2VsaWYgUExBVEZPUk0oTUFDKQot
ICAgIC8vIEZJWE1FOiBNb3ZlIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8g
dGhlIEdQVSBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjE3NTM1KQotICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0Q2F0ZWdvcnkodHlwZSwgcG9saWN5KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHR5cGUp
OwogICAgIFVOVVNFRF9QQVJBTShwb2xpY3kpOwo=
</data>
<flag name="review"
          id="443771"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="443791"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427679</attachid>
            <date>2021-05-04 09:59:30 -0700</date>
            <delta_ts>2021-05-04 09:59:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217535-20210504095930.patch</filename>
            <type>text/plain</type>
            <size>48913</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4YjdmOGY5NzdjM2U2
M2YxNTcxMTAyMTUwZGU2NzZhOWRlMzZjYS4uMWUyOTEwYzViM2ZlODlmOGQxMDIzMjUwODA1MTNj
MGJmNWZlZTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2hhcmVkIG9iamVj
dCwgU2hhcmVkUm91dGluZ0FyYml0cmF0b3IsIHRvIGJlIHVzZWQgYm90aCBpbiB0aGUgVUlQcm9j
ZXNzICh3aGVuIG1lZGlhCisgICAgICAgIGluIHRoZSBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxl
ZCkgYW5kIHRoZSBHUFVQcm9jZXNzICh3aGVuIGl0IGlzKS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91
dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKToKKwogMjAyMS0wNS0wNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjc2ODgzKTogW0RlYnVnXSBBU1NFUlRJT04gRkFJTEVE
OiBpbmRleCAhPSBub3RGb3VuZCBpbiBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldEN1cnJlbnRTZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2ZkNzllYmNiOTc4ODhhMjhmMGZk
NzM0YWFiNWY4YzBiYTU5OTNjZi4uZmMwZjJlNWQ5MTYyNmQwZTZiZTE0MTQxNzY4NTc3MzNmNjZj
ZGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wNS0wNCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdIE1v
dmUgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSB0byB0aGUgR1BVIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzUzNQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAxNTI1NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3LCBsb2NhbC1vbmx5IG9iamVjdCB3
aGljaCBjYW4gYWdncmVnYXRlIGNoYW5nZXMgdG8gdGhlIGF1ZGlvIHJvdXRpbmcuCisgICAgICAg
IFRoZSBVSVByb2Nlc3MgdmVyc2lvbiBvZiB0aGlzIG9iamVjdCBzcGFucyBhIHByb2Nlc3MgYm91
bmRhcnksIGJ1dCB0aGlzIG5ldworICAgICAgICBvYmplY3QgY2FuIG9wZXJhdGUgbG9jYWxseSB3
aXRob3V0IGFuIFhQQyBjb21tdW5pY2F0aW9uIGNoYW5uZWwuIEFzIHBhcnQgb2YgdGhpcworICAg
ICAgICBjaGFuZ2UsIHRoZSAiU2hhcmVkQXJiaXRyYXRvciIgaW4gQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eUNvY29hIGhhcyBiZWVuCisgICAgICAgIG1vdmVkIGludG8gV2ViQ29y
ZSB0byBiZSB1c2VkIGJvdGggdGhlcmUgYW5kIGluIHRoaXMgbmV3IG9iamVjdC4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9z
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yOjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6fkxvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0
aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpsZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbik6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5o
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlh
L0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmJlZ2lu
Um91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KToKKyAgICAgICAgKFdlYktpdDo6QXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6ZW5kUm91dGluZ0FyYml0cmF0aW9uKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OnNo
YXJlZEluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRv
cjo6aXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvckFy
Yml0cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpl
bmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb1Nlc3Npb246OnNldENhdGVnb3J5KToKKwogMjAyMS0wNS0wNCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFsbG93IEhUTUxNZWRpYUVsZW1l
bnQgcHJlbG9hZCA+ICJtZXRhZGF0YSIgb24gaVBhZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAppbmRleCAzMzRhOGM5NDBlODhlMzYxY2ZiMzE1ZDdiYzg5ODViNTM0MDk4NmUwLi5h
NzVkY2M3ZWFhZjlkYTkwODFiYmU3OTdiYzQ5ODRiNzg2Nzk1ZWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTIyNyw2ICsyMjcsNyBAQCBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxl
UmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1h
Yy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KIHBsYXRmb3JtL2F1
ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKK3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5n
QXJiaXRyYXRvci5tbQogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNG
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDExMDZmYzkwYjNjOTgyNjM1YzYwZmQ5YTQwZjdmYTQyYTcyYWRlY2EuLmE2MmZh
MWM1MmVmMGZiZmIwZTE2NTYyODE1NWQ2OTFjZDY4YzdjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyOTgsNiArNDI5OCw3
IEBACiAJCUNEMzM2RjY0MTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjMx
N0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNEMzM2
RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjUxN0ZBMEFD
NjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgKi87IH07CiAJCUNEMzM2
RjY4MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzM2RjY2MTdGQTBBQzYw
MERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLzsgfTsKKwkJQ0QzNkMxNkIy
NjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM2QzE2ODI2MEE2M0QzMDBDOEM1
MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVk
aWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDNB
NDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyog
U291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3Vy
Y2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9
OwpAQCAtMTQ4MjIsNiArMTQ4MjMsOCBAQAogCQlDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9UcmFja1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qz
MzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMzNkY2NjE3RkEwQUM2MDBE
RERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDM2QzE2ODI2MEE2M0QzMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0Fy
Yml0cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzNkMxNjkyNjBBNjNENDAwQzhDNTI5IC8qIFNo
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkUm91
dGluZ0FyYml0cmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzdCMzc0
MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8qIERp
YWdub3N0aWNMb2dnaW5nS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qz
QTQ5NTUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMxMjQ5LDYgKzMxMjUyLDggQEAKIAkJCQlGRDMxNjBCNjEyQjAyNzJBMDBD
MUEzNTkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgKi8sCiAJCQkJQ0Q1NERFNDkx
NzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5tbSAqLywKIAkJCQlGRDMxNjBCQTEy
QjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovLAorCQkJCUNEMzZDMTY4MjYwQTYz
RDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCUNEMzZDMTY5
MjYwQTYzRDQwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM1MDQwLDYg
KzM1MDQ1LDcgQEAKIAkJCQkxRDlGMEZDMTIxMjIwMjlCMDA1RDhGRDQgLyogU2hhcmVEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBOTFEQzI0Q0Y0NkZFMDBCRkQ4OUMgLyogU2hh
cmVkR2FtZXBhZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDM2QzE2QjI2MEE2NUNDMDBD
OEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NERGQUQwMUY3REFFNUQwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCURGMTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IGEyNTEyOWFiYzAzM2QxZjM1YzlmYWU2
MWNhNjgwZTUwNzlhNzM4ZmMuLmEwZDhhYTI5OTQ1MWQ4MWNiMjY2YTQ2MzJmNjY3ZDhjZDBhNzA5
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBA
IC0xNDUsNyArMTQ1LDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUm91dGluZ0FyYml0cmF0
aW9uRXJyb3IgOiB1aW50OF90IHsgTm9uZSwgRmFpbGVkLCBDYW5jZWxsZWQgfTsKICAgICBlbnVt
IGNsYXNzIERlZmF1bHRSb3V0ZUNoYW5nZWQgOiBib29sIHsgTm8sIFllcyB9OwogCi0gICAgdmly
dHVhbCB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KEF1ZGlvU2Vzc2lv
bjo6Q2F0ZWdvcnlUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRpbmdBcmJpdHJhdGlv
bkVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkKT4mJikgPSAwOworICAgIHVzaW5nIEFyYml0cmF0
aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRpbmdBcmJpdHJhdGlvbkVy
cm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkKT47CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Sb3V0
aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUsIEFy
Yml0cmF0aW9uQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsZWF2ZVJvdXRpbmdB
YnJpdHJhdGlvbigpID0gMDsKIAogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmZGY0YmIwODI2MjAyM2Y4ODRmMTk1ZGU1YzQ2ZTkxZDhmYjk4OTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0Fy
Yml0cmF0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdf
QVJCSVRFUikKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yJiBzaGFyZWRJbnN0YW5jZSgp
OworCisgICAgdXNpbmcgUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRpb25DbGllbnQ6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOworICAgIHVzaW5n
IERlZmF1bHRSb3V0ZUNoYW5nZWQgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGll
bnQ6OkRlZmF1bHRSb3V0ZUNoYW5nZWQ7CisgICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6QXJiaXRyYXRpb25DYWxsYmFj
azsKKworICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFRva2VuIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFRva2VuPiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFVuaXF1ZVJlZjxUb2tlbj4gY3JlYXRlKCk7CisgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIFVuaXF1ZVJlZjxUb2tlbj4gV1RGOjptYWtlVW5pcXVlUmVmV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxUb2tlbj4oKTsKKyAgICAgICAgVG9rZW4oKSA9IGRlZmF1bHQ7
CisgICAgfTsKKworICAgIGJvb2wgaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKGNvbnN0
IFRva2VuJik7CisgICAgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKGNvbnN0
IFRva2VuJiwgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUsIEFyYml0cmF0aW9uQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBlbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tlbiYp
OworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlPiBt
X2N1cnJlbnRDYXRlZ29yeSB7IEF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OworICAgIFdlYWtIYXNoU2V0
PFRva2VuPiBtX3Rva2VuczsKKyAgICBWZWN0b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gbV9lbnF1
ZXVlZENhbGxiYWNrczsKKyAgICBib29sIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgeyBmYWxz
ZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNzUyN2U3YjVkYjZiOWM4OGZkMmQ4OWU5YTEwYWJmOTUzZmZjZjUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yLm1tCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIgorCisjaWYgRU5BQkxFKFJP
VVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKKyNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVbmlxdWVSZWY8U2hh
cmVkUm91dGluZ0FyYml0cmF0b3I6OlRva2VuPiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6VG9r
ZW46OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8VG9rZW4+KCk7Cit9CisK
K1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yJiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVk
SW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcj4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitib29sIFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yOjppc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3Qg
VG9rZW4mIHRva2VuKQoreworICAgIHJldHVybiBtX3Rva2Vucy5jb250YWlucyh0b2tlbik7Cit9
CisKK3ZvaWQgU2hhcmVkUm91dGluZ0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9u
Rm9yVG9rZW4oY29uc3QgVG9rZW4mIHRva2VuLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBy
ZXF1ZXN0ZWRDYXRlZ29yeSwgQXJiaXRyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IEFTU0VSVCghaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKHRva2VuKSk7CisKKyAgICBp
ZiAobV9zZXR1cEFyYml0cmF0aW9uT25nb2luZykgeworICAgICAgICBtX2VucXVldWVkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgd2Vha1Rva2VuID0gbWFrZVdlYWtQdHIodG9rZW4pLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERl
ZmF1bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrVG9rZW4pCisg
ICAgICAgICAgICAgICAgbV90b2tlbnMuYWRkKCp3ZWFrVG9rZW4pOworCisgICAgICAgICAgICBj
YWxsYmFjayhlcnJvciwgcm91dGVDaGFuZ2VkKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX2N1cnJlbnRDYXRlZ29yeSkgeworICAgICAgICBpZiAo
Km1fY3VycmVudENhdGVnb3J5ID49IHJlcXVlc3RlZENhdGVnb3J5KSB7CisgICAgICAgICAgICBt
X3Rva2Vucy5hZGQodG9rZW4pOworICAgICAgICAgICAgY2FsbGJhY2soUm91dGluZ0FyYml0cmF0
aW9uRXJyb3I6Ok5vbmUsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0
ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9uXTsKKyAgICB9
CisKKyAgICBtX2N1cnJlbnRDYXRlZ29yeSA9IHJlcXVlc3RlZENhdGVnb3J5OworCisgICAgQVZB
dWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5IGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1
ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5YmFjazsKKyAgICBzd2l0Y2ggKHJlcXVl
c3RlZENhdGVnb3J5KSB7CisgICAgY2FzZSBBdWRpb1Nlc3Npb246Ok1lZGlhUGxheWJhY2s6Cisg
ICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0
ZWdvcnlQbGF5YmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1Nlc3Npb246OlJl
Y29yZEF1ZGlvOgorICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdB
cmJpdHJhdGlvbkNhdGVnb3J5UGxheUFuZFJlY29yZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBdWRpb1Nlc3Npb246OlBsYXlBbmRSZWNvcmQ6CisgICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdv
cnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkVm9pY2U7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOworICAg
IG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrVG9rZW4gPSBtYWtlV2Vha1B0
cih0b2tlbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRp
b25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUg
eworICAgICAgICBpZiAoZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUgJiYg
d2Vha1Rva2VuKQorICAgICAgICAgICAgbV90b2tlbnMuYWRkKCp3ZWFrVG9rZW4pOworCisgICAg
ICAgIGNhbGxiYWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOworICAgIH0pOworCisgICAgW1tQQUw6
OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGJl
Z2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnk6YXJiaXRyYXRpb25DYXRlZ29yeSBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpc10oQk9PTCBkZWZhdWx0RGV2aWNlQ2hhbmdlZCwgTlNFcnJvciAqIF9OdWxs
YWJsZSBlcnJvcikgeworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVmYXVsdERl
dmljZUNoYW5nZWQsIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgICAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiU2hhcmVk
Um91dGluZ0FyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW46ICVzIGZh
aWxlZCB3aXRoIGVycm9yICVzOiVzIiwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoKm1fY3Vy
cmVudENhdGVnb3J5KS5hc2NpaSgpLmRhdGEoKSwgW1tlcnJvciBkb21haW5dIFVURjhTdHJpbmdd
LCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHNhbXBsZSByYXRlIGFuZCBidWZmZXIg
c2l6ZSBmb3IgdGhlIG5ldyBkZWZhdWx0IGRldmljZT8KKyAgICAgICAgICAgIGlmIChkZWZhdWx0
RGV2aWNlQ2hhbmdlZCkKKyAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0RGV2aWNlQ2hhbmdlZCEiKTsKKworICAgICAgICAgICAg
VmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrcyA9IFdURk1vdmUobV9lbnF1ZXVl
ZENhbGxiYWNrcyk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tz
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gUm91dGluZ0FyYml0cmF0aW9uRXJy
b3I6OkZhaWxlZCA6IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lLCBkZWZhdWx0RGV2aWNl
Q2hhbmdlZCA/IERlZmF1bHRSb3V0ZUNoYW5nZWQ6OlllcyA6IERlZmF1bHRSb3V0ZUNoYW5nZWQ6
Ok5vKTsKKworICAgICAgICAgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IGZhbHNlOwor
ICAgICAgICB9KTsKKyAgICB9XTsKK30KKwordm9pZCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6
ZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9rZW4mIHRva2VuKQoreworICAg
IEFTU0VSVChpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKyAgICBtX3Rv
a2Vucy5yZW1vdmUodG9rZW4pOworCisgICAgaWYgKCFtX3Rva2Vucy5jb21wdXRlc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2VucXVldWVk
Q2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Q2Fu
Y2VsbGVkLCBEZWZhdWx0Um91dGVDaGFuZ2VkOjpObyk7CisKKyAgICBtX2VucXVldWVkQ2FsbGJh
Y2tzLmNsZWFyKCk7CisgICAgbV9jdXJyZW50Q2F0ZWdvcnkucmVzZXQoKTsKKyAgICBbW1BBTDo6
Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gbGVh
dmVBcmJpdHJhdGlvbl07Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDk0NDYxOGNk
NDVhNmU1YWFhMGFiM2UxNmQ4NGZmMWJiOTM0NmIxOTQuLmY5MDIwOGQ3ZjZjYzBmZGYyYmM1Mzc4
OGEwYmViZTA1YmJjMzE1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1ZQOVV0aWxpdGllc0NvY29hLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQor
I2luY2x1ZGUgIkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTgs
NiArMjAyLDkgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICAgICAsIG1fYXVkaW9UcmFja1Jl
bmRlcmVyTWFuYWdlcihSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6
OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIo
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkKICNl
bmRpZgorI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9V
VElOR19BUkJJVEVSKQorICAgICwgbV9yb3V0aW5nQXJiaXRyYXRvcihMb2NhbEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yOjpjcmVhdGUoKSkKKyNlbmRpZgogewogICAgIFJFTEVBU0VfQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjI4LDYgKzIzNSwxMCBAQCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAKIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQogeworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9f
Uk9VVElOR19BUkJJVEVSKQorICAgIG1fcm91dGluZ0FyYml0cmF0b3ItPnByb2Nlc3NEaWRUZXJt
aW5hdGUoKTsKKyNlbmRpZgorCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgaWYgKG1fYXVk
aW9TZXNzaW9uUHJveHkpIHsKICAgICAgICAgZ3B1UHJvY2VzcygpLmF1ZGlvU2Vzc2lvbk1hbmFn
ZXIoKS5yZW1vdmVQcm94eSgqbV9hdWRpb1Nlc3Npb25Qcm94eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBiODRh
OGY4MzY3YjRhMTFjOWZlYmMzMjExZmY1YWJjODEyMTY4MTcwLi4yZmMwYTI0MTUyMGQyNzMyYWFl
ZmNhODBkOTE5Mjg2ZDNlNTMxMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4
dDsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OworY2xhc3MgTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvcjsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
Y2xhc3MgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CkBAIC0yODIsNiArMjgzLDEwIEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHk+IG1f
cmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyOwogICAgIGJvb2wgbV9pc0FjdGl2ZU5vd1BsYXlp
bmdQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAm
JiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQorICAgIFVuaXF1ZVJlZjxMb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBtX3JvdXRpbmdBcmJpdHJhdG9yOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1YmM0Y2NjNjQ0MTUzZDA5NWMzZmNhODBmYmE2YzBhMzc5YTA3
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvci5oIgorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYm
IEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3I+IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OmNyZWF0
ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcj4oKTsKK30KKworTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6
TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpCisgICAgOiBtX3Rva2VuKFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkpCit7Cit9CisKK0xvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6On5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yKCkgPSBkZWZhdWx0OworCit2b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3I6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQoreworICAgIGlmIChTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90
b2tlbikpCisgICAgICAgIGxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCk7Cit9CisKK3ZvaWQgTG9j
YWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25X
aXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5n
ZWQpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICBtX2Fy
Yml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6OlBlbmRpbmc7CisgICAgbV9hcmJp
dHJhdGlvblVwZGF0ZVRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisKKyAgICBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRv
a2VuKG1fdG9rZW4sIGNhdGVnb3J5LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJv
ciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hcmJpdHJhdGlvblN0YXR1cyA9
IGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lID8gQXJiaXRyYXRpb25TdGF0
dXM6OkFjdGl2ZSA6IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOworICAgICAgICBjYWxsYmFjayhl
cnJvciwgcm91dGVDaGFuZ2VkKTsKKyAgICB9KTsKK30KKwordm9pZCBMb2NhbEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yOjpsZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbigpCit7CisgICAgU2hh
cmVkUm91dGluZ0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuZW5kUm91dGluZ0FyYml0cmF0
aW9uRm9yVG9rZW4obV90b2tlbik7CisgICAgbV9hcmJpdHJhdGlvblN0YXR1cyA9IEFyYml0cmF0
aW9uU3RhdHVzOjpOb25lOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTQ5MmJiNjg5ODJlZDQ2Mjg2ZTg0ZGVhNWRlMTA1ZWY2
MTU3N2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21hYy9M
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04p
ICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yIGZpbmFsCisgICAgOiBwdWJsaWMgV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZnJpZW5kIFVuaXF1ZVJlZjxMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+KCk7CitwdWJs
aWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yKCk7CisKKyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6QXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OworCisgICAgZW51bSBjbGFzcyBBcmJpdHJhdGlv
blN0YXR1cyA6IHVpbnQ4X3QgeworICAgICAgICBOb25lLAorICAgICAgICBQZW5kaW5nLAorICAg
ICAgICBBY3RpdmUsCisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwor
ICAgIEFyYml0cmF0aW9uU3RhdHVzIGFyYml0cmF0aW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4g
bV9hcmJpdHJhdGlvblN0YXR1czsgfQorICAgIFdhbGxUaW1lIGFyYml0cmF0aW9uVXBkYXRlVGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOyB9CisKK3ByaXZhdGU6
CisgICAgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcigpOworCisgICAgLy8gQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50CisgICAgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxlYXZlUm91dGluZ0Fi
cml0cmF0aW9uKCkgZmluYWw7CisKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OlRva2VuPiBtX3Rva2VuOworICAgIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBXZWJDb3JlOjpBdWRpb1Nlc3Npb246Ok5vbmUgfTsK
KyAgICBBcmJpdHJhdGlvblN0YXR1cyBtX2FyYml0cmF0aW9uU3RhdHVzIHsgQXJiaXRyYXRpb25T
dGF0dXM6Ok5vbmUgfTsKKyAgICBXYWxsVGltZSBtX2FyYml0cmF0aW9uVXBkYXRlVGltZTsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCAwMThi
MjgwN2JmZjQxZGQzMmNjYTU1MzYzMzU3YWM5OGFkM2ZmODBhLi5mMGRiZDUzZWYzNjA3OWM3ZTJm
Mzg5MTc2ZjMwMTVjMmUzN2M0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
QEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllclByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCmluZGV4IDAxYTUzNmVhZThj
Mzc0M2E3ZjgxN2NjOWUyNDY0MjcyOTc1OTVkMTAuLjM4YTA1Njg3YjRkYzIwNGIzY2YxYjBkYjI2
ZWE0YTRlNDY5MmEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCkBAIC0zMCw2ICsz
MCw4IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjYyNmQz
ZjZhYzFjNjQyNDM5ZmQ0ZDkyMjQyZDQwMzE2NDFlMTgzMi4uOWEyM2M0NmIwZjFmZmQ1ZjM3ZTdk
ZTUyYTBlN2E3Y2I1NjQ0MDZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjIsNiArNjIs
NyBAQCBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RD
b2NvYS5tbSBAbm8tdW5pZnkKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9T
Lm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCitHUFVQcm9jZXNzL21hYy9Mb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Q29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaApp
bmRleCBiNDM1MTE5ZTdkZWQ2ZTg0NDEzMTc2MDJjZjgzODQ1NDc3YTI3YTU1Li40ZDkyZThlN2Q1
NmE4ZTQ0OTQ3MTljNTM2ZjhmOTI3ZGNhOThmNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBIQVZFKEFWQVVESU9fUk9VVElOR19B
UkJJVEVSKQorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oPgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CkBAIC01
MCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9y
ID0gV2ViQ29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5n
QXJiaXRyYXRpb25FcnJvcjsKICAgICB1c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpEZWZhdWx0Um91dGVDaGFu
Z2VkOwotICAgIHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkKT47CisgICAg
dXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudDo6QXJiaXRyYXRpb25DYWxsYmFjazsKIAogICAgIGVudW0gY2xhc3Mg
QXJiaXRyYXRpb25TdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTczLDYgKzc3
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
bV9jYXRlZ29yeSB7IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OwogICAgIEFyYml0cmF0
aW9uU3RhdHVzIG1fYXJiaXRyYXRpb25TdGF0dXMgeyBBcmJpdHJhdGlvblN0YXR1czo6Tm9uZSB9
OwogICAgIFdhbGxUaW1lIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOworCisjaWYgSEFWRShBVkFV
RElPX1JPVVRJTkdfQVJCSVRFUikKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OlRva2VuPiBtX3Rva2VuOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9j
b2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0KaW5kZXggYmM3
MGQ0NWVlNzA5MmE2NDFmMjc1NTQyNWVkZjk4MWViMjQ2ZDllNy4uMzgyMTJjYjUzN2E5YjM0YTc5
ODM5NWFjODQ0NjUzNGE2N2ZjNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbQpAQCAtMzMsMTMyICszMywxNCBAQAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LQotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotY2xhc3MgU2hhcmVkQXJi
aXRyYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZEFyYml0cmF0b3ImIHNoYXJlZElu
c3RhbmNlKCk7Ci0KLSAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7Ci0g
ICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKLSAgICB1c2luZyBBcmJpdHJhdGlvbkNh
bGxiYWNrID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6QXJiaXRyYXRpb25D
YWxsYmFjazsKLQotICAgIGJvb2wgaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3Io
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYpOwotICAgIHZvaWQgYmVnaW5Sb3V0
aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
UHJveHkmLCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgZW5kUm91dGluZ0FyYml0
cmF0aW9uRm9yQXJiaXRyYXRvcihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Jik7
Ci0KLXByaXZhdGU6Ci0gICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1f
Y3VycmVudENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07Ci0gICAgV2Vha0hhc2hTZXQ8
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eT4gbV9hcmJpdHJhdG9yczsKLSAgICBW
ZWN0b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gbV9lbnF1ZXVlZENhbGxiYWNrczsKLSAgICBib29s
IG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgeyBmYWxzZSB9OwotfTsKLQotU2hhcmVkQXJiaXRy
YXRvciYgU2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTaGFyZWRBcmJpdHJhdG9yPiBpbnN0YW5jZTsKLSAgICByZXR1cm4gaW5z
dGFuY2U7Ci19Ci0KLWJvb2wgU2hhcmVkQXJiaXRyYXRvcjo6aXNJblJvdXRpbmdBcmJpdHJhdGlv
bkZvckFyYml0cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYgcHJveHkp
Ci17Ci0gICAgcmV0dXJuIG1fYXJiaXRyYXRvcnMuY29udGFpbnMocHJveHkpOwotfQotCi12b2lk
IFNoYXJlZEFyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcihB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSwgQXJiaXRyYXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKQotewotICAgIEFTU0VSVCghaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZv
ckFyYml0cmF0b3IocHJveHkpKTsKLQotICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5n
KSB7Ci0gICAgICAgIG1fZW5xdWV1ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCB3ZWFrUHJveHkg
PSBtYWtlV2Vha1B0cihwcm94eSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0
aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5n
ZWQpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGVycm9yID09IFJvdXRpbmdBcmJpdHJhdGlv
bkVycm9yOjpOb25lICYmIHdlYWtQcm94eSkKLSAgICAgICAgICAgICAgICBtX2FyYml0cmF0b3Jz
LmFkZCgqd2Vha1Byb3h5KTsKLQotICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hh
bmdlZCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
IHJlcXVlc3RlZENhdGVnb3J5ID0gcHJveHkuY2F0ZWdvcnkoKTsKLQotICAgIGlmIChtX2N1cnJl
bnRDYXRlZ29yeSkgewotICAgICAgICBpZiAoKm1fY3VycmVudENhdGVnb3J5ID49IHJlcXVlc3Rl
ZENhdGVnb3J5KSB7Ci0gICAgICAgICAgICBtX2FyYml0cmF0b3JzLmFkZChwcm94eSk7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSwgRGVmYXVsdFJv
dXRlQ2hhbmdlZDo6Tm8pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0Fy
Yml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOwotICAgIH0KLQotICAgIG1fY3VycmVudENhdGVnb3J5
ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7Ci0KLSAgICBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0
ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRl
Z29yeVBsYXliYWNrOwotICAgIHN3aXRjaCAocmVxdWVzdGVkQ2F0ZWdvcnkpIHsKLSAgICBjYXNl
IEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoKLSAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29y
eSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3JkQXVkaW86Ci0gICAgICAgIGFyYml0
cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnlQbGF5QW5k
UmVjb3JkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UGxheUFuZFJl
Y29yZDoKLSAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRy
YXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgbV9zZXR1
cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7Ci0gICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIHdlYWtQcm94eSA9IG1ha2VXZWFrUHRyKHByb3h5KSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91
dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvciA9PSBS
b3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFrUHJveHkpCi0gICAgICAgICAgICBt
X2FyYml0cmF0b3JzLmFkZCgqd2Vha1Byb3h5KTsKLQotICAgICAgICBjYWxsYmFjayhlcnJvciwg
cm91dGVDaGFuZ2VkKTsKLSAgICB9KTsKLQotICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0Fy
Yml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBiZWdpbkFyYml0cmF0aW9uV2l0aENh
dGVnb3J5OmFyYml0cmF0aW9uQ2F0ZWdvcnkgY29tcGxldGlvbkhhbmRsZXI6W3RoaXNdKEJPT0wg
ZGVmYXVsdERldmljZUNoYW5nZWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKLSAgICAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBlcnJvciA9
IHJldGFpblB0cihlcnJvcildIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlNoYXJlZEFyYml0cmF0b3I6OmJlZ2luUm91
dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcjogJXMgZmFpbGVkIHdpdGggZXJyb3IgJXM6JXMi
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50Q2F0ZWdvcnkpLmFzY2lpKCku
ZGF0YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtbZXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1
bHQgZGV2aWNlPwotICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZpY2VDaGFuZ2VkKQotICAgICAg
ICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1
bHREZXZpY2VDaGFuZ2VkISIpOwotCi0gICAgICAgICAgICBWZWN0b3I8QXJiaXRyYXRpb25DYWxs
YmFjaz4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2FsbGJhY2tzKTsKLSAgICAgICAg
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAgICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6RmFpbGVkIDogUm91dGluZ0Fy
Yml0cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFuZ2VkID8gRGVmYXVsdFJvdXRl
Q2hhbmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOwotCi0gICAgICAgICAgICBt
X3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7Ci0gICAgICAgIH0pOwotICAgIH1dOwot
fQotCi12b2lkIFNoYXJlZEFyYml0cmF0b3I6OmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0
cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSYgcHJveHkpCi17Ci0gICAg
QVNTRVJUKGlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKHByb3h5KSk7Ci0gICAg
bV9hcmJpdHJhdG9ycy5yZW1vdmUocHJveHkpOwotCi0gICAgaWYgKCFtX2FyYml0cmF0b3JzLmNv
bXB1dGVzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBjYWxsYmFj
ayA6IG1fZW5xdWV1ZWRDYWxsYmFja3MpCi0gICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJh
dGlvbkVycm9yOjpDYW5jZWxsZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKLQotICAgIG1f
ZW5xdWV1ZWRDYWxsYmFja3MuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRDYXRlZ29yeS5yZXNldCgp
OwotICAgIFtbUEFMOjpnZXRBVkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRp
bmdBcmJpdGVyXSBsZWF2ZUFyYml0cmF0aW9uXTsKLX0KLQogQXVkaW9TZXNzaW9uUm91dGluZ0Fy
Yml0cmF0b3JQcm94eTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eShXZWJQcm9j
ZXNzUHJveHkmIHByb3h5KQogICAgIDogbV9wcm9jZXNzKHByb3h5KQorICAgICwgbV90b2tlbihT
aGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6VG9rZW46OmNyZWF0ZSgpKQogewogICAgIG1fcHJvY2Vz
cy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVzdGluYXRpb25JZCgpLCAqdGhpcyk7
CiB9CkBAIC0xNzAsNyArNTIsNyBAQCBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
Ojp+QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSgpCiAKIHZvaWQgQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCiB7Ci0gICAg
aWYgKFNoYXJlZEFyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuaXNJblJvdXRpbmdBcmJpdHJh
dGlvbkZvckFyYml0cmF0b3IoKnRoaXMpKQorICAgIGlmIChTaGFyZWRSb3V0aW5nQXJiaXRyYXRv
cjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4obV90b2tl
bikpCiAgICAgICAgIGVuZFJvdXRpbmdBcmJpdHJhdGlvbigpOwogfQogCkBAIC0xNzksNyArNjEs
NyBAQCB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmJlZ2luUm91dGlu
Z0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KFdlYgogICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsK
ICAgICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25TdGF0dXM6OlBlbmRpbmc7CiAg
ICAgbV9hcmJpdHJhdGlvblVwZGF0ZVRpbWUgPSBXYWxsVGltZTo6bm93KCk7Ci0gICAgU2hhcmVk
QXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvckFy
Yml0cmF0b3IoKnRoaXMsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZh
dWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgU2hhcmVkUm91dGlu
Z0FyYml0cmF0b3I6OnNoYXJlZEluc3RhbmNlKCkuYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbihtX3Rva2VuLCBjYXRlZ29yeSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJy
b3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPm1fYXJiaXRyYXRpb25TdGF0dXMg
PSBlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSA/IEFyYml0cmF0aW9uU3Rh
dHVzOjpBY3RpdmUgOiBBcmJpdHJhdGlvblN0YXR1czo6Tm9uZTsKICAgICAgICAgY2FsbGJhY2so
ZXJyb3IsIHJvdXRlQ2hhbmdlZCk7CkBAIC0xODgsNyArNzAsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVn
b3J5KFdlYgogCiB2b2lkIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OmVuZFJv
dXRpbmdBcmJpdHJhdGlvbigpCiB7Ci0gICAgU2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFu
Y2UoKS5lbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKCp0aGlzKTsKKyAgICBTaGFy
ZWRSb3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5lbmRSb3V0aW5nQXJiaXRyYXRp
b25Gb3JUb2tlbihtX3Rva2VuKTsKICAgICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRp
b25TdGF0dXM6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhjYzU1Y2YzNDJkZjI2NjI0Njc2Zjc5ZmJmN2Y1OTYwMGM3
ODM0NjcuLmNjZjNkZWZhMDZhY2E2NzZhMTUzNGY0MjI5NDg4MjNkYjY2MTc2ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNyw5ICs3
LDkgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlv
biAqLwotCQkxQTUwREIzODExMEEzQzEzMDAwRDNGRTUgLyogQWxsICovID0geworCQkxQTUwREIz
ODExMEEzQzEzMDAwRDNGRTUgLyogRnJhbWV3b3JrICYgWFBDIFNlcnZpY2VzICovID0gewogCQkJ
aXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFB
NTBEQjQ4MTEwQTNDMjcwMDBEM0ZFNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiQWxsIiAqLzsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAx
QTUwREI0ODExMEEzQzI3MDAwRDNGRTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhBZ2dyZWdhdGVUYXJnZXQgIkZyYW1ld29yayAmIFhQQyBTZXJ2aWNlcyIgKi87CiAJCQlidWls
ZFBoYXNlcyA9ICgKIAkJCQlCQ0ZGQ0E4QTE2MEQ2REVBMDAzREYzMTUgLyogQWRkIFhQQ1NlcnZp
Y2VzIHN5bWxpbmsgKi8sCiAJCQkpOwpAQCAtMjEsNyArMjEsNyBAQAogCQkJCUJDODI4M0Q1MTZC
NEMwMUYwMEEyNzhGRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTJEOUZCMjJDMjM3
NTI0NUMwMDQ5RjkzNiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKLQkJCW5hbWUg
PSBBbGw7CisJCQluYW1lID0gIkZyYW1ld29yayAmIFhQQyBTZXJ2aWNlcyI7CiAJCQlwcm9kdWN0
TmFtZSA9IFdlYktpdDI7CiAJCX07CiAJCTJEN0RFQkQ4MjEyNjlDNkIwMEI5RjczQyAvKiBHZW5l
cmF0ZSBVbmlmaWVkIFNvdXJjZXMgKi8gPSB7CkBAIC03OSw2ICs3OSwxOCBAQAogCQkJbmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJfTsKKwkJQ0QwQzM2RDUyNjM5RDM5QTAwNEUzNUQ4IC8qIEV2ZXJ5dGhpbmcgKi8gPSB7CisJ
CQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
Q0QwQzM2RDYyNjM5RDM5QTAwNEUzNUQ4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYQWdncmVnYXRlVGFyZ2V0ICJFdmVyeXRoaW5nIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQlDRDBDMzZERDI2MzlEM0I0MDA0RTM1RDgg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCQlDRDBDMzZEQjI2MzlEM0FGMDA0RTM1RDgg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gRXZlcnl0aGluZzsK
KwkJCXByb2R1Y3ROYW1lID0gRXZlcnl0aGluZzsKKwkJfTsKIAkJRTFBQzJFMjcyMEY3Qjk0QzAw
QjA4OTdEIC8qIFVubG9jayBLZXljaGFpbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRh
cmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBFMUFDMkUyQjIwRjdCOTRDMDBCMDg5
N0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlVu
bG9jayBLZXljaGFpbiIgKi87CkBAIC0yMjAwLDYgKzIyMTIsMjAgQEAKIAkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZDOwogCQkJcmVtb3RlSW5mbyA9IFdl
YktpdDJTZXJ2aWNlOwogCQl9OworCQlDRDBDMzZEQTI2MzlEM0FGMDA0RTM1RDggLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owor
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0g
MUE1MERCMzgxMTBBM0MxMzAwMEQzRkU1OworCQkJcmVtb3RlSW5mbyA9ICJGcmFtZXdvcmsgJiBY
UEMgU2VydmljZXMiOworCQl9OworCQlDRDBDMzZEQzI2MzlEM0I0MDA0RTM1RDggLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owor
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0g
Q0Q5NTQ5MzQyNjE1OTAwNDAwODM3MkQ5OworCQkJcmVtb3RlSW5mbyA9IFdlYktpdFN3aWZ0Owor
CQl9OwogCQlFMUFDMkUyRDIwRjdCOTg4MDBCMDg5N0QgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9y
dGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAt
NTYwMyw2ICs1NjI5LDggQEAKIAkJQ0QyMENFNzcyNUNEMkI5RDAwNjlCNTQyIC8qIFJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIwQ0U3ODI1Q0QyQjlEMDA2OUI1NDIgLyogUmVtb3Rl
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIwQ0U3OTI1Q0QyQjlFMDA2OUI1NDIgLyogUmVtb3RlQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9IYXJk
d2FyZUxpc3RlbmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Qz
NkMxNkMyNjBBNkVCRTAwQzhDNTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2RDI2MEE2RUJFMDBDOEM1Mjkg
LyogTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRUVGMzEyNTc5OTYxODAwNjU2M0JCIC8qIFJlbW90ZU1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDNFRUYzMjI1Nzk5NjE4MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRUVG
MzMyNTc5OTcxNzAwNjU2M0JCIC8qIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1OTAsNiArNzYx
OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDlGQjIwODIzNzUyMDlEMDA0OUY5MzYgLyog
Y29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluICovLAogCQkJCTJEOUZCMjA3MjM3NTIw
OUQwMDQ5RjkzNiAvKiBHUFVQcm9jZXNzTWFjLm1tICovLAorCQkJCUNEMzZDMTZEMjYwQTZFQkUw
MEM4QzUyOSAvKiBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKKwkJ
CQlDRDM2QzE2QzI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTMyNjEsNiArMTMyOTEsOSBAQAogCQkJCQlBMTZFNjVGRjI1ODE5MzA4MDBF
RTE3NDkgPSB7CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMi40OwogCQkJCQl9Owor
CQkJCQlDRDBDMzZENTI2MzlEMzlBMDA0RTM1RDggPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1Zl
cnNpb24gPSAxMy4wOworCQkJCQl9OwogCQkJCQlDRDk1NDkzNDI2MTU5MDA0MDA4MzcyRDkgPSB7
CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMy4wOwogCQkJCQl9OwpAQCAtMTMyODMs
NyArMTMzMTYsOCBAQAogCQkJcHJvamVjdERpclBhdGggPSAiIjsKIAkJCXByb2plY3RSb290ID0g
IiI7CiAJCQl0YXJnZXRzID0gKAotCQkJCTFBNTBEQjM4MTEwQTNDMTMwMDBEM0ZFNSAvKiBBbGwg
Ki8sCisJCQkJMUE1MERCMzgxMTBBM0MxMzAwMEQzRkU1IC8qIEZyYW1ld29yayAmIFhQQyBTZXJ2
aWNlcyAqLywKKwkJCQlDRDBDMzZENTI2MzlEMzlBMDA0RTM1RDggLyogRXZlcnl0aGluZyAqLywK
IAkJCQk4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0ICovLAogCQkJCUNEOTU0OTM0
MjYxNTkwMDQwMDgzNzJEOSAvKiBXZWJLaXRTd2lmdCAqLywKIAkJCQkyRDdERUJEODIxMjY5QzZC
MDBCOUY3M0MgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovLApAQCAtMTQ2MTUsNiArMTQ2
NDksMTYgQEAKIAkJCXRhcmdldCA9IEJDM0RFNDY1MTVBOTE3NjMwMDhEMjZGQyAvKiBXZWJDb250
ZW50ICovOwogCQkJdGFyZ2V0UHJveHkgPSBCQ0E4RDQ2NzE1QkNFMEQ2MDA5REMxRjEgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OworCQlDRDBDMzZEQjI2MzlEM0FGMDA0RTM1RDgg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSAxQTUwREIzODExMEEzQzEzMDAwRDNGRTUgLyogRnJhbWV3b3JrICYg
WFBDIFNlcnZpY2VzICovOworCQkJdGFyZ2V0UHJveHkgPSBDRDBDMzZEQTI2MzlEM0FGMDA0RTM1
RDggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlDRDBDMzZERDI2MzlEM0I0
MDA0RTM1RDggLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDRDk1NDkzNDI2MTU5MDA0MDA4MzcyRDkgLyogV2Vi
S2l0U3dpZnQgKi87CisJCQl0YXJnZXRQcm94eSA9IENEMEMzNkRDMjYzOUQzQjQwMDRFMzVEOCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCUUxQUMyRTJFMjBGN0I5ODgwMEIw
ODk3RCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKIAkJCXRhcmdldCA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RCAvKiBVbmxvY2sg
S2V5Y2hhaW4gKi87CkBAIC0xNTAyNCw2ICsxNTA2OCwzMCBAQAogCQkJfTsKIAkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwogCQl9OworCQlDRDBDMzZENzI2MzlEMzlBMDA0RTM1RDggLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlDRDBDMzZE
ODI2MzlEMzlBMDA0RTM1RDggLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBB
dXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJQ0QwQzM2RDkyNjM5RDM5QTAwNEUzNUQ4IC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCUNEOTU0OTNDMjYxNTkwMDQwMDgzNzJEOSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSBDRDA5RkQwQTI2MTUyRTIzMDBFNEFDRjEgLyogV2ViS2l0U3dpZnQueGNjb25maWcgKi87CkBA
IC0xNTA3Miw3ICsxNTE0MCw3IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQkJMUE1MERC
NDgxMTBBM0MyNzAwMEQzRkU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJBbGwiICovID0geworCQkxQTUwREI0ODExMEEzQzI3MDAwRDNGRTUgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkZyYW1ld29y
ayAmIFhQQyBTZXJ2aWNlcyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0Owog
CQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQkxQTUwREIzOTExMEEzQzEzMDAwRDNGRTUg
LyogRGVidWcgKi8sCkBAIC0xNTIzMiw2ICsxNTMwMCwxNiBAQAogCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKIAkJfTsKKwkJQ0QwQzM2RDYyNjM5RDM5QTAwNEUzNUQ4IC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJFdmVyeXRoaW5nIiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAor
CQkJCUNEMEMzNkQ3MjYzOUQzOUEwMDRFMzVEOCAvKiBEZWJ1ZyAqLywKKwkJCQlDRDBDMzZEODI2
MzlEMzlBMDA0RTM1RDggLyogUmVsZWFzZSAqLywKKwkJCQlDRDBDMzZEOTI2MzlEMzlBMDA0RTM1
RDggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9
OwogCQlDRDk1NDkzQjI2MTU5MDA0MDA4MzcyRDkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYktpdFN3aWZ0IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24u
Y3BwCmluZGV4IGY1ZWI2MDA0Mzk2M2Y2YTNjZDRhYWI2YWU5OWFjZGRmZTcxNDU2MjcuLjMxOTRh
ZDAzYmNhMzc2YTBiZTU1MzFmNjM1MDJjNGZmYjkxYmFkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiYgUmVtb3Rl
QXVkaW9TZXNzaW9uOjpjb25maWd1cmF0aW9uKCkKIAogdm9pZCBSZW1vdGVBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5
KQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
YXV0byYgY29uZmlndXJhdGlvbiA9IHRoaXMtPmNvbmZpZ3VyYXRpb24oKTsKICAgICBpZiAodHlw
ZSA9PSBjb25maWd1cmF0aW9uLmNhdGVnb3J5ICYmIHBvbGljeSA9PSBjb25maWd1cmF0aW9uLnJv
dXRlU2hhcmluZ1BvbGljeSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyLDkgKzEwMiw2IEBAIHZv
aWQgUmVtb3RlQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgdHlwZSwgUm91
dGVTaGFyaW5nUG9saWN5IHBvbGljCiAgICAgY29uZmlndXJhdGlvbi5yb3V0ZVNoYXJpbmdQb2xp
Y3kgPSBwb2xpY3k7CiAKICAgICBlbnN1cmVDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlQXVkaW9TZXNzaW9uUHJveHk6OlNldENhdGVnb3J5KHR5cGUsIHBvbGljeSksIHsgfSk7Ci0j
ZWxpZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IE1vdmUgQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eSB0byB0aGUgR1BVIHByb2Nlc3MgKHdlYmtpdC5vcmcvYi8yMTc1MzUp
Ci0gICAgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSh0eXBlLCBwb2xpY3kpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKHBvbGljeSk7CkBAIC0xMjks
OCArMTI2LDYgQEAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgUmVtb3RlQXVkaW9TZXNzaW9u
OjpjYXRlZ29yeSgpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1
cm4gY29uZmlndXJhdGlvbigpLmNhdGVnb3J5OwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIHJl
dHVybiBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCk7CiAjZWxzZQogICAgIHJldHVybiBOb25lOwog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427680</attachid>
            <date>2021-05-04 10:00:48 -0700</date>
            <delta_ts>2021-05-04 13:55:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217535-20210504100047.patch</filename>
            <type>text/plain</type>
            <size>48909</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4YjdmOGY5NzdjM2U2
M2YxNTcxMTAyMTUwZGU2NzZhOWRlMzZjYS4uZjEzOGY1YmU4NzcwYjU5Mzk5YTA5YzQwYWJiZjcz
ZWZhZjY4NTIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBvYmplY3Qs
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLCB0byBiZSB1c2VkIGJvdGggaW4gdGhlIFVJUHJvY2Vz
cyAod2hlbiBtZWRpYQorICAgICAgICBpbiB0aGUgR1BVIHByb2Nlc3MgaXMgbm90IGVuYWJsZWQp
IGFuZCB0aGUgR1BVUHJvY2VzcyAod2hlbiBpdCBpcykuCisKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6aXNJblJvdXRp
bmdBcmJpdHJhdGlvbkZvclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdB
cmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbik6CisKIDIwMjEtMDUtMDQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjI3Njg4Myk6IFtEZWJ1Z10gQVNTRVJUSU9OIEZBSUxFRDog
aW5kZXggIT0gbm90Rm91bmQgaW4gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRDdXJyZW50U2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmZDc5ZWJjYjk3ODg4YTI4ZjBmZDcz
NGFhYjVmOGMwYmE1OTkzY2YuLjIyYzZhMDk1YmRjMzljNzEwN2U3M2RiNWE5OTRmYTk4ZTlmZDYz
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDUtMDQgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBNb3Zl
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQVSBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMTUyNTQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgYSBuZXcsIGxvY2FsLW9ubHkgb2JqZWN0IHdoaWNo
IGNhbiBhZ2dyZWdhdGUgY2hhbmdlcyB0byB0aGUgYXVkaW8gcm91dGluZy4KKyAgICAgICAgVGhl
IFVJUHJvY2VzcyB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0IHNwYW5zIGEgcHJvY2VzcyBib3VuZGFy
eSwgYnV0IHRoaXMgbmV3CisgICAgICAgIG9iamVjdCBjYW4gb3BlcmF0ZSBsb2NhbGx5IHdpdGhv
dXQgYW4gWFBDIGNvbW11bmljYXRpb24gY2hhbm5lbC4gQXMgcGFydCBvZiB0aGlzCisgICAgICAg
IGNoYW5nZSwgdGhlICJTaGFyZWRBcmJpdHJhdG9yIiBpbiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5Q29jb2EgaGFzIGJlZW4KKyAgICAgICAgbW92ZWQgaW50byBXZWJDb3JlIHRv
IGJlIHVzZWQgYm90aCB0aGVyZSBhbmQgaW4gdGhpcyBuZXcgb2JqZWN0LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3I6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjp+TG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I6OmxlYXZlUm91dGluZ0Ficml0cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmg6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWEvQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9N
ZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OkF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0
aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjplbmRSb3V0aW5nQXJiaXRyYXRpb24pOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVk
SW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpp
c0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OmVuZFJv
dXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
U2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOgorCiAyMDIxLTA1LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWxsb3cgSFRNTE1lZGlhRWxlbWVudCBw
cmVsb2FkID4gIm1ldGFkYXRhIiBvbiBpUGFkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDMzNGE4Yzk0MGU4OGUzNjFjZmIzMTVkN2JjODk4NWI1MzQwOTg2ZTAuLmE3NWRj
YzdlYWFmOWRhOTA4MWJiZTc5N2JjNDk4NGI3ODY3OTVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMjI3LDYgKzIyNyw3IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFk
ZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNw
cAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQogcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcAorcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yLm1tCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTEwNmZjOTBiM2M5ODI2MzVjNjBmZDlhNDBmN2ZhNDJhNzJhZGVjYS4uYTYyZmExYzUy
ZWYwZmJmYjBlMTY1NjI4MTU1ZDY5MWNkNjhjN2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDI5OCw2ICs0Mjk4LDcgQEAK
IAkJQ0QzMzZGNjQxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MzE3RkEw
QTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJQ0QzMzZGNjcx
N0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2NTE3RkEwQUM2MDBE
RERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0QzMzZGNjgx
N0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjYxN0ZBMEFDNjAwRERE
Q0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9OworCQlDRDM2QzE2QjI2MEE2
NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAv
KiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
QTQ5NTYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYy
MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3Vy
Y2VCdWZmZXIuaCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CkBA
IC0xNDgyMiw2ICsxNDgyMyw4IEBACiAJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRl
b1RyYWNrUHJpdmF0ZUFWRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRl
b1RyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMzNkY2
NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzM2RjY2MTdGQTBBQzYwMERERENE
MCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2OTI2MEE2M0Q0MDBDOEM1MjkgLyogU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMx
QTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1
NTE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzEyNDksNiArMzEyNTIsOCBAQAogCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5
QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3
MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCisJCQkJQ0QzNkMxNjgyNjBBNjNEMzAw
QzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQ0QzNkMxNjkyNjBB
NjNENDAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzUwNDAsNiArMzUw
NDUsNyBAQAogCQkJCTFEOUYwRkMxMjEyMjAyOUIwMDVEOEZENCAvKiBTaGFyZURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE5MURDMjRDRjQ2RkUwMEJGRDg5QyAvKiBTaGFyZWRH
YW1lcGFkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzZDMTZCMjYwQTY1Q0MwMEM4QzUy
OSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0REZB
RDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggYTI1MTI5YWJjMDMzZDFmMzVjOWZhZTYxY2E2
ODBlNTA3OWE3MzhmYy4uYTBkOGFhMjk5NDUxZDgxY2IyNjZhNDYzMmY2NjdkOGNkMGE3MDk2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTE0
NSw3ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBSb3V0aW5nQXJiaXRyYXRpb25F
cnJvciA6IHVpbnQ4X3QgeyBOb25lLCBGYWlsZWQsIENhbmNlbGxlZCB9OwogICAgIGVudW0gY2xh
c3MgRGVmYXVsdFJvdXRlQ2hhbmdlZCA6IGJvb2wgeyBObywgWWVzIH07CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJy
b3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPiYmKSA9IDA7CisgICAgdXNpbmcgQXJiaXRyYXRpb25D
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3Is
IERlZmF1bHRSb3V0ZUNoYW5nZWQpPjsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRy
YXRpb25DYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXZlUm91dGluZ0Ficml0
cmF0aW9uKCkgPSAwOwogCiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdGlvbkNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWZkZjRiYjA4MjYyMDIzZjg4NGYxOTVkZTVjNDZlOTFkOGZiOTg5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJ
VEVSKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgU2hhcmVkUm91dGluZ0FyYml0cmF0b3ImIHNoYXJlZEluc3RhbmNlKCk7CisK
KyAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CisgICAgdXNpbmcgRGVm
YXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6
RGVmYXVsdFJvdXRlQ2hhbmdlZDsKKyAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOwor
CisgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
VG9rZW4+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgVW5pcXVlUmVmPFRva2VuPiBjcmVhdGUoKTsKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgVW5pcXVlUmVmPFRva2VuPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFRva2VuPigpOworICAgICAgICBUb2tlbigpID0gZGVmYXVsdDsKKyAg
ICB9OworCisgICAgYm9vbCBpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9r
ZW4mKTsKKyAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9r
ZW4mLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKGNvbnN0IFRva2VuJik7CisK
K3ByaXZhdGU6CisgICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3Vy
cmVudENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07CisgICAgV2Vha0hhc2hTZXQ8VG9r
ZW4+IG1fdG9rZW5zOworICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVk
Q2FsbGJhY2tzOworICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
NTI3ZTdiNWRiNmI5Yzg4ZmQyZDg5ZTlhMTBhYmY5NTNmZmNmNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0
b3IubW0KQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElO
R19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VuaXF1ZVJlZjxTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6VG9rZW4+IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxUb2tlbj4oKTsKK30KKworU2hh
cmVkUm91dGluZ0FyYml0cmF0b3ImIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0
YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFJvdXRpbmdBcmJpdHJh
dG9yPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK2Jvb2wgU2hhcmVkUm91
dGluZ0FyYml0cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tl
biYgdG9rZW4pCit7CisgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKK30KKwor
dm9pZCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbihjb25zdCBUb2tlbiYgdG9rZW4sIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIHJlcXVl
c3RlZENhdGVnb3J5LCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNT
RVJUKCFpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKworICAgIGlmICht
X3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7CisgICAgICAgIG1fZW5xdWV1ZWRDYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCB3ZWFrVG9rZW4gPSBtYWtlV2Vha1B0cih0b2tlbiksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVs
dFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVy
cm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtUb2tlbikKKyAgICAg
ICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgICAgIGNhbGxi
YWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fY3VycmVudENhdGVnb3J5KSB7CisgICAgICAgIGlmICgqbV9j
dXJyZW50Q2F0ZWdvcnkgPj0gcmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICAgICAgICAgIG1fdG9r
ZW5zLmFkZCh0b2tlbik7CisgICAgICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25F
cnJvcjo6Tm9uZSwgRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNs
YXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOworICAgIH0KKwor
ICAgIG1fY3VycmVudENhdGVnb3J5ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7CisKKyAgICBBVkF1ZGlv
Um91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9S
b3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOworICAgIHN3aXRjaCAocmVxdWVzdGVk
Q2F0ZWdvcnkpIHsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoKKyAgICAg
ICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29y
eVBsYXliYWNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3Jk
QXVkaW86CisgICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0
cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1
ZGlvU2Vzc2lvbjo6UGxheUFuZFJlY29yZDoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9
IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7CisgICAgbV9l
bnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFrUHRyKHRv
a2VuKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVy
cm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFr
VG9rZW4pCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAg
Y2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7CisgICAgfSk7CisKKyAgICBbW1BBTDo6Z2V0
QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gYmVnaW5B
cmJpdHJhdGlvbldpdGhDYXRlZ29yeTphcmJpdHJhdGlvbkNhdGVnb3J5IGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzXShCT09MIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9yICogX051bGxhYmxl
IGVycm9yKSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWZhdWx0RGV2aWNl
Q2hhbmdlZCwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJTaGFyZWRSb3V0
aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbjogJXMgZmFpbGVk
IHdpdGggZXJyb3IgJXM6JXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50
Q2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtb
ZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXpl
IGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNlPworICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZp
Y2VDaGFuZ2VkKQorICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnkoKSAtIGRlZmF1bHREZXZpY2VDaGFuZ2VkISIpOworCisgICAgICAgICAgICBWZWN0
b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2Fs
bGJhY2tzKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6
RmFpbGVkIDogUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFu
Z2VkID8gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8p
OworCisgICAgICAgICAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAg
ICAgIH0pOworICAgIH1dOworfQorCit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRS
b3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tlbiYgdG9rZW4pCit7CisgICAgQVNT
RVJUKGlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbih0b2tlbikpOworICAgIG1fdG9rZW5z
LnJlbW92ZSh0b2tlbik7CisKKyAgICBpZiAoIW1fdG9rZW5zLmNvbXB1dGVzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fZW5xdWV1ZWRDYWxs
YmFja3MpCisgICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpDYW5jZWxs
ZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKKworICAgIG1fZW5xdWV1ZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICBtX2N1cnJlbnRDYXRlZ29yeS5yZXNldCgpOworICAgIFtbUEFMOjpnZXRB
VkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFy
Yml0cmF0aW9uXTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTQ0NjE4Y2Q0NWE2
ZTVhYWEwYWIzZTE2ZDg0ZmYxYmI5MzQ2YjE5NC4uZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBi
ZWJlMDViYmMzMTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTMzLDYgKzEzMywxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvVlA5VXRpbGl0aWVzQ29jb2EuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFJP
VVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisjaW5j
bHVkZSAiTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5OCw2ICsy
MDIsOSBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgICwgbV9hdWRpb1RyYWNrUmVuZGVy
ZXJNYW5hZ2VyKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y3Jl
YXRlKCp0aGlzKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKnRoaXMpKQogI2VuZGlm
CisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5H
X0FSQklURVIpCisgICAgLCBtX3JvdXRpbmdBcmJpdHJhdG9yKExvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3I6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjgsNiArMjM1LDEwIEBAIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIAogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiB7CisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VU
SU5HX0FSQklURVIpCisgICAgbV9yb3V0aW5nQXJiaXRyYXRvci0+cHJvY2Vzc0RpZFRlcm1pbmF0
ZSgpOworI2VuZGlmCisKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAobV9hdWRpb1Nl
c3Npb25Qcm94eSkgewogICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigp
LnJlbW92ZVByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGI4NGE4Zjgz
NjdiNGExMWM5ZmViYzMyMTFmZjVhYmM4MTIxNjgxNzAuLjJmYzBhMjQxNTIwZDI3MzJhYWVmY2E4
MGQ5MTkyODZkM2U1MzEwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIEdQVVByb2Nlc3M7CiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0Owog
Y2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CitjbGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yOwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKQEAgLTI4Miw2ICsyODMsMTAgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eT4gbV9yZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlTm93UGxheWluZ1By
b2Nlc3MgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhB
VkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I+IG1fcm91dGluZ0FyYml0cmF0b3I7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTViYzRjY2M2NDQxNTNkMDk1YzNmY2E4MGZiYTZjMGEzNzlhMDdlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcj4gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yPigpOworfQorCitMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpMb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKCkKKyAgICA6IG1fdG9rZW4oU2hhcmVkUm91
dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUoKSkKK3sKK30KKworTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvcjo6fkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Io
KSA9IGRlZmF1bHQ7CisKK3ZvaWQgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6
cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCit7CisgICAgaWYgKFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
OjpzaGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rva2Vu
KSkKKyAgICAgICAgbGVhdmVSb3V0aW5nQWJyaXRyYXRpb24oKTsKK30KKwordm9pZCBMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhD
YXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+
JiYgY2FsbGJhY2spCit7CisgICAgbV9jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fYXJiaXRy
YXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0YXR1czo6UGVuZGluZzsKKyAgICBtX2FyYml0cmF0
aW9uVXBkYXRlVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFNoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4o
bV90b2tlbiwgY2F0ZWdvcnksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBE
ZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2FyYml0cmF0aW9uU3RhdHVzID0gZXJy
b3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUgPyBBcmJpdHJhdGlvblN0YXR1czo6
QWN0aXZlIDogQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmU7CisgICAgICAgIGNhbGxiYWNrKGVycm9y
LCByb3V0ZUNoYW5nZWQpOworICAgIH0pOworfQorCit2b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3I6OmxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCkKK3sKKyAgICBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5lbmRSb3V0aW5nQXJiaXRyYXRpb25G
b3JUb2tlbihtX3Rva2VuKTsKKyAgICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25T
dGF0dXM6Ok5vbmU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJlNDkyYmI2ODk4MmVkNDYyODZlODRkZWE1ZGUxMDVlZjYxNTc3
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYg
SEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBmcmllbmQgVW5pcXVlUmVmPExvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4oKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+
IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IoKTsKKworICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBXZWJDb3JlOjpBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRpb25DbGllbnQ7CisKKyAgICBlbnVtIGNsYXNzIEFyYml0cmF0aW9uU3Rh
dHVzIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFBlbmRpbmcsCisgICAgICAg
IEFjdGl2ZSwKKyAgICB9OworCisgICAgdm9pZCBwcm9jZXNzRGlkVGVybWluYXRlKCk7CisgICAg
QXJiaXRyYXRpb25TdGF0dXMgYXJiaXRyYXRpb25TdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2Fy
Yml0cmF0aW9uU3RhdHVzOyB9CisgICAgV2FsbFRpbWUgYXJiaXRyYXRpb25VcGRhdGVUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9hcmJpdHJhdGlvblVwZGF0ZVRpbWU7IH0KKworcHJpdmF0ZToKKyAg
ICBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKCk7CisKKyAgICAvLyBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQKKyAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0
cmF0aW9uV2l0aENhdGVnb3J5KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBB
cmJpdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbGVhdmVSb3V0aW5nQWJyaXRy
YXRpb24oKSBmaW5hbDsKKworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6VG9rZW4+IG1fdG9rZW47CisgICAgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRl
Z29yeVR5cGUgbV9jYXRlZ29yeSB7IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OworICAg
IEFyYml0cmF0aW9uU3RhdHVzIG1fYXJiaXRyYXRpb25TdGF0dXMgeyBBcmJpdHJhdGlvblN0YXR1
czo6Tm9uZSB9OworICAgIFdhbGxUaW1lIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAxOGIyODA3
YmZmNDFkZDMyY2NhNTUzNjMzNTdhYzk4YWQzZmY4MGEuLmYwZGJkNTNlZjM2MDc5YzdlMmYzODkx
NzZmMzAxNWMyZTM3YzQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggMDFhNTM2ZWFlOGMzNzQz
YTdmODE3Y2M5ZTI0NjQyNzI5NzU5NWQxMC4uMzhhMDU2ODdiNGRjMjA0YjNjZjFiMGRiMjZlYTRh
NGU0NjkyYTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDgg
QEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3MuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25EYXRhLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmNjI2ZDNmNmFj
MWM2NDI0MzlmZDRkOTIyNDJkNDAzMTY0MWUxODMyLi45YTIzYzQ2YjBmMWZmZDVmMzdlN2RlNTJh
MGU3YTdjYjU2NDQwNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Miw2ICs2Miw3IEBA
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29h
Lm1tIEBuby11bmlmeQogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0K
IEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVk
aWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oCmluZGV4
IGI0MzUxMTllN2RlZDZlODQ0MTMxNzYwMmNmODM4NDU0NzdhMjdhNTUuLjRkOTJlOGU3ZDU2YThl
NDQ5NDcxOWM1MzZmOGY5MjdkY2E5OGY1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
clByb3h5LmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklU
RVIpCisjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKQEAgLTUwLDcg
KzU0LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OlJvdXRpbmdBcmJp
dHJhdGlvbkVycm9yOwogICAgIHVzaW5nIERlZmF1bHRSb3V0ZUNoYW5nZWQgPSBXZWJDb3JlOjpB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkRlZmF1bHRSb3V0ZUNoYW5nZWQ7
Ci0gICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Um91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPjsKKyAgICB1c2lu
ZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOwogCiAgICAgZW51bSBjbGFzcyBBcmJp
dHJhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtNzMsNiArNzcsMTAg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2Nh
dGVnb3J5IHsgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpOb25lIH07CiAgICAgQXJiaXRyYXRpb25T
dGF0dXMgbV9hcmJpdHJhdGlvblN0YXR1cyB7IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lIH07CiAg
ICAgV2FsbFRpbWUgbV9hcmJpdHJhdGlvblVwZGF0ZVRpbWU7CisKKyNpZiBIQVZFKEFWQVVESU9f
Uk9VVElOR19BUkJJVEVSKQorICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6VG9rZW4+IG1fdG9rZW47CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29h
L0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbQppbmRleCBiYzcwZDQ1
ZWU3MDkyYTY0MWYyNzU1NDI1ZWRmOTgxZWIyNDZkOWU3Li4zODIxMmNiNTM3YTliMzRhNzk4Mzk1
YWM4NDQ2NTM0YTY3ZmM1NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywxMzIgKzMzLDE0IEBACiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4KLSNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0j
aW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1jbGFzcyBTaGFyZWRBcmJpdHJh
dG9yIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU2hhcmVkQXJiaXRyYXRvciYgc2hhcmVkSW5zdGFu
Y2UoKTsKLQotICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yID0gQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjsKLSAgICB1
c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9u
Q2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOwotICAgIHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJh
Y2sgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpBcmJpdHJhdGlvbkNhbGxi
YWNrOwotCi0gICAgYm9vbCBpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcihBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Jik7Ci0gICAgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eSYsIEFyYml0cmF0aW9uQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBlbmRSb3V0aW5nQXJiaXRyYXRp
b25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmKTsKLQot
cHJpdmF0ZToKLSAgICBPcHRpb25hbDxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZT4gbV9jdXJy
ZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246Ok5vbmUgfTsKLSAgICBXZWFrSGFzaFNldDxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5PiBtX2FyYml0cmF0b3JzOwotICAgIFZlY3Rv
cjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVkQ2FsbGJhY2tzOwotICAgIGJvb2wgbV9z
ZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07Ci19OwotCi1TaGFyZWRBcmJpdHJhdG9y
JiBTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYXJlZEFyYml0cmF0b3I+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5j
ZTsKLX0KLQotYm9vbCBTaGFyZWRBcmJpdHJhdG9yOjppc0luUm91dGluZ0FyYml0cmF0aW9uRm9y
QXJiaXRyYXRvcihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSkKLXsK
LSAgICByZXR1cm4gbV9hcmJpdHJhdG9ycy5jb250YWlucyhwcm94eSk7Ci19Ci0KLXZvaWQgU2hh
cmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmIHByb3h5LCBBcmJpdHJhdGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKCFpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJi
aXRyYXRvcihwcm94eSkpOwotCi0gICAgaWYgKG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcpIHsK
LSAgICAgICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHdlYWtQcm94eSA9IG1h
a2VXZWFrUHRyKHByb3h5KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdB
cmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJy
b3I6Ok5vbmUgJiYgd2Vha1Byb3h5KQotICAgICAgICAgICAgICAgIG1fYXJiaXRyYXRvcnMuYWRk
KCp3ZWFrUHJveHkpOwotCi0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgcm91dGVDaGFuZ2Vk
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gcmVx
dWVzdGVkQ2F0ZWdvcnkgPSBwcm94eS5jYXRlZ29yeSgpOwotCi0gICAgaWYgKG1fY3VycmVudENh
dGVnb3J5KSB7Ci0gICAgICAgIGlmICgqbV9jdXJyZW50Q2F0ZWdvcnkgPj0gcmVxdWVzdGVkQ2F0
ZWdvcnkpIHsKLSAgICAgICAgICAgIG1fYXJiaXRyYXRvcnMuYWRkKHByb3h5KTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lLCBEZWZhdWx0Um91dGVD
aGFuZ2VkOjpObyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBb
W1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRl
cl0gbGVhdmVBcmJpdHJhdGlvbl07Ci0gICAgfQotCi0gICAgbV9jdXJyZW50Q2F0ZWdvcnkgPSBy
ZXF1ZXN0ZWRDYXRlZ29yeTsKLQotICAgIEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29y
eSBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5
UGxheWJhY2s7Ci0gICAgc3dpdGNoIChyZXF1ZXN0ZWRDYXRlZ29yeSkgewotICAgIGNhc2UgQXVk
aW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrOgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0g
QVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheWJhY2s7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpSZWNvcmRBdWRpbzoKLSAgICAgICAgYXJiaXRyYXRp
b25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNv
cmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpQbGF5QW5kUmVjb3Jk
OgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlv
bkNhdGVnb3J5UGxheUFuZFJlY29yZFZvaWNlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBtX3NldHVwQXJi
aXRyYXRpb25PbmdvaW5nID0gdHJ1ZTsKLSAgICBtX2VucXVldWVkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgd2Vha1Byb3h5ID0gbWFrZVdlYWtQdHIocHJveHkpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRSb3V0ZUNo
YW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yID09IFJvdXRp
bmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtQcm94eSkKLSAgICAgICAgICAgIG1fYXJi
aXRyYXRvcnMuYWRkKCp3ZWFrUHJveHkpOwotCi0gICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0
ZUNoYW5nZWQpOwotICAgIH0pOwotCi0gICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRl
ckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdv
cnk6YXJiaXRyYXRpb25DYXRlZ29yeSBjb21wbGV0aW9uSGFuZGxlcjpbdGhpc10oQk9PTCBkZWZh
dWx0RGV2aWNlQ2hhbmdlZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVmYXVsdERldmljZUNoYW5nZWQsIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKV0gewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiU2hhcmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5n
QXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yOiAlcyBmYWlsZWQgd2l0aCBlcnJvciAlczolcyIsIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKCptX2N1cnJlbnRDYXRlZ29yeSkuYXNjaWkoKS5kYXRh
KCksIFtbZXJyb3IgZG9tYWluXSBVVEY4U3RyaW5nXSwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byByZXNldCBzYW1wbGUgcmF0ZSBhbmQgYnVmZmVyIHNpemUgZm9yIHRoZSBuZXcgZGVmYXVsdCBk
ZXZpY2U/Ci0gICAgICAgICAgICBpZiAoZGVmYXVsdERldmljZUNoYW5nZWQpCi0gICAgICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gZGVmYXVsdERl
dmljZUNoYW5nZWQhIik7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNr
PiBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fZW5xdWV1ZWRDYWxsYmFja3MpOwotICAgICAgICAgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayhlcnJvciA/IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpGYWlsZWQgOiBSb3V0aW5nQXJiaXRy
YXRpb25FcnJvcjo6Tm9uZSwgZGVmYXVsdERldmljZUNoYW5nZWQgPyBEZWZhdWx0Um91dGVDaGFu
Z2VkOjpZZXMgOiBEZWZhdWx0Um91dGVDaGFuZ2VkOjpObyk7Ci0KLSAgICAgICAgICAgIG1fc2V0
dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSBmYWxzZTsKLSAgICAgICAgfSk7Ci0gICAgfV07Ci19Ci0K
LXZvaWQgU2hhcmVkQXJiaXRyYXRvcjo6ZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRv
cihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSkKLXsKLSAgICBBU1NF
UlQoaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IocHJveHkpKTsKLSAgICBtX2Fy
Yml0cmF0b3JzLnJlbW92ZShwcm94eSk7Ci0KLSAgICBpZiAoIW1fYXJiaXRyYXRvcnMuY29tcHV0
ZXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
bV9lbnF1ZXVlZENhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soUm91dGluZ0FyYml0cmF0aW9u
RXJyb3I6OkNhbmNlbGxlZCwgRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOwotCi0gICAgbV9lbnF1
ZXVlZENhbGxiYWNrcy5jbGVhcigpOwotICAgIG1fY3VycmVudENhdGVnb3J5LnJlc2V0KCk7Ci0g
ICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0Fy
Yml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOwotfQotCiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5KFdlYlByb2Nlc3NQ
cm94eSYgcHJveHkpCiAgICAgOiBtX3Byb2Nlc3MocHJveHkpCisgICAgLCBtX3Rva2VuKFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkpCiB7CiAgICAgbV9wcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZXN0aW5hdGlvbklkKCksICp0aGlzKTsKIH0K
QEAgLTE3MCw3ICs1Miw3IEBAIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6On5B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5KCkKIAogdm9pZCBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBpZiAo
U2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9u
Rm9yQXJiaXRyYXRvcigqdGhpcykpCisgICAgaWYgKFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpz
aGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rva2VuKSkK
ICAgICAgICAgZW5kUm91dGluZ0FyYml0cmF0aW9uKCk7CiB9CiAKQEAgLTE3OSw3ICs2MSw3IEBA
IHZvaWQgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25XaXRoQ2F0ZWdvcnkoV2ViCiAgICAgbV9jYXRlZ29yeSA9IGNhdGVnb3J5OwogICAg
IG1fYXJiaXRyYXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0YXR1czo6UGVuZGluZzsKICAgICBt
X2FyYml0cmF0aW9uVXBkYXRlVGltZSA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBTaGFyZWRBcmJp
dHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRy
YXRvcigqdGhpcywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRS
b3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKKyAgICBTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2Vu
KG1fdG9rZW4sIGNhdGVnb3J5LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwg
RGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgewogICAgICAgICBpZiAo
d2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hcmJpdHJhdGlvblN0YXR1cyA9IGVy
cm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lID8gQXJiaXRyYXRpb25TdGF0dXM6
OkFjdGl2ZSA6IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOwogICAgICAgICBjYWxsYmFjayhlcnJv
ciwgcm91dGVDaGFuZ2VkKTsKQEAgLTE4OCw3ICs3MCw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnko
V2ViCiAKIHZvaWQgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6ZW5kUm91dGlu
Z0FyYml0cmF0aW9uKCkKIHsKLSAgICBTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgp
LmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoKnRoaXMpOworICAgIFNoYXJlZFJv
dXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKG1fdG9rZW4pOwogICAgIG1fYXJiaXRyYXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0
YXR1czo6Tm9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOGNjNTVjZjM0MmRmMjY2MjQ2NzZmNzlmYmY3ZjU5NjAwYzc4MzQ2
Ny4uY2NmM2RlZmEwNmFjYTY3NmExNTM0ZjQyMjk0ODgyM2RiNjYxNzZkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03LDkgKzcsOSBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
Ci0JCTFBNTBEQjM4MTEwQTNDMTMwMDBEM0ZFNSAvKiBBbGwgKi8gPSB7CisJCTFBNTBEQjM4MTEw
QTNDMTMwMDBEM0ZFNSAvKiBGcmFtZXdvcmsgJiBYUEMgU2VydmljZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUE1MERC
NDgxMTBBM0MyNzAwMEQzRkU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJBbGwiICovOworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFBNTBE
QjQ4MTEwQTNDMjcwMDBEM0ZFNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiRnJhbWV3b3JrICYgWFBDIFNlcnZpY2VzIiAqLzsKIAkJCWJ1aWxkUGhh
c2VzID0gKAogCQkJCUJDRkZDQThBMTYwRDZERUEwMDNERjMxNSAvKiBBZGQgWFBDU2VydmljZXMg
c3ltbGluayAqLywKIAkJCSk7CkBAIC0yMSw3ICsyMSw3IEBACiAJCQkJQkM4MjgzRDUxNkI0QzAx
RjAwQTI3OEZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMkQ5RkIyMkMyMzc1MjQ1
QzAwNDlGOTM2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwotCQkJbmFtZSA9IEFs
bDsKKwkJCW5hbWUgPSAiRnJhbWV3b3JrICYgWFBDIFNlcnZpY2VzIjsKIAkJCXByb2R1Y3ROYW1l
ID0gV2ViS2l0MjsKIAkJfTsKIAkJMkQ3REVCRDgyMTI2OUM2QjAwQjlGNzNDIC8qIEdlbmVyYXRl
IFVuaWZpZWQgU291cmNlcyAqLyA9IHsKQEAgLTc5LDYgKzc5LDE4IEBACiAJCQluYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9
OworCQlDRDBDMzZENTI2MzlEMzlBMDA0RTM1RDggLyogRXZlcnl0aGluZyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDRDBD
MzZENjI2MzlEMzlBMDA0RTM1RDggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkV2ZXJ5dGhpbmciICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkp
OworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCUNEMEMzNkREMjYzOUQzQjQwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUNEMEMzNkRCMjYzOUQzQUYwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBFdmVyeXRoaW5nOworCQkJ
cHJvZHVjdE5hbWUgPSBFdmVyeXRoaW5nOworCQl9OwogCQlFMUFDMkUyNzIwRjdCOTRDMDBCMDg5
N0QgLyogVW5sb2NrIEtleWNoYWluICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEUxQUMyRTJCMjBGN0I5NEMwMEIwODk3RCAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVW5sb2Nr
IEtleWNoYWluIiAqLzsKQEAgLTIyMDAsNiArMjIxMiwyMCBAQAogCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSBCQzNERTQ2NTE1QTkxNzYzMDA4RDI2RkM7CiAJCQlyZW1vdGVJbmZvID0gV2ViS2l0
MlNlcnZpY2U7CiAJCX07CisJCUNEMEMzNkRBMjYzOUQzQUYwMDRFMzVEOCAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQTUw
REIzODExMEEzQzEzMDAwRDNGRTU7CisJCQlyZW1vdGVJbmZvID0gIkZyYW1ld29yayAmIFhQQyBT
ZXJ2aWNlcyI7CisJCX07CisJCUNEMEMzNkRDMjYzOUQzQjQwMDRFMzVEOCAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDRDk1
NDkzNDI2MTU5MDA0MDA4MzcyRDk7CisJCQlyZW1vdGVJbmZvID0gV2ViS2l0U3dpZnQ7CisJCX07
CiAJCUUxQUMyRTJEMjBGN0I5ODgwMEIwODk3RCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8g
PSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwg
PSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC01NjAz
LDYgKzU2MjksOCBAQAogCQlDRDIwQ0U3NzI1Q0QyQjlEMDA2OUI1NDIgLyogUmVtb3RlQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEMjBDRTc4MjVDRDJCOUQwMDY5QjU0MiAvKiBSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMjBDRTc5MjVDRDJCOUUwMDY5QjU0MiAvKiBSZW1vdGVBdWRpb0hhcmR3
YXJlTGlzdGVuZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0hhcmR3YXJl
TGlzdGVuZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2
QzI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTZEMjYwQTZFQkUwMEM4QzUyOSAvKiBM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDNFRUYzMTI1Nzk5NjE4MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
M0VFRjMyMjU3OTk2MTgwMDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNFRUYzMzI1
Nzk5NzE3MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU5MCw2ICs3NjE4LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEOUZCMjA4MjM3NTIwOUQwMDQ5RjkzNiAvKiBjb20u
YXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gKi8sCiAJCQkJMkQ5RkIyMDcyMzc1MjA5RDAw
NDlGOTM2IC8qIEdQVVByb2Nlc3NNYWMubW0gKi8sCisJCQkJQ0QzNkMxNkQyNjBBNkVCRTAwQzhD
NTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAorCQkJCUNE
MzZDMTZDMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xMzI2MSw2ICsxMzI5MSw5IEBACiAJCQkJCUExNkU2NUZGMjU4MTkzMDgwMEVFMTc0
OSA9IHsKIAkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjQ7CiAJCQkJCX07CisJCQkJ
CUNEMEMzNkQ1MjYzOUQzOUEwMDRFMzVEOCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lv
biA9IDEzLjA7CisJCQkJCX07CiAJCQkJCUNEOTU0OTM0MjYxNTkwMDQwMDgzNzJEOSA9IHsKIAkJ
CQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEzLjA7CiAJCQkJCX07CkBAIC0xMzI4Myw3ICsx
MzMxNiw4IEBACiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwogCQkJcHJvamVjdFJvb3QgPSAiIjsK
IAkJCXRhcmdldHMgPSAoCi0JCQkJMUE1MERCMzgxMTBBM0MxMzAwMEQzRkU1IC8qIEFsbCAqLywK
KwkJCQkxQTUwREIzODExMEEzQzEzMDAwRDNGRTUgLyogRnJhbWV3b3JrICYgWFBDIFNlcnZpY2Vz
ICovLAorCQkJCUNEMEMzNkQ1MjYzOUQzOUEwMDRFMzVEOCAvKiBFdmVyeXRoaW5nICovLAogCQkJ
CThEQzJFRjRGMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQgKi8sCiAJCQkJQ0Q5NTQ5MzQyNjE1
OTAwNDAwODM3MkQ5IC8qIFdlYktpdFN3aWZ0ICovLAogCQkJCTJEN0RFQkQ4MjEyNjlDNkIwMEI5
RjczQyAvKiBHZW5lcmF0ZSBVbmlmaWVkIFNvdXJjZXMgKi8sCkBAIC0xNDYxNSw2ICsxNDY0OSwx
NiBAQAogCQkJdGFyZ2V0ID0gQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZDIC8qIFdlYkNvbnRlbnQg
Ki87CiAJCQl0YXJnZXRQcm94eSA9IEJDQThENDY3MTVCQ0UwRDYwMDlEQzFGMSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJCUNEMEMzNkRCMjYzOUQzQUYwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
KwkJCXRhcmdldCA9IDFBNTBEQjM4MTEwQTNDMTMwMDBEM0ZFNSAvKiBGcmFtZXdvcmsgJiBYUEMg
U2VydmljZXMgKi87CisJCQl0YXJnZXRQcm94eSA9IENEMEMzNkRBMjYzOUQzQUYwMDRFMzVEOCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUNEMEMzNkREMjYzOUQzQjQwMDRF
MzVEOCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IENEOTU0OTM0MjYxNTkwMDQwMDgzNzJEOSAvKiBXZWJLaXRT
d2lmdCAqLzsKKwkJCXRhcmdldFByb3h5ID0gQ0QwQzM2REMyNjM5RDNCNDAwNEUzNUQ4IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJRTFBQzJFMkUyMEY3Qjk4ODAwQjA4OTdE
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwogCQkJdGFyZ2V0ID0gRTFBQzJFMjcyMEY3Qjk0QzAwQjA4OTdEIC8qIFVubG9jayBLZXlj
aGFpbiAqLzsKQEAgLTE1MDI0LDYgKzE1MDY4LDMwIEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CiAJCX07CisJCUNEMEMzNkQ3MjYzOUQzOUEwMDRFMzVEOCAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUNEMEMzNkQ4MjYz
OUQzOUEwMDRFMzVEOCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9t
YXRpYzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQlDRDBDMzZEOTI2MzlEMzlBMDA0RTM1RDggLyogUHJvZHVj
dGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9O
QU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJ
fTsKIAkJQ0Q5NTQ5M0MyNjE1OTAwNDAwODM3MkQ5IC8qIERlYnVnICovID0gewogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IENE
MDlGRDBBMjYxNTJFMjMwMEU0QUNGMSAvKiBXZWJLaXRTd2lmdC54Y2NvbmZpZyAqLzsKQEAgLTE1
MDcyLDcgKzE1MTQwLDcgQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkxQTUwREI0ODEx
MEEzQzI3MDAwRDNGRTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkFsbCIgKi8gPSB7CisJCTFBNTBEQjQ4MTEwQTNDMjcwMDBEM0ZFNSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRnJhbWV3b3JrICYg
WFBDIFNlcnZpY2VzIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTFBNTBEQjM5MTEwQTNDMTMwMDBEM0ZFNSAvKiBE
ZWJ1ZyAqLywKQEAgLTE1MjMyLDYgKzE1MzAwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OwogCQl9OworCQlDRDBDMzZENjI2MzlEMzlBMDA0RTM1RDggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkV2ZXJ5dGhpbmciICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
Q0QwQzM2RDcyNjM5RDM5QTAwNEUzNUQ4IC8qIERlYnVnICovLAorCQkJCUNEMEMzNkQ4MjYzOUQz
OUEwMDRFMzVEOCAvKiBSZWxlYXNlICovLAorCQkJCUNEMEMzNkQ5MjYzOUQzOUEwMDRFMzVEOCAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CUNEOTU0OTNCMjYxNTkwMDQwMDgzNzJEOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiV2ViS2l0U3dpZnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAK
aW5kZXggZjVlYjYwMDQzOTYzZjZhM2NkNGFhYjZhZTk5YWNkZGZlNzE0NTYyNy4uMzE5NGFkMDNi
Y2EzNzZhMGJlNTUzMWY2MzUwMmM0ZmZiOTFiYWRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uJiBSZW1vdGVBdWRp
b1Nlc3Npb246OmNvbmZpZ3VyYXRpb24oKQogCiB2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIHR5cGUsIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRv
JiBjb25maWd1cmF0aW9uID0gdGhpcy0+Y29uZmlndXJhdGlvbigpOwogICAgIGlmICh0eXBlID09
IGNvbmZpZ3VyYXRpb24uY2F0ZWdvcnkgJiYgcG9saWN5ID09IGNvbmZpZ3VyYXRpb24ucm91dGVT
aGFyaW5nUG9saWN5KQogICAgICAgICByZXR1cm47CkBAIC0xMDIsOSArMTAyLDYgQEAgdm9pZCBS
ZW1vdGVBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBSb3V0ZVNo
YXJpbmdQb2xpY3kgcG9saWMKICAgICBjb25maWd1cmF0aW9uLnJvdXRlU2hhcmluZ1BvbGljeSA9
IHBvbGljeTsKIAogICAgIGVuc3VyZUNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eTo6U2V0Q2F0ZWdvcnkodHlwZSwgcG9saWN5KSwgeyB9KTsKLSNlbGlm
IFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5IHRvIHRoZSBHUFUgcHJvY2VzcyAod2Via2l0Lm9yZy9iLzIxNzUzNSkKLSAg
ICBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KHR5cGUsIHBvbGljeSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFSQU0ocG9saWN5KTsKQEAgLTEyOSw4ICsx
MjYsNiBAQCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBSZW1vdGVBdWRpb1Nlc3Npb246OmNh
dGVnb3J5KCkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiBj
b25maWd1cmF0aW9uKCkuY2F0ZWdvcnk7Ci0jZWxpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJu
IEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5vbmU7CiAjZW5k
aWYK
</data>
<flag name="commit-queue"
          id="448379"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427697</attachid>
            <date>2021-05-04 13:55:53 -0700</date>
            <delta_ts>2021-05-04 16:50:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217535-20210504135553.patch</filename>
            <type>text/plain</type>
            <size>48995</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU4NzhiZTI0ZWNjMzA4
NWJkODgyN2NlNjhjOWMzNWFmNTliNTNkMy4uYjBlOTgwNDYyMGU3OGU2MTAwM2EyMTIyYzM0OTNi
MzI1ZDFhYzQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IHRvIHRoZSBHUFUg
cHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDE1MjU0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBvYmplY3Qs
IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLCB0byBiZSB1c2VkIGJvdGggaW4gdGhlIFVJUHJvY2Vz
cyAod2hlbiBtZWRpYQorICAgICAgICBpbiB0aGUgR1BVIHByb2Nlc3MgaXMgbm90IGVuYWJsZWQp
IGFuZCB0aGUgR1BVUHJvY2VzcyAod2hlbiBpdCBpcykuCisKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6aXNJblJvdXRp
bmdBcmJpdHJhdGlvbkZvclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFJvdXRpbmdB
cmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRSb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbik6CisKIDIwMjEtMDUtMDQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjI3Njg4Myk6IFtEZWJ1Z10gQVNTRVJUSU9OIEZBSUxFRDog
aW5kZXggIT0gbm90Rm91bmQgaW4gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRDdXJyZW50U2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZiNmQxMjNiNmEyZmI1MmEwZmE0ZDlm
MWZhM2IyMWU4NGI1MDNkMmYuLmU2MTI2ZTU1NGQwMGYzOTliM2FlZTBhZGJiNmE0ZjhjM2M5N2E4
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDUtMDQgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBNb3Zl
IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgdG8gdGhlIEdQVSBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMTUyNTQ4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgYSBuZXcsIGxvY2FsLW9ubHkgb2JqZWN0IHdoaWNo
IGNhbiBhZ2dyZWdhdGUgY2hhbmdlcyB0byB0aGUgYXVkaW8gcm91dGluZy4KKyAgICAgICAgVGhl
IFVJUHJvY2VzcyB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0IHNwYW5zIGEgcHJvY2VzcyBib3VuZGFy
eSwgYnV0IHRoaXMgbmV3CisgICAgICAgIG9iamVjdCBjYW4gb3BlcmF0ZSBsb2NhbGx5IHdpdGhv
dXQgYW4gWFBDIGNvbW11bmljYXRpb24gY2hhbm5lbC4gQXMgcGFydCBvZiB0aGlzCisgICAgICAg
IGNoYW5nZSwgdGhlICJTaGFyZWRBcmJpdHJhdG9yIiBpbiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5Q29jb2EgaGFzIGJlZW4KKyAgICAgICAgbW92ZWQgaW50byBXZWJDb3JlIHRv
IGJlIHVzZWQgYm90aCB0aGVyZSBhbmQgaW4gdGhpcyBuZXcgb2JqZWN0LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3I6OkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjp+TG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I6OmxlYXZlUm91dGluZ0Ficml0cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmg6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWEvQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9N
ZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6OkF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0
aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjplbmRSb3V0aW5nQXJiaXRyYXRpb24pOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVk
SW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRBcmJpdHJhdG9yOjpp
c0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZEFyYml0cmF0b3I6OmVuZFJv
dXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
U2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOgorCiAyMDIxLTA1LTA0ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWxsb3cgSFRNTE1lZGlhRWxlbWVudCBw
cmVsb2FkID4gIm1ldGFkYXRhIiBvbiBpUGFkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDMzNGE4Yzk0MGU4OGUzNjFjZmIzMTVkN2JjODk4NWI1MzQwOTg2ZTAuLmE3NWRj
YzdlYWFmOWRhOTA4MWJiZTc5N2JjNDk4NGI3ODY3OTVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMjI3LDYgKzIyNyw3IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFk
ZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNw
cAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQogcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcAorcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yLm1tCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOWUwYzFiZGFlNzAzODI5NzJjMzU0YTI3YjUxN2MzOTI4NTg5MmUwNS4uNmU1NGUwNDE5
NTYzMjhkZTVkNDE3YTIwNWQ1YWYyMzExOGY0MjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMwMSw2ICs0MzAxLDcgQEAK
IAkJQ0QzMzZGNjQxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MzE3RkEw
QTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLzsgfTsKIAkJQ0QzMzZGNjcx
N0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2NTE3RkEwQUM2MDBE
RERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLzsgfTsKIAkJQ0QzMzZGNjgx
N0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNjYxN0ZBMEFDNjAwRERE
Q0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9OworCQlDRDM2QzE2QjI2MEE2
NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAv
KiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
QTQ5NTYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYy
MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3Vy
Y2VCdWZmZXIuaCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CkBA
IC0xNDgyNyw2ICsxNDgyOCw4IEBACiAJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRl
b1RyYWNrUHJpdmF0ZUFWRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRl
b1RyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMzNkY2
NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzM2RjY2MTdGQTBBQzYwMERERENE
MCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2OTI2MEE2M0Q0MDBDOEM1MjkgLyogU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMx
QTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1
NTE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzEyMjUsNiArMzEyMjgsOCBAQAogCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5
QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3
MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCisJCQkJQ0QzNkMxNjgyNjBBNjNEMzAw
QzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCisJCQkJQ0QzNkMxNjkyNjBB
NjNENDAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzUwMTcsNiArMzUw
MjIsNyBAQAogCQkJCTFEOUYwRkMxMjEyMjAyOUIwMDVEOEZENCAvKiBTaGFyZURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE5MURDMjRDRjQ2RkUwMEJGRDg5QyAvKiBTaGFyZWRH
YW1lcGFkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzZDMTZCMjYwQTY1Q0MwMEM4QzUy
OSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM0REZB
RDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggYTI1MTI5YWJjMDMzZDFmMzVjOWZhZTYxY2E2
ODBlNTA3OWE3MzhmYy4uYTBkOGFhMjk5NDUxZDgxY2IyNjZhNDYzMmY2NjdkOGNkMGE3MDk2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTE0
NSw3ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBSb3V0aW5nQXJiaXRyYXRpb25F
cnJvciA6IHVpbnQ4X3QgeyBOb25lLCBGYWlsZWQsIENhbmNlbGxlZCB9OwogICAgIGVudW0gY2xh
c3MgRGVmYXVsdFJvdXRlQ2hhbmdlZCA6IGJvb2wgeyBObywgWWVzIH07CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJy
b3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPiYmKSA9IDA7CisgICAgdXNpbmcgQXJiaXRyYXRpb25D
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGluZ0FyYml0cmF0aW9uRXJyb3Is
IERlZmF1bHRSb3V0ZUNoYW5nZWQpPjsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbldpdGhDYXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRy
YXRpb25DYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXZlUm91dGluZ0Ficml0
cmF0aW9uKCkgPSAwOwogCiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdGlvbkNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWZkZjRiYjA4MjYyMDIzZjg4NGYxOTVkZTVjNDZlOTFkOGZiOTg5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRy
YXRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19BUkJJ
VEVSKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgU2hhcmVkUm91dGluZ0FyYml0cmF0b3ImIHNoYXJlZEluc3RhbmNlKCk7CisK
KyAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CisgICAgdXNpbmcgRGVm
YXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6
RGVmYXVsdFJvdXRlQ2hhbmdlZDsKKyAgICB1c2luZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOwor
CisgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
VG9rZW4+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgVW5pcXVlUmVmPFRva2VuPiBjcmVhdGUoKTsKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgVW5pcXVlUmVmPFRva2VuPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFRva2VuPigpOworICAgICAgICBUb2tlbigpID0gZGVmYXVsdDsKKyAg
ICB9OworCisgICAgYm9vbCBpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9r
ZW4mKTsKKyAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9r
ZW4mLCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgQXJiaXRyYXRpb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2VuKGNvbnN0IFRva2VuJik7CisK
K3ByaXZhdGU6CisgICAgT3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3Vy
cmVudENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07CisgICAgV2Vha0hhc2hTZXQ8VG9r
ZW4+IG1fdG9rZW5zOworICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVk
Q2FsbGJhY2tzOworICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
NTI3ZTdiNWRiNmI5Yzg4ZmQyZDg5ZTlhMTBhYmY5NTNmZmNmNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0
b3IubW0KQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElO
R19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VuaXF1ZVJlZjxTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6VG9rZW4+IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxUb2tlbj4oKTsKK30KKworU2hh
cmVkUm91dGluZ0FyYml0cmF0b3ImIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0
YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYXJlZFJvdXRpbmdBcmJpdHJh
dG9yPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK2Jvb2wgU2hhcmVkUm91
dGluZ0FyYml0cmF0b3I6OmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tl
biYgdG9rZW4pCit7CisgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKK30KKwor
dm9pZCBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JU
b2tlbihjb25zdCBUb2tlbiYgdG9rZW4sIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIHJlcXVl
c3RlZENhdGVnb3J5LCBBcmJpdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNT
RVJUKCFpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4odG9rZW4pKTsKKworICAgIGlmICht
X3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7CisgICAgICAgIG1fZW5xdWV1ZWRDYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCB3ZWFrVG9rZW4gPSBtYWtlV2Vha1B0cih0b2tlbiksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVs
dFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVy
cm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtUb2tlbikKKyAgICAg
ICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAgICAgIGNhbGxi
YWNrKGVycm9yLCByb3V0ZUNoYW5nZWQpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fY3VycmVudENhdGVnb3J5KSB7CisgICAgICAgIGlmICgqbV9j
dXJyZW50Q2F0ZWdvcnkgPj0gcmVxdWVzdGVkQ2F0ZWdvcnkpIHsKKyAgICAgICAgICAgIG1fdG9r
ZW5zLmFkZCh0b2tlbik7CisgICAgICAgICAgICBjYWxsYmFjayhSb3V0aW5nQXJiaXRyYXRpb25F
cnJvcjo6Tm9uZSwgRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNs
YXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOworICAgIH0KKwor
ICAgIG1fY3VycmVudENhdGVnb3J5ID0gcmVxdWVzdGVkQ2F0ZWdvcnk7CisKKyAgICBBVkF1ZGlv
Um91dGluZ0FyYml0cmF0aW9uQ2F0ZWdvcnkgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9S
b3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXliYWNrOworICAgIHN3aXRjaCAocmVxdWVzdGVk
Q2F0ZWdvcnkpIHsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6TWVkaWFQbGF5YmFjazoKKyAgICAg
ICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29y
eVBsYXliYWNrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvU2Vzc2lvbjo6UmVjb3Jk
QXVkaW86CisgICAgICAgIGFyYml0cmF0aW9uQ2F0ZWdvcnkgPSBBVkF1ZGlvUm91dGluZ0FyYml0
cmF0aW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1
ZGlvU2Vzc2lvbjo6UGxheUFuZFJlY29yZDoKKyAgICAgICAgYXJiaXRyYXRpb25DYXRlZ29yeSA9
IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNvcmRWb2ljZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7CisgICAgbV9l
bnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHdlYWtUb2tlbiA9IG1ha2VXZWFrUHRyKHRv
a2VuKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVy
cm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChlcnJvciA9PSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSAmJiB3ZWFr
VG9rZW4pCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQoKndlYWtUb2tlbik7CisKKyAgICAgICAg
Y2FsbGJhY2soZXJyb3IsIHJvdXRlQ2hhbmdlZCk7CisgICAgfSk7CisKKyAgICBbW1BBTDo6Z2V0
QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRlcl0gYmVnaW5B
cmJpdHJhdGlvbldpdGhDYXRlZ29yeTphcmJpdHJhdGlvbkNhdGVnb3J5IGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzXShCT09MIGRlZmF1bHREZXZpY2VDaGFuZ2VkLCBOU0Vycm9yICogX051bGxhYmxl
IGVycm9yKSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWZhdWx0RGV2aWNl
Q2hhbmdlZCwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSB7CisgICAgICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJTaGFyZWRSb3V0
aW5nQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbjogJXMgZmFpbGVk
IHdpdGggZXJyb3IgJXM6JXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZygqbV9jdXJyZW50
Q2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBbW2Vycm9yIGRvbWFpbl0gVVRGOFN0cmluZ10sIFtb
ZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1ZmZlciBzaXpl
IGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNlPworICAgICAgICAgICAgaWYgKGRlZmF1bHREZXZp
Y2VDaGFuZ2VkKQorICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnkoKSAtIGRlZmF1bHREZXZpY2VDaGFuZ2VkISIpOworCisgICAgICAgICAgICBWZWN0
b3I8QXJiaXRyYXRpb25DYWxsYmFjaz4gY2FsbGJhY2tzID0gV1RGTW92ZShtX2VucXVldWVkQ2Fs
bGJhY2tzKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6
RmFpbGVkIDogUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUsIGRlZmF1bHREZXZpY2VDaGFu
Z2VkID8gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6WWVzIDogRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8p
OworCisgICAgICAgICAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAg
ICAgIH0pOworICAgIH1dOworfQorCit2b2lkIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjplbmRS
b3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihjb25zdCBUb2tlbiYgdG9rZW4pCit7CisgICAgQVNT
RVJUKGlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbih0b2tlbikpOworICAgIG1fdG9rZW5z
LnJlbW92ZSh0b2tlbik7CisKKyAgICBpZiAoIW1fdG9rZW5zLmNvbXB1dGVzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fZW5xdWV1ZWRDYWxs
YmFja3MpCisgICAgICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpDYW5jZWxs
ZWQsIERlZmF1bHRSb3V0ZUNoYW5nZWQ6Ok5vKTsKKworICAgIG1fZW5xdWV1ZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICBtX2N1cnJlbnRDYXRlZ29yeS5yZXNldCgpOworICAgIFtbUEFMOjpnZXRB
VkF1ZGlvUm91dGluZ0FyYml0ZXJDbGFzcygpIHNoYXJlZFJvdXRpbmdBcmJpdGVyXSBsZWF2ZUFy
Yml0cmF0aW9uXTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOTQ0NjE4Y2Q0NWE2
ZTVhYWEwYWIzZTE2ZDg0ZmYxYmI5MzQ2YjE5NC4uZjkwMjA4ZDdmNmNjMGZkZjJiYzUzNzg4YTBi
ZWJlMDViYmMzMTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTMzLDYgKzEzMywxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvVlA5VXRpbGl0aWVzQ29jb2EuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFJP
VVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisjaW5j
bHVkZSAiTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5OCw2ICsy
MDIsOSBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgICwgbV9hdWRpb1RyYWNrUmVuZGVy
ZXJNYW5hZ2VyKFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y3Jl
YXRlKCp0aGlzKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKnRoaXMpKQogI2VuZGlm
CisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5H
X0FSQklURVIpCisgICAgLCBtX3JvdXRpbmdBcmJpdHJhdG9yKExvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3I6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjgsNiArMjM1LDEwIEBAIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIAogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiB7CisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VU
SU5HX0FSQklURVIpCisgICAgbV9yb3V0aW5nQXJiaXRyYXRvci0+cHJvY2Vzc0RpZFRlcm1pbmF0
ZSgpOworI2VuZGlmCisKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAobV9hdWRpb1Nl
c3Npb25Qcm94eSkgewogICAgICAgICBncHVQcm9jZXNzKCkuYXVkaW9TZXNzaW9uTWFuYWdlcigp
LnJlbW92ZVByb3h5KCptX2F1ZGlvU2Vzc2lvblByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGI4NGE4Zjgz
NjdiNGExMWM5ZmViYzMyMTFmZjVhYmM4MTIxNjgxNzAuLjJmYzBhMjQxNTIwZDI3MzJhYWVmY2E4
MGQ5MTkyODZkM2U1MzEwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIEdQVVByb2Nlc3M7CiBjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0Owog
Y2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CitjbGFzcyBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yOwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBjbGFz
cyBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKQEAgLTI4Miw2ICsyODMsMTAgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eT4gbV9yZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlTm93UGxheWluZ1By
b2Nlc3MgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhB
VkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCisgICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I+IG1fcm91dGluZ0FyYml0cmF0b3I7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTViYzRjY2M2NDQxNTNkMDk1YzNmY2E4MGZiYTZjMGEzNzlhMDdlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yLmgiCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcj4gTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yPigpOworfQorCitMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpMb2Nh
bEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKCkKKyAgICA6IG1fdG9rZW4oU2hhcmVkUm91
dGluZ0FyYml0cmF0b3I6OlRva2VuOjpjcmVhdGUoKSkKK3sKK30KKworTG9jYWxBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvcjo6fkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3Io
KSA9IGRlZmF1bHQ7CisKK3ZvaWQgTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcjo6
cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCit7CisgICAgaWYgKFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9y
OjpzaGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rva2Vu
KSkKKyAgICAgICAgbGVhdmVSb3V0aW5nQWJyaXRyYXRpb24oKTsKK30KKwordm9pZCBMb2NhbEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yOjpiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhD
YXRlZ29yeShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCk+
JiYgY2FsbGJhY2spCit7CisgICAgbV9jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fYXJiaXRy
YXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0YXR1czo6UGVuZGluZzsKKyAgICBtX2FyYml0cmF0
aW9uVXBkYXRlVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKworICAgIFNoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4o
bV90b2tlbiwgY2F0ZWdvcnksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBE
ZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2FyYml0cmF0aW9uU3RhdHVzID0gZXJy
b3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUgPyBBcmJpdHJhdGlvblN0YXR1czo6
QWN0aXZlIDogQXJiaXRyYXRpb25TdGF0dXM6Ok5vbmU7CisgICAgICAgIGNhbGxiYWNrKGVycm9y
LCByb3V0ZUNoYW5nZWQpOworICAgIH0pOworfQorCit2b2lkIExvY2FsQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3I6OmxlYXZlUm91dGluZ0Ficml0cmF0aW9uKCkKK3sKKyAgICBTaGFyZWRS
b3V0aW5nQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5lbmRSb3V0aW5nQXJiaXRyYXRpb25G
b3JUb2tlbihtX3Rva2VuKTsKKyAgICBtX2FyYml0cmF0aW9uU3RhdHVzID0gQXJiaXRyYXRpb25T
dGF0dXM6Ok5vbmU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJlNDkyYmI2ODk4MmVkNDYyODZlODRkZWE1ZGUxMDVlZjYxNTc3
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWFjL0xvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYg
SEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
Um91dGluZ0FyYml0cmF0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBmcmllbmQgVW5pcXVlUmVmPExvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4oKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+
IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkxvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IoKTsKKworICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBXZWJDb3JlOjpBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRpb25DbGllbnQ7CisKKyAgICBlbnVtIGNsYXNzIEFyYml0cmF0aW9uU3Rh
dHVzIDogdWludDhfdCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFBlbmRpbmcsCisgICAgICAg
IEFjdGl2ZSwKKyAgICB9OworCisgICAgdm9pZCBwcm9jZXNzRGlkVGVybWluYXRlKCk7CisgICAg
QXJiaXRyYXRpb25TdGF0dXMgYXJiaXRyYXRpb25TdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2Fy
Yml0cmF0aW9uU3RhdHVzOyB9CisgICAgV2FsbFRpbWUgYXJiaXRyYXRpb25VcGRhdGVUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9hcmJpdHJhdGlvblVwZGF0ZVRpbWU7IH0KKworcHJpdmF0ZToKKyAg
ICBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yKCk7CisKKyAgICAvLyBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQKKyAgICB2b2lkIGJlZ2luUm91dGluZ0FyYml0
cmF0aW9uV2l0aENhdGVnb3J5KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlLCBB
cmJpdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbGVhdmVSb3V0aW5nQWJyaXRy
YXRpb24oKSBmaW5hbDsKKworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6VG9rZW4+IG1fdG9rZW47CisgICAgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpDYXRl
Z29yeVR5cGUgbV9jYXRlZ29yeSB7IFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OworICAg
IEFyYml0cmF0aW9uU3RhdHVzIG1fYXJiaXRyYXRpb25TdGF0dXMgeyBBcmJpdHJhdGlvblN0YXR1
czo6Tm9uZSB9OworICAgIFdhbGxUaW1lIG1fYXJiaXRyYXRpb25VcGRhdGVUaW1lOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDAxOGIyODA3
YmZmNDFkZDMyY2NhNTUzNjMzNTdhYzk4YWQzZmY4MGEuLmYwZGJkNTNlZjM2MDc5YzdlMmYzODkx
NzZmMzAxNWMyZTM3YzQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggMDFhNTM2ZWFlOGMzNzQz
YTdmODE3Y2M5ZTI0NjQyNzI5NzU5NWQxMC4uMzhhMDU2ODdiNGRjMjA0YjNjZjFiMGRiMjZlYTRh
NGU0NjkyYTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDgg
QEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3MuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25EYXRhLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmNjI2ZDNmNmFj
MWM2NDI0MzlmZDRkOTIyNDJkNDAzMTY0MWUxODMyLi45YTIzYzQ2YjBmMWZmZDVmMzdlN2RlNTJh
MGU3YTdjYjU2NDQwNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Miw2ICs2Miw3IEBA
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29h
Lm1tIEBuby11bmlmeQogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0K
IEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWFjL0xvY2FsQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVk
aWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oCmluZGV4
IGI0MzUxMTllN2RlZDZlODQ0MTMxNzYwMmNmODM4NDU0NzdhMjdhNTUuLjRkOTJlOGU3ZDU2YThl
NDQ5NDcxOWM1MzZmOGY5MjdkY2E5OGY1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
clByb3h5LmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklU
RVIpCisjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKQEAgLTUwLDcg
KzU0LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OlJvdXRpbmdBcmJp
dHJhdGlvbkVycm9yOwogICAgIHVzaW5nIERlZmF1bHRSb3V0ZUNoYW5nZWQgPSBXZWJDb3JlOjpB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkRlZmF1bHRSb3V0ZUNoYW5nZWQ7
Ci0gICAgdXNpbmcgQXJiaXRyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Um91dGluZ0FyYml0cmF0aW9uRXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQpPjsKKyAgICB1c2lu
ZyBBcmJpdHJhdGlvbkNhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrOwogCiAgICAgZW51bSBjbGFzcyBBcmJp
dHJhdGlvblN0YXR1cyA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtNzMsNiArNzcsMTAg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2Nh
dGVnb3J5IHsgV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpOb25lIH07CiAgICAgQXJiaXRyYXRpb25T
dGF0dXMgbV9hcmJpdHJhdGlvblN0YXR1cyB7IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lIH07CiAg
ICAgV2FsbFRpbWUgbV9hcmJpdHJhdGlvblVwZGF0ZVRpbWU7CisKKyNpZiBIQVZFKEFWQVVESU9f
Uk9VVElOR19BUkJJVEVSKQorICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6VG9rZW4+IG1fdG9rZW47CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJp
dHJhdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29h
L0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5tbQppbmRleCBiYzcwZDQ1
ZWU3MDkyYTY0MWYyNzU1NDI1ZWRmOTgxZWIyNDZkOWU3Li4zODIxMmNiNTM3YTliMzRhNzk4Mzk1
YWM4NDQ2NTM0YTY3ZmM1NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYS9jb2NvYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywxMzIgKzMzLDE0IEBACiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4KLSNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0j
aW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1jbGFzcyBTaGFyZWRBcmJpdHJh
dG9yIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU2hhcmVkQXJiaXRyYXRvciYgc2hhcmVkSW5zdGFu
Y2UoKTsKLQotICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yID0gQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjsKLSAgICB1
c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9u
Q2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOwotICAgIHVzaW5nIEFyYml0cmF0aW9uQ2FsbGJh
Y2sgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpBcmJpdHJhdGlvbkNhbGxi
YWNrOwotCi0gICAgYm9vbCBpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRvcihBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Jik7Ci0gICAgdm9pZCBiZWdpblJvdXRpbmdB
cmJpdHJhdGlvbkZvckFyYml0cmF0b3IoQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eSYsIEFyYml0cmF0aW9uQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBlbmRSb3V0aW5nQXJiaXRyYXRp
b25Gb3JBcmJpdHJhdG9yKEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmKTsKLQot
cHJpdmF0ZToKLSAgICBPcHRpb25hbDxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZT4gbV9jdXJy
ZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246Ok5vbmUgfTsKLSAgICBXZWFrSGFzaFNldDxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5PiBtX2FyYml0cmF0b3JzOwotICAgIFZlY3Rv
cjxBcmJpdHJhdGlvbkNhbGxiYWNrPiBtX2VucXVldWVkQ2FsbGJhY2tzOwotICAgIGJvb2wgbV9z
ZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07Ci19OwotCi1TaGFyZWRBcmJpdHJhdG9y
JiBTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYXJlZEFyYml0cmF0b3I+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5j
ZTsKLX0KLQotYm9vbCBTaGFyZWRBcmJpdHJhdG9yOjppc0luUm91dGluZ0FyYml0cmF0aW9uRm9y
QXJiaXRyYXRvcihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSkKLXsK
LSAgICByZXR1cm4gbV9hcmJpdHJhdG9ycy5jb250YWlucyhwcm94eSk7Ci19Ci0KLXZvaWQgU2hh
cmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yKEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkmIHByb3h5LCBBcmJpdHJhdGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKCFpc0luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJi
aXRyYXRvcihwcm94eSkpOwotCi0gICAgaWYgKG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcpIHsK
LSAgICAgICAgbV9lbnF1ZXVlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHdlYWtQcm94eSA9IG1h
a2VXZWFrUHRyKHByb3h5KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJvdXRpbmdB
cmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFuZ2VkIHJvdXRlQ2hhbmdlZCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gUm91dGluZ0FyYml0cmF0aW9uRXJy
b3I6Ok5vbmUgJiYgd2Vha1Byb3h5KQotICAgICAgICAgICAgICAgIG1fYXJiaXRyYXRvcnMuYWRk
KCp3ZWFrUHJveHkpOwotCi0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgcm91dGVDaGFuZ2Vk
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gcmVx
dWVzdGVkQ2F0ZWdvcnkgPSBwcm94eS5jYXRlZ29yeSgpOwotCi0gICAgaWYgKG1fY3VycmVudENh
dGVnb3J5KSB7Ci0gICAgICAgIGlmICgqbV9jdXJyZW50Q2F0ZWdvcnkgPj0gcmVxdWVzdGVkQ2F0
ZWdvcnkpIHsKLSAgICAgICAgICAgIG1fYXJiaXRyYXRvcnMuYWRkKHByb3h5KTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lLCBEZWZhdWx0Um91dGVD
aGFuZ2VkOjpObyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBb
W1BBTDo6Z2V0QVZBdWRpb1JvdXRpbmdBcmJpdGVyQ2xhc3MoKSBzaGFyZWRSb3V0aW5nQXJiaXRl
cl0gbGVhdmVBcmJpdHJhdGlvbl07Ci0gICAgfQotCi0gICAgbV9jdXJyZW50Q2F0ZWdvcnkgPSBy
ZXF1ZXN0ZWRDYXRlZ29yeTsKLQotICAgIEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29y
eSBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5
UGxheWJhY2s7Ci0gICAgc3dpdGNoIChyZXF1ZXN0ZWRDYXRlZ29yeSkgewotICAgIGNhc2UgQXVk
aW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrOgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0g
QVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlvbkNhdGVnb3J5UGxheWJhY2s7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpSZWNvcmRBdWRpbzoKLSAgICAgICAgYXJiaXRyYXRp
b25DYXRlZ29yeSA9IEFWQXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25DYXRlZ29yeVBsYXlBbmRSZWNv
cmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXVkaW9TZXNzaW9uOjpQbGF5QW5kUmVjb3Jk
OgotICAgICAgICBhcmJpdHJhdGlvbkNhdGVnb3J5ID0gQVZBdWRpb1JvdXRpbmdBcmJpdHJhdGlv
bkNhdGVnb3J5UGxheUFuZFJlY29yZFZvaWNlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICBtX3NldHVwQXJi
aXRyYXRpb25PbmdvaW5nID0gdHJ1ZTsKLSAgICBtX2VucXVldWVkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgd2Vha1Byb3h5ID0gbWFrZVdlYWtQdHIocHJveHkpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRSb3V0ZUNo
YW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yID09IFJvdXRp
bmdBcmJpdHJhdGlvbkVycm9yOjpOb25lICYmIHdlYWtQcm94eSkKLSAgICAgICAgICAgIG1fYXJi
aXRyYXRvcnMuYWRkKCp3ZWFrUHJveHkpOwotCi0gICAgICAgIGNhbGxiYWNrKGVycm9yLCByb3V0
ZUNoYW5nZWQpOwotICAgIH0pOwotCi0gICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRl
ckNsYXNzKCkgc2hhcmVkUm91dGluZ0FyYml0ZXJdIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdv
cnk6YXJiaXRyYXRpb25DYXRlZ29yeSBjb21wbGV0aW9uSGFuZGxlcjpbdGhpc10oQk9PTCBkZWZh
dWx0RGV2aWNlQ2hhbmdlZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVmYXVsdERldmljZUNoYW5nZWQsIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKV0gewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiU2hhcmVkQXJiaXRyYXRvcjo6YmVnaW5Sb3V0aW5n
QXJiaXRyYXRpb25Gb3JBcmJpdHJhdG9yOiAlcyBmYWlsZWQgd2l0aCBlcnJvciAlczolcyIsIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKCptX2N1cnJlbnRDYXRlZ29yeSkuYXNjaWkoKS5kYXRh
KCksIFtbZXJyb3IgZG9tYWluXSBVVEY4U3RyaW5nXSwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byByZXNldCBzYW1wbGUgcmF0ZSBhbmQgYnVmZmVyIHNpemUgZm9yIHRoZSBuZXcgZGVmYXVsdCBk
ZXZpY2U/Ci0gICAgICAgICAgICBpZiAoZGVmYXVsdERldmljZUNoYW5nZWQpCi0gICAgICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gZGVmYXVsdERl
dmljZUNoYW5nZWQhIik7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxBcmJpdHJhdGlvbkNhbGxiYWNr
PiBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fZW5xdWV1ZWRDYWxsYmFja3MpOwotICAgICAgICAgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayhlcnJvciA/IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpGYWlsZWQgOiBSb3V0aW5nQXJiaXRy
YXRpb25FcnJvcjo6Tm9uZSwgZGVmYXVsdERldmljZUNoYW5nZWQgPyBEZWZhdWx0Um91dGVDaGFu
Z2VkOjpZZXMgOiBEZWZhdWx0Um91dGVDaGFuZ2VkOjpObyk7Ci0KLSAgICAgICAgICAgIG1fc2V0
dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSBmYWxzZTsKLSAgICAgICAgfSk7Ci0gICAgfV07Ci19Ci0K
LXZvaWQgU2hhcmVkQXJiaXRyYXRvcjo6ZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRyYXRv
cihBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5JiBwcm94eSkKLXsKLSAgICBBU1NF
UlQoaXNJblJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IocHJveHkpKTsKLSAgICBtX2Fy
Yml0cmF0b3JzLnJlbW92ZShwcm94eSk7Ci0KLSAgICBpZiAoIW1fYXJiaXRyYXRvcnMuY29tcHV0
ZXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
bV9lbnF1ZXVlZENhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soUm91dGluZ0FyYml0cmF0aW9u
RXJyb3I6OkNhbmNlbGxlZCwgRGVmYXVsdFJvdXRlQ2hhbmdlZDo6Tm8pOwotCi0gICAgbV9lbnF1
ZXVlZENhbGxiYWNrcy5jbGVhcigpOwotICAgIG1fY3VycmVudENhdGVnb3J5LnJlc2V0KCk7Ci0g
ICAgW1tQQUw6OmdldEFWQXVkaW9Sb3V0aW5nQXJiaXRlckNsYXNzKCkgc2hhcmVkUm91dGluZ0Fy
Yml0ZXJdIGxlYXZlQXJiaXRyYXRpb25dOwotfQotCiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5KFdlYlByb2Nlc3NQ
cm94eSYgcHJveHkpCiAgICAgOiBtX3Byb2Nlc3MocHJveHkpCisgICAgLCBtX3Rva2VuKFNoYXJl
ZFJvdXRpbmdBcmJpdHJhdG9yOjpUb2tlbjo6Y3JlYXRlKCkpCiB7CiAgICAgbV9wcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZXN0aW5hdGlvbklkKCksICp0aGlzKTsKIH0K
QEAgLTE3MCw3ICs1Miw3IEBAIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk6On5B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5KCkKIAogdm9pZCBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBpZiAo
U2hhcmVkQXJiaXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5pc0luUm91dGluZ0FyYml0cmF0aW9u
Rm9yQXJiaXRyYXRvcigqdGhpcykpCisgICAgaWYgKFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yOjpz
aGFyZWRJbnN0YW5jZSgpLmlzSW5Sb3V0aW5nQXJiaXRyYXRpb25Gb3JUb2tlbihtX3Rva2VuKSkK
ICAgICAgICAgZW5kUm91dGluZ0FyYml0cmF0aW9uKCk7CiB9CiAKQEAgLTE3OSw3ICs2MSw3IEBA
IHZvaWQgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0aW5nQXJi
aXRyYXRpb25XaXRoQ2F0ZWdvcnkoV2ViCiAgICAgbV9jYXRlZ29yeSA9IGNhdGVnb3J5OwogICAg
IG1fYXJiaXRyYXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0YXR1czo6UGVuZGluZzsKICAgICBt
X2FyYml0cmF0aW9uVXBkYXRlVGltZSA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBTaGFyZWRBcmJp
dHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmJlZ2luUm91dGluZ0FyYml0cmF0aW9uRm9yQXJiaXRy
YXRvcigqdGhpcywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRS
b3V0ZUNoYW5nZWQgcm91dGVDaGFuZ2VkKSBtdXRhYmxlIHsKKyAgICBTaGFyZWRSb3V0aW5nQXJi
aXRyYXRvcjo6c2hhcmVkSW5zdGFuY2UoKS5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbkZvclRva2Vu
KG1fdG9rZW4sIGNhdGVnb3J5LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwg
RGVmYXVsdFJvdXRlQ2hhbmdlZCByb3V0ZUNoYW5nZWQpIG11dGFibGUgewogICAgICAgICBpZiAo
d2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9hcmJpdHJhdGlvblN0YXR1cyA9IGVy
cm9yID09IFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOjpOb25lID8gQXJiaXRyYXRpb25TdGF0dXM6
OkFjdGl2ZSA6IEFyYml0cmF0aW9uU3RhdHVzOjpOb25lOwogICAgICAgICBjYWxsYmFjayhlcnJv
ciwgcm91dGVDaGFuZ2VkKTsKQEAgLTE4OCw3ICs3MCw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3JQcm94eTo6YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnko
V2ViCiAKIHZvaWQgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTo6ZW5kUm91dGlu
Z0FyYml0cmF0aW9uKCkKIHsKLSAgICBTaGFyZWRBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgp
LmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZvckFyYml0cmF0b3IoKnRoaXMpOworICAgIFNoYXJlZFJv
dXRpbmdBcmJpdHJhdG9yOjpzaGFyZWRJbnN0YW5jZSgpLmVuZFJvdXRpbmdBcmJpdHJhdGlvbkZv
clRva2VuKG1fdG9rZW4pOwogICAgIG1fYXJiaXRyYXRpb25TdGF0dXMgPSBBcmJpdHJhdGlvblN0
YXR1czo6Tm9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOGNjNTVjZjM0MmRmMjY2MjQ2NzZmNzlmYmY3ZjU5NjAwYzc4MzQ2
Ny4uY2NmM2RlZmEwNmFjYTY3NmExNTM0ZjQyMjk0ODgyM2RiNjYxNzZkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03LDkgKzcsOSBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
Ci0JCTFBNTBEQjM4MTEwQTNDMTMwMDBEM0ZFNSAvKiBBbGwgKi8gPSB7CisJCTFBNTBEQjM4MTEw
QTNDMTMwMDBEM0ZFNSAvKiBGcmFtZXdvcmsgJiBYUEMgU2VydmljZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUE1MERC
NDgxMTBBM0MyNzAwMEQzRkU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJBbGwiICovOworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFBNTBE
QjQ4MTEwQTNDMjcwMDBEM0ZFNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiRnJhbWV3b3JrICYgWFBDIFNlcnZpY2VzIiAqLzsKIAkJCWJ1aWxkUGhh
c2VzID0gKAogCQkJCUJDRkZDQThBMTYwRDZERUEwMDNERjMxNSAvKiBBZGQgWFBDU2VydmljZXMg
c3ltbGluayAqLywKIAkJCSk7CkBAIC0yMSw3ICsyMSw3IEBACiAJCQkJQkM4MjgzRDUxNkI0QzAx
RjAwQTI3OEZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMkQ5RkIyMkMyMzc1MjQ1
QzAwNDlGOTM2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwotCQkJbmFtZSA9IEFs
bDsKKwkJCW5hbWUgPSAiRnJhbWV3b3JrICYgWFBDIFNlcnZpY2VzIjsKIAkJCXByb2R1Y3ROYW1l
ID0gV2ViS2l0MjsKIAkJfTsKIAkJMkQ3REVCRDgyMTI2OUM2QjAwQjlGNzNDIC8qIEdlbmVyYXRl
IFVuaWZpZWQgU291cmNlcyAqLyA9IHsKQEAgLTc5LDYgKzc5LDE4IEBACiAJCQluYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9
OworCQlDRDBDMzZENTI2MzlEMzlBMDA0RTM1RDggLyogRXZlcnl0aGluZyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDRDBD
MzZENjI2MzlEMzlBMDA0RTM1RDggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkV2ZXJ5dGhpbmciICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkp
OworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCUNEMEMzNkREMjYzOUQzQjQwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUNEMEMzNkRCMjYzOUQzQUYwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBFdmVyeXRoaW5nOworCQkJ
cHJvZHVjdE5hbWUgPSBFdmVyeXRoaW5nOworCQl9OwogCQlFMUFDMkUyNzIwRjdCOTRDMDBCMDg5
N0QgLyogVW5sb2NrIEtleWNoYWluICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEUxQUMyRTJCMjBGN0I5NEMwMEIwODk3RCAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVW5sb2Nr
IEtleWNoYWluIiAqLzsKQEAgLTIyMDAsNiArMjIxMiwyMCBAQAogCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSBCQzNERTQ2NTE1QTkxNzYzMDA4RDI2RkM7CiAJCQlyZW1vdGVJbmZvID0gV2ViS2l0
MlNlcnZpY2U7CiAJCX07CisJCUNEMEMzNkRBMjYzOUQzQUYwMDRFMzVEOCAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQTUw
REIzODExMEEzQzEzMDAwRDNGRTU7CisJCQlyZW1vdGVJbmZvID0gIkZyYW1ld29yayAmIFhQQyBT
ZXJ2aWNlcyI7CisJCX07CisJCUNEMEMzNkRDMjYzOUQzQjQwMDRFMzVEOCAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDRDk1
NDkzNDI2MTU5MDA0MDA4MzcyRDk7CisJCQlyZW1vdGVJbmZvID0gV2ViS2l0U3dpZnQ7CisJCX07
CiAJCUUxQUMyRTJEMjBGN0I5ODgwMEIwODk3RCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8g
PSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwg
PSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC01NjAz
LDYgKzU2MjksOCBAQAogCQlDRDIwQ0U3NzI1Q0QyQjlEMDA2OUI1NDIgLyogUmVtb3RlQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEMjBDRTc4MjVDRDJCOUQwMDY5QjU0MiAvKiBSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMjBDRTc5MjVDRDJCOUUwMDY5QjU0MiAvKiBSZW1vdGVBdWRpb0hhcmR3
YXJlTGlzdGVuZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0hhcmR3YXJl
TGlzdGVuZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2
QzI2MEE2RUJFMDBDOEM1MjkgLyogTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzZDMTZEMjYwQTZFQkUwMEM4QzUyOSAvKiBM
b2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDNFRUYzMTI1Nzk5NjE4MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
M0VFRjMyMjU3OTk2MTgwMDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNFRUYzMzI1
Nzk5NzE3MDA2NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU5MCw2ICs3NjE4LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEOUZCMjA4MjM3NTIwOUQwMDQ5RjkzNiAvKiBjb20u
YXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4gKi8sCiAJCQkJMkQ5RkIyMDcyMzc1MjA5RDAw
NDlGOTM2IC8qIEdQVVByb2Nlc3NNYWMubW0gKi8sCisJCQkJQ0QzNkMxNkQyNjBBNkVCRTAwQzhD
NTI5IC8qIExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAorCQkJCUNE
MzZDMTZDMjYwQTZFQkUwMEM4QzUyOSAvKiBMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xMzI2MSw2ICsxMzI5MSw5IEBACiAJCQkJCUExNkU2NUZGMjU4MTkzMDgwMEVFMTc0
OSA9IHsKIAkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEyLjQ7CiAJCQkJCX07CisJCQkJ
CUNEMEMzNkQ1MjYzOUQzOUEwMDRFMzVEOCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lv
biA9IDEzLjA7CisJCQkJCX07CiAJCQkJCUNEOTU0OTM0MjYxNTkwMDQwMDgzNzJEOSA9IHsKIAkJ
CQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDEzLjA7CiAJCQkJCX07CkBAIC0xMzI4Myw3ICsx
MzMxNiw4IEBACiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwogCQkJcHJvamVjdFJvb3QgPSAiIjsK
IAkJCXRhcmdldHMgPSAoCi0JCQkJMUE1MERCMzgxMTBBM0MxMzAwMEQzRkU1IC8qIEFsbCAqLywK
KwkJCQkxQTUwREIzODExMEEzQzEzMDAwRDNGRTUgLyogRnJhbWV3b3JrICYgWFBDIFNlcnZpY2Vz
ICovLAorCQkJCUNEMEMzNkQ1MjYzOUQzOUEwMDRFMzVEOCAvKiBFdmVyeXRoaW5nICovLAogCQkJ
CThEQzJFRjRGMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQgKi8sCiAJCQkJQ0Q5NTQ5MzQyNjE1
OTAwNDAwODM3MkQ5IC8qIFdlYktpdFN3aWZ0ICovLAogCQkJCTJEN0RFQkQ4MjEyNjlDNkIwMEI5
RjczQyAvKiBHZW5lcmF0ZSBVbmlmaWVkIFNvdXJjZXMgKi8sCkBAIC0xNDYxNSw2ICsxNDY0OSwx
NiBAQAogCQkJdGFyZ2V0ID0gQkMzREU0NjUxNUE5MTc2MzAwOEQyNkZDIC8qIFdlYkNvbnRlbnQg
Ki87CiAJCQl0YXJnZXRQcm94eSA9IEJDQThENDY3MTVCQ0UwRDYwMDlEQzFGMSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJCUNEMEMzNkRCMjYzOUQzQUYwMDRFMzVEOCAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
KwkJCXRhcmdldCA9IDFBNTBEQjM4MTEwQTNDMTMwMDBEM0ZFNSAvKiBGcmFtZXdvcmsgJiBYUEMg
U2VydmljZXMgKi87CisJCQl0YXJnZXRQcm94eSA9IENEMEMzNkRBMjYzOUQzQUYwMDRFMzVEOCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUNEMEMzNkREMjYzOUQzQjQwMDRF
MzVEOCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IENEOTU0OTM0MjYxNTkwMDQwMDgzNzJEOSAvKiBXZWJLaXRT
d2lmdCAqLzsKKwkJCXRhcmdldFByb3h5ID0gQ0QwQzM2REMyNjM5RDNCNDAwNEUzNUQ4IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJRTFBQzJFMkUyMEY3Qjk4ODAwQjA4OTdE
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwogCQkJdGFyZ2V0ID0gRTFBQzJFMjcyMEY3Qjk0QzAwQjA4OTdEIC8qIFVubG9jayBLZXlj
aGFpbiAqLzsKQEAgLTE1MDI0LDYgKzE1MDY4LDMwIEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CiAJCX07CisJCUNEMEMzNkQ3MjYzOUQzOUEwMDRFMzVEOCAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUNEMEMzNkQ4MjYz
OUQzOUEwMDRFMzVEOCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9t
YXRpYzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQlDRDBDMzZEOTI2MzlEMzlBMDA0RTM1RDggLyogUHJvZHVj
dGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVDVF9O
QU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJ
fTsKIAkJQ0Q5NTQ5M0MyNjE1OTAwNDAwODM3MkQ5IC8qIERlYnVnICovID0gewogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IENE
MDlGRDBBMjYxNTJFMjMwMEU0QUNGMSAvKiBXZWJLaXRTd2lmdC54Y2NvbmZpZyAqLzsKQEAgLTE1
MDcyLDcgKzE1MTQwLDcgQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkxQTUwREI0ODEx
MEEzQzI3MDAwRDNGRTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkFsbCIgKi8gPSB7CisJCTFBNTBEQjQ4MTEwQTNDMjcwMDBEM0ZFNSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRnJhbWV3b3JrICYg
WFBDIFNlcnZpY2VzIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTFBNTBEQjM5MTEwQTNDMTMwMDBEM0ZFNSAvKiBE
ZWJ1ZyAqLywKQEAgLTE1MjMyLDYgKzE1MzAwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OwogCQl9OworCQlDRDBDMzZENjI2MzlEMzlBMDA0RTM1RDggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkV2ZXJ5dGhpbmciICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
Q0QwQzM2RDcyNjM5RDM5QTAwNEUzNUQ4IC8qIERlYnVnICovLAorCQkJCUNEMEMzNkQ4MjYzOUQz
OUEwMDRFMzVEOCAvKiBSZWxlYXNlICovLAorCQkJCUNEMEMzNkQ5MjYzOUQzOUEwMDRFMzVEOCAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CUNEOTU0OTNCMjYxNTkwMDQwMDgzNzJEOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiV2ViS2l0U3dpZnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5jcHAK
aW5kZXggZjVlYjYwMDQzOTYzZjZhM2NkNGFhYjZhZTk5YWNkZGZlNzE0NTYyNy4uMTQyZGZmMzQx
ODhlZmNkYjg0NDQ1ODY0ZDY5MDljNTgxNzUyMDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uJiBSZW1vdGVBdWRp
b1Nlc3Npb246OmNvbmZpZ3VyYXRpb24oKQogCiB2b2lkIFJlbW90ZUF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIHR5cGUsIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRv
JiBjb25maWd1cmF0aW9uID0gdGhpcy0+Y29uZmlndXJhdGlvbigpOwogICAgIGlmICh0eXBlID09
IGNvbmZpZ3VyYXRpb24uY2F0ZWdvcnkgJiYgcG9saWN5ID09IGNvbmZpZ3VyYXRpb24ucm91dGVT
aGFyaW5nUG9saWN5KQogICAgICAgICByZXR1cm47CkBAIC0xMDIsOSArMTAyLDYgQEAgdm9pZCBS
ZW1vdGVBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSB0eXBlLCBSb3V0ZVNo
YXJpbmdQb2xpY3kgcG9saWMKICAgICBjb25maWd1cmF0aW9uLnJvdXRlU2hhcmluZ1BvbGljeSA9
IHBvbGljeTsKIAogICAgIGVuc3VyZUNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eTo6U2V0Q2F0ZWdvcnkodHlwZSwgcG9saWN5KSwgeyB9KTsKLSNlbGlm
IFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogTW92ZSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5IHRvIHRoZSBHUFUgcHJvY2VzcyAod2Via2l0Lm9yZy9iLzIxNzUzNSkKLSAg
ICBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KHR5cGUsIHBvbGljeSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFSQU0ocG9saWN5KTsKQEAgLTEyNywxMCAr
MTI0LDggQEAgYm9vbCBSZW1vdGVBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwo
Ym9vbCBhY3RpdmUpCiAKIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIFJlbW90ZUF1ZGlvU2Vz
c2lvbjo6Y2F0ZWdvcnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24oKS5jYXRlZ29yeTsKLSNl
bGlmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpOwog
I2Vsc2UKICAgICByZXR1cm4gTm9uZTsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>