<?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>150997</bug_id>
          
          <creation_ts>2015-11-07 08:15:35 -0800</creation_ts>
          <short_desc>[MediaStream] Add mock audio and video sources</short_desc>
          <delta_ts>2016-01-04 13:14:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>adam.bergkvist</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140183</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-07 08:15:35 -0800</bug_when>
    <thetext>Create mock realtime audio and video sources for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140184</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-07 08:16:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/23453358&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140292</commentid>
    <comment_count>2</comment_count>
      <attachid>265028</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-08 18:59:45 -0800</bug_when>
    <thetext>Created attachment 265028
Patch for the bots to chew on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140293</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-08 19:01:56 -0800</bug_when>
    <thetext>Attachment 265028 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:96:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140295</commentid>
    <comment_count>4</comment_count>
      <attachid>265029</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-08 19:54:15 -0800</bug_when>
    <thetext>Created attachment 265029
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140296</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-08 19:56:09 -0800</bug_when>
    <thetext>Attachment 265029 did not pass style-queue:


ERROR: Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140297</commentid>
    <comment_count>6</comment_count>
      <attachid>265030</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-08 20:01:29 -0800</bug_when>
    <thetext>Created attachment 265030
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140298</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-08 20:03:15 -0800</bug_when>
    <thetext>Attachment 265030 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:39:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:41:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:53:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:56:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 4 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140340</commentid>
    <comment_count>8</comment_count>
      <attachid>265043</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-09 05:54:34 -0800</bug_when>
    <thetext>Created attachment 265043
Another updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140392</commentid>
    <comment_count>9</comment_count>
      <attachid>265043</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-11-09 09:38:09 -0800</bug_when>
    <thetext>Comment on attachment 265043
Another updated patch.

r=me, with nits.

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:-363
&gt; -#ifndef NDEBUG
&gt;      m_videoBackgroundLayer.get().name = @&quot;MediaPlayerPrivateMediaStreamAVFObjC preview background layer&quot;;
&gt; -#endif

Is there a reason you removed this #ifdef? I don&apos;t think we generally set the layers&apos; names in release builds.

&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:63
&gt; +    m_previewLayer.get().name = @&quot;MockRealtimeVideoSourceMac preview layer&quot;;

And I think this may need a #ifdef as well.

&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:69
&gt; +#if !PLATFORM(IOS)
&gt; +    m_previewLayer.get().autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable;
&gt; +#endif

You said this wasn&apos;t necessary in MediaPlayerPrivateMediaStreamAVFObjC::createPreviewLayers().  Is it necessary here?

&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:78
&gt; +void MockRealtimeVideoSourceMac::updatePlatformLayer() const
&gt; +{
&gt; +#if TARGET_OS_IPHONE || (PLATFORM(MAC))

Is there a reason why this entire file shouldn&apos;t be wrapped this way?  Also, I think that you may want PLATFORM(COCOA) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140478</commentid>
    <comment_count>10</comment_count>
      <attachid>265043</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-09 13:01:21 -0800</bug_when>
    <thetext>Comment on attachment 265043
Another updated patch.

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:-363
&gt;&gt; -#endif
&gt; 
&gt; Is there a reason you removed this #ifdef? I don&apos;t think we generally set the layers&apos; names in release builds.

Simon says (see what I did there?) it is fine to set layer names in a release build as long as the name doesn&apos;t have to be computed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:63
&gt;&gt; +    m_previewLayer.get().name = @&quot;MockRealtimeVideoSourceMac preview layer&quot;;
&gt; 
&gt; And I think this may need a #ifdef as well.

Ditto.

&gt;&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:69
&gt;&gt; +#endif
&gt; 
&gt; You said this wasn&apos;t necessary in MediaPlayerPrivateMediaStreamAVFObjC::createPreviewLayers().  Is it necessary here?

Because this layer is set as a sub-layer of the layer returned by MediaPlayerPrivateMediaStreamAVFObjC.

&gt;&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:78
&gt;&gt; +#if TARGET_OS_IPHONE || (PLATFORM(MAC))
&gt; 
&gt; Is there a reason why this entire file shouldn&apos;t be wrapped this way?  Also, I think that you may want PLATFORM(COCOA) here.

Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140480</commentid>
    <comment_count>11</comment_count>
      <attachid>265085</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-09 13:02:00 -0800</bug_when>
    <thetext>Created attachment 265085
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140497</commentid>
    <comment_count>12</comment_count>
      <attachid>265085</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-09 13:20:07 -0800</bug_when>
    <thetext>Comment on attachment 265085
Patch for landing.

Clearing flags on attachment: 265085

Committed r192174: &lt;http://trac.webkit.org/changeset/192174&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265028</attachid>
            <date>2015-11-08 18:59:45 -0800</date>
            <delta_ts>2015-11-08 19:54:15 -0800</delta_ts>
            <desc>Patch for the bots to chew on.</desc>
            <filename>mock_source_patch_6.txt</filename>
            <type>text/plain</type>
            <size>72354</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMS0wOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEFkZCBtb2NrIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzNDUzMzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBiYXNpYyBtb2NrIGF1ZGlvIGFuZCB2aWRlbyByZWFsdGltZSBtZWRpYSBzb3Vy
Y2UgY2xhc3NlcyBzbyB3ZSBjYW4gdGVzdCBNZWRpYVN0cmVhbQorICAgICAgICBBUEkgd2l0aG91
dCByZXF1aXJpbmcgdGVzdCBtYWNoaW5lcyB0byBoYXZlIGF1ZGlvL3ZpZGVvIGlucHV0IGhhcmR3
YXJlLiBObyBuZXcgdGVzdHMgYWRkZWQKKyAgICAgICAgeWV0LCB0aG9lIHdpbGwgZm9sbG93Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlc2UgY2hhbmdlcyB3aWxsIGFsbG93IHVzIHRvIHdy
aXRlIE1lZGlhU3RyZWFtIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCwg
YW5kIAorICAgICAgICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorCisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6IEFkZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJzKTog
RG9uJ3Qgc2V0IGF1dG9yZXNpemluZ01hc2ssCisgICAgICAgICAgaXQgaXNuJ3QgbmVjZXNzYXJ5
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpyZWZyZXNoQ2FwdHVyZURldmljZUxpc3QpOiBB
VkNhcHR1cmVEZXZpY2UgLT4gZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKQorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERldmljZUZvckZhY2luZ01vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNvdXJjZVdp
dGhVSUQpOiBEaXR0by4KKworICAgICAgICBNYWMgY2xhc3MgaW1wbGVtZW50cyBSZWFsdGltZVZp
ZGVvU291cmNlOjpwbGF0Zm9ybUxheWVyLCByZXR1cm5zIGEgQ0FMYXllciB3aGljaCB1c2VzIHRo
ZQorICAgICAgICBHcmFwaGljc0NvbnRleHQgYXMgY29udGVudHMuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisKKyAgICAg
ICAgTW9jayBhdWRpbyBzb3VyY2UuIERvZXNuJ3QgcHJvdmlkZSBkYXRhIHlldCwgb25seSBwcm92
aWRlcyBzdGF0ZXMgYW5kIGNhcGFiaWxpdGllcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6On5Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZSk6CisKKyAgICAgICAgTW9jayBzb3VyY2UgYmFzZSBjbGFzcywgc2V0cyBw
ZXJzaXN0ZW50IElEIGFuZCB1cGRhdGVzIHN0YXRlcyBhbmQgY2FwYWJpbGl0aWVzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9QZXJzaXN0
ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1BlcnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291
cmNlUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6On5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3VycmVudFN0YXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29uc3RyYWludHMpOgorCisg
ICAgICAgIFVzZSBuZXcgbW9jayBzb3VyY2UgY2xhc3Nlcy4gQ3JlYXRlIGEgbmV3IHNvdXJjZSBp
bnN0YW5jZSBmb3IgZWFjaCByZXF1ZXN0IGluc3RlYWQgb2YgcmV1c2luZyB0aGUKKyAgICAgICAg
c2FtZSBzb3VyY2VzIGVhY2ggdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
Z2lzdGVyTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1NvdXJjZTo6TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlOjp+TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlOjpjYXBhYmlsaXRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tBdWRpb1NvdXJjZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tWaWRlb1NvdXJjZUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVNb2NrU291cmNlcyk6IERlbGV0ZWQuCisK
KyAgICAgICAgTW9jayB2aWRlbyBzb3VyY2UuIEdlbmVyYXRlIGJpcC1ib3AgaW5zcGlyZWQgZnJh
bWVzIHdpdGggYnVybmVkIGluIHN0YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjplbGFw
c2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBk
YXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVQ
bGF0Zm9ybUxheWVyKToKKwogMjAxNS0xMS0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTIxNDApOiBXaW5kb3dzIGJ1aWxkIGJy
b2tlIGFmdGVyIHJlbW92aW5nIENvbG9yU3BhY2UgYXJndW1lbnQgdG8gYWxsIGRyYXdpbmcgY2Fs
bHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMwMiw3ICsyMzAyLDEw
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorICAgIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisgICAgcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorICAgIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAog
ICAgIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWFjIgorICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvY29jb2EiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
Y2YiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvbWFjIgpAQCAtNDk3LDYg
KzQ5OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCiAKKyAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
KwogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyMTQ2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzUsNiArMzM1LDEwIEBACiAJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBK
U1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QwN0IxMzE4MzQxNTg4MDBBQkREM0MgLyogSlNSVENT
ZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CisJCTA3RDZB
NEVGMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQy
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyBzZXR0aW5ncyA9IHtB
U1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3RDZBNEYwMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdENkE0RUUxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0
RjMxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEYxMUJFRDVGODgw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0RjQxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkwN0RDNUZE
NDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkw
MDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZC
MTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CkBAIC0zNDIsNiArMzQ2LDEwIEBACiAJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJEMThG
NUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsg
fTsKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovOyB9OworCQkwN0VFNzZFQjFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RTkxQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwN0VFNzZF
QzFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVBMUJFOTZEQjAwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdFRTc2
RjAxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUUxQkVBNjE5
ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTA3RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBB
VktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFWS2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdD
MUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBB
VkZvdW5kYXRpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0Y4NzY4NDFBRDU4MEY5MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTg2
LDYgKzc1OTQsMTAgQEAKIAkJMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRF
RDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdENkE0RjIxQkVE
NUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1OTMsNiArNzYwNSwxMCBAQAogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VFNzZFQTFCRTk2
REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVE
QjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVZLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1
REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBVkZvdW5kYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIxNyw2ICsxNTIzMyw4
IEBACiAJCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNl
Lm1tICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLywKKwkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKKwkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJNEEwRkZBQTMxQUFGNUVGNjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwICovLAogCQkJCTRBMEZG
QUE0MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggKi8s
CiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmggKi8sCkBAIC0xNzA3Nyw2ICsxNzA5NSwxMiBAQAogCQkJCTU5MzA5QTEyMTFGNEFF
NkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwNzM3
OTRERjE5RUUyRDFCMDBFNUEwNDUgLyogTWVkaWFDb25zdHJhaW50c01vY2suY3BwICovLAogCQkJ
CTA3Mzc5NEUwMTlFRTJEMUIwMEU1QTA0NSAvKiBNZWRpYUNvbnN0cmFpbnRzTW9jay5oICovLAor
CQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgKi8sCisJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggKi8sCisJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLywKKwkJCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYgLyogTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKKwkJCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTA3RUU3NkVBMUJFOTZEQjAw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovLAogCQkJCTRBMEZGQTlCMUFB
RjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJ
CQkJNEEwRkZBOUMxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmggKi8sCiAJCQkJQUFFMjdCNzQxNkNCRkMwRDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcCAqLywKQEAgLTI1NTU1LDcgKzI1NTc5LDkgQEAKIAkJCQlBODBE
NjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Q2QTRGMDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjU1OSw2ICsyNjU4NSw3IEBACiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYy
MEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5M0ExN0QxNkUxQzAwNDIwQUExIC8qIE1lZGlhQ29uc3RyYWlu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE0MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRp
YUNvbnN0cmFpbnRzSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxNSw2ICsyNzc0Miw3IEBA
CiAJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0VFNzZFQzFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjRCNDY1
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3
QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODk2Nyw2ICsyODk5NSw3IEBACiAJCQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkw
IC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNG
RkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkYwMUJF
QTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDYxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDgxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNo
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5ODIyLDYgKzI5ODUxLDcgQEAKIAkJCQkwNzNC
RTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQzBEMzcwOUZFRDA3MzAwN0IwMjM1
IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRFRjFCRUNGMkQyMDAxNzQx
NDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
OUMyNjQwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzRjEyMDZCMUI4QzEwNDcwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDAzNyw2ICszMDA2Nyw3IEBACiAJCQkJQjJGQTNE
REUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RFMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTQyQTc5NjBBRTVDOTQyMDBERjU4REYgLyogSlNT
VkdQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRGMzFCRUQ1Rjg4MDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNE
RTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyRkEzREU1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHlnb25FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzREU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHls
aW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDY2LDYgKzMwMDk3LDcgQEAKIAkJ
CQlCMkZBM0UxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVc2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzRTE2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1ZpZXdFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMThGRUQ0MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NW
R1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkVCMUJFOTZEQjAwMEY4OTEz
MyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1
MjI3RDExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMCArMTIwLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CiAKKyAgICBtX3ByZXZpZXdM
YXllciA9IG51bGxwdHI7CisgICAgbV9pbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKCk7CisKICAg
ICBtX21lZGlhU3RyZWFtUHJpdmF0ZSA9ICZzdHJlYW07CiAgICAgbV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsK
ICAgICBtX2VuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTgsMTYgKzM1OSwxMSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotI2lmbmRlZiBOREVCVUcKICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUg
PSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tncm91
bmQgbGF5ZXIiOwotI2VuZGlmCiAKICAgICBtX3ByZXZpZXdMYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVu
dHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZTsKICAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5h
bmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgbV9wcmV2
aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXphYmxlIHwg
a0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotI2VuZGlmCiAgICAgaWYgKCFtX3BsYXlpbmcpCiAgICAg
ICAgIG1fcHJldmlld0xheWVyLmdldCgpLmhpZGRlbiA9IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlTGlzdCgpCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VzID0g
Y2FwdHVyZURldmljZUxpc3QoKTsKICAgICAKLSAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5cGUg
KmRldmljZSBpbiBbQVZDYXB0dXJlRGV2aWNlIGRldmljZXNdKSB7CisgICAgZm9yIChBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgaW4gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNl
c10pIHsKICAgICAgICAgQ2FwdHVyZURldmljZSBzb3VyY2U7CiAKICAgICAgICAgaWYgKCFbZGV2
aWNlIGlzQ29ubmVjdGVkXSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBDYXB0dXJlRGV2aWNlKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpiCiAgICAgCiAgICAgc2l6ZV90IGNvdW50ID0gZGV2aWNlcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
IEFWQ2FwdHVyZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0
aFVuaXF1ZUlEOmRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VX
aXRoVW5pcXVlSUQ6ZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VS
VChkZXZpY2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGRldmljZSAmJiBkZXZpY2VTdXBwb3J0
c0ZhY2luZ01vZGUoZGV2aWNlLCBmYWNpbmdNb2RlKSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gQVZDYXB0dXJlRGV2CiAgICAgICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGNhcHR1cmVEZXZpY2UubV92aWRlb1NvdXJj
ZUlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFWQ2FwdHVy
ZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0aFVuaXF1ZUlE
OmNhcHR1cmVEZXZpY2UubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1cmVEZXZp
Y2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5p
cXVlSUQ6Y2FwdHVyZURldmljZS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VSVChk
ZXZpY2UpOwogCiAgICAgICAgIFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gY2FwdHVyZVNv
dXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hY19oCisjZGVmaW5lIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYygpIHsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTsKKyAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpOworCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbV9wcmV2aWV3SW1hZ2U7CisgICAgbXV0YWJsZSBSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gbV9wcmV2aWV3TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2lt
cG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9DQVRyYW5zYWN0aW9uLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMoKSk7Cit9CisKK01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpCisgICAgOiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcmV2aWV3TGF5ZXIpCisgICAg
ICAgIHJldHVybiBtX3ByZXZpZXdMYXllci5nZXQoKTsKKworICAgIG1fcHJldmlld0xheWVyID0g
YWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQo
KS5uYW1lID0gQCJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBwcmV2aWV3IGxheWVyIjsKKyAg
ICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXpl
QXNwZWN0OworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFpl
cm87CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2Ug
PSBZRVM7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hdXRv
cmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFi
bGU7CisjZW5kaWYKKworICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKKworICAgIHJldHVybiBt
X3ByZXZpZXdMYXllci5nZXQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgVEFSR0VUX09TX0lQSE9ORSB8
fCAoUExBVEZPUk0oTUFDKSkKKyAgICBpZiAoIW1fcHJldmlld0xheWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0
QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlv
bnM6WUVTXTsKKworICAgIGRvIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZSgpOworICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigp
OworICAgICAgICBpZiAoIW1fcHJldmlld0ltYWdlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVudHMgPSAoTlNPYmplY3QqKShtX3ByZXZp
ZXdJbWFnZS5nZXQoKSk7CisgICAgfSB3aGlsZSgwKTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07CisKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlKCkpOworfQorCitNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UoKQorICAgIDogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgbW9ja0F1
ZGlvU291cmNlTmFtZSgpKQoreworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp1
cGRhdGVTdGF0ZXMoKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9
IGN1cnJlbnRTdGF0ZXMoKTsKKyAgICBzdGF0ZXMtPnNldFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CisgICAgc3RhdGVzLT5zZXRWb2x1bWUoNTApOwor
fQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVz
KFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKK3sKKyAgICBj
YXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlS
YW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VfaAorI2RlZmluZSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZV9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNl
LmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkg
eyB9CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpOworCitwcml2
YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFs
aXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBvdmVycmlk
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwor
ICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlIDxt
YXRoLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBj
OWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBp
ZDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9j
a1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGlkOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9T
b3VyY2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBu
YW1lKCJNb2NrIGF1ZGlvIGRldmljZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJNb2NrIHZpZGVvIGRldmljZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBuYW1lOworfQorCitS
ZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3Vy
Y2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgaWQsIE1lZGlhQ29uc3RyYWludHMqKQoreworICAgIC8v
IEZJWE1FOiB2YWxpZGF0ZSBjb25zdHJhaW50cy4KKworICAgIGlmIChtb2NrQXVkaW9Tb3VyY2VQ
ZXJzaXN0ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3Jl
YXRlKG1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFja1NvdXJjZUluZm86OkF1ZGlv
LCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKworICAgIGlmIChtb2NrVmlkZW9Tb3VyY2VQZXJzaXN0
ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKG1v
Y2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCAiTW9j
ayB2aWRlbyBkZXZpY2UiKTsKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworI2lmIDAK
KworI2VuZGlmCisKK01vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZShjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoaWQsIHR5cGUsIG5h
bWUpCit7CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCisgICAg
ICAgIHNldFBlcnNpc3RlbnRJRChtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSk7CisgICAg
ZWxzZQorICAgICAgICBzZXRQZXJzaXN0ZW50SUQobW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElE
KCkpOworfQorCitSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYgKCFtX2NhcGFiaWxp
dGllcykgeworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM6OmNyZWF0ZSgpOworICAgICAgICBtX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQo
bV9jdXJyZW50U3RhdGVzLnNvdXJjZUlkKCkpOworICAgICAgICBpbml0aWFsaXplQ2FwYWJpbGl0
aWVzKCptX2NhcGFiaWxpdGllcy5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX2NhcGFiaWxp
dGllczsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2U6OnN0YXRlcygpCit7CisgICAgbV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZUlk
KGlkKCkpOworICAgIHVwZGF0ZVN0YXRlcygpOworCisgICAgcmV0dXJuIG1fY3VycmVudFN0YXRl
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZV9oCisj
ZGVmaW5lIE1vY2tSZWFsdGltZU1lZGlhU291cmNlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdFJlY3Q7CitjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUcmFja1NvdXJjZUluZm87CisKK2NsYXNzIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZU1lZGlhU291cmNlKCkgeyB9CisKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VOYW1lKCk7CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VOYW1lKCk7
CisKKyAgICBzdGF0aWMgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gdHJhY2tTb3VyY2VXaXRoVUlE
KGNvbnN0IFN0cmluZyYsIE1lZGlhQ29uc3RyYWludHMqKTsKKworcHJvdGVjdGVkOgorICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGVzKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmKSA9IDA7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRl
IHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOyB9CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIG92ZXJyaWRlIHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsgfQorCisgICAgUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIG92ZXJyaWRl
OworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpIG92ZXJyaWRl
OworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogY3VycmVudFN0YXRlcygpIHsgcmV0
dXJuICZtX2N1cnJlbnRTdGF0ZXM7IH0KKyAgICBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50
cygpIHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0KKworcHJpdmF0ZToKKworICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVz
OworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxp
dGllczsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAko
cmV2aXNpb24gMTkyMTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAi
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHNNb2NrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKQEAgLTM2LDg2ICszNiwxNiBA
QAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2Nr
U291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewotcHVibGljOgotICAgIE1vY2tT
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpCi0gICAgICAgIDogUmVhbHRpbWVNZWRpYVNv
dXJjZShpZCwgdHlwZSwgbmFtZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+TW9ja1Nv
dXJjZSgpIHsgfQotCi0gICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpIHsgcmV0dXJu
IG1fY3VycmVudFN0YXRlczsgfQotCi0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMg
bV9jdXJyZW50U3RhdGVzOwotfTsKLSAgICAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxNb2NrU291cmNlPj4gTW9ja1NvdXJjZU1hcDsKLQotc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1v
Y2tTb3VyY2VNYXAoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNb2Nr
U291cmNlTWFwLCBtb2NrU291cmNlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIG1vY2tTb3VyY2VNYXA7
Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tBdWRpb1NvdXJjZUlEKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjEtMmIx
NS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
b2NrVmlkZW9Tb3VyY2VJRCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBpZDsKLX0KLQotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCkKLXsKLSAgICBSZWZQdHI8TW9ja1NvdXJjZT4g
bW9ja1NvdXJjZTEgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrVmlkZW9Tb3VyY2VJRCgp
LCAiTW9jayB2aWRlbyBkZXZpY2UiLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM6OmNyZWF0ZSgpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291
cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGll
cy0+YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7Ci0gICAg
bW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPnNldFdpZHRoUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgzMjBV
TCwgMTkyMFVMLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRI
ZWlnaHRSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgw
VUwsIHRydWUpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldEZyYW1lUmF0
ZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0
cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRBc3BlY3RSYXRpb1Jh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoNCAvIDMuMGYsIDE2IC8gOS4w
ZiwgdHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFu
Z2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVMLCA5MFVMLCB0cnVlKSk7
Ci0KLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50
U3RhdGVzLnNldFNvdXJjZUlkKG1vY2tTb3VyY2UxLT5pZCgpKTsKLSAgICBtb2NrU291cmNlMS0+
bV9jdXJyZW50U3RhdGVzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
VXNlcik7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRXaWR0aCgxOTIwKTsK
LSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEhlaWdodCgxMDgwKTsKLSAgICBt
b2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEZyYW1lUmF0ZSgzMCk7Ci0gICAgbW9ja1Nv
dXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRBc3BlY3RSYXRpbygxNiAvIDkuMGYpOwotICAgIG1v
Y2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0Vm9sdW1lKDcwKTsKLSAgICBTdHJpbmcgbW9j
a1NvdXJjZTFpZCA9IG1vY2tTb3VyY2UxLT5pZCgpOwotICAgIG1vY2tTb3VyY2VNYXAoKS5hZGQo
bW9ja1NvdXJjZTFpZCwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKLQotICAgIFJlZlB0cjxNb2Nr
U291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1vY2tBdWRpb1Nv
dXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVz
LT5zZXRTb3VyY2VJZChtb2NrU291cmNlMi0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2Fw
YWJpbGl0aWVzLT5zZXRWb2x1bWVSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKLQotICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0
ZXMuc2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsK
LSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZUlkKG1vY2tTb3VyY2Uy
LT5pZCgpKTsKLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnNldFZvbHVtZSg1MCk7
Ci0gICAgU3RyaW5nIG1vY2tTb3VyY2UyaWQgPSBtb2NrU291cmNlMi0+aWQoKTsKLSAgICBtb2Nr
U291cmNlTWFwKCkuYWRkKG1vY2tTb3VyY2UyaWQsIG1vY2tTb3VyY2UyLnJlbGVhc2UoKSk7Ci19
Ci0KIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlZ2lzdGVyTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIoKQogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciwgY2VudGVyLCAoKSk7CkBAIC0xMjMs
NyArNTMsNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZWdpCiAgICAg
aWYgKCFyZWdpc3RlcmVkKSB7CiAgICAgICAgIHJlZ2lzdGVyZWQgPSB0cnVlOwogICAgICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7
Ci0gICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOwogICAgIH0KIH0KIApAQCAtMTMzLDcg
KzYyLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogCiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKLSAgICBNb2Nr
U291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAgICBpZiAoYXVkaW9Db25zdHJh
aW50cykgewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01v
Y2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOwpAQCAtMTQyLDExICs3MCw3
IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBt
YXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1Nv
dXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAg
IFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMTU3LDExICs4MSw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9j
a1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0g
ICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1
ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVh
dGUoKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkp
OwogICAgIH0KIApAQCAtMTc2LDcgKzk2LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYQogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiB2aWRlb1NvdXJjZXM7Ci0gICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgp
OwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRR
dWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0
cmFpbnRzKTsKQEAgLTE4NSwxMSArMTA0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
TW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgp
KTsKLSAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwotICAgICAgICBhdWRp
b1NvdXJjZS0+cmVzZXQoKTsKKyAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1
ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwogICAgICAgICBh
dWRpb1NvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgfQogCkBAIC0y
MDAsMTEgKzExNSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFT
U0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0
KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KICAgICAKQEAgLTIxNiwyMiArMTI3
LDEzIEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICBBU1NF
UlQoY2xpZW50KTsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRp
b1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9T
b3VyY2VzOwotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3VyY2VNYXAoKTsKLQotICAg
IGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTW9ja1NvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgpKTsKLSAgICAgICAgQVNT
RVJUKGl0ICE9IG1hcC5lbmQoKSk7CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwotICAgICAgICBhdWRpb1NvdXJjZS0+cmVzZXQo
KTsKKyAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQgPT0g
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpKSB7
CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KLSAgICBpZiAoIXZpZGVvRGV2aWNlSUQu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZp
bmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkp
OwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGl0
LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgaWYgKCF2aWRlb0Rl
dmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgeworICAgICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Y3JlYXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFz
ZSgpKTsKICAgICB9CiAKQEAgLTI0MywyNSArMTQ1LDE5IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmdldE0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50PiByZXF1ZXN0Q2xpZW50ID0gcHJwQ2xpZW50OwogICAgIFRyYWNrU291cmNl
SW5mb1ZlY3RvciBzb3VyY2VzOwogCi0gICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJj
ZU1hcCgpOwotICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAg
ICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7
CisgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNl
V2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVu
dElEKCksIG51bGxwdHIpKTsKKyAgICBzb3VyY2VzLmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlk
ZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0cikpOwogCi0gICAgICAgIHNvdXJjZXMuYXBw
ZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDog
VHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkpKTsKLSAgICB9CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNlc10geworICAgICAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CisgICAgfSk7CiAKLSAg
ICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgVUlELCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikKK1JlZlB0cjxUcmFja1NvdXJjZUluZm8+
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmlu
ZyYgVUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykKIHsKLSAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1vY2tTb3VyY2VNYXAoKSkgewot
ICAgICAgICBpZiAoc291cmNlLnZhbHVlLT5pZCgpID09IFVJRCkKLSAgICAgICAgICAgIHJldHVy
biBUcmFja1NvdXJjZUluZm86OmNyZWF0ZShzb3VyY2UudmFsdWUtPmlkKCksIHNvdXJjZS52YWx1
ZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZv
OjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJjZS52YWx1ZS0+bmFtZSgpKTsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQoVUlELCBjb25zdHJhaW50cyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oSU9TKQorUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlKCkpOworfQorI2VuZGlmCisKK01vY2tSZWFsdGltZVZpZGVvU291cmNlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpCisgICAgOiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBt
b2NrVmlkZW9Tb3VyY2VOYW1lKCkpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJk1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKQoreworICAgIG1fZGFz
aFdpZHRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOworICAgIG1fZGFzaFdpZHRocy51bmNo
ZWNrZWRBcHBlbmQoNik7CisgICAgbV9kYXNoV2lkdGhzLnVuY2hlY2tlZEFwcGVuZCg2KTsKK30K
Kwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sK
KyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAg
aWYgKG1fc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHNldFNpemUoSW50U2l6ZSg2NDAsIDQ4MCkp
OworCisgICAgbV9zdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAg
ICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMobHJvdW5k
KDEwMDAgLyBtX2ZyYW1lUmF0ZSkpKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2VsYXBzZWRU
aW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7CisgICAg
bV9zdGFydFRpbWUgPSBOQU47Cit9CisKK2RvdWJsZSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZWxhcHNlZFRpbWUoKQoreworICAgIGlmIChzdGQ6OmlzbmFuKG1fc3RhcnRUaW1lKSkKKyAgICAg
ICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CisKKyAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArICht
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lKTsKK30KKwordm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU3RhdGVzKCkKK3sKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7CisKKyAgICBzdGF0ZXMt
PnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7CisgICAgc3Rh
dGVzLT5zZXRGcmFtZVJhdGUobV9mcmFtZVJhdGUpOworICAgIHN0YXRlcy0+c2V0V2lkdGgobV9z
aXplLndpZHRoKCkpOworICAgIHN0YXRlcy0+c2V0SGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgc3RhdGVzLT5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV9zaXplLndpZHRo
KCkpIC8gbV9zaXplLmhlaWdodCgpKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMpCit7CisgICAgY2FwYWJpbGl0aWVzLmFkZFNvdXJjZVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5n
TW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBjYXBhYmlsaXRpZXMu
YWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7Cisg
ICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dHlSYW5nZSgzMjBVTCwgMTkyMFVMLCB0cnVlKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdo
dFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMjQwVUwsIDEwODBVTCwg
dHJ1ZSkpOworICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGVSYW5nZShSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOworICAgIGNhcGFiaWxp
dGllcy5zZXRBc3BlY3RSYXRpb1JhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFu
Z2UoNCAvIDMuMGYsIDE2IC8gOS4wZiwgdHJ1ZSkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVv
RmFjaW5nTW9kZSBtb2RlKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRl
cyA9IGN1cnJlbnRTdGF0ZXMoKTsKKworICAgIGlmIChzdGF0ZXMtPmZhY2luZ01vZGUoKSA9PSBt
b2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0ZXMtPnNldEZhY2luZ01vZGUobW9kZSk7
CisKKyAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OnNldEZyYW1lUmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX2ZyYW1lUmF0ZSA9
PSByYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyYW1lUmF0ZSA9IHJhdGU7CisgICAg
aWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKGxyb3VuZCgxMDAwIC8gbV9mcmFtZVJhdGUpKSk7CisK
KyAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBtX3Np
emUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2l6ZSA9IHNpemU7CisKKyAgICBtX2Jhc2VG
b250U2l6ZSA9IG1fc2l6ZS5oZWlnaHQoKSAqIC4wODsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJD
b3VyaWVyIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUobV9iYXNlRm9u
dFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobV9iYXNlRm9udFNp
emUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDUwMCk7CisKKyAg
ICBtX3RpbWVGb250ID0gRm9udENhc2NhZGUoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsKKyAgICBt
X3RpbWVGb250LnVwZGF0ZShudWxscHRyKTsKKworICAgIG1fYmlwQm9wRm9udFNpemUgPSBtX2Jh
c2VGb250U2l6ZSAqIDIuNTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZSht
X2JpcEJvcEZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKG1f
YmlwQm9wRm9udFNpemUpOworICAgIG1fYmlwQm9wRm9udCA9IEZvbnRDYXNjYWRlKGZvbnREZXNj
cmlwdGlvbiwgMCwgMCk7CisgICAgbV9iaXBCb3BGb250LnVwZGF0ZShudWxscHRyKTsKKworICAg
IG1fc3RhdHNGb250U2l6ZSA9IG1fYmFzZUZvbnRTaXplICogLjU7CisgICAgZm9udERlc2NyaXB0
aW9uLnNldFNwZWNpZmllZFNpemUobV9zdGF0c0ZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKG1fc3RhdHNGb250U2l6ZSk7CisgICAgbV9zdGF0c0ZvbnQgPSBG
b250Q2FzY2FkZShmb250RGVzY3JpcHRpb24sIDAsIDApOworICAgIG1fc3RhdHNGb250LnVwZGF0
ZShudWxscHRyKTsKKworICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOworICAgIHVwZGF0ZVBs
YXRmb3JtTGF5ZXIoKTsKKworICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKK30KKwordm9pZCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgZmxvYXQgcmFkaXVzID0gbV9zaXplLndpZHRoKCkgKiAuMDk7CisgICAgRmxv
YXRQb2ludCBsb2NhdGlvbihtX3NpemUud2lkdGgoKSAqIC44LCBtX3NpemUuaGVpZ2h0KCkgKiAu
Myk7CisKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBtX3BhdGgubW92ZVRvKGxvY2F0aW9uKTsK
KyAgICBtX3BhdGguYWRkQXJjKGxvY2F0aW9uLCByYWRpdXMsIDAsIDIgKiBwaUZsb2F0LCBmYWxz
ZSk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjp3aGl0ZSk7CisgICAgY29udGV4dC5zZXRGaWxsUnVsZShSVUxFX05PTlpFUk8pOwor
ICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKKworICAgIGZsb2F0IGVuZEFuZ2xlID0gcGlG
bG9hdCAqICgoKGZtb2QobV9mcmFtZU51bWJlciwgbV9mcmFtZVJhdGUpICsgMC41KSAqICgyLjAg
LyBtX2ZyYW1lUmF0ZSkpICsgMSk7CisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgbV9wYXRoLm1v
dmVUbyhsb2NhdGlvbik7CisgICAgbV9wYXRoLmFkZEFyYyhsb2NhdGlvbiwgcmFkaXVzLCAxLjUg
KiBwaUZsb2F0LCBlbmRBbmdsZSwgZmFsc2UpOworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsK
KyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgY29udGV4dC5zZXRG
aWxsUnVsZShSVUxFX05PTlpFUk8pOworICAgIGNvbnRleHQuZmlsbFBhdGgobV9wYXRoKTsKK30K
Kwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIG1hZ2VudGEgPSAweGZmZmYw
MGZmOworICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhmZmZmZmYwMDsKKyAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIGJsdWUgPSAweGZmMDAwMGZmOworICAgIHN0YXRpYyBjb25zdCBS
R0JBMzIgcmVkID0gMHhmZmZmMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyZWVuID0g
MHhmZjAwODAwMDsKKworICAgIGZsb2F0IGJveFNpemUgPSBtX3NpemUud2lkdGgoKSAqIC4wMzU7
CisgICAgZmxvYXQgYm94VG9wID0gbV9zaXplLmhlaWdodCgpICogLjY7CisKKyAgICBtX3BhdGgu
Y2xlYXIoKTsKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KDIsIDIsIG1fc2l6ZS53aWR0aCgpIC0g
MywgbV9zaXplLmhlaWdodCgpIC0gMyk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xv
cjo6d2hpdGUpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDMpOworICAgIGNvbnRl
eHQuc2V0TGluZURhc2gobV9kYXNoV2lkdGhzLCAwKTsKKyAgICBtX3BhdGguYWRkUmVjdChmcmFt
ZVJlY3QpOworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICBjb250ZXh0LnN0cm9rZVBh
dGgobV9wYXRoKTsKKworICAgIGNvbnRleHQuc2V0TGluZURhc2goRGFzaEFycmF5KCksIDApOwor
ICAgIG1fcGF0aC5jbGVhcigpOworICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCgwLCBib3hU
b3AgKyBib3hTaXplKSk7CisgICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KG1fc2l6ZS53
aWR0aCgpLCBib3hUb3AgKyBib3hTaXplKSk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwor
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAgICBjb250ZXh0LnNl
dFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0LnN0cm9rZVBhdGgobV9wYXRoKTsKKwor
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgIGZsb2F0IGJveExlZnQgPSBi
b3hTaXplOworICAgIG1fcGF0aC5jbGVhcigpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3hTaXplIC8gNDsgaSsrKSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChi
b3hMZWZ0ICsgNCAqIGksIGJveFRvcCkpOworICAgICAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0
UG9pbnQoYm94TGVmdCArIDQgKiBpLCBib3hUb3AgKyBib3hTaXplKSk7CisgICAgfQorICAgIGJv
eExlZnQgKz0gYm94U2l6ZSArIDI7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJveFNp
emUgLyA0OyBpKyspIHsKKyAgICAgICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KGJveExlZnQs
IGJveFRvcCArIDQgKiBpKSk7CisgICAgICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChi
b3hMZWZ0ICsgYm94U2l6ZSAtIDEsIGJveFRvcCArIDQgKiBpKSk7CisgICAgfQorICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDMpOworICAgIGJveExlZnQgKz0gYm94U2l6ZSArIDI7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJveFNpemUgLyA4OyBpKyspIHsKKyAgICAgICAg
bV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyA4ICogaSwgYm94VG9wKSk7CisgICAg
ICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChib3hMZWZ0ICsgOCAqIGksIGJveFRvcCAr
IGJveFNpemUgLSAxKSk7CisgICAgfQorICAgIGJveExlZnQgKz0gYm94U2l6ZSArIDI7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJveFNpemUgLyA4OyBpKyspIHsKKyAgICAgICAgbV9w
YXRoLm1vdmVUbyhGbG9hdFBvaW50KGJveExlZnQsIGJveFRvcCArIDggKiBpKSk7CisgICAgICAg
IG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChib3hMZWZ0ICsgYm94U2l6ZSAtIDEsIGJveFRv
cCArIDggKiBpKSk7CisgICAgfQorCisgICAgYm94VG9wICs9IGJveFNpemUgKyAyOworICAgIGJv
eExlZnQgPSBib3hTaXplOworICAgIENvbG9yIGJveENvbG9yc1tdID0geyBDb2xvcjo6d2hpdGUs
IHllbGxvdywgQ29sb3I6OmN5YW4sIGdyZWVuLCBtYWdlbnRhLCByZWQsIGJsdWUgfTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGJveENvbG9ycykgLyBzaXplb2YoYm94Q29s
b3JzWzBdKTsgaSsrKSB7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KGJveExl
ZnQsIGJveFRvcCwgYm94U2l6ZSArIDEsIGJveFNpemUgKyAxKSwgYm94Q29sb3JzW2ldKTsKKyAg
ICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKKyAgICB9CisgICAgY29udGV4dC5zdHJva2VQ
YXRoKG1fcGF0aCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1bnNpZ25lZCBtaWxsaXNlY29uZHMg
PSBscm91bmQoZWxhcHNlZFRpbWUoKSAqIDEwMDApOworICAgIHVuc2lnbmVkIHNlY29uZHMgPSBt
aWxsaXNlY29uZHMgLyAxMDAwICUgNjA7CisgICAgdW5zaWduZWQgbWludXRlcyA9IHNlY29uZHMg
LyA2MCAlIDYwOworICAgIHVuc2lnbmVkIGhvdXJzID0gbWludXRlcyAvIDYwICUgNjA7CisKKyAg
ICBGbG9hdFBvaW50IHRpbWVMb2NhdGlvbihtX3NpemUud2lkdGgoKSAqIC4wNSwgbV9zaXplLmhl
aWdodCgpICogLjE1KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwor
ICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7CisgICAgU3RyaW5n
IHN0cmluZyA9IFN0cmluZzo6Zm9ybWF0KCIlMDJ1OiUwMnU6JTAydS4lMDN1IiwgaG91cnMsIG1p
bnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcyAlIDEwMDApOworICAgIGNvbnRleHQuZHJhd1Rl
eHQobV90aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlv
biwgMCwgLTEpOworCisgICAgc3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiUwNnUiLCBtX2ZyYW1l
TnVtYmVyKyspOworICAgIHRpbWVMb2NhdGlvbi5tb3ZlKDAsIG1fYmFzZUZvbnRTaXplKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fdGltZUZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5n
KSkpLCB0aW1lTG9jYXRpb24sIDAsIC0xKTsKKworICAgIEZsb2F0UG9pbnQgc3RhdHNMb2NhdGlv
bihtX3NpemUud2lkdGgoKSAqIC42NSwgbV9zaXplLmhlaWdodCgpICogLjc1KTsKKyAgICBzdHJp
bmcgPSBTdHJpbmc6OmZvcm1hdCgiRnJhbWUgcmF0ZTogJXVmcHMiLCBtX2ZyYW1lUmF0ZSk7Cisg
ICAgY29udGV4dC5kcmF3VGV4dChtX3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJp
bmcpKSksIHN0YXRzTG9jYXRpb24sIDAsIC0xKTsKKworICAgIHN0cmluZyA9IFN0cmluZzo6Zm9y
bWF0KCJTaXplOiAldSB4ICV1IiwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgc3RhdHNMb2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CisgICAgY29udGV4dC5k
cmF3VGV4dChtX3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRz
TG9jYXRpb24sIDAsIC0xKTsKKworICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsKKyAgICBzd2l0Y2gg
KHN0YXRlcygpLmZhY2luZ01vZGUoKSkgeworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6VXNlcjoKKyAgICAgICAgY2FtZXJhID0gIlVzZXIgZmFjaW5nIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDoKKyAg
ICAgICAgY2FtZXJhID0gIkVudmlyb25tZW50IGZhY2luZyI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVmdDoKKyAgICAgICAgY2FtZXJhID0g
IkxlZnQgZmFjaW5nIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpSaWdodDoKKyAgICAgICAgY2FtZXJhID0gIlJpZ2h0IGZhY2luZyI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bjoK
KyAgICAgICAgY2FtZXJhID0gIlVua25vd24iOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
c3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIkNhbWVyYTogJXMiLCBjYW1lcmEpOworICAgIHN0YXRz
TG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9udFNpemUpOworICAgIGNvbnRleHQuZHJhd1RleHQo
bV9zdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9u
LCAwLCAtMSk7CisKKyAgICBGbG9hdFBvaW50IGJpcEJvcExvY2F0aW9uKG1fc2l6ZS53aWR0aCgp
ICogLjYsIG1fc2l6ZS5oZWlnaHQoKSAqIC42KTsKKyAgICB1bnNpZ25lZCBmcmFtZU1vZCA9IG1f
ZnJhbWVOdW1iZXIgJSA2MDsKKyAgICBpZiAoZnJhbWVNb2QgPD0gMTUpIHsKKyAgICAgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXkpOworICAgICAgICBUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KCJCaXAiKSk7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQobV9iaXBCb3BGb250LCBy
dW4sIGJpcEJvcExvY2F0aW9uLCAwLCAtMSk7CisgICAgfSBlbHNlIGlmIChmcmFtZU1vZCA+IDMw
ICYmIGZyYW1lTW9kIDw9IDQ1KSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoIkJvcCIpKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3VGV4dChtX2JpcEJvcEZvbnQsIHJ1biwgYmlwQm9wTG9jYXRpb24sIDAs
IC0xKTsKKyAgICB9Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRl
RnJhbWUoKQoreworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IGltYWdlQnVmZmVyKCkt
PmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CisKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKTsK
KyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSksIENv
bG9yOjpibGFjayk7CisKKyAgICBkcmF3VGV4dChjb250ZXh0KTsKKyAgICBkcmF3QW5pbWF0aW9u
KGNvbnRleHQpOworICAgIGRyYXdCb3hlcyhjb250ZXh0KTsKKworICAgIHVwZGF0ZVBsYXRmb3Jt
TGF5ZXIoKTsKK30KKworSW1hZ2VCdWZmZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbWFn
ZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKG1faW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyLmdldCgpOworCisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUobV9zaXplLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBpZiAoIW1faW1hZ2VCdWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQpOworICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7CisKKyAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUJ1ZmZlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisvLyAgICBjb250ZXh0LnRy
YW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgSW50
UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKSk7CisKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9pbWFnZUJ1ZmZlci0+Y29w
eUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSwgcmVjdCk7Cit9CisKK1JlZlB0cjxJbWFnZT4g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmN1cnJlbnRGcmFtZUltYWdlKCkKK3sKKyAgICBpZiAo
IWltYWdlQnVmZmVyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1f
aW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Cit9CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAg
ICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVy
aWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VfaAorI2RlZmluZSBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
Ik1vY2tSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CisKK2NsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlIDogcHVibGljIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlIHsKK3B1YmxpYzoKKworICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworCisgICAgdmlydHVhbCB+TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UoKSB7IH0KKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CisgICAg
Y29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdm9p
ZCBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9k
ZSk7CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQpOworCitwcm90ZWN0ZWQ6CisgICAgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgfQorCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYp
IG92ZXJyaWRlOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRyYXdBbmlt
YXRpb24oR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRl
eHQmKTsKKyAgICB2b2lkIGRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmKTsKKworICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgUmVmUHRyPEltYWdlPiBjdXJyZW50RnJhbWVJbWFnZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGdlbmVyYXRlRnJhbWUoKTsKKworICAg
IGRvdWJsZSBlbGFwc2VkVGltZSgpOworCisgICAgZmxvYXQgbV9iYXNlRm9udFNpemUgeyAwIH07
CisgICAgRm9udENhc2NhZGUgbV90aW1lRm9udDsKKworICAgIGZsb2F0IG1fYmlwQm9wRm9udFNp
emUgeyAwIH07CisgICAgRm9udENhc2NhZGUgbV9iaXBCb3BGb250OworCisgICAgZmxvYXQgbV9z
dGF0c0ZvbnRTaXplIHsgMCB9OworICAgIEZvbnRDYXNjYWRlIG1fc3RhdHNGb250OworCisgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisKKyAg
ICBJbnRTaXplIG1fc2l6ZTsKKyAgICBQYXRoIG1fcGF0aDsKKyAgICBEYXNoQXJyYXkgbV9kYXNo
V2lkdGhzOworCisgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgTkFOIH07CisgICAgZG91YmxlIG1f
ZWxhcHNlZFRpbWUgeyAwIH07CisKKyAgICB1bnNpZ25lZCBtX2ZyYW1lUmF0ZSB7IDMwIH07Cisg
ICAgdW5zaWduZWQgbV9mcmFtZU51bWJlciB7IDAgfTsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265029</attachid>
            <date>2015-11-08 19:54:15 -0800</date>
            <delta_ts>2015-11-08 20:01:29 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>mock_source_patch_7.txt</filename>
            <type>text/plain</type>
            <size>72353</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMS0wOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEFkZCBtb2NrIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzNDUzMzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBiYXNpYyBtb2NrIGF1ZGlvIGFuZCB2aWRlbyByZWFsdGltZSBtZWRpYSBzb3Vy
Y2UgY2xhc3NlcyBzbyB3ZSBjYW4gdGVzdCBNZWRpYVN0cmVhbQorICAgICAgICBBUEkgd2l0aG91
dCByZXF1aXJpbmcgdGVzdCBtYWNoaW5lcyB0byBoYXZlIGF1ZGlvL3ZpZGVvIGlucHV0IGhhcmR3
YXJlLiBObyBuZXcgdGVzdHMgYWRkZWQKKyAgICAgICAgeWV0LCB0aG9lIHdpbGwgZm9sbG93Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlc2UgY2hhbmdlcyB3aWxsIGFsbG93IHVzIHRvIHdy
aXRlIE1lZGlhU3RyZWFtIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCwg
YW5kIAorICAgICAgICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorCisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6IEFkZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJzKTog
RG9uJ3Qgc2V0IGF1dG9yZXNpemluZ01hc2ssCisgICAgICAgICAgaXQgaXNuJ3QgbmVjZXNzYXJ5
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpyZWZyZXNoQ2FwdHVyZURldmljZUxpc3QpOiBB
VkNhcHR1cmVEZXZpY2UgLT4gZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKQorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERldmljZUZvckZhY2luZ01vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNvdXJjZVdp
dGhVSUQpOiBEaXR0by4KKworICAgICAgICBNYWMgY2xhc3MgaW1wbGVtZW50cyBSZWFsdGltZVZp
ZGVvU291cmNlOjpwbGF0Zm9ybUxheWVyLCByZXR1cm5zIGEgQ0FMYXllciB3aGljaCB1c2VzIHRo
ZQorICAgICAgICBHcmFwaGljc0NvbnRleHQgYXMgY29udGVudHMuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisKKyAgICAg
ICAgTW9jayBhdWRpbyBzb3VyY2UuIERvZXNuJ3QgcHJvdmlkZSBkYXRhIHlldCwgb25seSBwcm92
aWRlcyBzdGF0ZXMgYW5kIGNhcGFiaWxpdGllcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6On5Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZSk6CisKKyAgICAgICAgTW9jayBzb3VyY2UgYmFzZSBjbGFzcywgc2V0cyBw
ZXJzaXN0ZW50IElEIGFuZCB1cGRhdGVzIHN0YXRlcyBhbmQgY2FwYWJpbGl0aWVzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9QZXJzaXN0
ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1BlcnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291
cmNlUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6On5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3VycmVudFN0YXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29uc3RyYWludHMpOgorCisg
ICAgICAgIFVzZSBuZXcgbW9jayBzb3VyY2UgY2xhc3Nlcy4gQ3JlYXRlIGEgbmV3IHNvdXJjZSBp
bnN0YW5jZSBmb3IgZWFjaCByZXF1ZXN0IGluc3RlYWQgb2YgcmV1c2luZyB0aGUKKyAgICAgICAg
c2FtZSBzb3VyY2VzIGVhY2ggdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
Z2lzdGVyTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1NvdXJjZTo6TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlOjp+TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlOjpjYXBhYmlsaXRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tBdWRpb1NvdXJjZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tWaWRlb1NvdXJjZUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVNb2NrU291cmNlcyk6IERlbGV0ZWQuCisK
KyAgICAgICAgTW9jayB2aWRlbyBzb3VyY2UuIEdlbmVyYXRlIGJpcC1ib3AgaW5zcGlyZWQgZnJh
bWVzIHdpdGggYnVybmVkIGluIHN0YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjplbGFw
c2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBk
YXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVQ
bGF0Zm9ybUxheWVyKToKKwogMjAxNS0xMS0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTIxNDApOiBXaW5kb3dzIGJ1aWxkIGJy
b2tlIGFmdGVyIHJlbW92aW5nIENvbG9yU3BhY2UgYXJndW1lbnQgdG8gYWxsIGRyYXdpbmcgY2Fs
bHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMwMiw3ICsyMzAyLDEw
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorICAgIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisgICAgcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorICAgIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAog
ICAgIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWFjIgorICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvY29jb2EiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
Y2YiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvbWFjIgpAQCAtNDk3LDYg
KzQ5OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCiAKKyAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
KwogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyMTQ2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzUsNiArMzM1LDEwIEBACiAJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBK
U1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QwN0IxMzE4MzQxNTg4MDBBQkREM0MgLyogSlNSVENT
ZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CisJCTA3RDZB
NEVGMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQy
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyBzZXR0aW5ncyA9IHtB
U1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3RDZBNEYwMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdENkE0RUUxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0
RjMxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEYxMUJFRDVGODgw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0RjQxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkwN0RDNUZE
NDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkw
MDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZC
MTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CkBAIC0zNDIsNiArMzQ2LDEwIEBACiAJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJEMThG
NUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsg
fTsKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovOyB9OworCQkwN0VFNzZFQjFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RTkxQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwN0VFNzZF
QzFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVBMUJFOTZEQjAwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdFRTc2
RjAxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUUxQkVBNjE5
ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTA3RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBB
VktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFWS2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdD
MUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBB
VkZvdW5kYXRpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0Y4NzY4NDFBRDU4MEY5MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTg2
LDYgKzc1OTQsMTAgQEAKIAkJMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRF
RDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdENkE0RjIxQkVE
NUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1OTMsNiArNzYwNSwxMCBAQAogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VFNzZFQTFCRTk2
REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVE
QjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVZLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1
REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBVkZvdW5kYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIxNyw2ICsxNTIzMyw4
IEBACiAJCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNl
Lm1tICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLywKKwkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKKwkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJNEEwRkZBQTMxQUFGNUVGNjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwICovLAogCQkJCTRBMEZG
QUE0MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggKi8s
CiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmggKi8sCkBAIC0xNzA3Nyw2ICsxNzA5NSwxMiBAQAogCQkJCTU5MzA5QTEyMTFGNEFF
NkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwNzM3
OTRERjE5RUUyRDFCMDBFNUEwNDUgLyogTWVkaWFDb25zdHJhaW50c01vY2suY3BwICovLAogCQkJ
CTA3Mzc5NEUwMTlFRTJEMUIwMEU1QTA0NSAvKiBNZWRpYUNvbnN0cmFpbnRzTW9jay5oICovLAor
CQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgKi8sCisJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggKi8sCisJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLywKKwkJCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYgLyogTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKKwkJCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTA3RUU3NkVBMUJFOTZEQjAw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovLAogCQkJCTRBMEZGQTlCMUFB
RjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJ
CQkJNEEwRkZBOUMxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmggKi8sCiAJCQkJQUFFMjdCNzQxNkNCRkMwRDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcCAqLywKQEAgLTI1NTU1LDcgKzI1NTc5LDkgQEAKIAkJCQlBODBE
NjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Q2QTRGMDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjU1OSw2ICsyNjU4NSw3IEBACiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYy
MEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5M0ExN0QxNkUxQzAwNDIwQUExIC8qIE1lZGlhQ29uc3RyYWlu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE0MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRp
YUNvbnN0cmFpbnRzSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxNSw2ICsyNzc0Miw3IEBA
CiAJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0VFNzZFQzFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjRCNDY1
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3
QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODk2Nyw2ICsyODk5NSw3IEBACiAJCQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkw
IC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNG
RkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkYwMUJF
QTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDYxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDgxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNo
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5ODIyLDYgKzI5ODUxLDcgQEAKIAkJCQkwNzNC
RTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQzBEMzcwOUZFRDA3MzAwN0IwMjM1
IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRFRjFCRUNGMkQyMDAxNzQx
NDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
OUMyNjQwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzRjEyMDZCMUI4QzEwNDcwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDAzNyw2ICszMDA2Nyw3IEBACiAJCQkJQjJGQTNE
REUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RFMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTQyQTc5NjBBRTVDOTQyMDBERjU4REYgLyogSlNT
VkdQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRGMzFCRUQ1Rjg4MDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNE
RTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyRkEzREU1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHlnb25FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzREU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHls
aW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDY2LDYgKzMwMDk3LDcgQEAKIAkJ
CQlCMkZBM0UxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVc2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzRTE2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1ZpZXdFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMThGRUQ0MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NW
R1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkVCMUJFOTZEQjAwMEY4OTEz
MyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1
MjI3RDExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMCArMTIwLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CiAKKyAgICBtX3ByZXZpZXdM
YXllciA9IG51bGxwdHI7CisgICAgbV9pbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKCk7CisKICAg
ICBtX21lZGlhU3RyZWFtUHJpdmF0ZSA9ICZzdHJlYW07CiAgICAgbV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsK
ICAgICBtX2VuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTgsMTYgKzM1OSwxMSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotI2lmbmRlZiBOREVCVUcKICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUg
PSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tncm91
bmQgbGF5ZXIiOwotI2VuZGlmCiAKICAgICBtX3ByZXZpZXdMYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVu
dHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZTsKICAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5h
bmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgbV9wcmV2
aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXphYmxlIHwg
a0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotI2VuZGlmCiAgICAgaWYgKCFtX3BsYXlpbmcpCiAgICAg
ICAgIG1fcHJldmlld0xheWVyLmdldCgpLmhpZGRlbiA9IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlTGlzdCgpCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VzID0g
Y2FwdHVyZURldmljZUxpc3QoKTsKICAgICAKLSAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5cGUg
KmRldmljZSBpbiBbQVZDYXB0dXJlRGV2aWNlIGRldmljZXNdKSB7CisgICAgZm9yIChBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgaW4gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNl
c10pIHsKICAgICAgICAgQ2FwdHVyZURldmljZSBzb3VyY2U7CiAKICAgICAgICAgaWYgKCFbZGV2
aWNlIGlzQ29ubmVjdGVkXSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBDYXB0dXJlRGV2aWNlKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpiCiAgICAgCiAgICAgc2l6ZV90IGNvdW50ID0gZGV2aWNlcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
IEFWQ2FwdHVyZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0
aFVuaXF1ZUlEOmRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VX
aXRoVW5pcXVlSUQ6ZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VS
VChkZXZpY2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGRldmljZSAmJiBkZXZpY2VTdXBwb3J0
c0ZhY2luZ01vZGUoZGV2aWNlLCBmYWNpbmdNb2RlKSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gQVZDYXB0dXJlRGV2CiAgICAgICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGNhcHR1cmVEZXZpY2UubV92aWRlb1NvdXJj
ZUlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFWQ2FwdHVy
ZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0aFVuaXF1ZUlE
OmNhcHR1cmVEZXZpY2UubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1cmVEZXZp
Y2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5p
cXVlSUQ6Y2FwdHVyZURldmljZS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VSVChk
ZXZpY2UpOwogCiAgICAgICAgIFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gY2FwdHVyZVNv
dXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hY19oCisjZGVmaW5lIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYygpIHsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTsKKyAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpOworCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbV9wcmV2aWV3SW1hZ2U7CisgICAgbXV0YWJsZSBSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gbV9wcmV2aWV3TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2lt
cG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9DQVRyYW5zYWN0aW9uLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMoKSk7Cit9CisKK01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpCisgICAgOiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcmV2aWV3TGF5ZXIpCisgICAg
ICAgIHJldHVybiBtX3ByZXZpZXdMYXllci5nZXQoKTsKKworICAgIG1fcHJldmlld0xheWVyID0g
YWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQo
KS5uYW1lID0gQCJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBwcmV2aWV3IGxheWVyIjsKKyAg
ICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXpl
QXNwZWN0OworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFpl
cm87CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2Ug
PSBZRVM7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hdXRv
cmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFi
bGU7CisjZW5kaWYKKworICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKKworICAgIHJldHVybiBt
X3ByZXZpZXdMYXllci5nZXQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgVEFSR0VUX09TX0lQSE9ORSB8
fCAoUExBVEZPUk0oTUFDKSkKKyAgICBpZiAoIW1fcHJldmlld0xheWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0
QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlv
bnM6WUVTXTsKKworICAgIGRvIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZSgpOworICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigp
OworICAgICAgICBpZiAoIW1fcHJldmlld0ltYWdlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVudHMgPSAoTlNPYmplY3QqKShtX3ByZXZp
ZXdJbWFnZS5nZXQoKSk7CisgICAgfSB3aGlsZSAoMCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBj
b21taXRdOworCisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSgpKTsKK30KKworTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKCkKKyAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG1vY2tB
dWRpb1NvdXJjZU5hbWUoKSkKK3sKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
dXBkYXRlU3RhdGVzKCkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMg
PSBjdXJyZW50U3RhdGVzKCk7CisgICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAgIHN0YXRlcy0+c2V0Vm9sdW1lKDUwKTsK
K30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGll
cyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCit7CisgICAg
Y2FwYWJpbGl0aWVzLnNldFZvbHVtZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5
UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0
aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlX2gKKyNkZWZpbmUgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UgeworcHVibGljOgorCisgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgp
IHsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgb3ZlcnJp
ZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
ICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMK
KyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSA8
bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAw
YzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1v
Y2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlv
U291cmNlTmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiTW9jayBhdWRpbyBkZXZpY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291cmNlTmFtZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiTW9jayB2aWRlbyBkZXZpY2UiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
UmVmUHRyPFRyYWNrU291cmNlSW5mbz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291
cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYUNvbnN0cmFpbnRzKikKK3sKKyAgICAv
LyBGSVhNRTogdmFsaWRhdGUgY29uc3RyYWludHMuCisKKyAgICBpZiAobW9ja0F1ZGlvU291cmNl
UGVyc2lzdGVudElEKCkgPT0gaWQpCisgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZShtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgVHJhY2tTb3VyY2VJbmZvOjpBdWRp
bywgIk1vY2sgYXVkaW8gZGV2aWNlIik7CisKKyAgICBpZiAobW9ja1ZpZGVvU291cmNlUGVyc2lz
dGVudElEKCkgPT0gaWQpCisgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZSht
b2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1v
Y2sgdmlkZW8gZGV2aWNlIik7CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiAw
CisKKyNlbmRpZgorCitNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBu
YW1lKQoreworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAg
ICAgICBzZXRQZXJzaXN0ZW50SUQobW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCkpOworICAg
IGVsc2UKKyAgICAgICAgc2V0UGVyc2lzdGVudElEKG1vY2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJ
RCgpKTsKK30KKworUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMoKQoreworICAgIGlmICghbV9jYXBhYmls
aXRpZXMpIHsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMtPnNldFNvdXJjZUlk
KG1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCgpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNhcGFiaWxp
dGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9jYXBhYmls
aXRpZXM7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdGF0ZXMoKQoreworICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJ
ZChpZCgpKTsKKyAgICB1cGRhdGVTdGF0ZXMoKTsKKworICAgIHJldHVybiBtX2N1cnJlbnRTdGF0
ZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VfaAor
I2RlZmluZSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xh
c3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVHJhY2tTb3VyY2VJbmZvOworCitjbGFzcyBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSgpIHsgfQorCisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCk7Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja0F1ZGlvU291cmNlTmFtZSgpOworCisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElE
KCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlTmFtZSgp
OworCisgICAgc3RhdGljIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHRyYWNrU291cmNlV2l0aFVJ
RChjb25zdCBTdHJpbmcmLCBNZWRpYUNvbnN0cmFpbnRzKik7CisKK3Byb3RlY3RlZDoKKyAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlcygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJikgPSAwOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlk
ZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsgfQorICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KKworICAgIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlk
ZTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIGN1cnJlbnRTdGF0ZXMoKSB7IHJl
dHVybiAmbV9jdXJyZW50U3RhdGVzOyB9CisgICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWlu
dHMoKSB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOyB9CisKK3ByaXZhdGU6CisKKyAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNp
bmdEYXRhOyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRl
czsKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmls
aXRpZXM7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAg
Ym9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUg
Ik1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0
cmFpbnRzTW9jay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCkBAIC0zNiw4NiArMzYsMTYg
QEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
LmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9j
a1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICBNb2Nr
U291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQotICAgICAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoaWQsIHR5cGUsIG5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk1vY2tT
b3VyY2UoKSB7IH0KLQotICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAg
dmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVy
biBtX2N1cnJlbnRTdGF0ZXM7IH0KLQotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
IG1fY3VycmVudFN0YXRlczsKLX07Ci0gICAgCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8TW9ja1NvdXJjZT4+IE1vY2tTb3VyY2VNYXA7Ci0KLXN0YXRpYyBNb2NrU291cmNlTWFwJiBt
b2NrU291cmNlTWFwKCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTW9j
a1NvdXJjZU1hcCwgbW9ja1NvdXJjZU1hcCwgKCkpOwotICAgIHJldHVybiBtb2NrU291cmNlTWFw
OwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJi
MTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBpZDsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bW9ja1ZpZGVvU291cmNlSUQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGlkKCIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLXN0YXRp
YyB2b2lkIGluaXRpYWxpemVNb2NrU291cmNlcygpCi17Ci0gICAgUmVmUHRyPE1vY2tTb3VyY2U+
IG1vY2tTb3VyY2UxID0gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQo
KSwgIk1vY2sgdmlkZW8gZGV2aWNlIiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pKTsKLSAg
ICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpjcmVhdGUoKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFNv
dXJjZUlkKG1vY2tTb3VyY2UxLT5pZCgpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAg
ICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIw
VUwsIDE5MjBVTCwgdHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0
SGVpZ2h0UmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgyNDBVTCwgMTA4
MFVMLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRGcmFtZVJh
dGVSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDE1LjBmLCA2MC4wZiwg
dHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0QXNwZWN0UmF0aW9S
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDku
MGYsIHRydWUpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFZvbHVtZVJh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTBVTCwgOTBVTCwgdHJ1ZSkp
OwotCi0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVu
dFN0YXRlcy5zZXRTb3VyY2VJZChtb2NrU291cmNlMS0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTEt
Pm1fY3VycmVudFN0YXRlcy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlVzZXIpOwotICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0V2lkdGgoMTkyMCk7
Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRIZWlnaHQoMTA4MCk7Ci0gICAg
bW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRGcmFtZVJhdGUoMzApOwotICAgIG1vY2tT
b3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0QXNwZWN0UmF0aW8oMTYgLyA5LjBmKTsKLSAgICBt
b2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldFZvbHVtZSg3MCk7Ci0gICAgU3RyaW5nIG1v
Y2tTb3VyY2UxaWQgPSBtb2NrU291cmNlMS0+aWQoKTsKLSAgICBtb2NrU291cmNlTWFwKCkuYWRk
KG1vY2tTb3VyY2UxaWQsIG1vY2tTb3VyY2UxLnJlbGVhc2UoKSk7Ci0KLSAgICBSZWZQdHI8TW9j
a1NvdXJjZT4gbW9ja1NvdXJjZTIgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrQXVkaW9T
b3VyY2VJRCgpLCAiTW9jayBhdWRpbyBkZXZpY2UiLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
bykpOwotICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGll
cy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTItPmlkKCkpOwotICAgIG1vY2tTb3VyY2UyLT5tX2Nh
cGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlS
YW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7Ci0KLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3Rh
dGVzLnNldFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7
Ci0gICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJZChtb2NrU291cmNl
Mi0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zZXRWb2x1bWUoNTAp
OwotICAgIFN0cmluZyBtb2NrU291cmNlMmlkID0gbW9ja1NvdXJjZTItPmlkKCk7Ci0gICAgbW9j
a1NvdXJjZU1hcCgpLmFkZChtb2NrU291cmNlMmlkLCBtb2NrU291cmNlMi5yZWxlYXNlKCkpOwot
fQotCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZWdpc3Rlck1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyKCkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIsIGNlbnRlciwgKCkpOwpAQCAtMTIz
LDcgKzUzLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVnaQogICAg
IGlmICghcmVnaXN0ZXJlZCkgewogICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTsKICAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0U2hhcmVkU3RyZWFtQ2VudGVyKCZjZW50ZXIp
OwotICAgICAgICBpbml0aWFsaXplTW9ja1NvdXJjZXMoKTsKICAgICB9CiB9CiAKQEAgLTEzMyw3
ICs2Miw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKIAogICAg
IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7Ci0gICAgTW9j
a1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3Ry
YWludHMpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNN
b2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKQEAgLTE0MiwxMSArNzAs
NyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBp
dCA9IG1hcC5maW5kKG1vY2tBdWRpb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0g
bWFwLmVuZCgpKTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9T
b3VyY2UgPSBpdC0+dmFsdWU7Ci0gICAgICAgIGF1ZGlvU291cmNlLT5yZXNldCgpOworICAgICAg
ICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9T
b3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAKQEAgLTE1NywxMSArODEsNyBAQCB2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG1v
Y2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLQot
ICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFs
dWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNldCgpOworICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKICAgICB9CiAKQEAgLTE3Niw3ICs5Niw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWEKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Pj4gdmlkZW9Tb3VyY2VzOwotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3VyY2VNYXAo
KTsKIAogICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlk
UXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25z
dHJhaW50cyk7CkBAIC0xODUsMTEgKzEwNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQo
KSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVk
aW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBh
dWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAt
MjAwLDExICsxMTUsNyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBB
U1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFsdWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNl
dCgpOworICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5h
cHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAgICAgCkBAIC0yMTYsMjIgKzEy
NywxMyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgQVNT
RVJUKGNsaWVudCk7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVk
aW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKLSAgICBNb2NrU291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7Ci0KLSAg
ICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1vY2tTb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7Ci0gICAgICAgIEFT
U0VSVChpdCAhPSBtYXAuZW5kKCkpOwogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0
KCk7CisgICAgaWYgKCFhdWRpb0RldmljZUlELmlzRW1wdHkoKSAmJiBhdWRpb0RldmljZUlEID09
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkg
eworICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBl
bmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9Ci0gICAgaWYgKCF2aWRlb0RldmljZUlE
LmlzRW1wdHkoKSkgewotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5m
aW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgp
KTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBp
dC0+dmFsdWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNldCgpOworICAgIGlmICghdmlkZW9E
ZXZpY2VJRC5pc0VtcHR5KCkgJiYgdmlkZW9EZXZpY2VJRCA9PSBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6bW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkpIHsKKyAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNyZWF0ZSgpOwogICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVh
c2UoKSk7CiAgICAgfQogCkBAIC0yNDMsMjUgKzE0NSwxOSBAQCBib29sIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpnZXRNCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKICAgICBUcmFja1NvdXJj
ZUluZm9WZWN0b3Igc291cmNlczsKIAotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3Vy
Y2VNYXAoKTsKLSAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0g
ICAgZm9yIChNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgTW9ja1NvdXJjZSogc291cmNlID0gaXQtPnZhbHVlLmdldCgp
OworICAgIHNvdXJjZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp0cmFja1NvdXJj
ZVdpdGhVSUQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3Rl
bnRJRCgpLCBudWxscHRyKSk7CisgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1Zp
ZGVvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKIAotICAgICAgICBzb3VyY2VzLmFw
cGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShzb3VyY2UtPmlkKCksIHNvdXJjZS0+dHlwZSgp
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6
IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJjZS0+bmFtZSgpKSk7Ci0gICAgfQorICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNvdXJjZXNdIHsKKyAgICAgICAg
cmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVSZXF1ZXN0KHNvdXJjZXMpOworICAgIH0pOwogCi0g
ICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVSZXF1ZXN0KHNvdXJjZXMpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1SZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIFVJRCwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopCitSZWZQdHI8VHJhY2tTb3VyY2VJbmZv
PiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRChjb25zdCBTdHJp
bmcmIFVJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMpCiB7Ci0gICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtb2NrU291cmNlTWFwKCkpIHsK
LSAgICAgICAgaWYgKHNvdXJjZS52YWx1ZS0+aWQoKSA9PSBVSUQpCi0gICAgICAgICAgICByZXR1
cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLnZhbHVlLT5pZCgpLCBzb3VyY2UudmFs
dWUtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5m
bzo6VmlkZW8gOiBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCBzb3VyY2UudmFsdWUtPm5hbWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKFVJRCwgY29uc3RyYWludHMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCitSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UoKSk7Cit9CisjZW5kaWYKKworTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKCkKKyAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIG1v
Y2tWaWRlb1NvdXJjZU5hbWUoKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpCit7CisgICAgbV9kYXNo
V2lkdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7CisgICAgbV9kYXNoV2lkdGhzLnVuY2hl
Y2tlZEFwcGVuZCg2KTsKKyAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOworfQor
Cit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBp
ZiAobV9zaXplLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U2l6ZShJbnRTaXplKDY0MCwgNDgwKSk7
CisKKyAgICBtX3N0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAg
IG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQo
MTAwMCAvIG1fZnJhbWVSYXRlKSkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1fZWxhcHNlZFRp
bWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKKyAgICBt
X3N0YXJ0VGltZSA9IE5BTjsKK30KKworZG91YmxlIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpl
bGFwc2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAg
ICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWUpOworfQorCit2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMoKQoreworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKKworICAgIHN0YXRlcy0+
c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBzdGF0
ZXMtPnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7CisgICAgc3RhdGVzLT5zZXRXaWR0aChtX3Np
emUud2lkdGgoKSk7CisgICAgc3RhdGVzLT5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpKTsKKyAg
ICBzdGF0ZXMtPnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3NpemUud2lkdGgo
KSkgLyBtX3NpemUuaGVpZ2h0KCkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
Ojppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcykKK3sKKyAgICBjYXBhYmlsaXRpZXMuYWRkU291cmNlVHlwZShSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOworICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOworICAgIGNhcGFiaWxpdGllcy5h
ZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKKyAg
ICBjYXBhYmlsaXRpZXMuc2V0V2lkdGhSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0
UmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgyNDBVTCwgMTA4MFVMLCB0
cnVlKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZVJhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7CisgICAgY2FwYWJpbGl0
aWVzLnNldEFzcGVjdFJhdGlvUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSg0IC8gMy4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9G
YWNpbmdNb2RlIG1vZGUpCit7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVz
ID0gY3VycmVudFN0YXRlcygpOworCisgICAgaWYgKHN0YXRlcy0+ZmFjaW5nTW9kZSgpID09IG1v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRlcy0+c2V0RmFjaW5nTW9kZShtb2RlKTsK
KworICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0RnJhbWVSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fZnJhbWVSYXRlID09
IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKKyAgICBp
ZiAobV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMobHJvdW5kKDEwMDAgLyBtX2ZyYW1lUmF0ZSkpKTsKKwor
ICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IG1fc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaXplID0gc2l6ZTsKKworICAgIG1fYmFzZUZv
bnRTaXplID0gbV9zaXplLmhlaWdodCgpICogLjA4OworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNv
dXJpZXIiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShtX2Jhc2VGb250
U2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShtX2Jhc2VGb250U2l6
ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0NTAwKTsKKworICAg
IG1fdGltZUZvbnQgPSBGb250Q2FzY2FkZShmb250RGVzY3JpcHRpb24sIDAsIDApOworICAgIG1f
dGltZUZvbnQudXBkYXRlKG51bGxwdHIpOworCisgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFz
ZUZvbnRTaXplICogMi41OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1f
YmlwQm9wRm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobV9i
aXBCb3BGb250U2l6ZSk7CisgICAgbV9iaXBCb3BGb250ID0gRm9udENhc2NhZGUoZm9udERlc2Ny
aXB0aW9uLCAwLCAwKTsKKyAgICBtX2JpcEJvcEZvbnQudXBkYXRlKG51bGxwdHIpOworCisgICAg
bV9zdGF0c0ZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAuNTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZShtX3N0YXRzRm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUobV9zdGF0c0ZvbnRTaXplKTsKKyAgICBtX3N0YXRzRm9udCA9IEZv
bnRDYXNjYWRlKGZvbnREZXNjcmlwdGlvbiwgMCwgMCk7CisgICAgbV9zdGF0c0ZvbnQudXBkYXRl
KG51bGxwdHIpOworCisgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgdXBkYXRlUGxh
dGZvcm1MYXllcigpOworCisgICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBmbG9hdCByYWRpdXMgPSBtX3NpemUud2lkdGgoKSAqIC4wOTsKKyAgICBGbG9h
dFBvaW50IGxvY2F0aW9uKG1fc2l6ZS53aWR0aCgpICogLjgsIG1fc2l6ZS5oZWlnaHQoKSAqIC4z
KTsKKworICAgIG1fcGF0aC5jbGVhcigpOworICAgIG1fcGF0aC5tb3ZlVG8obG9jYXRpb24pOwor
ICAgIG1fcGF0aC5hZGRBcmMobG9jYXRpb24sIHJhZGl1cywgMCwgMiAqIHBpRmxvYXQsIGZhbHNl
KTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKKyAgICBjb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Cisg
ICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOworCisgICAgZmxvYXQgZW5kQW5nbGUgPSBwaUZs
b2F0ICogKCgoZm1vZChtX2ZyYW1lTnVtYmVyLCBtX2ZyYW1lUmF0ZSkgKyAwLjUpICogKDIuMCAv
IG1fZnJhbWVSYXRlKSkgKyAxKTsKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBtX3BhdGgubW92
ZVRvKGxvY2F0aW9uKTsKKyAgICBtX3BhdGguYWRkQXJjKGxvY2F0aW9uLCByYWRpdXMsIDEuNSAq
IHBpRmxvYXQsIGVuZEFuZ2xlLCBmYWxzZSk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpncmF5KTsKKyAgICBjb250ZXh0LnNldEZp
bGxSdWxlKFJVTEVfTk9OWkVSTyk7CisgICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOworfQor
Cit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQoreworICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbWFnZW50YSA9IDB4ZmZmZjAw
ZmY7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiB5ZWxsb3cgPSAweGZmZmZmZjAwOworICAgIHN0
YXRpYyBjb25zdCBSR0JBMzIgYmx1ZSA9IDB4ZmYwMDAwZmY7CisgICAgc3RhdGljIGNvbnN0IFJH
QkEzMiByZWQgPSAweGZmZmYwMDAwOworICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgZ3JlZW4gPSAw
eGZmMDA4MDAwOworCisgICAgZmxvYXQgYm94U2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogLjAzNTsK
KyAgICBmbG9hdCBib3hUb3AgPSBtX3NpemUuaGVpZ2h0KCkgKiAuNjsKKworICAgIG1fcGF0aC5j
bGVhcigpOworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoMiwgMiwgbV9zaXplLndpZHRoKCkgLSAz
LCBtX3NpemUuaGVpZ2h0KCkgLSAzKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9y
Ojp3aGl0ZSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMyk7CisgICAgY29udGV4
dC5zZXRMaW5lRGFzaChtX2Rhc2hXaWR0aHMsIDApOworICAgIG1fcGF0aC5hZGRSZWN0KGZyYW1l
UmVjdCk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChtX3BhdGgpOworCisgICAgY29udGV4dC5zZXRMaW5lRGFzaChEYXNoQXJyYXkoKSwgMCk7Cisg
ICAgbV9wYXRoLmNsZWFyKCk7CisgICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KDAsIGJveFRv
cCArIGJveFNpemUpKTsKKyAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobV9zaXplLndp
ZHRoKCksIGJveFRvcCArIGJveFNpemUpKTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6d2hpdGUpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKDIpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChtX3BhdGgpOworCisg
ICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CisgICAgZmxvYXQgYm94TGVmdCA9IGJv
eFNpemU7CisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJveFNpemUgLyA0OyBpKyspIHsKKyAgICAgICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KGJv
eExlZnQgKyA0ICogaSwgYm94VG9wKSk7CisgICAgICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQ
b2ludChib3hMZWZ0ICsgNCAqIGksIGJveFRvcCArIGJveFNpemUpKTsKKyAgICB9CisgICAgYm94
TGVmdCArPSBib3hTaXplICsgMjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6
ZSAvIDQ7IGkrKykgeworICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCwg
Ym94VG9wICsgNCAqIGkpKTsKKyAgICAgICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJv
eExlZnQgKyBib3hTaXplIC0gMSwgYm94VG9wICsgNCAqIGkpKTsKKyAgICB9CisgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMyk7CisgICAgYm94TGVmdCArPSBib3hTaXplICsgMjsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6ZSAvIDg7IGkrKykgeworICAgICAgICBt
X3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIDggKiBpLCBib3hUb3ApKTsKKyAgICAg
ICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyA4ICogaSwgYm94VG9wICsg
Ym94U2l6ZSAtIDEpKTsKKyAgICB9CisgICAgYm94TGVmdCArPSBib3hTaXplICsgMjsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6ZSAvIDg7IGkrKykgeworICAgICAgICBtX3Bh
dGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCwgYm94VG9wICsgOCAqIGkpKTsKKyAgICAgICAg
bV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyBib3hTaXplIC0gMSwgYm94VG9w
ICsgOCAqIGkpKTsKKyAgICB9CisKKyAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CisgICAgYm94
TGVmdCA9IGJveFNpemU7CisgICAgQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwg
eWVsbG93LCBDb2xvcjo6Y3lhbiwgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoYm94Q29sb3JzKSAvIHNpemVvZihib3hDb2xv
cnNbMF0pOyBpKyspIHsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoYm94TGVm
dCwgYm94VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEpLCBib3hDb2xvcnNbaV0pOworICAg
ICAgICBib3hMZWZ0ICs9IGJveFNpemUgKyAxOworICAgIH0KKyAgICBjb250ZXh0LnN0cm9rZVBh
dGgobV9wYXRoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kcyA9
IGxyb3VuZChlbGFwc2VkVGltZSgpICogMTAwMCk7CisgICAgdW5zaWduZWQgc2Vjb25kcyA9IG1p
bGxpc2Vjb25kcyAvIDEwMDAgJSA2MDsKKyAgICB1bnNpZ25lZCBtaW51dGVzID0gc2Vjb25kcyAv
IDYwICUgNjA7CisgICAgdW5zaWduZWQgaG91cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKKworICAg
IEZsb2F0UG9pbnQgdGltZUxvY2F0aW9uKG1fc2l6ZS53aWR0aCgpICogLjA1LCBtX3NpemUuaGVp
Z2h0KCkgKiAuMTUpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Cisg
ICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKTsKKyAgICBTdHJpbmcg
c3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiUwMnU6JTAydTolMDJ1LiUwM3UiLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzICUgMTAwMCk7CisgICAgY29udGV4dC5kcmF3VGV4
dChtX3RpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9u
LCAwLCAtMSk7CisKKyAgICBzdHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiJTA2dSIsIG1fZnJhbWVO
dW1iZXIrKyk7CisgICAgdGltZUxvY2F0aW9uLm1vdmUoMCwgbV9iYXNlRm9udFNpemUpOworICAg
IGNvbnRleHQuZHJhd1RleHQobV90aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcp
KSksIHRpbWVMb2NhdGlvbiwgMCwgLTEpOworCisgICAgRmxvYXRQb2ludCBzdGF0c0xvY2F0aW9u
KG1fc2l6ZS53aWR0aCgpICogLjY1LCBtX3NpemUuaGVpZ2h0KCkgKiAuNzUpOworICAgIHN0cmlu
ZyA9IFN0cmluZzo6Zm9ybWF0KCJGcmFtZSByYXRlOiAldWZwcyIsIG1fZnJhbWVSYXRlKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmlu
ZykpKSwgc3RhdHNMb2NhdGlvbiwgMCwgLTEpOworCisgICAgc3RyaW5nID0gU3RyaW5nOjpmb3Jt
YXQoIlNpemU6ICV1IHggJXUiLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKyAg
ICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKKyAgICBjb250ZXh0LmRy
YXdUZXh0KG1fc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNM
b2NhdGlvbiwgMCwgLTEpOworCisgICAgY29uc3QgY2hhciogY2FtZXJhOworICAgIHN3aXRjaCAo
c3RhdGVzKCkuZmFjaW5nTW9kZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpVc2VyOgorICAgICAgICBjYW1lcmEgPSAiVXNlciBmYWNpbmciOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAg
ICAgICBjYW1lcmEgPSAiRW52aXJvbm1lbnQgZmFjaW5nIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgorICAgICAgICBjYW1lcmEgPSAi
TGVmdCBmYWNpbmciOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlJpZ2h0OgorICAgICAgICBjYW1lcmEgPSAiUmlnaHQgZmFjaW5nIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVbmtub3duOgor
ICAgICAgICBjYW1lcmEgPSAiVW5rbm93biI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBz
dHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiQ2FtZXJhOiAlcyIsIGNhbWVyYSk7CisgICAgc3RhdHNM
b2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CisgICAgY29udGV4dC5kcmF3VGV4dCht
X3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24s
IDAsIC0xKTsKKworICAgIEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24obV9zaXplLndpZHRoKCkg
KiAuNiwgbV9zaXplLmhlaWdodCgpICogLjYpOworICAgIHVuc2lnbmVkIGZyYW1lTW9kID0gbV9m
cmFtZU51bWJlciAlIDYwOworICAgIGlmIChmcmFtZU1vZCA8PSAxNSkgeworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcoIkJpcCIpKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX2JpcEJvcEZvbnQsIHJ1
biwgYmlwQm9wTG9jYXRpb24sIDAsIC0xKTsKKyAgICB9IGVsc2UgaWYgKGZyYW1lTW9kID4gMzAg
JiYgZnJhbWVNb2QgPD0gNDUpIHsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6
OndoaXRlKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldygiQm9wIikpOworICAgICAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fYmlwQm9wRm9udCwgcnVuLCBiaXBCb3BMb2NhdGlvbiwgMCwg
LTEpOworICAgIH0KK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVG
cmFtZSgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXIoKS0+
Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpOwor
ICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSwgQ29s
b3I6OmJsYWNrKTsKKworICAgIGRyYXdUZXh0KGNvbnRleHQpOworICAgIGRyYXdBbmltYXRpb24o
Y29udGV4dCk7CisgICAgZHJhd0JveGVzKGNvbnRleHQpOworCisgICAgdXBkYXRlUGxhdGZvcm1M
YXllcigpOworfQorCitJbWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltYWdl
QnVmZmVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShtX3NpemUsIFVuYWNjZWxlcmF0ZWQpOworICAgIGlmICghbV9pbWFnZUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCku
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uRGVmYXVsdCk7CisgICAg
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKworICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgIWltYWdlQnVmZmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKy8vICAgIGNvbnRleHQudHJh
bnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICBJbnRS
ZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKKworICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX2ltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLCByZWN0KTsKK30KKworUmVmUHRyPEltYWdlPiBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UoKQoreworICAgIGlmICgh
aW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZV9oCisjZGVmaW5lIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKKworY2xhc3MgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UgeworcHVibGljOgorCisgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZSgpIHsgfQorCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICBj
b25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICB2b2lk
IHNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2Rl
KTsKKyAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCk7CisKK3Byb3RlY3RlZDoKKyAgICBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyB9CisKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQg
aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKKworICAgIHZvaWQgZHJhd0FuaW1h
dGlvbihHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4
dCYpOworICAgIHZvaWQgZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYpOworCisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpOworCisgICAg
ZG91YmxlIGVsYXBzZWRUaW1lKCk7CisKKyAgICBmbG9hdCBtX2Jhc2VGb250U2l6ZSB7IDAgfTsK
KyAgICBGb250Q2FzY2FkZSBtX3RpbWVGb250OworCisgICAgZmxvYXQgbV9iaXBCb3BGb250U2l6
ZSB7IDAgfTsKKyAgICBGb250Q2FzY2FkZSBtX2JpcEJvcEZvbnQ7CisKKyAgICBmbG9hdCBtX3N0
YXRzRm9udFNpemUgeyAwIH07CisgICAgRm9udENhc2NhZGUgbV9zdGF0c0ZvbnQ7CisKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKKworICAg
IEludFNpemUgbV9zaXplOworICAgIFBhdGggbV9wYXRoOworICAgIERhc2hBcnJheSBtX2Rhc2hX
aWR0aHM7CisKKyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyBOQU4gfTsKKyAgICBkb3VibGUgbV9l
bGFwc2VkVGltZSB7IDAgfTsKKworICAgIHVuc2lnbmVkIG1fZnJhbWVSYXRlIHsgMzAgfTsKKyAg
ICB1bnNpZ25lZCBtX2ZyYW1lTnVtYmVyIHsgMCB9OworCisgICAgUnVuTG9vcDo6VGltZXI8TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U+IG1fdGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265030</attachid>
            <date>2015-11-08 20:01:29 -0800</date>
            <delta_ts>2015-11-09 05:54:34 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>mock_source_patch_7.txt</filename>
            <type>text/plain</type>
            <size>75534</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMS0wOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEFkZCBtb2NrIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzNDUzMzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBiYXNpYyBtb2NrIGF1ZGlvIGFuZCB2aWRlbyByZWFsdGltZSBtZWRpYSBzb3Vy
Y2UgY2xhc3NlcyBzbyB3ZSBjYW4gdGVzdCBNZWRpYVN0cmVhbQorICAgICAgICBBUEkgd2l0aG91
dCByZXF1aXJpbmcgdGVzdCBtYWNoaW5lcyB0byBoYXZlIGF1ZGlvL3ZpZGVvIGlucHV0IGhhcmR3
YXJlLiBObyBuZXcgdGVzdHMgYWRkZWQKKyAgICAgICAgeWV0LCB0aG9lIHdpbGwgZm9sbG93Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlc2UgY2hhbmdlcyB3aWxsIGFsbG93IHVzIHRvIHdy
aXRlIE1lZGlhU3RyZWFtIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCwg
YW5kIAorICAgICAgICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorCisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6IEFkZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJzKTog
RG9uJ3Qgc2V0IGF1dG9yZXNpemluZ01hc2ssCisgICAgICAgICAgaXQgaXNuJ3QgbmVjZXNzYXJ5
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpyZWZyZXNoQ2FwdHVyZURldmljZUxpc3QpOiBB
VkNhcHR1cmVEZXZpY2UgLT4gZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKQorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERldmljZUZvckZhY2luZ01vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNvdXJjZVdp
dGhVSUQpOiBEaXR0by4KKworICAgICAgICBNYWMgY2xhc3MgaW1wbGVtZW50cyBSZWFsdGltZVZp
ZGVvU291cmNlOjpwbGF0Zm9ybUxheWVyLCByZXR1cm5zIGEgQ0FMYXllciB3aGljaCB1c2VzIHRo
ZQorICAgICAgICBHcmFwaGljc0NvbnRleHQgYXMgY29udGVudHMuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisKKyAgICAg
ICAgTW9jayBhdWRpbyBzb3VyY2UuIERvZXNuJ3QgcHJvdmlkZSBkYXRhIHlldCwgb25seSBwcm92
aWRlcyBzdGF0ZXMgYW5kIGNhcGFiaWxpdGllcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6On5Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZSk6CisKKyAgICAgICAgTW9jayBzb3VyY2UgYmFzZSBjbGFzcywgc2V0cyBw
ZXJzaXN0ZW50IElEIGFuZCB1cGRhdGVzIHN0YXRlcyBhbmQgY2FwYWJpbGl0aWVzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9QZXJzaXN0
ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1BlcnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291
cmNlUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6On5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3VycmVudFN0YXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29uc3RyYWludHMpOgorCisg
ICAgICAgIFVzZSBuZXcgbW9jayBzb3VyY2UgY2xhc3Nlcy4gQ3JlYXRlIGEgbmV3IHNvdXJjZSBp
bnN0YW5jZSBmb3IgZWFjaCByZXF1ZXN0IGluc3RlYWQgb2YgcmV1c2luZyB0aGUKKyAgICAgICAg
c2FtZSBzb3VyY2VzIGVhY2ggdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
Z2lzdGVyTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1NvdXJjZTo6TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlOjp+TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlOjpjYXBhYmlsaXRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tBdWRpb1NvdXJjZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tWaWRlb1NvdXJjZUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVNb2NrU291cmNlcyk6IERlbGV0ZWQuCisK
KyAgICAgICAgTW9jayB2aWRlbyBzb3VyY2UuIEdlbmVyYXRlIGJpcC1ib3AgaW5zcGlyZWQgZnJh
bWVzIHdpdGggYnVybmVkIGluIHN0YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjplbGFw
c2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBk
YXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVQ
bGF0Zm9ybUxheWVyKToKKwogMjAxNS0xMS0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTIxNDApOiBXaW5kb3dzIGJ1aWxkIGJy
b2tlIGFmdGVyIHJlbW92aW5nIENvbG9yU3BhY2UgYXJndW1lbnQgdG8gYWxsIGRyYXdpbmcgY2Fs
bHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMwMiw3ICsyMzAyLDEw
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorICAgIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisgICAgcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorICAgIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAog
ICAgIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWFjIgorICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvY29jb2EiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
Y2YiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvbWFjIgpAQCAtNDk3LDYg
KzQ5OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCiAKKyAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
KwogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyMTQ2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzUsNiArMzM1LDEwIEBACiAJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBK
U1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QwN0IxMzE4MzQxNTg4MDBBQkREM0MgLyogSlNSVENT
ZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CisJCTA3RDZB
NEVGMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQy
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyBzZXR0aW5ncyA9IHtB
U1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3RDZBNEYwMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdENkE0RUUxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0
RjMxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEYxMUJFRDVGODgw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0RjQxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkwN0RDNUZE
NDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkw
MDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZC
MTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CkBAIC0zNDIsNiArMzQ2LDEwIEBACiAJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJEMThG
NUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsg
fTsKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovOyB9OworCQkwN0VFNzZFQjFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RTkxQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwN0VFNzZF
QzFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVBMUJFOTZEQjAwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdFRTc2
RjAxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUUxQkVBNjE5
ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTA3RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBB
VktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFWS2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdD
MUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBB
VkZvdW5kYXRpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0Y4NzY4NDFBRDU4MEY5MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTg2
LDYgKzc1OTQsMTAgQEAKIAkJMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRF
RDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdENkE0RjIxQkVE
NUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1OTMsNiArNzYwNSwxMCBAQAogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VFNzZFQTFCRTk2
REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVE
QjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVZLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1
REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBVkZvdW5kYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIxNyw2ICsxNTIzMyw4
IEBACiAJCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNl
Lm1tICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLywKKwkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKKwkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJNEEwRkZBQTMxQUFGNUVGNjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwICovLAogCQkJCTRBMEZG
QUE0MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggKi8s
CiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmggKi8sCkBAIC0xNzA3Nyw2ICsxNzA5NSwxMiBAQAogCQkJCTU5MzA5QTEyMTFGNEFF
NkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwNzM3
OTRERjE5RUUyRDFCMDBFNUEwNDUgLyogTWVkaWFDb25zdHJhaW50c01vY2suY3BwICovLAogCQkJ
CTA3Mzc5NEUwMTlFRTJEMUIwMEU1QTA0NSAvKiBNZWRpYUNvbnN0cmFpbnRzTW9jay5oICovLAor
CQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgKi8sCisJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggKi8sCisJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLywKKwkJCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYgLyogTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKKwkJCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTA3RUU3NkVBMUJFOTZEQjAw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovLAogCQkJCTRBMEZGQTlCMUFB
RjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJ
CQkJNEEwRkZBOUMxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmggKi8sCiAJCQkJQUFFMjdCNzQxNkNCRkMwRDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcCAqLywKQEAgLTI1NTU1LDcgKzI1NTc5LDkgQEAKIAkJCQlBODBE
NjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Q2QTRGMDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjU1OSw2ICsyNjU4NSw3IEBACiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYy
MEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5M0ExN0QxNkUxQzAwNDIwQUExIC8qIE1lZGlhQ29uc3RyYWlu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE0MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRp
YUNvbnN0cmFpbnRzSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxNSw2ICsyNzc0Miw3IEBA
CiAJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0VFNzZFQzFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjRCNDY1
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3
QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODk2Nyw2ICsyODk5NSw3IEBACiAJCQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkw
IC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNG
RkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkYwMUJF
QTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDYxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDgxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNo
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5ODIyLDYgKzI5ODUxLDcgQEAKIAkJCQkwNzNC
RTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQzBEMzcwOUZFRDA3MzAwN0IwMjM1
IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRFRjFCRUNGMkQyMDAxNzQx
NDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
OUMyNjQwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzRjEyMDZCMUI4QzEwNDcwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDAzNyw2ICszMDA2Nyw3IEBACiAJCQkJQjJGQTNE
REUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RFMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTQyQTc5NjBBRTVDOTQyMDBERjU4REYgLyogSlNT
VkdQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRGMzFCRUQ1Rjg4MDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNE
RTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyRkEzREU1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHlnb25FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzREU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHls
aW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDY2LDYgKzMwMDk3LDcgQEAKIAkJ
CQlCMkZBM0UxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVc2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzRTE2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1ZpZXdFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMThGRUQ0MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NW
R1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkVCMUJFOTZEQjAwMEY4OTEz
MyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1
MjI3RDExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMCArMTIwLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CiAKKyAgICBtX3ByZXZpZXdM
YXllciA9IG51bGxwdHI7CisgICAgbV9pbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKCk7CisKICAg
ICBtX21lZGlhU3RyZWFtUHJpdmF0ZSA9ICZzdHJlYW07CiAgICAgbV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsK
ICAgICBtX2VuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTgsMTYgKzM1OSwxMSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotI2lmbmRlZiBOREVCVUcKICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUg
PSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tncm91
bmQgbGF5ZXIiOwotI2VuZGlmCiAKICAgICBtX3ByZXZpZXdMYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVu
dHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZTsKICAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5h
bmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgbV9wcmV2
aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXphYmxlIHwg
a0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotI2VuZGlmCiAgICAgaWYgKCFtX3BsYXlpbmcpCiAgICAg
ICAgIG1fcHJldmlld0xheWVyLmdldCgpLmhpZGRlbiA9IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
UHJpdmF0ZS5oIgogCisvL0BAQEBACisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKKy8vQEBAQEAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlciomIG1lZGlhU3RyZWFtQ2VudGVyT3ZlcnJpZGUoKQpAQCAtNDYs
NiArNTAsMTEgQEAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIqJiBtZWRpYQogCiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKQogeworLy9AQEBAQAorICAgIGlmICghbWVkaWFTdHJlYW1DZW50ZXJPdmVycmlkZSgp
KQorICAgICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVnaXN0ZXJNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOworLy9AQEBAQAorCiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlciogb3ZlcnJpZGUgPSBtZWRpYVN0cmVhbUNlbnRlck92ZXJyaWRlKCk7CiAgICAg
aWYgKG92ZXJyaWRlKQogICAgICAgICByZXR1cm4gKm92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIHZvaWQgcmVmcmVzaENhcHR1
cmVEZXZpY2VMaXN0KCkKIHsKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRldmljZXMgPSBj
YXB0dXJlRGV2aWNlTGlzdCgpOwogICAgIAotICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlwZSAq
ZGV2aWNlIGluIFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlc10pIHsKKyAgICBmb3IgKEFWQ2FwdHVy
ZURldmljZVR5cGUgKmRldmljZSBpbiBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2Vz
XSkgewogICAgICAgICBDYXB0dXJlRGV2aWNlIHNvdXJjZTsKIAogICAgICAgICBpZiAoIVtkZXZp
Y2UgaXNDb25uZWN0ZWRdKQpAQCAtMjU0LDcgKzI1NCw3IEBAIENhcHR1cmVEZXZpY2UqIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmIKICAgICAKICAgICBzaXplX3QgY291bnQgPSBkZXZpY2VzLnNp
emUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
QVZDYXB0dXJlRGV2aWNlVHlwZSAqZGV2aWNlID0gW0FWQ2FwdHVyZURldmljZSBkZXZpY2VXaXRo
VW5pcXVlSUQ6ZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRF07CisgICAgICAgIEFWQ2FwdHVy
ZURldmljZVR5cGUgKmRldmljZSA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGRldmljZVdp
dGhVbmlxdWVJRDpkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlEXTsKICAgICAgICAgQVNTRVJU
KGRldmljZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZGV2aWNlICYmIGRldmljZVN1cHBvcnRz
RmFjaW5nTW9kZShkZXZpY2UsIGZhY2luZ01vZGUpKQpAQCAtNDI4LDcgKzQyOCw3IEBAIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPiBBVkNhcHR1cmVEZXYKICAgICAgICAgaWYgKHR5cGUgPT0g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gJiYgY2FwdHVyZURldmljZS5tX3ZpZGVvU291cmNl
SWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQVZDYXB0dXJl
RGV2aWNlVHlwZSAqZGV2aWNlID0gW0FWQ2FwdHVyZURldmljZSBkZXZpY2VXaXRoVW5pcXVlSUQ6
Y2FwdHVyZURldmljZS5tX2NhcHR1cmVEZXZpY2VJRF07CisgICAgICAgIEFWQ2FwdHVyZURldmlj
ZVR5cGUgKmRldmljZSA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGRldmljZVdpdGhVbmlx
dWVJRDpjYXB0dXJlRGV2aWNlLm1fY2FwdHVyZURldmljZUlEXTsKICAgICAgICAgQVNTRVJUKGRl
dmljZSk7CiAKICAgICAgICAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBjYXB0dXJlU291
cmNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBu
b3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjX2gKKyNkZWZpbmUgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCIK
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlIHsKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOworICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKCk7CisKKyAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVQbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBtdXRhYmxlIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX3ByZXZpZXdJbWFnZTsKKyAgICBtdXRhYmxlIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ByZXZpZXdMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisjaW1w
b3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2lt
cG9ydCAiUGxhdGZvcm1MYXllci5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3Jl
L0NBVHJhbnNhY3Rpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYygpKTsKK30KKworTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6
Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKCkKKyAgICA6IE1vY2tSZWFsdGltZVZpZGVvU291
cmNlKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIGlmIChtX3ByZXZpZXdMYXllcikKKyAgICAg
ICAgcmV0dXJuIG1fcHJldmlld0xheWVyLmdldCgpOworCisgICAgbV9wcmV2aWV3TGF5ZXIgPSBh
ZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcHJldmlld0xheWVyLmdldCgp
Lm5hbWUgPSBAIk1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjIHByZXZpZXcgbGF5ZXIiOworICAg
IG1fcHJldmlld0xheWVyLmdldCgpLmNvbnRlbnRzR3Jhdml0eSA9IGtDQUdyYXZpdHlSZXNpemVB
c3BlY3Q7CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVy
bzsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9
IFlFUzsKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIG1fcHJldmlld0xheWVyLmdldCgpLmF1dG9y
ZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVpZ2h0U2l6YWJs
ZTsKKyNlbmRpZgorCisgICAgdXBkYXRlUGxhdGZvcm1MYXllcigpOworCisgICAgcmV0dXJuIG1f
cHJldmlld0xheWVyLmdldCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Ojp1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8
IChQTEFURk9STShNQUMpKQorICAgIGlmICghbV9wcmV2aWV3TGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRB
bmltYXRpb25EdXJhdGlvbjowXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9u
czpZRVNdOworCisgICAgZG8geworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VC
dWZmZXIoKS0+Y29weUltYWdlKCk7CisgICAgICAgIGlmICghaW1hZ2UpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGlmICghbV9wcmV2aWV3SW1hZ2UpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50cyA9IChOU09iamVjdCopKG1fcHJldmll
d0ltYWdlLmdldCgpKTsKKyAgICB9IHdoaWxlICgwKTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07CisKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlKCkpOworfQorCitNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UoKQorICAgIDogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgbW9ja0F1
ZGlvU291cmNlTmFtZSgpKQoreworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp1
cGRhdGVTdGF0ZXMoKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9
IGN1cnJlbnRTdGF0ZXMoKTsKKyAgICBzdGF0ZXMtPnNldFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CisgICAgc3RhdGVzLT5zZXRWb2x1bWUoNTApOwor
fQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVz
KFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKK3sKKyAgICBj
YXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlS
YW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VfaAorI2RlZmluZSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZV9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNl
LmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkg
eyB9CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpOworCitwcml2
YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFs
aXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBvdmVycmlk
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwor
ICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlIDxt
YXRoLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBj
OWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBp
ZDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9j
a1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGlkOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9T
b3VyY2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBu
YW1lKCJNb2NrIGF1ZGlvIGRldmljZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJNb2NrIHZpZGVvIGRldmljZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBuYW1lOworfQorCitS
ZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3Vy
Y2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgaWQsIE1lZGlhQ29uc3RyYWludHMqKQoreworICAgIC8v
IEZJWE1FOiB2YWxpZGF0ZSBjb25zdHJhaW50cy4KKworICAgIGlmIChtb2NrQXVkaW9Tb3VyY2VQ
ZXJzaXN0ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3Jl
YXRlKG1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFja1NvdXJjZUluZm86OkF1ZGlv
LCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKworICAgIGlmIChtb2NrVmlkZW9Tb3VyY2VQZXJzaXN0
ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKG1v
Y2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCAiTW9j
ayB2aWRlbyBkZXZpY2UiKTsKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworI2lmIDAK
KworI2VuZGlmCisKK01vY2tSZWFsdGltZU1lZGlhU291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZShjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoaWQsIHR5cGUsIG5h
bWUpCit7CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCisgICAg
ICAgIHNldFBlcnNpc3RlbnRJRChtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSk7CisgICAg
ZWxzZQorICAgICAgICBzZXRQZXJzaXN0ZW50SUQobW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElE
KCkpOworfQorCitSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCit7CisgICAgaWYgKCFtX2NhcGFiaWxp
dGllcykgeworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM6OmNyZWF0ZSgpOworICAgICAgICBtX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQo
bV9jdXJyZW50U3RhdGVzLnNvdXJjZUlkKCkpOworICAgICAgICBpbml0aWFsaXplQ2FwYWJpbGl0
aWVzKCptX2NhcGFiaWxpdGllcy5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX2NhcGFiaWxp
dGllczsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2U6OnN0YXRlcygpCit7CisgICAgbV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZUlk
KGlkKCkpOworICAgIHVwZGF0ZVN0YXRlcygpOworCisgICAgcmV0dXJuIG1fY3VycmVudFN0YXRl
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZV9oCisj
ZGVmaW5lIE1vY2tSZWFsdGltZU1lZGlhU291cmNlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdFJlY3Q7CitjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUcmFja1NvdXJjZUluZm87CisKK2NsYXNzIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZU1lZGlhU291cmNlKCkgeyB9CisKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VOYW1lKCk7CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VOYW1lKCk7
CisKKyAgICBzdGF0aWMgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gdHJhY2tTb3VyY2VXaXRoVUlE
KGNvbnN0IFN0cmluZyYsIE1lZGlhQ29uc3RyYWludHMqKTsKKworcHJvdGVjdGVkOgorICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGVzKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmKSA9IDA7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRl
IHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOyB9CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIG92ZXJyaWRlIHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsgfQorCisgICAgUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIG92ZXJyaWRl
OworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpIG92ZXJyaWRl
OworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogY3VycmVudFN0YXRlcygpIHsgcmV0
dXJuICZtX2N1cnJlbnRTdGF0ZXM7IH0KKyAgICBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50
cygpIHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0KKworcHJpdmF0ZToKKworICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVz
OworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxp
dGllczsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAko
cmV2aXNpb24gMTkyMTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAi
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHNNb2NrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKQEAgLTM2LDg2ICszNiwxNiBA
QAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2Nr
U291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewotcHVibGljOgotICAgIE1vY2tT
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpCi0gICAgICAgIDogUmVhbHRpbWVNZWRpYVNv
dXJjZShpZCwgdHlwZSwgbmFtZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+TW9ja1Nv
dXJjZSgpIHsgfQotCi0gICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpIHsgcmV0dXJu
IG1fY3VycmVudFN0YXRlczsgfQotCi0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMg
bV9jdXJyZW50U3RhdGVzOwotfTsKLSAgICAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxNb2NrU291cmNlPj4gTW9ja1NvdXJjZU1hcDsKLQotc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1v
Y2tTb3VyY2VNYXAoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNb2Nr
U291cmNlTWFwLCBtb2NrU291cmNlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIG1vY2tTb3VyY2VNYXA7
Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tBdWRpb1NvdXJjZUlEKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjEtMmIx
NS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
b2NrVmlkZW9Tb3VyY2VJRCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBpZDsKLX0KLQotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCkKLXsKLSAgICBSZWZQdHI8TW9ja1NvdXJjZT4g
bW9ja1NvdXJjZTEgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrVmlkZW9Tb3VyY2VJRCgp
LCAiTW9jayB2aWRlbyBkZXZpY2UiLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM6OmNyZWF0ZSgpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291
cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGll
cy0+YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7Ci0gICAg
bW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPnNldFdpZHRoUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgzMjBV
TCwgMTkyMFVMLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRI
ZWlnaHRSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgw
VUwsIHRydWUpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldEZyYW1lUmF0
ZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0
cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRBc3BlY3RSYXRpb1Jh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoNCAvIDMuMGYsIDE2IC8gOS4w
ZiwgdHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFu
Z2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVMLCA5MFVMLCB0cnVlKSk7
Ci0KLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50
U3RhdGVzLnNldFNvdXJjZUlkKG1vY2tTb3VyY2UxLT5pZCgpKTsKLSAgICBtb2NrU291cmNlMS0+
bV9jdXJyZW50U3RhdGVzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
VXNlcik7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRXaWR0aCgxOTIwKTsK
LSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEhlaWdodCgxMDgwKTsKLSAgICBt
b2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEZyYW1lUmF0ZSgzMCk7Ci0gICAgbW9ja1Nv
dXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRBc3BlY3RSYXRpbygxNiAvIDkuMGYpOwotICAgIG1v
Y2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0Vm9sdW1lKDcwKTsKLSAgICBTdHJpbmcgbW9j
a1NvdXJjZTFpZCA9IG1vY2tTb3VyY2UxLT5pZCgpOwotICAgIG1vY2tTb3VyY2VNYXAoKS5hZGQo
bW9ja1NvdXJjZTFpZCwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKLQotICAgIFJlZlB0cjxNb2Nr
U291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1vY2tBdWRpb1Nv
dXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVz
LT5zZXRTb3VyY2VJZChtb2NrU291cmNlMi0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2Fw
YWJpbGl0aWVzLT5zZXRWb2x1bWVSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKLQotICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0
ZXMuc2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsK
LSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZUlkKG1vY2tTb3VyY2Uy
LT5pZCgpKTsKLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnNldFZvbHVtZSg1MCk7
Ci0gICAgU3RyaW5nIG1vY2tTb3VyY2UyaWQgPSBtb2NrU291cmNlMi0+aWQoKTsKLSAgICBtb2Nr
U291cmNlTWFwKCkuYWRkKG1vY2tTb3VyY2UyaWQsIG1vY2tTb3VyY2UyLnJlbGVhc2UoKSk7Ci19
Ci0KIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlZ2lzdGVyTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIoKQogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciwgY2VudGVyLCAoKSk7CkBAIC0xMjMs
NyArNTMsNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZWdpCiAgICAg
aWYgKCFyZWdpc3RlcmVkKSB7CiAgICAgICAgIHJlZ2lzdGVyZWQgPSB0cnVlOwogICAgICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7
Ci0gICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOwogICAgIH0KIH0KIApAQCAtMTMzLDcg
KzYyLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaQogCiAgICAg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKLSAgICBNb2Nr
U291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAgICBpZiAoYXVkaW9Db25zdHJh
aW50cykgewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gTWVkaWFDb25zdHJhaW50c01v
Y2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOwpAQCAtMTQyLDExICs3MCw3
IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBt
YXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1Nv
dXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAg
IFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMTU3LDExICs4MSw3IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9j
a1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0g
ICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1
ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVh
dGUoKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkp
OwogICAgIH0KIApAQCAtMTc2LDcgKzk2LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYQogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PiB2aWRlb1NvdXJjZXM7Ci0gICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgp
OwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRR
dWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0
cmFpbnRzKTsKQEAgLTE4NSwxMSArMTA0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
TW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgp
KTsKLSAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwotICAgICAgICBhdWRp
b1NvdXJjZS0+cmVzZXQoKTsKKyAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1
ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwogICAgICAgICBh
dWRpb1NvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgfQogCkBAIC0y
MDAsMTEgKzExNSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFT
U0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0
KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KICAgICAKQEAgLTIxNiwyMiArMTI3
LDEzIEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWEKICAgICBBU1NF
UlQoY2xpZW50KTsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRp
b1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gdmlkZW9T
b3VyY2VzOwotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3VyY2VNYXAoKTsKLQotICAg
IGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgTW9ja1NvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgpKTsKLSAgICAgICAgQVNT
RVJUKGl0ICE9IG1hcC5lbmQoKSk7CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwotICAgICAgICBhdWRpb1NvdXJjZS0+cmVzZXQo
KTsKKyAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQgPT0g
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpKSB7
CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KLSAgICBpZiAoIXZpZGVvRGV2aWNlSUQu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZp
bmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkp
OwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGl0
LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgaWYgKCF2aWRlb0Rl
dmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgeworICAgICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Y3JlYXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFz
ZSgpKTsKICAgICB9CiAKQEAgLTI0MywyNSArMTQ1LDE5IEBAIGJvb2wgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmdldE0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50PiByZXF1ZXN0Q2xpZW50ID0gcHJwQ2xpZW50OwogICAgIFRyYWNrU291cmNl
SW5mb1ZlY3RvciBzb3VyY2VzOwogCi0gICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJj
ZU1hcCgpOwotICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAg
ICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7
CisgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNl
V2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVu
dElEKCksIG51bGxwdHIpKTsKKyAgICBzb3VyY2VzLmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlk
ZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0cikpOwogCi0gICAgICAgIHNvdXJjZXMuYXBw
ZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDog
VHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkpKTsKLSAgICB9CisgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291cmNlc10geworICAgICAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CisgICAgfSk7CiAKLSAg
ICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgVUlELCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikKK1JlZlB0cjxUcmFja1NvdXJjZUluZm8+
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmlu
ZyYgVUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykKIHsKLSAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1vY2tTb3VyY2VNYXAoKSkgewot
ICAgICAgICBpZiAoc291cmNlLnZhbHVlLT5pZCgpID09IFVJRCkKLSAgICAgICAgICAgIHJldHVy
biBUcmFja1NvdXJjZUluZm86OmNyZWF0ZShzb3VyY2UudmFsdWUtPmlkKCksIHNvdXJjZS52YWx1
ZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZv
OjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJjZS52YWx1ZS0+bmFtZSgpKTsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQoVUlELCBjb25zdHJhaW50cyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JN
KElPUykKK1JlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSgpKTsKK30KKyNlbmRpZgorCitNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UoKQorICAgIDogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbW9j
a1ZpZGVvU291cmNlTmFtZSgpKQorICAgICwgbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSkKK3sKKyAgICBtX2Rhc2hX
aWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKKyAgICBtX2Rhc2hXaWR0aHMudW5jaGVj
a2VkQXBwZW5kKDYpOworICAgIG1fZGFzaFdpZHRocy51bmNoZWNrZWRBcHBlbmQoNik7Cit9CisK
K3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7Cisg
ICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIGlm
IChtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICBzZXRTaXplKEludFNpemUoNjQwLCA0ODApKTsK
KworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAg
bV90aW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKGxyb3VuZCgx
MDAwIC8gbV9mcmFtZVJhdGUpKSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCk7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9lbGFwc2VkVGlt
ZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOworICAgIG1f
c3RhcnRUaW1lID0gTkFOOworfQorCitkb3VibGUgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmVs
YXBzZWRUaW1lKCkKK3sKKyAgICBpZiAoc3RkOjppc25hbihtX3N0YXJ0VGltZSkpCisgICAgICAg
IHJldHVybiBtX2VsYXBzZWRUaW1lOworCisgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZSk7Cit9CisKK3ZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnVwZGF0ZVN0YXRlcygpCit7CisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOworCisgICAgc3RhdGVzLT5z
ZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOworICAgIHN0YXRl
cy0+c2V0RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKKyAgICBzdGF0ZXMtPnNldFdpZHRoKG1fc2l6
ZS53aWR0aCgpKTsKKyAgICBzdGF0ZXMtPnNldEhlaWdodChtX3NpemUuaGVpZ2h0KCkpOworICAg
IHN0YXRlcy0+c2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6ZS53aWR0aCgp
KSAvIG1fc2l6ZS5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
Y2FwYWJpbGl0aWVzKQoreworICAgIGNhcGFiaWxpdGllcy5hZGRTb3VyY2VUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7CisgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01v
ZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7CisgICAgY2FwYWJpbGl0aWVzLmFk
ZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQpOworICAg
IGNhcGFiaWxpdGllcy5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5
UmFuZ2UoMzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOworICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHRS
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRy
dWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlUmFuZ2UoUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSgxNS4wZiwgNjAuMGYsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRp
ZXMuc2V0QXNwZWN0UmF0aW9SYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0Zh
Y2luZ01vZGUgbW9kZSkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMg
PSBjdXJyZW50U3RhdGVzKCk7CisKKyAgICBpZiAoc3RhdGVzLT5mYWNpbmdNb2RlKCkgPT0gbW9k
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKG1vZGUpOwor
CisgICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpzZXRGcmFtZVJhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBpZiAobV9mcmFtZVJhdGUgPT0g
cmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFtZVJhdGUgPSByYXRlOworICAgIGlm
IChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQoMTAwMCAvIG1fZnJhbWVSYXRlKSkpOworCisg
ICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKHNpemUgPT0gbV9zaXpl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NpemUgPSBzaXplOworCisgICAgbV9iYXNlRm9u
dFNpemUgPSBtX3NpemUuaGVpZ2h0KCkgKiAuMDg7CisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiQ291
cmllciIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYmFzZUZvbnRT
aXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKG1fYmFzZUZvbnRTaXpl
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDApOworCisgICAg
bV90aW1lRm9udCA9IEZvbnRDYXNjYWRlKGZvbnREZXNjcmlwdGlvbiwgMCwgMCk7CisgICAgbV90
aW1lRm9udC51cGRhdGUobnVsbHB0cik7CisKKyAgICBtX2JpcEJvcEZvbnRTaXplID0gbV9iYXNl
Rm9udFNpemUgKiAyLjU7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUobV9i
aXBCb3BGb250U2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShtX2Jp
cEJvcEZvbnRTaXplKTsKKyAgICBtX2JpcEJvcEZvbnQgPSBGb250Q2FzY2FkZShmb250RGVzY3Jp
cHRpb24sIDAsIDApOworICAgIG1fYmlwQm9wRm9udC51cGRhdGUobnVsbHB0cik7CisKKyAgICBt
X3N0YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41OworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKG1fc3RhdHNGb250U2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShtX3N0YXRzRm9udFNpemUpOworICAgIG1fc3RhdHNGb250ID0gRm9u
dENhc2NhZGUoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsKKyAgICBtX3N0YXRzRm9udC51cGRhdGUo
bnVsbHB0cik7CisKKyAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICB1cGRhdGVQbGF0
Zm9ybUxheWVyKCk7CisKKyAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQoreworICAgIGZsb2F0IHJhZGl1cyA9IG1fc2l6ZS53aWR0aCgpICogLjA5OworICAgIEZsb2F0
UG9pbnQgbG9jYXRpb24obV9zaXplLndpZHRoKCkgKiAuOCwgbV9zaXplLmhlaWdodCgpICogLjMp
OworCisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgbV9wYXRoLm1vdmVUbyhsb2NhdGlvbik7Cisg
ICAgbV9wYXRoLmFkZEFyYyhsb2NhdGlvbiwgcmFkaXVzLCAwLCAyICogcGlGbG9hdCwgZmFsc2Up
OworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6d2hpdGUpOworICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKKyAg
ICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CisKKyAgICBmbG9hdCBlbmRBbmdsZSA9IHBpRmxv
YXQgKiAoKChmbW9kKG1fZnJhbWVOdW1iZXIsIG1fZnJhbWVSYXRlKSArIDAuNSkgKiAoMi4wIC8g
bV9mcmFtZVJhdGUpKSArIDEpOworICAgIG1fcGF0aC5jbGVhcigpOworICAgIG1fcGF0aC5tb3Zl
VG8obG9jYXRpb24pOworICAgIG1fcGF0aC5hZGRBcmMobG9jYXRpb24sIHJhZGl1cywgMS41ICog
cGlGbG9hdCwgZW5kQW5nbGUsIGZhbHNlKTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7Cisg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXkpOworICAgIGNvbnRleHQuc2V0Rmls
bFJ1bGUoUlVMRV9OT05aRVJPKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7Cit9CisK
K3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBtYWdlbnRhID0gMHhmZmZmMDBm
ZjsKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4ZmZmZmZmMDA7CisgICAgc3Rh
dGljIGNvbnN0IFJHQkEzMiBibHVlID0gMHhmZjAwMDBmZjsKKyAgICBzdGF0aWMgY29uc3QgUkdC
QTMyIHJlZCA9IDB4ZmZmZjAwMDA7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmVlbiA9IDB4
ZmYwMDgwMDA7CisKKyAgICBmbG9hdCBib3hTaXplID0gbV9zaXplLndpZHRoKCkgKiAuMDM1Owor
ICAgIGZsb2F0IGJveFRvcCA9IG1fc2l6ZS5oZWlnaHQoKSAqIC42OworCisgICAgbV9wYXRoLmNs
ZWFyKCk7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCgyLCAyLCBtX3NpemUud2lkdGgoKSAtIDMs
IG1fc2l6ZS5oZWlnaHQoKSAtIDMpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OndoaXRlKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygzKTsKKyAgICBjb250ZXh0
LnNldExpbmVEYXNoKG1fZGFzaFdpZHRocywgMCk7CisgICAgbV9wYXRoLmFkZFJlY3QoZnJhbWVS
ZWN0KTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgY29udGV4dC5zdHJva2VQYXRo
KG1fcGF0aCk7CisKKyAgICBjb250ZXh0LnNldExpbmVEYXNoKERhc2hBcnJheSgpLCAwKTsKKyAg
ICBtX3BhdGguY2xlYXIoKTsKKyAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoMCwgYm94VG9w
ICsgYm94U2l6ZSkpOworICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChtX3NpemUud2lk
dGgoKSwgYm94VG9wICsgYm94U2l6ZSkpOworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSk7CisgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQYXRoKG1fcGF0aCk7CisKKyAg
ICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBmbG9hdCBib3hMZWZ0ID0gYm94
U2l6ZTsKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Ym94U2l6ZSAvIDQ7IGkrKykgeworICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoYm94
TGVmdCArIDQgKiBpLCBib3hUb3ApKTsKKyAgICAgICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBv
aW50KGJveExlZnQgKyA0ICogaSwgYm94VG9wICsgYm94U2l6ZSkpOworICAgIH0KKyAgICBib3hM
ZWZ0ICs9IGJveFNpemUgKyAyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3hTaXpl
IC8gNDsgaSsrKSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChib3hMZWZ0LCBi
b3hUb3AgKyA0ICogaSkpOworICAgICAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYm94
TGVmdCArIGJveFNpemUgLSAxLCBib3hUb3AgKyA0ICogaSkpOworICAgIH0KKyAgICBjb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcygzKTsKKyAgICBib3hMZWZ0ICs9IGJveFNpemUgKyAyOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3hTaXplIC8gODsgaSsrKSB7CisgICAgICAgIG1f
cGF0aC5tb3ZlVG8oRmxvYXRQb2ludChib3hMZWZ0ICsgOCAqIGksIGJveFRvcCkpOworICAgICAg
ICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIDggKiBpLCBib3hUb3AgKyBi
b3hTaXplIC0gMSkpOworICAgIH0KKyAgICBib3hMZWZ0ICs9IGJveFNpemUgKyAyOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3hTaXplIC8gODsgaSsrKSB7CisgICAgICAgIG1fcGF0
aC5tb3ZlVG8oRmxvYXRQb2ludChib3hMZWZ0LCBib3hUb3AgKyA4ICogaSkpOworICAgICAgICBt
X3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIGJveFNpemUgLSAxLCBib3hUb3Ag
KyA4ICogaSkpOworICAgIH0KKworICAgIGJveFRvcCArPSBib3hTaXplICsgMjsKKyAgICBib3hM
ZWZ0ID0gYm94U2l6ZTsKKyAgICBDb2xvciBib3hDb2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCB5
ZWxsb3csIENvbG9yOjpjeWFuLCBncmVlbiwgbWFnZW50YSwgcmVkLCBibHVlIH07CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihib3hDb2xvcnMpIC8gc2l6ZW9mKGJveENvbG9y
c1swXSk7IGkrKykgeworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0
LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJveENvbG9yc1tpXSk7CisgICAg
ICAgIGJveExlZnQgKz0gYm94U2l6ZSArIDE7CisgICAgfQorICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChtX3BhdGgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgdW5zaWduZWQgbWlsbGlzZWNvbmRzID0g
bHJvdW5kKGVsYXBzZWRUaW1lKCkgKiAxMDAwKTsKKyAgICB1bnNpZ25lZCBzZWNvbmRzID0gbWls
bGlzZWNvbmRzIC8gMTAwMCAlIDYwOworICAgIHVuc2lnbmVkIG1pbnV0ZXMgPSBzZWNvbmRzIC8g
NjAgJSA2MDsKKyAgICB1bnNpZ25lZCBob3VycyA9IG1pbnV0ZXMgLyA2MCAlIDYwOworCisgICAg
RmxvYXRQb2ludCB0aW1lTG9jYXRpb24obV9zaXplLndpZHRoKCkgKiAuMDUsIG1fc2l6ZS5oZWln
aHQoKSAqIC4xNSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAg
ICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpOworICAgIFN0cmluZyBz
dHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiJTAydTolMDJ1OiUwMnUuJTAzdSIsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMgJSAxMDAwKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0
KG1fdGltZUZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCB0aW1lTG9jYXRpb24s
IDAsIC0xKTsKKworICAgIHN0cmluZyA9IFN0cmluZzo6Zm9ybWF0KCIlMDZ1IiwgbV9mcmFtZU51
bWJlcisrKTsKKyAgICB0aW1lTG9jYXRpb24ubW92ZSgwLCBtX2Jhc2VGb250U2l6ZSk7CisgICAg
Y29udGV4dC5kcmF3VGV4dChtX3RpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykp
KSwgdGltZUxvY2F0aW9uLCAwLCAtMSk7CisKKyAgICBGbG9hdFBvaW50IHN0YXRzTG9jYXRpb24o
bV9zaXplLndpZHRoKCkgKiAuNjUsIG1fc2l6ZS5oZWlnaHQoKSAqIC43NSk7CisgICAgc3RyaW5n
ID0gU3RyaW5nOjpmb3JtYXQoIkZyYW1lIHJhdGU6ICV1ZnBzIiwgbV9mcmFtZVJhdGUpOworICAg
IGNvbnRleHQuZHJhd1RleHQobV9zdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5n
KSkpLCBzdGF0c0xvY2F0aW9uLCAwLCAtMSk7CisKKyAgICBzdHJpbmcgPSBTdHJpbmc6OmZvcm1h
dCgiU2l6ZTogJXUgeCAldSIsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworICAg
IHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9udFNpemUpOworICAgIGNvbnRleHQuZHJh
d1RleHQobV9zdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xv
Y2F0aW9uLCAwLCAtMSk7CisKKyAgICBjb25zdCBjaGFyKiBjYW1lcmE7CisgICAgc3dpdGNoIChz
dGF0ZXMoKS5mYWNpbmdNb2RlKCkpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OlVzZXI6CisgICAgICAgIGNhbWVyYSA9ICJVc2VyIGZhY2luZyI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAg
ICAgIGNhbWVyYSA9ICJFbnZpcm9ubWVudCBmYWNpbmciOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkxlZnQ6CisgICAgICAgIGNhbWVyYSA9ICJM
ZWZ0IGZhY2luZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6UmlnaHQ6CisgICAgICAgIGNhbWVyYSA9ICJSaWdodCBmYWNpbmciOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd246Cisg
ICAgICAgIGNhbWVyYSA9ICJVbmtub3duIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHN0
cmluZyA9IFN0cmluZzo6Zm9ybWF0KCJDYW1lcmE6ICVzIiwgY2FtZXJhKTsKKyAgICBzdGF0c0xv
Y2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KG1f
c3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbiwg
MCwgLTEpOworCisgICAgRmxvYXRQb2ludCBiaXBCb3BMb2NhdGlvbihtX3NpemUud2lkdGgoKSAq
IC42LCBtX3NpemUuaGVpZ2h0KCkgKiAuNik7CisgICAgdW5zaWduZWQgZnJhbWVNb2QgPSBtX2Zy
YW1lTnVtYmVyICUgNjA7CisgICAgaWYgKGZyYW1lTW9kIDw9IDE1KSB7CisgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpncmF5KTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5n
VmlldygiQmlwIikpOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fYmlwQm9wRm9udCwgcnVu
LCBiaXBCb3BMb2NhdGlvbiwgMCwgLTEpOworICAgIH0gZWxzZSBpZiAoZnJhbWVNb2QgPiAzMCAm
JiBmcmFtZU1vZCA8PSA0NSkgeworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
d2hpdGUpOworICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KCJCb3AiKSk7CisgICAgICAg
IGNvbnRleHQuZHJhd1RleHQobV9iaXBCb3BGb250LCBydW4sIGJpcEJvcExvY2F0aW9uLCAwLCAt
MSk7CisgICAgfQorfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZy
YW1lKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBpbWFnZUJ1ZmZlcigpLT5j
b250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOworCisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSk7Cisg
ICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpLCBDb2xv
cjo6YmxhY2spOworCisgICAgZHJhd1RleHQoY29udGV4dCk7CisgICAgZHJhd0FuaW1hdGlvbihj
b250ZXh0KTsKKyAgICBkcmF3Qm94ZXMoY29udGV4dCk7CisKKyAgICB1cGRhdGVQbGF0Zm9ybUxh
eWVyKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW1hZ2VC
dWZmZXIoKSBjb25zdAoreworICAgIGlmIChtX2ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlci5nZXQoKTsKKworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKG1fc2l6ZSwgVW5hY2NlbGVyYXRlZCk7CisgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25EZWZhdWx0KTsKKyAgICBt
X2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworCisgICAgcmV0
dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJs
ZWQoKSB8fCAhaW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworLy8gICAgY29udGV4dC50cmFu
c2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEludFJl
Y3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOworCisgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1faW1hZ2VCdWZmZXItPmNvcHlJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSksIHJlY3QpOworfQorCitSZWZQdHI8SW1hZ2U+IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjdXJyZW50RnJhbWVJbWFnZSgpCit7CisgICAgaWYgKCFp
bWFnZUJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworfQorCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmlj
c3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlX2gKKyNkZWZpbmUgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3JhcGhpY3NDb250
ZXh0OworCitjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZVZpZGVv
U291cmNlKCkgeyB9CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOworICAgIGNv
bnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworICAgIHZvaWQg
c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUp
OworICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0KTsKKworcHJvdGVjdGVkOgorICAgIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IH0KKworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBv
dmVycmlkZTsKKworICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOworCisgICAgdm9pZCBkcmF3QW5pbWF0
aW9uKEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0
Jik7CisgICAgdm9pZCBkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIFJlZlB0cjxJbWFnZT4gY3VycmVudEZyYW1lSW1hZ2UoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBnZW5lcmF0ZUZyYW1lKCk7CisKKyAgICBk
b3VibGUgZWxhcHNlZFRpbWUoKTsKKworICAgIGZsb2F0IG1fYmFzZUZvbnRTaXplIHsgMCB9Owor
ICAgIEZvbnRDYXNjYWRlIG1fdGltZUZvbnQ7CisKKyAgICBmbG9hdCBtX2JpcEJvcEZvbnRTaXpl
IHsgMCB9OworICAgIEZvbnRDYXNjYWRlIG1fYmlwQm9wRm9udDsKKworICAgIGZsb2F0IG1fc3Rh
dHNGb250U2l6ZSB7IDAgfTsKKyAgICBGb250Q2FzY2FkZSBtX3N0YXRzRm9udDsKKworICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworCisgICAg
SW50U2l6ZSBtX3NpemU7CisgICAgUGF0aCBtX3BhdGg7CisgICAgRGFzaEFycmF5IG1fZGFzaFdp
ZHRoczsKKworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IE5BTiB9OworICAgIGRvdWJsZSBtX2Vs
YXBzZWRUaW1lIHsgMCB9OworCisgICAgdW5zaWduZWQgbV9mcmFtZVJhdGUgeyAzMCB9OworICAg
IHVuc2lnbmVkIG1fZnJhbWVOdW1iZXIgeyAwIH07CisKKyAgICBSdW5Mb29wOjpUaW1lcjxNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZT4gbV90aW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDE5MjE0NikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTMxMiwzICszMTIsMjYgQEAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5jb3JlbWVkaWEuZW5kcG9pbnRzdHJlYW0ueHBjIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5h
cHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRwbGF5YmFja3Nlc3Npb24ueHBjIikKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRwaWNrZXIueHBjIikpCisKKworOzsg
Q2FtZXJhIGFjY2VzcworKGFsbG93IGRldmljZS1jYW1lcmEpCisoYWxsb3cgZmlsZS1yZWFkKgor
ICAgIChsaXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuY29yZW1lZGlhIikK
KyAgICAoaG9tZS1saXRlcmFsICIvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUuY29yZW1l
ZGlhIikpCisoYWxsb3cgbWFjaC1sb29rdXAgKGV4dGVuc2lvbiAiY29tLmFwcGxlLmFwcC1zYW5k
Ym94Lm1hY2giKSkKKyhhbGxvdyBtYWNoLWxvb2t1cAorICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLmNtaW8uQXBwbGVDYW1lcmFBc3Npc3RhbnQiKQorICAgIDs7IEFwcGxlIERBTCBhc3Npc3Rh
bnRzCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY21pby5WRENBc3Npc3RhbnQiKQorICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uQVZDQXNzaXN0YW50IikKKyAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jbWlvLklJRENWaWRlb0Fzc2lzdGFudCIpCisgICAgOzsgUXVpY2tU
aW1lSUlEQ0RpZ2l0aXplciBhc3Npc3RhbnQKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5J
SURDQXNzaXN0YW50IikpCisoYWxsb3cgaW9raXQtb3BlbgorICAgIDs7IFF1aWNrVGltZVVTQlZE
Q0RpZ2l0aXplcgorICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiSU9VU0JEZXZpY2VVc2Vy
Q2xpZW50VjIiKQorICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiSU9VU0JJbnRlcmZhY2VV
c2VyQ2xpZW50VjIiKSkKKworOzsgTWljcm9waG9uZQorKGFsbG93IGRldmljZS1taWNyb3Bob25l
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1vbmVuZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLW9uZW5kZWQuaHRtbAko
cmV2aXNpb24gMTkyMTQ2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLW9uZW5kZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlv
bmFyeSwgY2FsbGJhY2spIHsKK2RlYnVnKCJnZXRVc2VyTWVkaWEgLi4uICIpOwogICAgICAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKICAgICAgICAgICAgICAgICB9IGNh
dGNoIChlKSB7CkBAIC0zNiw3ICszNyw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0yKHMpIHsKICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CiAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgnZ290U3RyZWFtMiB3YXMgY2FsbGVkLicpOwotICAgICAgICAgICAgICAgIHN0cmVh
bSA9IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShzKTsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBu
ZXcgTWVkaWFTdHJlYW0ocyk7CiAgICAgICAgICAgICAgICAgdHJhY2sgPSBzdHJlYW0uZ2V0QXVk
aW9UcmFja3MoKVswXTsKICAgICAgICAgICAgICAgICB0cmFja0Nsb25lID0gdHJhY2suY2xvbmUo
KTsKICAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCd0cmFjay5yZWFkeVN0YXRlID09ICJl
bmRlZCInKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265043</attachid>
            <date>2015-11-09 05:54:34 -0800</date>
            <delta_ts>2015-12-11 16:01:10 -0800</delta_ts>
            <desc>Another updated patch.</desc>
            <filename>mock_source_patch_7.txt</filename>
            <type>text/plain</type>
            <size>72353</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMS0wOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEFkZCBtb2NrIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzNDUzMzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBiYXNpYyBtb2NrIGF1ZGlvIGFuZCB2aWRlbyByZWFsdGltZSBtZWRpYSBzb3Vy
Y2UgY2xhc3NlcyBzbyB3ZSBjYW4gdGVzdCBNZWRpYVN0cmVhbQorICAgICAgICBBUEkgd2l0aG91
dCByZXF1aXJpbmcgdGVzdCBtYWNoaW5lcyB0byBoYXZlIGF1ZGlvL3ZpZGVvIGlucHV0IGhhcmR3
YXJlLiBObyBuZXcgdGVzdHMgYWRkZWQKKyAgICAgICAgeWV0LCB0aG9lIHdpbGwgZm9sbG93Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlc2UgY2hhbmdlcyB3aWxsIGFsbG93IHVzIHRvIHdy
aXRlIE1lZGlhU3RyZWFtIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAsIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCwg
YW5kIAorICAgICAgICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorCisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6IEFkZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJzKTog
RG9uJ3Qgc2V0IGF1dG9yZXNpemluZ01hc2ssCisgICAgICAgICAgaXQgaXNuJ3QgbmVjZXNzYXJ5
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpyZWZyZXNoQ2FwdHVyZURldmljZUxpc3QpOiBB
VkNhcHR1cmVEZXZpY2UgLT4gZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKQorICAgICAgICAoV2Vi
Q29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERldmljZUZvckZhY2luZ01vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNvdXJjZVdp
dGhVSUQpOiBEaXR0by4KKworICAgICAgICBNYWMgY2xhc3MgaW1wbGVtZW50cyBSZWFsdGltZVZp
ZGVvU291cmNlOjpwbGF0Zm9ybUxheWVyLCByZXR1cm5zIGEgQ0FMYXllciB3aGljaCB1c2VzIHRo
ZQorICAgICAgICBHcmFwaGljc0NvbnRleHQgYXMgY29udGVudHMuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisKKyAgICAg
ICAgTW9jayBhdWRpbyBzb3VyY2UuIERvZXNuJ3QgcHJvdmlkZSBkYXRhIHlldCwgb25seSBwcm92
aWRlcyBzdGF0ZXMgYW5kIGNhcGFiaWxpdGllcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6On5Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZSk6CisKKyAgICAgICAgTW9jayBzb3VyY2UgYmFzZSBjbGFzcywgc2V0cyBw
ZXJzaXN0ZW50IElEIGFuZCB1cGRhdGVzIHN0YXRlcyBhbmQgY2FwYWJpbGl0aWVzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9QZXJzaXN0
ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1BlcnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvU291cmNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291
cmNlUGVyc2lzdGVudElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6On5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3VycmVudFN0YXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29uc3RyYWludHMpOgorCisg
ICAgICAgIFVzZSBuZXcgbW9jayBzb3VyY2UgY2xhc3Nlcy4gQ3JlYXRlIGEgbmV3IHNvdXJjZSBp
bnN0YW5jZSBmb3IgZWFjaCByZXF1ZXN0IGluc3RlYWQgb2YgcmV1c2luZyB0aGUKKyAgICAgICAg
c2FtZSBzb3VyY2VzIGVhY2ggdGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJl
Z2lzdGVyTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
dGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1NvdXJjZTo6TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlOjp+TW9ja1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlOjpjYXBhYmlsaXRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tBdWRpb1NvdXJjZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vY2tWaWRlb1NvdXJjZUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVNb2NrU291cmNlcyk6IERlbGV0ZWQuCisK
KyAgICAgICAgTW9jayB2aWRlbyBzb3VyY2UuIEdlbmVyYXRlIGJpcC1ib3AgaW5zcGlyZWQgZnJh
bWVzIHdpdGggYnVybmVkIGluIHN0YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjplbGFw
c2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBk
YXRlU3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVQ
bGF0Zm9ybUxheWVyKToKKwogMjAxNS0xMS0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTIxNDApOiBXaW5kb3dzIGJ1aWxkIGJy
b2tlIGFmdGVyIHJlbW92aW5nIENvbG9yU3BhY2UgYXJndW1lbnQgdG8gYWxsIGRyYXdpbmcgY2Fs
bHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMwMiw3ICsyMzAyLDEw
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAorICAgIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisgICAgcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorICAgIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAog
ICAgIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWFjIgorICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvY29jb2EiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
Y2YiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvbWFjIgpAQCAtNDk3LDYg
KzQ5OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCiAKKyAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
KwogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkyMTQ2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzUsNiArMzM1LDEwIEBACiAJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBK
U1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QwN0IxMzE4MzQxNTg4MDBBQkREM0MgLyogSlNSVENT
ZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CisJCTA3RDZB
NEVGMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQy
MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyBzZXR0aW5ncyA9IHtB
U1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3RDZBNEYwMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdENkE0RUUxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0
RjMxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEYxMUJFRDVGODgw
MDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0RjQxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkwN0RDNUZE
NDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkw
MDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZC
MTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CkBAIC0zNDIsNiArMzQ2LDEwIEBACiAJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJEMThG
NUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLzsg
fTsKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdFREMzRUQxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwICovOyB9OworCQkwN0VFNzZFQjFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RTkxQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwN0VFNzZF
QzFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVBMUJFOTZEQjAwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdFRTc2
RjAxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUUxQkVBNjE5
ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTA3RjBCOTdBMUFDNURCMzMwMEU1MzVEOSAvKiBB
VktpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdGMEI5NzkxQUM1REIzMzAwRTUzNUQ5IC8qIEFWS2l0U1BJLmggKi87IH07CiAJCTA3RjBCOTdD
MUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBB
VkZvdW5kYXRpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0Y4NzY4NDFBRDU4MEY5MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTg2
LDYgKzc1OTQsMTAgQEAKIAkJMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRF
RDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdENkE0RjIxQkVE
NUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1OTMsNiArNzYwNSwxMCBAQAogCQkwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyog
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VFNzZFQTFCRTk2
REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0YwQjk3OTFBQzVE
QjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVZLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGMEI5N0IxQUM1
REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBVkZvdW5kYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIxNyw2ICsxNTIzMyw4
IEBACiAJCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNl
Lm1tICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLywKKwkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKKwkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJNEEwRkZBQTMxQUFGNUVGNjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwICovLAogCQkJCTRBMEZG
QUE0MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggKi8s
CiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmggKi8sCkBAIC0xNzA3Nyw2ICsxNzA5NSwxMiBAQAogCQkJCTU5MzA5QTEyMTFGNEFF
NkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwNzM3
OTRERjE5RUUyRDFCMDBFNUEwNDUgLyogTWVkaWFDb25zdHJhaW50c01vY2suY3BwICovLAogCQkJ
CTA3Mzc5NEUwMTlFRTJEMUIwMEU1QTA0NSAvKiBNZWRpYUNvbnN0cmFpbnRzTW9jay5oICovLAor
CQkJCTA3RDZBNEYxMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgKi8sCisJCQkJMDdENkE0RjIxQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggKi8sCisJCQkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLywKKwkJCQkwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYgLyogTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKKwkJCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovLAorCQkJCTA3RUU3NkVBMUJFOTZEQjAw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovLAogCQkJCTRBMEZGQTlCMUFB
RjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJ
CQkJNEEwRkZBOUMxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmggKi8sCiAJCQkJQUFFMjdCNzQxNkNCRkMwRDAwNjIzMDQzIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcCAqLywKQEAgLTI1NTU1LDcgKzI1NTc5LDkgQEAKIAkJCQlBODBE
NjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0Q2QTRGMDFCRUNGMkQyMDAx
NzQxNDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjU1OSw2ICsyNjU4NSw3IEBACiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYy
MEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4
OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5M0ExN0QxNkUxQzAwNDIwQUExIC8qIE1lZGlhQ29uc3RyYWlu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE0MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRp
YUNvbnN0cmFpbnRzSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxNSw2ICsyNzc0Miw3IEBA
CiAJCQkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0VFNzZFQzFCRTk2REIwMDBGODkxMzMg
LyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjRCNDY1
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3
QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODk2Nyw2ICsyODk5NSw3IEBACiAJCQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkw
IC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNG
RkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkYwMUJF
QTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDYxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NERDRDgxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNo
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5ODIyLDYgKzI5ODUxLDcgQEAKIAkJCQkwNzNC
RTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQzBEMzcwOUZFRDA3MzAwN0IwMjM1
IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRFRjFCRUNGMkQyMDAxNzQx
NDYgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
OUMyNjQwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzRjEyMDZCMUI4QzEwNDcwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDAzNyw2ICszMDA2Nyw3IEBACiAJCQkJQjJGQTNE
REUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkZBM0RFMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTQyQTc5NjBBRTVDOTQyMDBERjU4REYgLyogSlNT
VkdQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0Q2QTRGMzFCRUQ1Rjg4MDAxNzQxNDYg
LyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNE
RTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyRkEzREU1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHlnb25FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzREU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvbHls
aW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDY2LDYgKzMwMDk3LDcgQEAKIAkJ
CQlCMkZBM0UxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdVc2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzRTE2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1ZpZXdFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxMThGRUQ0MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NW
R1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RUU3NkVCMUJFOTZEQjAwMEY4OTEz
MyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1
MjI3RDExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMCArMTIwLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CiAKKyAgICBtX3ByZXZpZXdM
YXllciA9IG51bGxwdHI7CisgICAgbV9pbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKCk7CisKICAg
ICBtX21lZGlhU3RyZWFtUHJpdmF0ZSA9ICZzdHJlYW07CiAgICAgbV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsK
ICAgICBtX2VuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTgsMTYgKzM1OSwxMSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotI2lmbmRlZiBOREVCVUcKICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUg
PSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tncm91
bmQgbGF5ZXIiOwotI2VuZGlmCiAKICAgICBtX3ByZXZpZXdMYXllciA9IG1fbWVkaWFTdHJlYW1Q
cml2YXRlLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVu
dHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZTsKICAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5h
bmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgbV9wcmV2
aWV3TGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXphYmxlIHwg
a0NBTGF5ZXJIZWlnaHRTaXphYmxlOwotI2VuZGlmCiAgICAgaWYgKCFtX3BsYXlpbmcpCiAgICAg
ICAgIG1fcHJldmlld0xheWVyLmdldCgpLmhpZGRlbiA9IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAxOTIxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlTGlzdCgpCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkZXZpY2VzID0g
Y2FwdHVyZURldmljZUxpc3QoKTsKICAgICAKLSAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5cGUg
KmRldmljZSBpbiBbQVZDYXB0dXJlRGV2aWNlIGRldmljZXNdKSB7CisgICAgZm9yIChBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgaW4gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNl
c10pIHsKICAgICAgICAgQ2FwdHVyZURldmljZSBzb3VyY2U7CiAKICAgICAgICAgaWYgKCFbZGV2
aWNlIGlzQ29ubmVjdGVkXSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBDYXB0dXJlRGV2aWNlKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpiCiAgICAgCiAgICAgc2l6ZV90IGNvdW50ID0gZGV2aWNlcy5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
IEFWQ2FwdHVyZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0
aFVuaXF1ZUlEOmRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1
cmVEZXZpY2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VX
aXRoVW5pcXVlSUQ6ZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VS
VChkZXZpY2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGRldmljZSAmJiBkZXZpY2VTdXBwb3J0
c0ZhY2luZ01vZGUoZGV2aWNlLCBmYWNpbmdNb2RlKSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gQVZDYXB0dXJlRGV2CiAgICAgICAgIGlmICh0eXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGNhcHR1cmVEZXZpY2UubV92aWRlb1NvdXJj
ZUlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFWQ2FwdHVy
ZURldmljZVR5cGUgKmRldmljZSA9IFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlV2l0aFVuaXF1ZUlE
OmNhcHR1cmVEZXZpY2UubV9jYXB0dXJlRGV2aWNlSURdOworICAgICAgICBBVkNhcHR1cmVEZXZp
Y2VUeXBlICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5p
cXVlSUQ6Y2FwdHVyZURldmljZS5tX2NhcHR1cmVEZXZpY2VJRF07CiAgICAgICAgIEFTU0VSVChk
ZXZpY2UpOwogCiAgICAgICAgIFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gY2FwdHVyZVNv
dXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hY19oCisjZGVmaW5lIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYygpIHsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTsKKyAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpOworCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbV9wcmV2aWV3SW1hZ2U7CisgICAgbXV0YWJsZSBSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gbV9wcmV2aWV3TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2lt
cG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29y
ZS9DQVRyYW5zYWN0aW9uLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMoKSk7Cit9CisKK01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpCisgICAgOiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZSgpCit7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcmV2aWV3TGF5ZXIpCisgICAg
ICAgIHJldHVybiBtX3ByZXZpZXdMYXllci5nZXQoKTsKKworICAgIG1fcHJldmlld0xheWVyID0g
YWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQo
KS5uYW1lID0gQCJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYyBwcmV2aWV3IGxheWVyIjsKKyAg
ICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXpl
QXNwZWN0OworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFpl
cm87CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2Ug
PSBZRVM7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hdXRv
cmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFi
bGU7CisjZW5kaWYKKworICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKKworICAgIHJldHVybiBt
X3ByZXZpZXdMYXllci5nZXQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlUGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgVEFSR0VUX09TX0lQSE9ORSB8
fCAoUExBVEZPUk0oTUFDKSkKKyAgICBpZiAoIW1fcHJldmlld0xheWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0
QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlv
bnM6WUVTXTsKKworICAgIGRvIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZSgpOworICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigp
OworICAgICAgICBpZiAoIW1fcHJldmlld0ltYWdlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVudHMgPSAoTlNPYmplY3QqKShtX3ByZXZp
ZXdJbWFnZS5nZXQoKSk7CisgICAgfSB3aGlsZSAoMCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBj
b21taXRdOworCisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSgpKTsKK30KKworTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKCkKKyAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG1vY2tB
dWRpb1NvdXJjZU5hbWUoKSkKK3sKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
dXBkYXRlU3RhdGVzKCkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMg
PSBjdXJyZW50U3RhdGVzKCk7CisgICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAgIHN0YXRlcy0+c2V0Vm9sdW1lKDUwKTsK
K30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGll
cyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCit7CisgICAg
Y2FwYWJpbGl0aWVzLnNldFZvbHVtZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5
UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0
aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlX2gKKyNkZWZpbmUgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UgeworcHVibGljOgorCisgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgp
IHsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgb3ZlcnJp
ZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
ICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMK
KyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSA8
bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAw
YzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1v
Y2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlv
U291cmNlTmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiTW9jayBhdWRpbyBkZXZpY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291cmNlTmFtZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiTW9jayB2aWRlbyBkZXZpY2UiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
UmVmUHRyPFRyYWNrU291cmNlSW5mbz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291
cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYUNvbnN0cmFpbnRzKikKK3sKKyAgICAv
LyBGSVhNRTogdmFsaWRhdGUgY29uc3RyYWludHMuCisKKyAgICBpZiAobW9ja0F1ZGlvU291cmNl
UGVyc2lzdGVudElEKCkgPT0gaWQpCisgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZShtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgVHJhY2tTb3VyY2VJbmZvOjpBdWRp
bywgIk1vY2sgYXVkaW8gZGV2aWNlIik7CisKKyAgICBpZiAobW9ja1ZpZGVvU291cmNlUGVyc2lz
dGVudElEKCkgPT0gaWQpCisgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZSht
b2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1v
Y2sgdmlkZW8gZGV2aWNlIik7CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiAw
CisKKyNlbmRpZgorCitNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBu
YW1lKQoreworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAg
ICAgICBzZXRQZXJzaXN0ZW50SUQobW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCkpOworICAg
IGVsc2UKKyAgICAgICAgc2V0UGVyc2lzdGVudElEKG1vY2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJ
RCgpKTsKK30KKworUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMoKQoreworICAgIGlmICghbV9jYXBhYmls
aXRpZXMpIHsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMtPnNldFNvdXJjZUlk
KG1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCgpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNhcGFiaWxp
dGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9jYXBhYmls
aXRpZXM7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdGF0ZXMoKQoreworICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJ
ZChpZCgpKTsKKyAgICB1cGRhdGVTdGF0ZXMoKTsKKworICAgIHJldHVybiBtX2N1cnJlbnRTdGF0
ZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VfaAor
I2RlZmluZSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xh
c3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVHJhY2tTb3VyY2VJbmZvOworCitjbGFzcyBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSgpIHsgfQorCisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCk7Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja0F1ZGlvU291cmNlTmFtZSgpOworCisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElE
KCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlTmFtZSgp
OworCisgICAgc3RhdGljIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHRyYWNrU291cmNlV2l0aFVJ
RChjb25zdCBTdHJpbmcmLCBNZWRpYUNvbnN0cmFpbnRzKik7CisKK3Byb3RlY3RlZDoKKyAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlcygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJikgPSAwOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlk
ZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsgfQorICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KKworICAgIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlk
ZTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIGN1cnJlbnRTdGF0ZXMoKSB7IHJl
dHVybiAmbV9jdXJyZW50U3RhdGVzOyB9CisgICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWlu
dHMoKSB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOyB9CisKK3ByaXZhdGU6CisKKyAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNp
bmdEYXRhOyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRl
czsKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmls
aXRpZXM7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAg
Ym9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHJldmlzaW9uIDE5MjE0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUg
Ik1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0
cmFpbnRzTW9jay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCkBAIC0zNiw4NiArMzYsMTYg
QEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
LmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW9j
a1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICBNb2Nr
U291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQotICAgICAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoaWQsIHR5cGUsIG5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk1vY2tT
b3VyY2UoKSB7IH0KLQotICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAg
dmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVy
biBtX2N1cnJlbnRTdGF0ZXM7IH0KLQotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
IG1fY3VycmVudFN0YXRlczsKLX07Ci0gICAgCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8TW9ja1NvdXJjZT4+IE1vY2tTb3VyY2VNYXA7Ci0KLXN0YXRpYyBNb2NrU291cmNlTWFwJiBt
b2NrU291cmNlTWFwKCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTW9j
a1NvdXJjZU1hcCwgbW9ja1NvdXJjZU1hcCwgKCkpOwotICAgIHJldHVybiBtb2NrU291cmNlTWFw
OwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJi
MTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBpZDsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bW9ja1ZpZGVvU291cmNlSUQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGlkKCIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLXN0YXRp
YyB2b2lkIGluaXRpYWxpemVNb2NrU291cmNlcygpCi17Ci0gICAgUmVmUHRyPE1vY2tTb3VyY2U+
IG1vY2tTb3VyY2UxID0gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQo
KSwgIk1vY2sgdmlkZW8gZGV2aWNlIiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pKTsKLSAg
ICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpjcmVhdGUoKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFNv
dXJjZUlkKG1vY2tTb3VyY2UxLT5pZCgpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAg
ICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIw
VUwsIDE5MjBVTCwgdHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0
SGVpZ2h0UmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgyNDBVTCwgMTA4
MFVMLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRGcmFtZVJh
dGVSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDE1LjBmLCA2MC4wZiwg
dHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0QXNwZWN0UmF0aW9S
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDku
MGYsIHRydWUpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFZvbHVtZVJh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTBVTCwgOTBVTCwgdHJ1ZSkp
OwotCi0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVu
dFN0YXRlcy5zZXRTb3VyY2VJZChtb2NrU291cmNlMS0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTEt
Pm1fY3VycmVudFN0YXRlcy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlVzZXIpOwotICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0V2lkdGgoMTkyMCk7
Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRIZWlnaHQoMTA4MCk7Ci0gICAg
bW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRGcmFtZVJhdGUoMzApOwotICAgIG1vY2tT
b3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0QXNwZWN0UmF0aW8oMTYgLyA5LjBmKTsKLSAgICBt
b2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldFZvbHVtZSg3MCk7Ci0gICAgU3RyaW5nIG1v
Y2tTb3VyY2UxaWQgPSBtb2NrU291cmNlMS0+aWQoKTsKLSAgICBtb2NrU291cmNlTWFwKCkuYWRk
KG1vY2tTb3VyY2UxaWQsIG1vY2tTb3VyY2UxLnJlbGVhc2UoKSk7Ci0KLSAgICBSZWZQdHI8TW9j
a1NvdXJjZT4gbW9ja1NvdXJjZTIgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrQXVkaW9T
b3VyY2VJRCgpLCAiTW9jayBhdWRpbyBkZXZpY2UiLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
bykpOwotICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGll
cy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTItPmlkKCkpOwotICAgIG1vY2tTb3VyY2UyLT5tX2Nh
cGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlS
YW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7Ci0KLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3Rh
dGVzLnNldFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7
Ci0gICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJZChtb2NrU291cmNl
Mi0+aWQoKSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zZXRWb2x1bWUoNTAp
OwotICAgIFN0cmluZyBtb2NrU291cmNlMmlkID0gbW9ja1NvdXJjZTItPmlkKCk7Ci0gICAgbW9j
a1NvdXJjZU1hcCgpLmFkZChtb2NrU291cmNlMmlkLCBtb2NrU291cmNlMi5yZWxlYXNlKCkpOwot
fQotCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZWdpc3Rlck1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyKCkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIsIGNlbnRlciwgKCkpOwpAQCAtMTIz
LDcgKzUzLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVnaQogICAg
IGlmICghcmVnaXN0ZXJlZCkgewogICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTsKICAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0U2hhcmVkU3RyZWFtQ2VudGVyKCZjZW50ZXIp
OwotICAgICAgICBpbml0aWFsaXplTW9ja1NvdXJjZXMoKTsKICAgICB9CiB9CiAKQEAgLTEzMyw3
ICs2Miw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKIAogICAg
IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7Ci0gICAgTW9j
a1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3Ry
YWludHMpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNN
b2NrOjp2ZXJpZnlDb25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKQEAgLTE0MiwxMSArNzAs
NyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBp
dCA9IG1hcC5maW5kKG1vY2tBdWRpb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0g
bWFwLmVuZCgpKTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9T
b3VyY2UgPSBpdC0+dmFsdWU7Ci0gICAgICAgIGF1ZGlvU291cmNlLT5yZXNldCgpOworICAgICAg
ICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9T
b3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAKQEAgLTE1NywxMSArODEsNyBAQCB2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG1v
Y2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLQot
ICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFs
dWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNldCgpOworICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKICAgICB9CiAKQEAgLTE3Niw3ICs5Niw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWEKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Pj4gdmlkZW9Tb3VyY2VzOwotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3VyY2VNYXAo
KTsKIAogICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlk
UXVlcnkgPSBNZWRpYUNvbnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25z
dHJhaW50cyk7CkBAIC0xODUsMTEgKzEwNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNyZWEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQo
KSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVk
aW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBh
dWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAt
MjAwLDExICsxMTUsNyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBNb2NrU291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBB
U1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFsdWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNl
dCgpOworICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5h
cHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAgICAgCkBAIC0yMTYsMjIgKzEy
NywxMyBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhCiAgICAgQVNT
RVJUKGNsaWVudCk7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVk
aW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKLSAgICBNb2NrU291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7Ci0KLSAg
ICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1vY2tTb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7Ci0gICAgICAgIEFT
U0VSVChpdCAhPSBtYXAuZW5kKCkpOwogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0
KCk7CisgICAgaWYgKCFhdWRpb0RldmljZUlELmlzRW1wdHkoKSAmJiBhdWRpb0RldmljZUlEID09
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkg
eworICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBl
bmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9Ci0gICAgaWYgKCF2aWRlb0RldmljZUlE
LmlzRW1wdHkoKSkgewotICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5m
aW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOwotICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgp
KTsKLQotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBp
dC0+dmFsdWU7Ci0gICAgICAgIHZpZGVvU291cmNlLT5yZXNldCgpOworICAgIGlmICghdmlkZW9E
ZXZpY2VJRC5pc0VtcHR5KCkgJiYgdmlkZW9EZXZpY2VJRCA9PSBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6bW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkpIHsKKyAgICAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNyZWF0ZSgpOwogICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVh
c2UoKSk7CiAgICAgfQogCkBAIC0yNDMsMjUgKzE0NSwxOSBAQCBib29sIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpnZXRNCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKICAgICBUcmFja1NvdXJj
ZUluZm9WZWN0b3Igc291cmNlczsKIAotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tTb3Vy
Y2VNYXAoKTsKLSAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0g
ICAgZm9yIChNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgTW9ja1NvdXJjZSogc291cmNlID0gaXQtPnZhbHVlLmdldCgp
OworICAgIHNvdXJjZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp0cmFja1NvdXJj
ZVdpdGhVSUQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3Rl
bnRJRCgpLCBudWxscHRyKSk7CisgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1Zp
ZGVvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKIAotICAgICAgICBzb3VyY2VzLmFw
cGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShzb3VyY2UtPmlkKCksIHNvdXJjZS0+dHlwZSgp
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6
IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJjZS0+bmFtZSgpKSk7Ci0gICAgfQorICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHJlcXVlc3RDbGllbnQsIHNvdXJjZXNdIHsKKyAgICAgICAg
cmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVSZXF1ZXN0KHNvdXJjZXMpOworICAgIH0pOwogCi0g
ICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVSZXF1ZXN0KHNvdXJjZXMpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1SZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIFVJRCwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopCitSZWZQdHI8VHJhY2tTb3VyY2VJbmZv
PiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRChjb25zdCBTdHJp
bmcmIFVJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMpCiB7Ci0gICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtb2NrU291cmNlTWFwKCkpIHsK
LSAgICAgICAgaWYgKHNvdXJjZS52YWx1ZS0+aWQoKSA9PSBVSUQpCi0gICAgICAgICAgICByZXR1
cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLnZhbHVlLT5pZCgpLCBzb3VyY2UudmFs
dWUtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5m
bzo6VmlkZW8gOiBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCBzb3VyY2UudmFsdWUtPm5hbWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKFVJRCwgY29uc3RyYWludHMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCitSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UoKSk7Cit9CisjZW5kaWYKKworTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKCkKKyAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIG1v
Y2tWaWRlb1NvdXJjZU5hbWUoKSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUpCit7CisgICAgbV9kYXNo
V2lkdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7CisgICAgbV9kYXNoV2lkdGhzLnVuY2hl
Y2tlZEFwcGVuZCg2KTsKKyAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOworfQor
Cit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBp
ZiAobV9zaXplLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U2l6ZShJbnRTaXplKDY0MCwgNDgwKSk7
CisKKyAgICBtX3N0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAg
IG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQo
MTAwMCAvIG1fZnJhbWVSYXRlKSkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1fZWxhcHNlZFRp
bWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKKyAgICBt
X3N0YXJ0VGltZSA9IE5BTjsKK30KKworZG91YmxlIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpl
bGFwc2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAg
ICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWUpOworfQorCit2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMoKQoreworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKKworICAgIHN0YXRlcy0+
c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBzdGF0
ZXMtPnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7CisgICAgc3RhdGVzLT5zZXRXaWR0aChtX3Np
emUud2lkdGgoKSk7CisgICAgc3RhdGVzLT5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpKTsKKyAg
ICBzdGF0ZXMtPnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3NpemUud2lkdGgo
KSkgLyBtX3NpemUuaGVpZ2h0KCkpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
Ojppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcykKK3sKKyAgICBjYXBhYmlsaXRpZXMuYWRkU291cmNlVHlwZShSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOworICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOworICAgIGNhcGFiaWxpdGllcy5h
ZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKKyAg
ICBjYXBhYmlsaXRpZXMuc2V0V2lkdGhSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0
UmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgyNDBVTCwgMTA4MFVMLCB0
cnVlKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZVJhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7CisgICAgY2FwYWJpbGl0
aWVzLnNldEFzcGVjdFJhdGlvUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSg0IC8gMy4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9G
YWNpbmdNb2RlIG1vZGUpCit7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVz
ID0gY3VycmVudFN0YXRlcygpOworCisgICAgaWYgKHN0YXRlcy0+ZmFjaW5nTW9kZSgpID09IG1v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRlcy0+c2V0RmFjaW5nTW9kZShtb2RlKTsK
KworICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0RnJhbWVSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgaWYgKG1fZnJhbWVSYXRlID09
IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKKyAgICBp
ZiAobV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMobHJvdW5kKDEwMDAgLyBtX2ZyYW1lUmF0ZSkpKTsKKwor
ICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IG1fc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaXplID0gc2l6ZTsKKworICAgIG1fYmFzZUZv
bnRTaXplID0gbV9zaXplLmhlaWdodCgpICogLjA4OworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNv
dXJpZXIiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShtX2Jhc2VGb250
U2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShtX2Jhc2VGb250U2l6
ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0NTAwKTsKKworICAg
IG1fdGltZUZvbnQgPSBGb250Q2FzY2FkZShmb250RGVzY3JpcHRpb24sIDAsIDApOworICAgIG1f
dGltZUZvbnQudXBkYXRlKG51bGxwdHIpOworCisgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFz
ZUZvbnRTaXplICogMi41OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1f
YmlwQm9wRm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobV9i
aXBCb3BGb250U2l6ZSk7CisgICAgbV9iaXBCb3BGb250ID0gRm9udENhc2NhZGUoZm9udERlc2Ny
aXB0aW9uLCAwLCAwKTsKKyAgICBtX2JpcEJvcEZvbnQudXBkYXRlKG51bGxwdHIpOworCisgICAg
bV9zdGF0c0ZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAuNTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZShtX3N0YXRzRm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUobV9zdGF0c0ZvbnRTaXplKTsKKyAgICBtX3N0YXRzRm9udCA9IEZv
bnRDYXNjYWRlKGZvbnREZXNjcmlwdGlvbiwgMCwgMCk7CisgICAgbV9zdGF0c0ZvbnQudXBkYXRl
KG51bGxwdHIpOworCisgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgdXBkYXRlUGxh
dGZvcm1MYXllcigpOworCisgICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBmbG9hdCByYWRpdXMgPSBtX3NpemUud2lkdGgoKSAqIC4wOTsKKyAgICBGbG9h
dFBvaW50IGxvY2F0aW9uKG1fc2l6ZS53aWR0aCgpICogLjgsIG1fc2l6ZS5oZWlnaHQoKSAqIC4z
KTsKKworICAgIG1fcGF0aC5jbGVhcigpOworICAgIG1fcGF0aC5tb3ZlVG8obG9jYXRpb24pOwor
ICAgIG1fcGF0aC5hZGRBcmMobG9jYXRpb24sIHJhZGl1cywgMCwgMiAqIHBpRmxvYXQsIGZhbHNl
KTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKKyAgICBjb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Cisg
ICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOworCisgICAgZmxvYXQgZW5kQW5nbGUgPSBwaUZs
b2F0ICogKCgoZm1vZChtX2ZyYW1lTnVtYmVyLCBtX2ZyYW1lUmF0ZSkgKyAwLjUpICogKDIuMCAv
IG1fZnJhbWVSYXRlKSkgKyAxKTsKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBtX3BhdGgubW92
ZVRvKGxvY2F0aW9uKTsKKyAgICBtX3BhdGguYWRkQXJjKGxvY2F0aW9uLCByYWRpdXMsIDEuNSAq
IHBpRmxvYXQsIGVuZEFuZ2xlLCBmYWxzZSk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpncmF5KTsKKyAgICBjb250ZXh0LnNldEZp
bGxSdWxlKFJVTEVfTk9OWkVSTyk7CisgICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOworfQor
Cit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQoreworICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbWFnZW50YSA9IDB4ZmZmZjAw
ZmY7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiB5ZWxsb3cgPSAweGZmZmZmZjAwOworICAgIHN0
YXRpYyBjb25zdCBSR0JBMzIgYmx1ZSA9IDB4ZmYwMDAwZmY7CisgICAgc3RhdGljIGNvbnN0IFJH
QkEzMiByZWQgPSAweGZmZmYwMDAwOworICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgZ3JlZW4gPSAw
eGZmMDA4MDAwOworCisgICAgZmxvYXQgYm94U2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogLjAzNTsK
KyAgICBmbG9hdCBib3hUb3AgPSBtX3NpemUuaGVpZ2h0KCkgKiAuNjsKKworICAgIG1fcGF0aC5j
bGVhcigpOworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoMiwgMiwgbV9zaXplLndpZHRoKCkgLSAz
LCBtX3NpemUuaGVpZ2h0KCkgLSAzKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9y
Ojp3aGl0ZSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMyk7CisgICAgY29udGV4
dC5zZXRMaW5lRGFzaChtX2Rhc2hXaWR0aHMsIDApOworICAgIG1fcGF0aC5hZGRSZWN0KGZyYW1l
UmVjdCk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChtX3BhdGgpOworCisgICAgY29udGV4dC5zZXRMaW5lRGFzaChEYXNoQXJyYXkoKSwgMCk7Cisg
ICAgbV9wYXRoLmNsZWFyKCk7CisgICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KDAsIGJveFRv
cCArIGJveFNpemUpKTsKKyAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobV9zaXplLndp
ZHRoKCksIGJveFRvcCArIGJveFNpemUpKTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6d2hpdGUpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKDIpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChtX3BhdGgpOworCisg
ICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CisgICAgZmxvYXQgYm94TGVmdCA9IGJv
eFNpemU7CisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJveFNpemUgLyA0OyBpKyspIHsKKyAgICAgICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KGJv
eExlZnQgKyA0ICogaSwgYm94VG9wKSk7CisgICAgICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQ
b2ludChib3hMZWZ0ICsgNCAqIGksIGJveFRvcCArIGJveFNpemUpKTsKKyAgICB9CisgICAgYm94
TGVmdCArPSBib3hTaXplICsgMjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6
ZSAvIDQ7IGkrKykgeworICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCwg
Ym94VG9wICsgNCAqIGkpKTsKKyAgICAgICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJv
eExlZnQgKyBib3hTaXplIC0gMSwgYm94VG9wICsgNCAqIGkpKTsKKyAgICB9CisgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMyk7CisgICAgYm94TGVmdCArPSBib3hTaXplICsgMjsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6ZSAvIDg7IGkrKykgeworICAgICAgICBt
X3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIDggKiBpLCBib3hUb3ApKTsKKyAgICAg
ICAgbV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyA4ICogaSwgYm94VG9wICsg
Ym94U2l6ZSAtIDEpKTsKKyAgICB9CisgICAgYm94TGVmdCArPSBib3hTaXplICsgMjsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6ZSAvIDg7IGkrKykgeworICAgICAgICBtX3Bh
dGgubW92ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCwgYm94VG9wICsgOCAqIGkpKTsKKyAgICAgICAg
bV9wYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyBib3hTaXplIC0gMSwgYm94VG9w
ICsgOCAqIGkpKTsKKyAgICB9CisKKyAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CisgICAgYm94
TGVmdCA9IGJveFNpemU7CisgICAgQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwg
eWVsbG93LCBDb2xvcjo6Y3lhbiwgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoYm94Q29sb3JzKSAvIHNpemVvZihib3hDb2xv
cnNbMF0pOyBpKyspIHsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoYm94TGVm
dCwgYm94VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEpLCBib3hDb2xvcnNbaV0pOworICAg
ICAgICBib3hMZWZ0ICs9IGJveFNpemUgKyAxOworICAgIH0KKyAgICBjb250ZXh0LnN0cm9rZVBh
dGgobV9wYXRoKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kcyA9
IGxyb3VuZChlbGFwc2VkVGltZSgpICogMTAwMCk7CisgICAgdW5zaWduZWQgc2Vjb25kcyA9IG1p
bGxpc2Vjb25kcyAvIDEwMDAgJSA2MDsKKyAgICB1bnNpZ25lZCBtaW51dGVzID0gc2Vjb25kcyAv
IDYwICUgNjA7CisgICAgdW5zaWduZWQgaG91cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKKworICAg
IEZsb2F0UG9pbnQgdGltZUxvY2F0aW9uKG1fc2l6ZS53aWR0aCgpICogLjA1LCBtX3NpemUuaGVp
Z2h0KCkgKiAuMTUpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Cisg
ICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKTsKKyAgICBTdHJpbmcg
c3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiUwMnU6JTAydTolMDJ1LiUwM3UiLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzICUgMTAwMCk7CisgICAgY29udGV4dC5kcmF3VGV4
dChtX3RpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9u
LCAwLCAtMSk7CisKKyAgICBzdHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiJTA2dSIsIG1fZnJhbWVO
dW1iZXIrKyk7CisgICAgdGltZUxvY2F0aW9uLm1vdmUoMCwgbV9iYXNlRm9udFNpemUpOworICAg
IGNvbnRleHQuZHJhd1RleHQobV90aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcp
KSksIHRpbWVMb2NhdGlvbiwgMCwgLTEpOworCisgICAgRmxvYXRQb2ludCBzdGF0c0xvY2F0aW9u
KG1fc2l6ZS53aWR0aCgpICogLjY1LCBtX3NpemUuaGVpZ2h0KCkgKiAuNzUpOworICAgIHN0cmlu
ZyA9IFN0cmluZzo6Zm9ybWF0KCJGcmFtZSByYXRlOiAldWZwcyIsIG1fZnJhbWVSYXRlKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmlu
ZykpKSwgc3RhdHNMb2NhdGlvbiwgMCwgLTEpOworCisgICAgc3RyaW5nID0gU3RyaW5nOjpmb3Jt
YXQoIlNpemU6ICV1IHggJXUiLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKyAg
ICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKKyAgICBjb250ZXh0LmRy
YXdUZXh0KG1fc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNM
b2NhdGlvbiwgMCwgLTEpOworCisgICAgY29uc3QgY2hhciogY2FtZXJhOworICAgIHN3aXRjaCAo
c3RhdGVzKCkuZmFjaW5nTW9kZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpVc2VyOgorICAgICAgICBjYW1lcmEgPSAiVXNlciBmYWNpbmciOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAg
ICAgICBjYW1lcmEgPSAiRW52aXJvbm1lbnQgZmFjaW5nIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgorICAgICAgICBjYW1lcmEgPSAi
TGVmdCBmYWNpbmciOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlJpZ2h0OgorICAgICAgICBjYW1lcmEgPSAiUmlnaHQgZmFjaW5nIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVbmtub3duOgor
ICAgICAgICBjYW1lcmEgPSAiVW5rbm93biI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBz
dHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiQ2FtZXJhOiAlcyIsIGNhbWVyYSk7CisgICAgc3RhdHNM
b2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CisgICAgY29udGV4dC5kcmF3VGV4dCht
X3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24s
IDAsIC0xKTsKKworICAgIEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24obV9zaXplLndpZHRoKCkg
KiAuNiwgbV9zaXplLmhlaWdodCgpICogLjYpOworICAgIHVuc2lnbmVkIGZyYW1lTW9kID0gbV9m
cmFtZU51bWJlciAlIDYwOworICAgIGlmIChmcmFtZU1vZCA8PSAxNSkgeworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcoIkJpcCIpKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX2JpcEJvcEZvbnQsIHJ1
biwgYmlwQm9wTG9jYXRpb24sIDAsIC0xKTsKKyAgICB9IGVsc2UgaWYgKGZyYW1lTW9kID4gMzAg
JiYgZnJhbWVNb2QgPD0gNDUpIHsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6
OndoaXRlKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldygiQm9wIikpOworICAgICAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fYmlwQm9wRm9udCwgcnVuLCBiaXBCb3BMb2NhdGlvbiwgMCwg
LTEpOworICAgIH0KK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVG
cmFtZSgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXIoKS0+
Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpOwor
ICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSwgQ29s
b3I6OmJsYWNrKTsKKworICAgIGRyYXdUZXh0KGNvbnRleHQpOworICAgIGRyYXdBbmltYXRpb24o
Y29udGV4dCk7CisgICAgZHJhd0JveGVzKGNvbnRleHQpOworCisgICAgdXBkYXRlUGxhdGZvcm1M
YXllcigpOworfQorCitJbWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltYWdl
QnVmZmVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShtX3NpemUsIFVuYWNjZWxlcmF0ZWQpOworICAgIGlmICghbV9pbWFnZUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCku
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uRGVmYXVsdCk7CisgICAg
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKworICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgIWltYWdlQnVmZmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKy8vICAgIGNvbnRleHQudHJh
bnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICBJbnRS
ZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKKworICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX2ltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLCByZWN0KTsKK30KKworUmVmUHRyPEltYWdlPiBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2UoKQoreworICAgIGlmICgh
aW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZV9oCisjZGVmaW5lIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKKworY2xhc3MgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UgeworcHVibGljOgorCisgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZSgpIHsgfQorCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICBj
b25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICB2b2lk
IHNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2Rl
KTsKKyAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCk7CisKK3Byb3RlY3RlZDoKKyAgICBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyB9CisKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQg
aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKKworICAgIHZvaWQgZHJhd0FuaW1h
dGlvbihHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4
dCYpOworICAgIHZvaWQgZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYpOworCisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBSZWZQdHI8SW1hZ2U+IGN1cnJlbnRGcmFtZUltYWdlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpOworCisgICAg
ZG91YmxlIGVsYXBzZWRUaW1lKCk7CisKKyAgICBmbG9hdCBtX2Jhc2VGb250U2l6ZSB7IDAgfTsK
KyAgICBGb250Q2FzY2FkZSBtX3RpbWVGb250OworCisgICAgZmxvYXQgbV9iaXBCb3BGb250U2l6
ZSB7IDAgfTsKKyAgICBGb250Q2FzY2FkZSBtX2JpcEJvcEZvbnQ7CisKKyAgICBmbG9hdCBtX3N0
YXRzRm9udFNpemUgeyAwIH07CisgICAgRm9udENhc2NhZGUgbV9zdGF0c0ZvbnQ7CisKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKKworICAg
IEludFNpemUgbV9zaXplOworICAgIFBhdGggbV9wYXRoOworICAgIERhc2hBcnJheSBtX2Rhc2hX
aWR0aHM7CisKKyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyBOQU4gfTsKKyAgICBkb3VibGUgbV9l
bGFwc2VkVGltZSB7IDAgfTsKKworICAgIHVuc2lnbmVkIG1fZnJhbWVSYXRlIHsgMzAgfTsKKyAg
ICB1bnNpZ25lZCBtX2ZyYW1lTnVtYmVyIHsgMCB9OworCisgICAgUnVuTG9vcDo6VGltZXI8TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U+IG1fdGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265085</attachid>
            <date>2015-11-09 13:02:00 -0800</date>
            <delta_ts>2015-11-09 13:20:07 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>mock_source_patch_8.txt</filename>
            <type>text/plain</type>
            <size>72256</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMS0wOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEFkZCBtb2NrIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzNDUzMzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBD
cmVhdGUgYmFzaWMgbW9jayBhdWRpbyBhbmQgdmlkZW8gcmVhbHRpbWUgbWVkaWEgc291cmNlIGNs
YXNzZXMgc28gd2UgY2FuIHRlc3QgTWVkaWFTdHJlYW0KKyAgICAgICAgQVBJIHdpdGhvdXQgcmVx
dWlyaW5nIHRlc3QgbWFjaGluZXMgdG8gaGF2ZSBhdWRpby92aWRlbyBpbnB1dCBoYXJkd2FyZS4g
Tm8gbmV3IHRlc3RzIGFkZGVkCisgICAgICAgIHlldCwgdGhvZSB3aWxsIGZvbGxvdy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHRoZXNlIGNoYW5nZXMgd2lsbCBhbGxvdyB1cyB0byB3cml0ZSBN
ZWRpYVN0cmVhbSB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UuY3BwLCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAsIGFuZCAK
KyAgICAgICAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKworICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOiBBZGQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlUHJldmlld0xheWVycyk6IERvbid0
IHNldCBhdXRvcmVzaXppbmdNYXNrLAorICAgICAgICAgIGl0IGlzbid0IG5lY2Vzc2FyeS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVmcmVzaENhcHR1cmVEZXZpY2VMaXN0KTogQVZDYXB0
dXJlRGV2aWNlIC0+IGdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkKKyAgICAgICAgKFdlYkNvcmU6
OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzb3VyY2VXaXRoVUlE
KTogRGl0dG8uCisKKyAgICAgICAgTWFjIGNsYXNzIGltcGxlbWVudHMgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6cGxhdGZvcm1MYXllciwgcmV0dXJucyBhIENBTGF5ZXIgd2hpY2ggdXNlcyB0aGUKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0IGFzIGNvbnRlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWM6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIpOgorCisgICAgICAgIE1v
Y2sgYXVkaW8gc291cmNlLiBEb2Vzbid0IHByb3ZpZGUgZGF0YSB5ZXQsIG9ubHkgcHJvdmlkZXMg
c3RhdGVzIGFuZCBjYXBhYmlsaXRpZXMuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UpOgorCisgICAgICAgIE1vY2sgc291cmNlIGJhc2UgY2xhc3MsIHNldHMgcGVyc2lz
dGVudCBJRCBhbmQgdXBkYXRlcyBzdGF0ZXMgYW5kIGNhcGFiaWxpdGllcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1ZGlvUGVyc2lzdGVudElE
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Q
ZXJzaXN0ZW50SUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6
Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6OnN0YXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tWaWRlb1NvdXJjZVBl
cnNpc3RlbnRJRCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
bW9ja1ZpZGVvU291cmNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjp+TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmN1cnJlbnRTdGF0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNvbnN0cmFpbnRzKToKKworICAgICAg
ICBVc2UgbmV3IG1vY2sgc291cmNlIGNsYXNzZXMuIENyZWF0ZSBhIG5ldyBzb3VyY2UgaW5zdGFu
Y2UgZm9yIGVhY2ggcmVxdWVzdCBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlCisgICAgICAgIHNhbWUg
c291cmNlcyBlYWNoIHRpbWUuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptb2NrU291cmNlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZWdpc3Rl
ck1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVk
aWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tT
b3VyY2U6Ok1vY2tTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZTo6fk1vY2tTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZTo6
Y2FwYWJpbGl0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2U6OnN0
YXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptb2NrQXVkaW9Tb3VyY2VJRCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptb2NrVmlkZW9Tb3VyY2VJRCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplTW9ja1NvdXJjZXMpOiBEZWxldGVkLgorCisgICAg
ICAgIE1vY2sgdmlkZW8gc291cmNlLiBHZW5lcmF0ZSBiaXAtYm9wIGluc3BpcmVkIGZyYW1lcyB3
aXRoIGJ1cm5lZCBpbiBzdGF0ZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZWxhcHNlZFRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnVwZGF0ZVN0
YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW5pdGlh
bGl6ZUNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0RmFjaW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlUGxhdGZv
cm1MYXllcik6CisKIDIwMTUtMTEtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KIAogICAgICAgICBKUyBCdWlsdC1pbnMgZnVuY3Rpb25zIHNob3VsZCBiZSBh
YmxlIHRvIGFzc2VydApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MjE1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzAy
LDcgKzIzMDIsMTAgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21vY2svRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svTWVkaWFDb25zdHJhaW50c01vY2su
Y3BwCisgICAgcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKyAgICBw
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAogICAgIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisgICAgcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5k
ZXJIYW5kbGVyTW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDE5MjE1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tYWMiCisgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbmV0d29yay9jb2NvYSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vbmV0d29yay9jZiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9tYWMi
CkBAIC00OTcsNiArNDk4LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQogICAgIHBsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KIAorICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQorCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTIx
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUsMTAgQEAKIAkJMDdEMDdCMTQxODM0MTU4ODAw
QUJERDNDIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDA3QjEzMTgzNDE1ODgwMEFCREQz
QyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTA3RDYzNzQw
MUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjEx
MzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3
RDYzNzQxMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNG
MUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsg
fTsKKwkJMDdENkE0RUYxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZB
NEVEMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdENkE0RjAxQkVDRjJEMjAwMTc0
MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRTFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9
OworCQkwN0Q2QTRGMzFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENkE0
RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwN0Q2QTRGNDFCRUQ1Rjg4MDAxNzQx
NDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEYyMUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07
CiAJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEQzVG
RDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi87IH07
CiAJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTcwNzE0
ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTM0Miw2ICszNDYsMTAgQEAK
IAkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFOUUxMkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5oICovOyB9OwogCQkwN0U5RTEzMDE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3RTlFMTJGMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwICovOyB9OwogCQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNF
QjUgLyogTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VEQzNFRDFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAgKi87IH07CisJCTA3RUU3NkVCMUJFOTZEQjAwMEY4OTEzMyAv
KiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07
CisJCTA3RUU3NkVDMUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUEx
QkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggKi87IHNldHRpbmdz
ID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDdFRTc2RUYxQkVBNjE5ODAwRjg5MTMzIC8q
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9
OworCQkwN0VFNzZGMDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VF
NzZFRTFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMDdGMEI5N0ExQUM1REIzMzAw
RTUzNUQ5IC8qIEFWS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0YwQjk3OTFBQzVEQjMzMDBFNTM1RDkgLyogQVZLaXRTUEkuaCAqLzsgfTsK
IAkJMDdGMEI5N0MxQUM1REI0NjAwRTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGMEI5N0IxQUM1REI0NjAw
RTUzNUQ5IC8qIEFWRm91bmRhdGlvblNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTc1ODYsNiArNzU5NCwxMCBAQAogCQkwN0QwN0IxMzE4MzQxNTg4MDBBQkREM0MgLyog
SlNSVENTZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNSVENTZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdENjM3M0YxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3RDZBNEVEMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3RDZBNEVFMUJFQ0Yy
RDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0Q2QTRGMTFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
N0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8q
IEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVC
MDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzU5Myw2ICs3NjA1LDEwIEBACiAJCTA3RTlFMTJEMThGNUUyNzYw
MDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZG
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTlFMTJGMThGNjJCMzcwMDExQTNB
NCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFREMzRUQxQUFDQjc1RDAwOTgz
RUI1IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3RUU3NkU5MUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
RUU3NkVBMUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RjBCOTc5MUFDNURCMzMwMEU1MzVEOSAvKiBBVktpdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBVktpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0YwQjk3QjFBQzVEQjQ2MDBFNTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0Y4NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjE3
LDYgKzE1MjMzLDggQEAKIAkJCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlk
ZW9DYXB0dXJlU291cmNlLmggKi8sCiAJCQkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLm1tICovLAorCQkJCTA3RUU3NkVEMUJFQTYxOTgwMEY4OTEzMyAv
KiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oICovLAorCQkJCTA3RUU3NkVFMUJFQTYxOTgw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSAqLywKIAkJCQk0QTBGRkFB
MzFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8s
CiAJCQkJNEEwRkZBQTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWMuaCAqLywKIAkJCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaCAqLywKQEAgLTE3MDc3LDYgKzE3MDk1LDEyIEBACiAJCQkJNTkz
MDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICov
LAogCQkJCTA3Mzc5NERGMTlFRTJEMUIwMEU1QTA0NSAvKiBNZWRpYUNvbnN0cmFpbnRzTW9jay5j
cHAgKi8sCiAJCQkJMDczNzk0RTAxOUVFMkQxQjAwRTVBMDQ1IC8qIE1lZGlhQ29uc3RyYWludHNN
b2NrLmggKi8sCisJCQkJMDdENkE0RjExQkVENUY4ODAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcCAqLywKKwkJCQkwN0Q2QTRGMjFCRUQ1Rjg4MDAxNzQxNDYgLyogTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQkwN0Q2QTRFRDFCRUNGMkQyMDAxNzQxNDYgLyog
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAorCQkJCTA3RDZBNEVFMUJFQ0YyRDIwMDE3
NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovLAorCQkJCTA3RUU3NkU5MUJFOTZE
QjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgKi8sCisJCQkJMDdFRTc2
RUExQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggKi8sCiAJCQkJ
NEEwRkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcCAqLywKIAkJCQk0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCAqLywKIAkJCQlBQUUyN0I3NDE2Q0JGQzBEMDA2MjMwNDMgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwICovLApAQCAtMjU1NTUsNyArMjU1NzksOSBA
QAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5
IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RDZBNEYw
MUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTA3RDZBNEY0MUJFRDVGODgwMDE3NDE0NiAvKiBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAw
MzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEy
NEQ3QTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNFQzMzN0FGMUE0NjA4NkQwMDlCODUyMyAvKiBHcmFwaGljc1NlcnZpY2VzU1BJ
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTU5LDYgKzI2NTg1LDcgQEAKIAkJCQk0OUQ1REMyQzBG
NDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4REFEMUFBQTMwMjIwMEUxQzgwMyAvKiBN
ZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdFRTc2RUYx
QkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzQTE3RDE2RTFDMDA0MjBBQTEgLyogTWVk
aWFDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTQxN0QxNEQxQzAwNDIw
QUExIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzE1LDYg
KzI3NzQyLDcgQEAKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8q
IFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUU3NkVDMUJFOTZE
QjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgyNEI0NjUwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ0OEIxQjdBMEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyQzNEQTRCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4OTY3LDYgKzI4OTk1LDcgQEAKIAkJCQk4NUFDQTk5RDBBOUI1
NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzM0ExNEFBMEI3
RDFEMDkwMEE1M0ZGRCAvKiBET01UZXh0RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxODg2
MDRCMzBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDdFRTc2RjAxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGQzJCMEIxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2Vu
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU0RENENjE4ODBGODY3MDAzRUVEQkIgLyog
RE9NVG91Y2gubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjU0RENEODE4ODBGODY3MDAzRUVEQkIg
LyogRE9NVG91Y2hFdmVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjk4MjIsNiArMjk4NTEsNyBA
QAogCQkJCTA3M0JFMzQwMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzNCRTM0ODE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNERDMEQzNzA5RkVE
MDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RDZBNEVGMUJF
Q0YyRDIwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0Q5QzI2NDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0MTE1QjcyMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNGMTIwNkIxQjhDMTA0NzAwRDc1RjYzIC8qIEpTTm9k
ZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDM3LDYgKzMwMDY3LDcgQEAK
IAkJCQlCMkZBM0RERTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvUmVsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREUwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1Bh
dHRlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NDJBNzk2MEFFNUM5NDIwMERG
NThERiAvKiBKU1NWR1BvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3RDZBNEYzMUJFRDVG
ODgwMDE3NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMkZBM0RFMjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQb2ludExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJGQTNERTUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9seWdvbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNERTcwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzAwNjYsNiArMzAw
OTcsNyBAQAogCQkJCUIyRkEzRTE0MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1VzZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNFMTYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
Vmlld0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzExOEZFRDQxNTY4NUNDNjAwMzBC
NzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdFRTc2RUIxQkU5
NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0ODUyMjdEMTE5MDE2MkMwMDZFREM3RiAvKiBKU1NWR1ZLZXJuRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MURDQjcwMTE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29t
QW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRTE4MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0JKHJldmlzaW9uIDE5MjE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIwLDEwICsxMjAsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogewogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9hZCglcCkiLCB0aGlzKTsKIAorICAg
IG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsKKyAgICBtX2ludHJpbnNpY1NpemUgPSBGbG9hdFNp
emUoKTsKKwogICAgIG1fbWVkaWFTdHJlYW1Qcml2YXRlID0gJnN0cmVhbTsKICAgICBtX21lZGlh
U3RyZWFtUHJpdmF0ZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgbV9wcmV2aWV3TGF5ZXIg
PSBudWxscHRyOwogICAgIG1fZW5kZWQgPSAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZSgp
OwogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKQEAgLTM1OCwxNiArMzU5LDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV92aWRlb0JhY2tncm91bmRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFs
bG9jXSBpbml0XSk7Ci0jaWZuZGVmIE5ERUJVRwogICAgIG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIu
Z2V0KCkubmFtZSA9IEAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHByZXZp
ZXcgYmFja2dyb3VuZCBsYXllciI7Ci0jZW5kaWYKIAogICAgIG1fcHJldmlld0xheWVyID0gbV9t
ZWRpYVN0cmVhbVByaXZhdGUtPnBsYXRmb3JtTGF5ZXIoKTsKICAgICBtX3ByZXZpZXdMYXllci5n
ZXQoKS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXplOwogICAgIG1fcHJldmlld0xh
eWVyLmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87Ci0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0
aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGU7Ci0jZW5kaWYKICAgICBpZiAoIW1fcGxh
eWluZykKICAgICAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuaGlkZGVuID0gdHJ1ZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDE5MjE1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIHZvaWQg
cmVmcmVzaENhcHR1cmVEZXZpY2VMaXN0KCkKIHsKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4m
IGRldmljZXMgPSBjYXB0dXJlRGV2aWNlTGlzdCgpOwogICAgIAotICAgIGZvciAoQVZDYXB0dXJl
RGV2aWNlVHlwZSAqZGV2aWNlIGluIFtBVkNhcHR1cmVEZXZpY2UgZGV2aWNlc10pIHsKKyAgICBm
b3IgKEFWQ2FwdHVyZURldmljZVR5cGUgKmRldmljZSBpbiBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xh
c3MoKSBkZXZpY2VzXSkgewogICAgICAgICBDYXB0dXJlRGV2aWNlIHNvdXJjZTsKIAogICAgICAg
ICBpZiAoIVtkZXZpY2UgaXNDb25uZWN0ZWRdKQpAQCAtMjU0LDcgKzI1NCw3IEBAIENhcHR1cmVE
ZXZpY2UqIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmIKICAgICAKICAgICBzaXplX3QgY291bnQg
PSBkZXZpY2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlVHlwZSAqZGV2aWNlID0gW0FWQ2FwdHVyZURldmlj
ZSBkZXZpY2VXaXRoVW5pcXVlSUQ6ZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRF07CisgICAg
ICAgIEFWQ2FwdHVyZURldmljZVR5cGUgKmRldmljZSA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFz
cygpIGRldmljZVdpdGhVbmlxdWVJRDpkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlEXTsKICAg
ICAgICAgQVNTRVJUKGRldmljZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZGV2aWNlICYmIGRl
dmljZVN1cHBvcnRzRmFjaW5nTW9kZShkZXZpY2UsIGZhY2luZ01vZGUpKQpAQCAtNDI4LDcgKzQy
OCw3IEBAIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBBVkNhcHR1cmVEZXYKICAgICAgICAg
aWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gJiYgY2FwdHVyZURldmljZS5t
X3ZpZGVvU291cmNlSWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgQVZDYXB0dXJlRGV2aWNlVHlwZSAqZGV2aWNlID0gW0FWQ2FwdHVyZURldmljZSBkZXZpY2VX
aXRoVW5pcXVlSUQ6Y2FwdHVyZURldmljZS5tX2NhcHR1cmVEZXZpY2VJRF07CisgICAgICAgIEFW
Q2FwdHVyZURldmljZVR5cGUgKmRldmljZSA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGRl
dmljZVdpdGhVbmlxdWVJRDpjYXB0dXJlRGV2aWNlLm1fY2FwdHVyZURldmljZUlEXTsKICAgICAg
ICAgQVNTRVJUKGRldmljZSk7CiAKICAgICAgICAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNl
PiBjYXB0dXJlU291cmNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwor
ICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjX2gKKyNkZWZp
bmUgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjIGZpbmFsIDogcHVibGljIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlIHsKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgfk1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOworICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKCk7
CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBtdXRh
YmxlIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3ByZXZpZXdJbWFnZTsKKyAgICBtdXRhYmxlIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ByZXZpZXdMYXllcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAv
LyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkltYWdlQnVm
ZmVyLmgiCisjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW1wb3J0ICJOb3RJbXBsZW1l
bnRlZC5oIgorI2ltcG9ydCAiUGxhdGZvcm1MYXllci5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0
IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpKTsKK30KKworTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWM6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKCkKKyAgICA6IE1vY2tSZWFs
dGltZVZpZGVvU291cmNlKCkKK3sKK30KKworUGxhdGZvcm1MYXllciogTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIGlmIChtX3ByZXZpZXdM
YXllcikKKyAgICAgICAgcmV0dXJuIG1fcHJldmlld0xheWVyLmdldCgpOworCisgICAgbV9wcmV2
aWV3TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcHJldmll
d0xheWVyLmdldCgpLm5hbWUgPSBAIk1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjIHByZXZpZXcg
bGF5ZXIiOworICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbnRlbnRzR3Jhdml0eSA9IGtDQUdy
YXZpdHlSZXNpemVBc3BlY3Q7CisgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQg
PSBDR1BvaW50WmVybzsKKyAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZSA9IFlFUzsKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIG1fcHJldmlld0xheWVy
LmdldCgpLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVy
SGVpZ2h0U2l6YWJsZTsKKyNlbmRpZgorCisgICAgdXBkYXRlUGxhdGZvcm1MYXllcigpOworCisg
ICAgcmV0dXJuIG1fcHJldmlld0xheWVyLmdldCgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cHJldmlld0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdp
bl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIGRvIHsKKyAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyKCktPmNvcHlJbWFnZSgpOworICAgICAg
ICBpZiAoIWltYWdlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbV9wcmV2aWV3SW1h
Z2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICBpZiAoIW1fcHJldmlld0ltYWdl
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29u
dGVudHMgPSAoTlNPYmplY3QqKShtX3ByZXZpZXdJbWFnZS5nZXQoKSk7CisgICAgfSB3aGlsZSAo
MCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJVVUlE
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkpOworfQorCitNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKQorICAgIDogTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbywgbW9ja0F1ZGlvU291cmNlTmFtZSgpKQoreworfQorCit2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjp1cGRhdGVTdGF0ZXMoKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKKyAgICBzdGF0ZXMtPnNldFNvdXJj
ZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CisgICAgc3RhdGVz
LT5zZXRWb2x1bWUoNTApOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0
aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFi
aWxpdGllcykKK3sKKyAgICBjYXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29u
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaAorI2RlZmluZSBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk1vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk1vY2tSZWFs
dGltZUF1ZGlvU291cmNlKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUt
MTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBpZDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjAtMmIxNS0xMWUzLTgy
MjQtMDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjptb2NrQXVkaW9Tb3VyY2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJNb2NrIGF1ZGlvIGRldmljZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJNb2NrIHZp
ZGVvIGRldmljZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJl
dHVybiBuYW1lOworfQorCitSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgaWQsIE1lZGlhQ29uc3Ry
YWludHMqKQoreworICAgIC8vIEZJWE1FOiB2YWxpZGF0ZSBjb25zdHJhaW50cy4KKworICAgIGlm
IChtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRy
YWNrU291cmNlSW5mbzo6Y3JlYXRlKG1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFj
a1NvdXJjZUluZm86OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKworICAgIGlmIChtb2Nr
VmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSA9PSBpZCkKKyAgICAgICAgcmV0dXJuIFRyYWNrU291
cmNlSW5mbzo6Y3JlYXRlKG1vY2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBUcmFja1NvdXJj
ZUluZm86OlZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKKyAgICAKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworI2lmIDAKKworI2VuZGlmCisKK01vY2tSZWFsdGltZU1lZGlhU291cmNlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoaWQsIHR5cGUsIG5hbWUpCit7CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW8pCisgICAgICAgIHNldFBlcnNpc3RlbnRJRChtb2NrQXVkaW9Tb3VyY2VQZXJz
aXN0ZW50SUQoKSk7CisgICAgZWxzZQorICAgICAgICBzZXRQZXJzaXN0ZW50SUQobW9ja1ZpZGVv
U291cmNlUGVyc2lzdGVudElEKCkpOworfQorCitSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCit7Cisg
ICAgaWYgKCFtX2NhcGFiaWxpdGllcykgeworICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgICAgICBtX2NhcGFiaWxp
dGllcy0+c2V0U291cmNlSWQobV9jdXJyZW50U3RhdGVzLnNvdXJjZUlkKCkpOworICAgICAgICBp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKCptX2NhcGFiaWxpdGllcy5nZXQoKSk7CisgICAgfQorICAg
IHJldHVybiBtX2NhcGFiaWxpdGllczsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlcyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRlcygpCit7CisgICAgbV9jdXJyZW50
U3RhdGVzLnNldFNvdXJjZUlkKGlkKCkpOworICAgIHVwZGF0ZVN0YXRlcygpOworCisgICAgcmV0
dXJuIG1fY3VycmVudFN0YXRlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZV9oCisjZGVmaW5lIE1vY2tSZWFsdGltZU1lZGlhU291cmNlX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBGbG9hdFJlY3Q7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUcmFja1NvdXJjZUlu
Zm87CisKK2NsYXNzIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVk
aWFTb3VyY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZU1lZGlhU291cmNl
KCkgeyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VQ
ZXJzaXN0ZW50SUQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9T
b3VyY2VOYW1lKCk7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9T
b3VyY2VQZXJzaXN0ZW50SUQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Nr
VmlkZW9Tb3VyY2VOYW1lKCk7CisKKyAgICBzdGF0aWMgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4g
dHJhY2tTb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIE1lZGlhQ29uc3RyYWludHMqKTsKKwor
cHJvdGVjdGVkOgorICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQs
IFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3Rh
dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9IDA7CisKKyAgICB2b2lkIHN0YXJ0UHJvZHVj
aW5nRGF0YSgpIG92ZXJyaWRlIHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOyB9CisgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlIHsgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxz
ZTsgfQorCisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcygpIG92ZXJyaWRlOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMm
IHN0YXRlcygpIG92ZXJyaWRlOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogY3Vy
cmVudFN0YXRlcygpIHsgcmV0dXJuICZtX2N1cnJlbnRTdGF0ZXM7IH0KKyAgICBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cygpIHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKworICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMgbV9jdXJyZW50U3RhdGVzOworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9j
b25zdHJhaW50czsKKyAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNlbmRpZiAvLyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMTkyMTU1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDkgKzI2LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0jaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIK
QEAgLTM2LDg2ICszNiwxNiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5o
IgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBNb2NrU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Ugewot
cHVibGljOgotICAgIE1vY2tTb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpCi0gICAgICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZShpZCwgdHlwZSwgbmFtZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB+TW9ja1NvdXJjZSgpIHsgfQotCi0gICAgdmlydHVhbCBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgeyByZXR1cm4gbV9jYXBh
YmlsaXRpZXM7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMm
IHN0YXRlcygpIHsgcmV0dXJuIG1fY3VycmVudFN0YXRlczsgfQotCi0gICAgUmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVzOwotfTsKLSAgICAKLXR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxNb2NrU291cmNlPj4gTW9ja1NvdXJjZU1hcDsKLQotc3RhdGlj
IE1vY2tTb3VyY2VNYXAmIG1vY2tTb3VyY2VNYXAoKQotewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChNb2NrU291cmNlTWFwLCBtb2NrU291cmNlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIG1vY2tTb3VyY2VNYXA7Ci19Ci0KLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tB
dWRpb1NvdXJjZUlEKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBpZCgiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1zdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VJRCgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAy
MDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biBpZDsKLX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCkKLXsKLSAgICBS
ZWZQdHI8TW9ja1NvdXJjZT4gbW9ja1NvdXJjZTEgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZSht
b2NrVmlkZW9Tb3VyY2VJRCgpLCAiTW9jayB2aWRlbyBkZXZpY2UiLCBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlbykpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgIG1vY2tTb3VyY2UxLT5tX2Nh
cGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOwotICAgIG1vY2tTb3Vy
Y2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpDYW1lcmEpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNl
VHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKLSAgICBtb2NrU291
cmNlMS0+bV9jYXBhYmlsaXRpZXMtPmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6VXNlcik7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKLSAgICBtb2NrU291
cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFdpZHRoUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSgzMjBVTCwgMTkyMFVMLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1f
Y2FwYWJpbGl0aWVzLT5zZXRIZWlnaHRSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKLSAgICBtb2NrU291cmNlMS0+bV9jYXBhYmls
aXRpZXMtPnNldEZyYW1lUmF0ZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFu
Z2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVz
LT5zZXRBc3BlY3RSYXRpb1JhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2Uo
NCAvIDMuMGYsIDE2IC8gOS4wZiwgdHJ1ZSkpOwotICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxp
dGllcy0+c2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgx
MFVMLCA5MFVMLCB0cnVlKSk7Ci0KLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNl
dFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAgICBtb2Nr
U291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldFNvdXJjZUlkKG1vY2tTb3VyY2UxLT5pZCgpKTsK
LSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRl
cy5zZXRXaWR0aCgxOTIwKTsKLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEhl
aWdodCgxMDgwKTsKLSAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNldEZyYW1lUmF0
ZSgzMCk7Ci0gICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zZXRBc3BlY3RSYXRpbygx
NiAvIDkuMGYpOwotICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc2V0Vm9sdW1lKDcw
KTsKLSAgICBTdHJpbmcgbW9ja1NvdXJjZTFpZCA9IG1vY2tTb3VyY2UxLT5pZCgpOwotICAgIG1v
Y2tTb3VyY2VNYXAoKS5hZGQobW9ja1NvdXJjZTFpZCwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsK
LQotICAgIFJlZlB0cjxNb2NrU291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2Nr
U291cmNlKG1vY2tBdWRpb1NvdXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvKSk7Ci0gICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzID0g
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgbW9ja1NvdXJj
ZTItPm1fY2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VJZChtb2NrU291cmNlMi0+aWQoKSk7Ci0gICAg
bW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1bWVSYW5nZShSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKLQotICAgIG1vY2tTb3Vy
Y2UyLT5tX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpNaWNyb3Bob25lKTsKLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnNldFNv
dXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKLSAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3Rh
dGVzLnNldFZvbHVtZSg1MCk7Ci0gICAgU3RyaW5nIG1vY2tTb3VyY2UyaWQgPSBtb2NrU291cmNl
Mi0+aWQoKTsKLSAgICBtb2NrU291cmNlTWFwKCkuYWRkKG1vY2tTb3VyY2UyaWQsIG1vY2tTb3Vy
Y2UyLnJlbGVhc2UoKSk7Ci19Ci0KIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnJlZ2lzdGVyTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKQogewogICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciwgY2Vu
dGVyLCAoKSk7CkBAIC0xMjMsNyArNTMsNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpyZWdpCiAgICAgaWYgKCFyZWdpc3RlcmVkKSB7CiAgICAgICAgIHJlZ2lzdGVyZWQg
PSB0cnVlOwogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRTaGFyZWRTdHJl
YW1DZW50ZXIoJmNlbnRlcik7Ci0gICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOwogICAg
IH0KIH0KIApAQCAtMTMzLDcgKzYyLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6dmFsaQogCiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVk
aW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKLSAgICBNb2NrU291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAg
ICBpZiAoYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0g
TWVkaWFDb25zdHJhaW50c01vY2s6OnZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMp
OwpAQCAtMTQyLDExICs3MCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnZhbGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7Ci0gICAg
ICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgYXVkaW9Tb3VyY2Ut
PnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJj
ZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMTU3LDExICs4
MSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbWFwLmZpbmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAh
PSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRl
b1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAg
ICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRl
b1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMTc2LDcgKzk2LDYgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYQogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJjZXM7Ci0gICAgTW9ja1NvdXJjZU1hcCYgbWFw
ID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAg
ICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IE1lZGlhQ29uc3RyYWludHNNb2NrOjp2ZXJpZnlDb25z
dHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsKQEAgLTE4NSwxMSArMTA0LDcgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZCht
b2NrQXVkaW9Tb3VyY2VJRCgpKTsKLSAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0K
LSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZh
bHVlOwotICAgICAgICBhdWRpb1NvdXJjZS0+cmVzZXQoKTsKKyAgICAgICAgUmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNy
ZWF0ZSgpOwogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2Uo
KSk7CiAgICAgfQogCkBAIC0yMDAsMTEgKzExNSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmNyZWEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja1ZpZGVvU291cmNl
SUQoKSk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAg
dmlkZW9Tb3VyY2UtPnJlc2V0KCk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKICAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KICAg
ICAKQEAgLTIxNiwyMiArMTI3LDEzIEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OmNyZWEKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4gdmlkZW9Tb3VyY2VzOwotICAgIE1vY2tTb3VyY2VNYXAmIG1hcCA9IG1vY2tT
b3VyY2VNYXAoKTsKLQotICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJ
RCgpKTsKLSAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7CiAKLSAgICAgICAgUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwotICAgICAgICBh
dWRpb1NvdXJjZS0+cmVzZXQoKTsKKyAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYm
IGF1ZGlvRGV2aWNlSUQgPT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJj
ZVBlcnNpc3RlbnRJRCgpKSB7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBh
dWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KLSAgICBp
ZiAoIXZpZGVvRGV2aWNlSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja1ZpZGVvU291cmNlSUQoKSk7Ci0gICAgICAgIEFTU0VS
VChpdCAhPSBtYXAuZW5kKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1ZTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7
CisgICAgaWYgKCF2aWRlb0RldmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewor
ICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQo
dmlkZW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAKQEAgLTI0MywyNSArMTQ1LDE5IEBAIGJv
b2wgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE0KICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiByZXF1ZXN0Q2xpZW50ID0gcHJwQ2xpZW50
OwogICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2VzOwogCi0gICAgTW9ja1NvdXJjZU1h
cCYgbWFwID0gbW9ja1NvdXJjZU1hcCgpOwotICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1hcC5lbmQoKTsKLSAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBNb2NrU291cmNlKiBzb3VyY2Ug
PSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja0F1
ZGlvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKKyAgICBzb3VyY2VzLmFwcGVuZChN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgbnVsbHB0cikpOwogCi0g
ICAgICAgIHNvdXJjZXMuYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQo
KSwgc291cmNlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBUcmFja1Nv
dXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkp
KTsKLSAgICB9CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCwgc291
cmNlc10geworICAgICAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNl
cyk7CisgICAgfSk7CiAKLSAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291
cmNlcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYg
VUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikKK1JlZlB0
cjxUcmFja1NvdXJjZUluZm8+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzb3VyY2VX
aXRoVUlEKGNvbnN0IFN0cmluZyYgVUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsKLSAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1v
Y2tTb3VyY2VNYXAoKSkgewotICAgICAgICBpZiAoc291cmNlLnZhbHVlLT5pZCgpID09IFVJRCkK
LSAgICAgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZShzb3VyY2UudmFsdWUt
PmlkKCksIHNvdXJjZS52YWx1ZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
ID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJj
ZS52YWx1ZS0+bmFtZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQoVUlELCBjb25zdHJh
aW50cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAg
ICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVk
ZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKElPUykKK1JlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpKTsKK30KKyNlbmRpZgorCitNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoKQorICAgIDogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlh
U291cmNlOjpWaWRlbywgbW9ja1ZpZGVvU291cmNlTmFtZSgpKQorICAgICwgbV90aW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFt
ZSkKK3sKKyAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKKyAgICBt
X2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOworICAgIG1fZGFzaFdpZHRocy51bmNoZWNr
ZWRBcHBlbmQoNik7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSgpOworICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICBzZXRTaXplKElu
dFNpemUoNjQwLCA0ODApKTsKKworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CisgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzKGxyb3VuZCgxMDAwIC8gbV9mcmFtZVJhdGUpKSk7Cit9CisKK3ZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgbV90aW1lci5zdG9wKCk7
CisgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1f
c3RhcnRUaW1lOworICAgIG1fc3RhcnRUaW1lID0gTkFOOworfQorCitkb3VibGUgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmVsYXBzZWRUaW1lKCkKK3sKKyAgICBpZiAoc3RkOjppc25hbihtX3N0
YXJ0VGltZSkpCisgICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOworCisgICAgcmV0dXJuIG1f
ZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGlt
ZSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnVwZGF0ZVN0YXRlcygpCit7
CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygp
OworCisgICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlVzZXIpOworICAgIHN0YXRlcy0+c2V0RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKKyAgICBzdGF0
ZXMtPnNldFdpZHRoKG1fc2l6ZS53aWR0aCgpKTsKKyAgICBzdGF0ZXMtPnNldEhlaWdodChtX3Np
emUuaGVpZ2h0KCkpOworICAgIHN0YXRlcy0+c2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KG1fc2l6ZS53aWR0aCgpKSAvIG1fc2l6ZS5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQoreworICAgIGNhcGFiaWxpdGllcy5hZGRT
b3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7CisgICAgY2FwYWJp
bGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcik7Cisg
ICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
RW52aXJvbm1lbnQpOworICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOworICAgIGNhcGFi
aWxpdGllcy5zZXRIZWlnaHRSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlUmFu
Z2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxNS4wZiwgNjAuMGYsIHRydWUp
KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW9SYW5nZShSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKK30KKwordm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7CisKKyAgICBpZiAoc3RhdGVzLT5m
YWNpbmdNb2RlKCkgPT0gbW9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGVzLT5zZXRG
YWNpbmdNb2RlKG1vZGUpOworCisgICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXRGcmFtZVJhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBp
ZiAobV9mcmFtZVJhdGUgPT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFtZVJh
dGUgPSByYXRlOworICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIu
c3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQoMTAwMCAvIG1f
ZnJhbWVSYXRlKSkpOworCisgICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAg
aWYgKHNpemUgPT0gbV9zaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NpemUgPSBzaXpl
OworCisgICAgbV9iYXNlRm9udFNpemUgPSBtX3NpemUuaGVpZ2h0KCkgKiAuMDg7CisgICAgRm9u
dENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247CisgICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiQ291cmllciIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZp
ZWRTaXplKG1fYmFzZUZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKG1fYmFzZUZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRX
ZWlnaHQ1MDApOworCisgICAgbV90aW1lRm9udCA9IEZvbnRDYXNjYWRlKGZvbnREZXNjcmlwdGlv
biwgMCwgMCk7CisgICAgbV90aW1lRm9udC51cGRhdGUobnVsbHB0cik7CisKKyAgICBtX2JpcEJv
cEZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAyLjU7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dFNwZWNpZmllZFNpemUobV9iaXBCb3BGb250U2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dENvbXB1dGVkU2l6ZShtX2JpcEJvcEZvbnRTaXplKTsKKyAgICBtX2JpcEJvcEZvbnQgPSBGb250
Q2FzY2FkZShmb250RGVzY3JpcHRpb24sIDAsIDApOworICAgIG1fYmlwQm9wRm9udC51cGRhdGUo
bnVsbHB0cik7CisKKyAgICBtX3N0YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41Owor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fc3RhdHNGb250U2l6ZSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShtX3N0YXRzRm9udFNpemUpOworICAg
IG1fc3RhdHNGb250ID0gRm9udENhc2NhZGUoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsKKyAgICBt
X3N0YXRzRm9udC51cGRhdGUobnVsbHB0cik7CisKKyAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0
cjsKKyAgICB1cGRhdGVQbGF0Zm9ybUxheWVyKCk7CisKKyAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGZsb2F0IHJhZGl1cyA9IG1fc2l6ZS53aWR0aCgp
ICogLjA5OworICAgIEZsb2F0UG9pbnQgbG9jYXRpb24obV9zaXplLndpZHRoKCkgKiAuOCwgbV9z
aXplLmhlaWdodCgpICogLjMpOworCisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgbV9wYXRoLm1v
dmVUbyhsb2NhdGlvbik7CisgICAgbV9wYXRoLmFkZEFyYyhsb2NhdGlvbiwgcmFkaXVzLCAwLCAy
ICogcGlGbG9hdCwgZmFsc2UpOworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOworICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUo
UlVMRV9OT05aRVJPKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CisKKyAgICBmbG9h
dCBlbmRBbmdsZSA9IHBpRmxvYXQgKiAoKChmbW9kKG1fZnJhbWVOdW1iZXIsIG1fZnJhbWVSYXRl
KSArIDAuNSkgKiAoMi4wIC8gbV9mcmFtZVJhdGUpKSArIDEpOworICAgIG1fcGF0aC5jbGVhcigp
OworICAgIG1fcGF0aC5tb3ZlVG8obG9jYXRpb24pOworICAgIG1fcGF0aC5hZGRBcmMobG9jYXRp
b24sIHJhZGl1cywgMS41ICogcGlGbG9hdCwgZW5kQW5nbGUsIGZhbHNlKTsKKyAgICBtX3BhdGgu
Y2xvc2VTdWJwYXRoKCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXkpOwor
ICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKKyAgICBjb250ZXh0LmZpbGxQ
YXRoKG1fcGF0aCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hl
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBt
YWdlbnRhID0gMHhmZmZmMDBmZjsKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4
ZmZmZmZmMDA7CisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBibHVlID0gMHhmZjAwMDBmZjsKKyAg
ICBzdGF0aWMgY29uc3QgUkdCQTMyIHJlZCA9IDB4ZmZmZjAwMDA7CisgICAgc3RhdGljIGNvbnN0
IFJHQkEzMiBncmVlbiA9IDB4ZmYwMDgwMDA7CisKKyAgICBmbG9hdCBib3hTaXplID0gbV9zaXpl
LndpZHRoKCkgKiAuMDM1OworICAgIGZsb2F0IGJveFRvcCA9IG1fc2l6ZS5oZWlnaHQoKSAqIC42
OworCisgICAgbV9wYXRoLmNsZWFyKCk7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCgyLCAyLCBt
X3NpemUud2lkdGgoKSAtIDMsIG1fc2l6ZS5oZWlnaHQoKSAtIDMpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVz
cygzKTsKKyAgICBjb250ZXh0LnNldExpbmVEYXNoKG1fZGFzaFdpZHRocywgMCk7CisgICAgbV9w
YXRoLmFkZFJlY3QoZnJhbWVSZWN0KTsKKyAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAg
Y29udGV4dC5zdHJva2VQYXRoKG1fcGF0aCk7CisKKyAgICBjb250ZXh0LnNldExpbmVEYXNoKERh
c2hBcnJheSgpLCAwKTsKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBtX3BhdGgubW92ZVRvKEZs
b2F0UG9pbnQoMCwgYm94VG9wICsgYm94U2l6ZSkpOworICAgIG1fcGF0aC5hZGRMaW5lVG8oRmxv
YXRQb2ludChtX3NpemUud2lkdGgoKSwgYm94VG9wICsgYm94U2l6ZSkpOworICAgIG1fcGF0aC5j
bG9zZVN1YnBhdGgoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQ
YXRoKG1fcGF0aCk7CisKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBm
bG9hdCBib3hMZWZ0ID0gYm94U2l6ZTsKKyAgICBtX3BhdGguY2xlYXIoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYm94U2l6ZSAvIDQ7IGkrKykgeworICAgICAgICBtX3BhdGgubW92
ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIDQgKiBpLCBib3hUb3ApKTsKKyAgICAgICAgbV9wYXRo
LmFkZExpbmVUbyhGbG9hdFBvaW50KGJveExlZnQgKyA0ICogaSwgYm94VG9wICsgYm94U2l6ZSkp
OworICAgIH0KKyAgICBib3hMZWZ0ICs9IGJveFNpemUgKyAyOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBib3hTaXplIC8gNDsgaSsrKSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxv
YXRQb2ludChib3hMZWZ0LCBib3hUb3AgKyA0ICogaSkpOworICAgICAgICBtX3BhdGguYWRkTGlu
ZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIGJveFNpemUgLSAxLCBib3hUb3AgKyA0ICogaSkpOwor
ICAgIH0KKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygzKTsKKyAgICBib3hMZWZ0ICs9
IGJveFNpemUgKyAyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3hTaXplIC8gODsg
aSsrKSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChib3hMZWZ0ICsgOCAqIGks
IGJveFRvcCkpOworICAgICAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYm94TGVmdCAr
IDggKiBpLCBib3hUb3AgKyBib3hTaXplIC0gMSkpOworICAgIH0KKyAgICBib3hMZWZ0ICs9IGJv
eFNpemUgKyAyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3hTaXplIC8gODsgaSsr
KSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChib3hMZWZ0LCBib3hUb3AgKyA4
ICogaSkpOworICAgICAgICBtX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoYm94TGVmdCArIGJv
eFNpemUgLSAxLCBib3hUb3AgKyA4ICogaSkpOworICAgIH0KKworICAgIGJveFRvcCArPSBib3hT
aXplICsgMjsKKyAgICBib3hMZWZ0ID0gYm94U2l6ZTsKKyAgICBDb2xvciBib3hDb2xvcnNbXSA9
IHsgQ29sb3I6OndoaXRlLCB5ZWxsb3csIENvbG9yOjpjeWFuLCBncmVlbiwgbWFnZW50YSwgcmVk
LCBibHVlIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihib3hDb2xvcnMp
IC8gc2l6ZW9mKGJveENvbG9yc1swXSk7IGkrKykgeworICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJv
eENvbG9yc1tpXSk7CisgICAgICAgIGJveExlZnQgKz0gYm94U2l6ZSArIDE7CisgICAgfQorICAg
IGNvbnRleHQuc3Ryb2tlUGF0aChtX3BhdGgpOworfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgdW5zaWdu
ZWQgbWlsbGlzZWNvbmRzID0gbHJvdW5kKGVsYXBzZWRUaW1lKCkgKiAxMDAwKTsKKyAgICB1bnNp
Z25lZCBzZWNvbmRzID0gbWlsbGlzZWNvbmRzIC8gMTAwMCAlIDYwOworICAgIHVuc2lnbmVkIG1p
bnV0ZXMgPSBzZWNvbmRzIC8gNjAgJSA2MDsKKyAgICB1bnNpZ25lZCBob3VycyA9IG1pbnV0ZXMg
LyA2MCAlIDYwOworCisgICAgRmxvYXRQb2ludCB0aW1lTG9jYXRpb24obV9zaXplLndpZHRoKCkg
KiAuMDUsIG1fc2l6ZS5oZWlnaHQoKSAqIC4xNSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZp
bGwpOworICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmZvcm1hdCgiJTAydTolMDJ1OiUwMnUu
JTAzdSIsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMgJSAxMDAwKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fdGltZUZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5n
KSkpLCB0aW1lTG9jYXRpb24sIDAsIC0xKTsKKworICAgIHN0cmluZyA9IFN0cmluZzo6Zm9ybWF0
KCIlMDZ1IiwgbV9mcmFtZU51bWJlcisrKTsKKyAgICB0aW1lTG9jYXRpb24ubW92ZSgwLCBtX2Jh
c2VGb250U2l6ZSk7CisgICAgY29udGV4dC5kcmF3VGV4dChtX3RpbWVGb250LCBUZXh0UnVuKChT
dHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9uLCAwLCAtMSk7CisKKyAgICBGbG9hdFBv
aW50IHN0YXRzTG9jYXRpb24obV9zaXplLndpZHRoKCkgKiAuNjUsIG1fc2l6ZS5oZWlnaHQoKSAq
IC43NSk7CisgICAgc3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIkZyYW1lIHJhdGU6ICV1ZnBzIiwg
bV9mcmFtZVJhdGUpOworICAgIGNvbnRleHQuZHJhd1RleHQobV9zdGF0c0ZvbnQsIFRleHRSdW4o
KFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uLCAwLCAtMSk7CisKKyAgICBzdHJp
bmcgPSBTdHJpbmc6OmZvcm1hdCgiU2l6ZTogJXUgeCAldSIsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCkpOworICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9udFNpemUp
OworICAgIGNvbnRleHQuZHJhd1RleHQobV9zdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXco
c3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uLCAwLCAtMSk7CisKKyAgICBjb25zdCBjaGFyKiBjYW1l
cmE7CisgICAgc3dpdGNoIChzdGF0ZXMoKS5mYWNpbmdNb2RlKCkpIHsKKyAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXI6CisgICAgICAgIGNhbWVyYSA9ICJVc2VyIGZhY2lu
ZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
RW52aXJvbm1lbnQ6CisgICAgICAgIGNhbWVyYSA9ICJFbnZpcm9ubWVudCBmYWNpbmciOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkxlZnQ6Cisg
ICAgICAgIGNhbWVyYSA9ICJMZWZ0IGZhY2luZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6UmlnaHQ6CisgICAgICAgIGNhbWVyYSA9ICJSaWdo
dCBmYWNpbmciOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OlVua25vd246CisgICAgICAgIGNhbWVyYSA9ICJVbmtub3duIjsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHN0cmluZyA9IFN0cmluZzo6Zm9ybWF0KCJDYW1lcmE6ICVzIiwgY2Ft
ZXJhKTsKKyAgICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKKyAgICBj
b250ZXh0LmRyYXdUZXh0KG1fc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykp
KSwgc3RhdHNMb2NhdGlvbiwgMCwgLTEpOworCisgICAgRmxvYXRQb2ludCBiaXBCb3BMb2NhdGlv
bihtX3NpemUud2lkdGgoKSAqIC42LCBtX3NpemUuaGVpZ2h0KCkgKiAuNik7CisgICAgdW5zaWdu
ZWQgZnJhbWVNb2QgPSBtX2ZyYW1lTnVtYmVyICUgNjA7CisgICAgaWYgKGZyYW1lTW9kIDw9IDE1
KSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpncmF5KTsKKyAgICAgICAg
VGV4dFJ1biBydW4oU3RyaW5nVmlldygiQmlwIikpOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0
KG1fYmlwQm9wRm9udCwgcnVuLCBiaXBCb3BMb2NhdGlvbiwgMCwgLTEpOworICAgIH0gZWxzZSBp
ZiAoZnJhbWVNb2QgPiAzMCAmJiBmcmFtZU1vZCA8PSA0NSkgeworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOworICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3
KCJCb3AiKSk7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQobV9iaXBCb3BGb250LCBydW4sIGJp
cEJvcExvY2F0aW9uLCAwLCAtMSk7CisgICAgfQorfQorCit2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQg
PSBpbWFnZUJ1ZmZlcigpLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworCisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBv
aW50KCksIG1fc2l6ZSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBtX3NpemUpLCBDb2xvcjo6YmxhY2spOworCisgICAgZHJhd1RleHQoY29udGV4dCk7Cisg
ICAgZHJhd0FuaW1hdGlvbihjb250ZXh0KTsKKyAgICBkcmF3Qm94ZXMoY29udGV4dCk7CisKKyAg
ICB1cGRhdGVQbGF0Zm9ybUxheWVyKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAoreworICAgIGlmIChtX2ltYWdlQnVmZmVy
KQorICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKworICAgIG1faW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fc2l6ZSwgVW5hY2NlbGVyYXRlZCk7CisgICAgaWYg
KCFtX2ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1faW1hZ2VC
dWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25EZWZhdWx0KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tu
ZXNzKDEpOworCisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmIChjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwor
Ly8gICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQo
KSk7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25Mb3cpOworICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOworCisgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1f
aW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSksIHJlY3QpOworfQor
CitSZWZQdHI8SW1hZ2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjdXJyZW50RnJhbWVJbWFn
ZSgpCit7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
X2gKKyNkZWZpbmUgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0Owor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSA6
IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMg
UmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwg
fk1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkgeyB9CisKKyAgICB2b2lkIHNldFNpemUoY29uc3Qg
SW50U2l6ZSYpOworICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KKworICAgIHZvaWQgc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
OjpWaWRlb0ZhY2luZ01vZGUpOworICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0KTsKKworcHJv
dGVjdGVkOgorICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlKCk7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IH0KKworICAgIEltYWdlQnVmZmVyKiBpbWFn
ZUJ1ZmZlcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBkcmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0
Jik7CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJlZlB0cjxJbWFnZT4gY3VycmVudEZyYW1lSW1hZ2Uo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBnZW5lcmF0
ZUZyYW1lKCk7CisKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUoKTsKKworICAgIGZsb2F0IG1fYmFz
ZUZvbnRTaXplIHsgMCB9OworICAgIEZvbnRDYXNjYWRlIG1fdGltZUZvbnQ7CisKKyAgICBmbG9h
dCBtX2JpcEJvcEZvbnRTaXplIHsgMCB9OworICAgIEZvbnRDYXNjYWRlIG1fYmlwQm9wRm9udDsK
KworICAgIGZsb2F0IG1fc3RhdHNGb250U2l6ZSB7IDAgfTsKKyAgICBGb250Q2FzY2FkZSBtX3N0
YXRzRm9udDsKKworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2lt
YWdlQnVmZmVyOworCisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgUGF0aCBtX3BhdGg7CisgICAg
RGFzaEFycmF5IG1fZGFzaFdpZHRoczsKKworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IE5BTiB9
OworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lIHsgMCB9OworCisgICAgdW5zaWduZWQgbV9mcmFt
ZVJhdGUgeyAzMCB9OworICAgIHVuc2lnbmVkIG1fZnJhbWVOdW1iZXIgeyAwIH07CisKKyAgICBS
dW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gbV90aW1lcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNlbmRpZiAvLyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>