<?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>227807</bug_id>
          
          <creation_ts>2021-07-08 11:55:47 -0700</creation_ts>
          <short_desc>SVGImageForContainer reports true for is&lt;SVGImage&gt;() but it doesn&apos;t inherit from SVGImage</short_desc>
          <delta_ts>2021-07-09 13:06:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775745</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-08 11:55:47 -0700</bug_when>
    <thetext>SVGImageForContainer reports true for is&lt;SVGImage&gt;() but it doesn&apos;t inherit from SVGImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775746</commentid>
    <comment_count>1</comment_count>
      <attachid>433151</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-08 11:58:37 -0700</bug_when>
    <thetext>Created attachment 433151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775749</commentid>
    <comment_count>2</comment_count>
      <attachid>433151</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-08 12:04:19 -0700</bug_when>
    <thetext>Comment on attachment 433151
Patch

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

&gt; Source/WebCore/platform/graphics/Image.h:100
&gt; +    virtual bool actsLikeSVGImage() const { return false; }

This can be just

bool actsLikeSVGImage() const { return isSVGImage() || isSVGImageForContainer(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775753</commentid>
    <comment_count>3</comment_count>
      <attachid>433153</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-08 12:15:13 -0700</bug_when>
    <thetext>Created attachment 433153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775776</commentid>
    <comment_count>4</comment_count>
      <attachid>433153</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-08 13:35:29 -0700</bug_when>
    <thetext>Comment on attachment 433153
Patch

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

&gt; Source/WebCore/platform/graphics/Image.h:100
&gt; +    bool actsLikeSVGImage() const { return isSVGImage() || isSVGImageForContainer(); }

This name does not seem like what the return value represents. Can&apos;t we choose a name which says &quot;is the image to be drawn at the end an SVGImage&quot;? Maybe isUnderlyingSVGImage(), isDrawingSVGImage() or something similar?

&gt; Source/WebCore/platform/graphics/ImageObserver.h:30
&gt; +#include &lt;wtf/URL.h&gt;
&gt; +#include &lt;wtf/text/WTFString.h&gt;

There is no obvious reason for including these headers here especially URL.h includes WTFString.h

&gt; Tools/ChangeLog:10
&gt; +        * TestWebKitAPI/Tests/WebCore/SVGImageCasts.cpp: Added.
&gt; +        (TestWebKitAPI::TEST):

I do not see what mistakes this test will prevent in the future. I can add a new superclass of Image which returns true for isSVGImage() or change an existing Image type to true for isSVGImage() and nothing will be caught.

&gt; Tools/TestWebKitAPI/Tests/WebCore/SVGImageCasts.cpp:35
&gt; +using namespace WebCore;
&gt; +
&gt; +namespace TestWebKitAPI {

I think we usually put the using statement inside the namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776055</commentid>
    <comment_count>5</comment_count>
      <attachid>433153</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-09 12:51:47 -0700</bug_when>
    <thetext>Comment on attachment 433153
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/Image.h:100
&gt;&gt; +    bool actsLikeSVGImage() const { return isSVGImage() || isSVGImageForContainer(); }
&gt; 
&gt; This name does not seem like what the return value represents. Can&apos;t we choose a name which says &quot;is the image to be drawn at the end an SVGImage&quot;? Maybe isUnderlyingSVGImage(), isDrawingSVGImage() or something similar?

Makes sense. I&apos;ll do &quot;drawsSVGImage().&quot;

&gt;&gt; Source/WebCore/platform/graphics/ImageObserver.h:30
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; There is no obvious reason for including these headers here especially URL.h includes WTFString.h

It&apos;s needed for the TestWebKitAPI test file which includes &lt;WebCore/ImageObserver.h&gt; as the first thing it includes. This file uses URL.h.

&gt;&gt; Tools/ChangeLog:10
&gt;&gt; +        (TestWebKitAPI::TEST):
&gt; 
&gt; I do not see what mistakes this test will prevent in the future. I can add a new superclass of Image which returns true for isSVGImage() or change an existing Image type to true for isSVGImage() and nothing will be caught.

The test catches what the ChangeLog says:

if (is&lt;SVGImage&gt;(image))
            downcast&lt;SVGImage&gt;(image).doSomething();

It tests this by making sure that is&lt;SVGImage&gt;() returns false for SVGImageForContainers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776058</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-09 13:05:48 -0700</bug_when>
    <thetext>Committed r279793 (239560@main): &lt;https://commits.webkit.org/239560@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776060</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-09 13:06:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80390790&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433151</attachid>
            <date>2021-07-08 11:58:37 -0700</date>
            <delta_ts>2021-07-08 12:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227807-20210708115837.patch</filename>
            <type>text/plain</type>
            <size>26760</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMDBhOTE4YzZkZTU3
Nzc3MTExYmYxNmI3YzlhMjczNDAxNjExOC4uZDY5ZDAxYWE3N2YwNmEzODQ2NjNjM2U4Y2Y3NTJk
NDc5OTdjZmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2VG
b3JDb250YWluZXIgcmVwb3J0cyB0cnVlIGZvciBpczxTVkdJbWFnZT4oKSBidXQgaXQgZG9lc24n
dCBpbmhlcml0IGZyb20gU1ZHSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzgwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEl0J3MgdG9vIGVhc3kgdG8gd3JpdGUgY29kZSBsaWtlOgorICAgICAg
ICBpZiAoaXM8U1ZHSW1hZ2U+KGltYWdlKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0ltYWdl
PihpbWFnZSkuZG9Tb21ldGhpbmcoKTsKKworICAgICAgICBUZXN0OiBTVkdJbWFnZUNhc3RzLlNW
R0ltYWdlRm9yQ29udGFpbmVySXNOb3RTVkdJbWFnZQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmVmZmVjdGl2ZUltYWdlRGV2aWNlUGl4ZWxSYXRpbyBjb25zdCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBl
cik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpoYXNTVkdJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4dEZvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDcm9zc2ZhZGVTdWJpbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjppc1NW
R0ltYWdlRm9yQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjphY3Rz
TGlrZVNWR0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9i
c2VydmVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpTVkdJbWFnZUZvckNvbnRhaW5lcik6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIwMjEtMDctMDggIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXSBkZXJpdmVC
aXRzKCkgZmFpbHMgaWYgbGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDggZm9yIEVDREggYWxn
b3JpdGhtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDQwMDE4MGY3OTIwNTk3NjljMjUwNDc2ZTBiMWU1ZGExNjRlNjIzMi4uZWYw
MDNkNGFiOGRmMDIzMGIyNjA1NGU1ZTRmNjk5ZGRlOTQ3M2E3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc3LDcgKzI3Nyw3
IEBACiAJCTA4RjBCRkM2MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQzExMjU1QzUz
QzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi87IH07CiAJCTA4RjJGMDBBMTIxM0U2MTcw
MERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNG
OUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJ
bWFnZUZvckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDhGODU5RDMxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVy
LmggKi87IH07CisJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRh
aW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhG
ODU5RDMxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEFGREFDM0QxMEY1NDQ4
QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQUZEQUMzQzEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmll
d0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwQjkwNTYxQTBGMjU3OEJGMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYxNjBG
MjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMEI5MDU2MUIwRjI1NzhCRjAwOTVGRjZBIC8q
IFRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCOTA1NjE3MEYyNTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3OTIs
NyArMzc5Miw3IEBACiAJCUIyMjM2MjI5MEMzQUYwNEEwMDA4Q0E5QiAvKiBKU1NWR1RleHRQYXRo
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMzYyMjcwQzNBRjA0QTAwMDhDQTlCIC8qIEpTU1ZHVGV4dFBhdGhFbGVtZW50LmggKi87IH07
CiAJCUIyMzU0MEYzMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMzU0MEYxMEQwMDc4MkUw
MDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjU1OTk4NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJ
bWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1
NTk4RUIwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ZFSW1hZ2UuaCAqLzsgfTsKLQkJQjI1NTk5QTQw
RDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTkwQzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHSW1hZ2Uu
aCAqLzsgfTsKKwkJQjI1NTk5QTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTkwQzBEMDBEOEI5
MDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCMjU1OTlBNTBEMDBEOEJBMDBCQjgyNUMgLyogRW1wdHlDbGllbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTkw
RDBEMDBEOEI5MDBCQjgyNUMgLyogRW1wdHlDbGllbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NjUwQjA1MzgxNDAwMkNFNjRGIC8q
IFBERkRvY3VtZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1
NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKaW5kZXggOGYyNzdlNDdhZDU4NjA5OTAxYjZmNjdkM2E5ZTBjYzQzNjMyMDg1Ni4u
OTgyMDlhYmNmNTQxYWU1ZTFhMzY2MDJiNjk1YmY5Y2VmMmEyOWE2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0zMjQ5LDcgKzMyNDksNyBAQCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaAogICAg
IEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgIGlmICghaXM8U1ZHSW1h
Z2U+KGltYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGRvd25jYXN0PFNWR0ltYWdlPigqaW1hZ2UpLmZyYW1lVmlldygpOwog
ICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdkMTJkOWJlNWE0NmYxMDE5YTE1MTNj
MjkwMWZjNzg4NWY1M2QyMzMuLmJkNmY0YjI0YzYzNjljZDA4NDFlNTZlOWU5NWU3MTc3ZGUyNTY3
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNTE1LDcg
KzUxNSw3IEBAIGZsb2F0IEhUTUxJbWFnZUVsZW1lbnQ6OmVmZmVjdGl2ZUltYWdlRGV2aWNlUGl4
ZWxSYXRpbygpIGNvbnN0CiAKICAgICBhdXRvKiBpbWFnZSA9IG1faW1hZ2VMb2FkZXItPmltYWdl
KCktPmltYWdlKCk7CiAKLSAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmFjdHNMaWtlU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
IDEuMGY7CiAKICAgICByZXR1cm4gbV9pbWFnZURldmljZVBpeGVsUmF0aW87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCmluZGV4IDVhNDM4YmJhODhjMjMyNTRiM2ZjNzI2ZGUyNTljN2E1NjYzZTc3OTYu
LmFiODNmZjM2YTYzMWViZjE1OWQwOWQ2NTZkNmU4ODQ5YzY3OGNkYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBDYQog
CiAgICAgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZS0+aW1hZ2VPYnNlcnZlcigpOwog
Ci0gICAgaWYgKGltYWdlLT5pc1NWR0ltYWdlKCkpIHsKKyAgICBpZiAoaW1hZ2UtPmFjdHNMaWtl
U1ZHSW1hZ2UoKSkgewogICAgICAgICBpbWFnZS0+c2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsK
ICAgICAgICAgaW1hZ2UtPnNldENvbnRhaW5lclNpemUoaW1hZ2VSZWN0LnNpemUoKSk7CiAgICAg
fQpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICBlbHNl
CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogCi0gICAgaWYgKGltYWdlLT5p
c1NWR0ltYWdlKCkpCisgICAgaWYgKGltYWdlLT5hY3RzTGlrZVNWR0ltYWdlKCkpCiAgICAgICAg
IGltYWdlLT5zZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIAogICAgIHJldHVybiB7IH07CkBA
IC0xOTc3LDcgKzE5NzcsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIC8vICAgICAg
dGhlIG9yaWdpbiBpcyBjbGVhbi4KICAgICAvLyAgIDIpIER5bmFtaWNhbGx5IHZlcmlmeSB0aGUg
b3JpZ2luIGNoZWNrcyBhdCBkcmF3IHRpbWUsIGFuZCBkaXJ0eSB0aGUgY2FudmFzIGFjY29yZGlu
Z2x5LgogICAgIC8vIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIHRhaW50IHRoZSBvcmlnaW4gZm9y
IGFsbCBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgZm9yIG5vdy4KLSAgICBpZiAoY2Fj
aGVkSW1hZ2UtPmltYWdlKCktPmlzU1ZHSW1hZ2UoKSkKKyAgICBpZiAoY2FjaGVkSW1hZ2UtPmlt
YWdlKCktPmFjdHNMaWtlU1ZHSW1hZ2UoKSkKICAgICAgICAgb3JpZ2luQ2xlYW4gPSBmYWxzZTsK
IAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VF
bGVtZW50LnJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA4N2IxNGM0N2QzNmRiYjdm
NzI0OWU2ODQ1YTU0NTI2MWZlMTMwZjI2Li40MzU3NGQ4ZmJhNzBhYWQzODhmMzBlMjVjMmYyOTBl
ZWNiMDFhNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDgzNyw3ICs0ODM3LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VTb3VyY2VIZWxw
ZXIoVGV4SW1hZ2VGdW5jdGkKICAgICAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikKICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgaWYgKGltYWdlRm9yUmVuZGVyLT5pc1NWR0ltYWdl
KCkgfHwgaW1hZ2VGb3JSZW5kZXItPm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSB8fCBpbWFnZUZvclJlbmRlci0+aGFzRGVuc2l0eUNvcnJlY3RlZFNpemUoKSkKKyAgICAg
ICAgaWYgKGltYWdlRm9yUmVuZGVyLT5hY3RzTGlrZVNWR0ltYWdlKCkgfHwgaW1hZ2VGb3JSZW5k
ZXItPm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSB8fCBpbWFnZUZvclJl
bmRlci0+aGFzRGVuc2l0eUNvcnJlY3RlZFNpemUoKSkKICAgICAgICAgICAgIGltYWdlRm9yUmVu
ZGVyID0gZHJhd0ltYWdlSW50b0J1ZmZlcigqaW1hZ2VGb3JSZW5kZXIsIGltYWdlLT53aWR0aCgp
LCBpbWFnZS0+aGVpZ2h0KCksIDEsIGZ1bmN0aW9uTmFtZSk7CiAKICAgICAgICAgaWYgKCFpbWFn
ZUZvclJlbmRlciB8fCAhdmFsaWRhdGVUZXhGdW5jKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25UeXBl
LCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
aW1hZ2VGb3JSZW5kZXItPndpZHRoKCksIGltYWdlRm9yUmVuZGVyLT5oZWlnaHQoKSwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDA1MWY3MmJjNWVj
MDUzNGQ5MzY0ZDVmZGI0MGJlYjc1M2Q4ZjAzOTEuLjQzN2U5ZjE4MDk2MjA0NTVlNWFjNDVhMmE2
YjlkZDg0ODE2NzM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGlmICghbV9pbWFnZSkK
ICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAgICBpZiAobV9pbWFnZS0+
aXNTVkdJbWFnZSgpKSB7CisgICAgaWYgKG1faW1hZ2UtPmFjdHNMaWtlU1ZHSW1hZ2UoKSkgewog
ICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX3N2Z0ltYWdlQ2FjaGUtPmltYWdlRm9yUmVuZGVyZXIo
cmVuZGVyZXIpOwogICAgICAgICBpZiAoaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybiBpbWFnZTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBJbWFnZSogQ2FjaGVk
SW1hZ2U6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAog
Ym9vbCBDYWNoZWRJbWFnZTo6aGFzU1ZHSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmlzU1ZHSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9pbWFnZSAmJiBtX2lt
YWdlLT5hY3RzTGlrZVNWR0ltYWdlKCk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnNldENvbnRh
aW5lckNvbnRleHRGb3JDbGllbnQoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQmIGNsaWVudCwgY29u
c3QgTGF5b3V0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3Qg
VVJMJiBpbWFnZVVSTCkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRD
b250YWluZXJDb250ZXh0Rm9yQ2xpZW50KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50JiBjbGllbnQs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1faW1hZ2UtPmlzU1ZHSW1hZ2Uo
KSkgeworICAgIGlmICghbV9pbWFnZS0+YWN0c0xpa2VTVkdJbWFnZSgpKSB7CiAgICAgICAgIG1f
aW1hZ2UtPnNldENvbnRhaW5lclNpemUoY29udGFpbmVyU2l6ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yOTcsNyArMjk3LDcgQEAgRmxvYXRTaXplIENhY2hlZEltYWdlOjppbWFnZVNp
emVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgU2l6ZVQKICAgICBp
ZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoaXM8U1ZHSW1hZ2U+
KCptX2ltYWdlKSAmJiBzaXplVHlwZSA9PSBVc2VkU2l6ZSkKKyAgICBpZiAobV9pbWFnZS0+YWN0
c0xpa2VTVkdJbWFnZSgpICYmIHNpemVUeXBlID09IFVzZWRTaXplKQogICAgICAgICByZXR1cm4g
bV9zdmdJbWFnZUNhY2hlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAKICAgICBy
ZXR1cm4gbV9pbWFnZS0+c2l6ZShyZW5kZXJlciA/IHJlbmRlcmVyLT5pbWFnZU9yaWVudGF0aW9u
KCkgOiBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGViNjMzNWQxNDQ1Y2IzNmUwMTViMTAyMDZlMjlkNzdi
YWEyYzQ0MjMuLjUyNWY0NGVjNzY3YmVhZThkMDJmMzg3YjM0MjA4MWY5YzlkMTZjMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0Ny
b3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBD
b21wb3MKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogCiAgICAgLy8g
U1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhhdmUgdG8g
dXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQgYSBnaXZl
biBvcGFjaXR5LgotICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS5pc1NWR0lt
YWdlKCk7CisgICAgYm9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9IGltYWdlLmFjdHNMaWtlU1ZH
SW1hZ2UoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDZhYjQzMjczMjZkYTA4MmQ4MTFlZTQxMjhmY2Q2NGFiMjU2OWU2OWEuLjcyZmE0ODViNGY4ODdh
NDMyM2IyNGU3MmU2NjU0ZjQxYjQxODU5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTM3Nyw2ICszNzcsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJbWFnZSYgaW1hZ2UpCiAgICAgICAgIHRzIDw8ICJn
cmFkaWVudCBpbWFnZSI7CiAgICAgZWxzZSBpZiAoaW1hZ2UuaXNTVkdJbWFnZSgpKQogICAgICAg
ICB0cyA8PCAic3ZnIGltYWdlIjsKKyAgICBlbHNlIGlmIChpbWFnZS5pc1NWR0ltYWdlRm9yQ29u
dGFpbmVyKCkpCisgICAgICAgIHRzIDw8ICJzdmcgaW1hZ2UgZm9yIGNvbnRhaW5lciI7CiAgICAg
ZWxzZSBpZiAoaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHRzIDw8ICJwZGYg
aW1hZ2UiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0
YzdmNGE2NzM5MDdiMWM0ZWZiNzRjZjEyMzBhNDU2MDYxMzNkMWI2Li5iY2YwNzUxMjM2YTc1ZjVk
ZDM2YzQxMDllZmE5MTIzYTM2ZjQxYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKQEAgLTkzLDkgKzkzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUZvckNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUERGRG9jdW1lbnRJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgYWN0c0xpa2VTVkdJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGVk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtMTg4LDcgKzE5MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lk
IGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKaW5kZXggOGIwODllNTk0
YzFhZmNjZWU0ZmZiNTA3MTE1OTc4NzQ2OTVjYjJkZS4uMWFmZWQ4OGMyNDhhMTNlMWYyNWMwOTFj
NWMwNjM2Njg4MTI2ZmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJJbWFnZVR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZDBmZjA1MzA4YjljMWQ0NDNhMmFjYjBlNzYw
N2ZjNmViYWIxYTNkMC4uMTRkZTIyMGEyMTE1MjliMWYxNGYzZGVjNjYyZmMxODVhZTExMmNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
cHVibGljOgogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgY29uc3Q7CiAKICAgICBib29sIGlz
U1ZHSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhY3RzTGlr
ZVNWR0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0U2l6ZSBz
aXplKEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faW50cmluc2ljU2l6ZTsgfQogCiAgICAgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwpAQCAtOTIsNyArOTMsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAotICAgIGV4cGxpY2l0IFNW
R0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTVkdJ
bWFnZShJbWFnZU9ic2VydmVyJik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdBc05hdGl2ZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBm
bG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCAwMDI4ZDc2ZGY1OTNlMzE5NGI0
ZTkzN2UyMDRiOWNiNzM3OGQyN2UyLi4xZDQxODc2NDEyNWRlZTk4MjA2ZmZiOWFiM2MwZjM3Zjkw
MThmYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAKQEAgLTI3LDYgKzI3LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorCitTVkdJbWFnZUZvckNvbnRhaW5lcjo6U1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1h
Z2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5l
clpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQorICAgIDogbV9pbWFnZShpbWFn
ZSkKKyAgICAsIG1fY29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKQorICAgICwgbV9jb250YWlu
ZXJab29tKGNvbnRhaW5lclpvb20pCisgICAgLCBtX2luaXRpYWxGcmFnbWVudFVSTChpbml0aWFs
RnJhZ21lbnRVUkwpCit7Cit9CisKIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6
ZShJbWFnZU9yaWVudGF0aW9uKSBjb25zdAogewogICAgIEZsb2F0U2l6ZSBzY2FsZWRDb250YWlu
ZXJTaXplKG1fY29udGFpbmVyU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDAxYjJmMWJhZmE5NTA1M2M1OTIyNTcz
NzBmMmI4ZjJmNTc5NGE0YWIuLjhmMmZjNTk4NjQyOGYzOTgwMjU1OTkwNGJmNGI3ZGYwNGY0ZmNl
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5oCkBAIC00MSw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHSW1hZ2VGb3JDb250YWluZXIoaW1hZ2UsIGNvbnRhaW5lclNpemUsIGNvbnRh
aW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCkpOwogICAgIH0KIAotICAgIGJvb2wgaXNTVkdJ
bWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU1ZHSW1hZ2VG
b3JDb250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhY3Rz
TGlrZVNWR0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgRmxvYXRT
aXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkg
Y29uc3QgZmluYWw7CiAKQEAgLTYzLDEzICs2NCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogPSBudWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBTVkdJbWFnZUZvckNvbnRhaW5l
cihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
Y29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCi0gICAgICAgIDog
bV9pbWFnZShpbWFnZSkKLSAgICAgICAgLCBtX2NvbnRhaW5lclNpemUoY29udGFpbmVyU2l6ZSkK
LSAgICAgICAgLCBtX2NvbnRhaW5lclpvb20oY29udGFpbmVyWm9vbSkKLSAgICAgICAgLCBtX2lu
aXRpYWxGcmFnbWVudFVSTChpbml0aWFsRnJhZ21lbnRVUkwpCi0gICAgewotICAgIH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFnZSosIGNvbnN0IEZsb2F0
U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0
aWFsRnJhZ21lbnRVUkwpOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRl
c3Ryb3lBbGwqLyA9IHRydWUpIGZpbmFsIHsgfQogCkBAIC04MCwzICs3NSw1IEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
SU1BR0UoU1ZHSW1hZ2VGb3JDb250YWluZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZhNTUwMjNhMzg1ZmZhOTM2YWJmMzEzMjQwOGU5NjVh
ZDY4ZmVjMS4uYzJjNDg1NjNmNTdhODIxZmMzN2I2NDA1ZGQxMGZmOWI3NmVmYmI1MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTA3LTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIgcmVwb3J0cyB0cnVlIGZvciBpczxTVkdJ
bWFnZT4oKSBidXQgaXQgZG9lc24ndCBpbmhlcml0IGZyb20gU1ZHSW1hZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzgwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA3LTA3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogQWRkIGVycm9yIGxvZ2dpbmcgZm9yIENyeXB0
b0tpdCBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNjOWJmODk2NTFmOTdh
Mzg3YjUwMTEwOTdlNGExOTRhMGMzMmRhYzUuLmE0MGI5NjUxOWQxYzljYmQ3ZDVkZTNlZjA5YTYw
ZmFhZTRhNTE0YWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNiArMTE5LDcgQEAK
IAkJMUM4MTgwMjcyNUZCMDlFMjAwNjA4QjNFIC8qIEZvbnRSZWdpc3RyeVNhbmRib3hDaGVjay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODE4MDI2
MjVGQjA5RTIwMDYwOEIzRSAvKiBGb250UmVnaXN0cnlTYW5kYm94Q2hlY2subW0gKi87IH07CiAJ
CTFDOEZBNTNBMjY4NUE2RDUwMEI3RTQ5RSAvKiBTdHJpbmdXaWR0aC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEZBNTM5MjY4NUE2RDUwMEI3RTQ5
RSAvKiBTdHJpbmdXaWR0aC5tbSAqLzsgfTsKIAkJMUM5MDQyMEMyMzI2RTAzQzAwQkVGOTFFIC8q
IFNlbGVjdGlvbkJ5V29yZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDOTA0MjBCMjMyNkUwM0MwMEJFRjkxRSAvKiBTZWxlY3Rpb25CeVdvcmQubW0g
Ki87IH07CisJCTFDOUREOTIzMjY5NzY1NUIwMDI3NERCMiAvKiBTVkdJbWFnZUNhc3RzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOUREOTIyMjY5
NzY1NUIwMDI3NERCMiAvKiBTVkdJbWFnZUNhc3RzLmNwcCAqLzsgfTsKIAkJMUM5RUI4NDExRTM4
MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzlFQjg0MDFFMzgwREExMDA1QzY0NDIg
LyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMUNBQ0FEQTEyMzA2MjBBRTAw
MDdENTRDIC8qIFdLV2ViVmlld09wYXF1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUNBREEwMjMwNjIwQUQwMDA3RDU0QyAvKiBXS1dlYlZpZXdP
cGFxdWUubW0gKi87IH07CiAJCTFDQjJGMjdDMjRGODgzNzkwMDBBNUJDMSAvKiBPcnRob2dvbmFs
Rmxvd0F2YWlsYWJsZVNpemUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0IyRjI3QjI0Rjg4Mzc5MDAwQTVCQzEgLyogT3J0aG9nb25hbEZsb3dBdmFp
bGFibGVTaXplLm1tICovOyB9OwpAQCAtMTg3OSw2ICsxODgwLDcgQEAKIAkJMUM4MTgwMjYyNUZC
MDlFMjAwNjA4QjNFIC8qIEZvbnRSZWdpc3RyeVNhbmRib3hDaGVjay5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZvbnRSZWdpc3RyeVNhbmRib3hDaGVjay5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RkE1MzkyNjg1QTZENTAwQjdFNDlFIC8qIFN0cmluZ1dpZHRoLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nV2lkdGgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDOTA0MjBCMjMyNkUwM0MwMEJFRjkxRSAvKiBTZWxlY3Rpb25CeVdvcmQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWxlY3Rpb25CeVdvcmQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOUREOTIyMjY5NzY1NUIwMDI3NERC
MiAvKiBTVkdJbWFnZUNhc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlQ2FzdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlFQjg0MDFFMzgwREExMDA1QzY0
NDIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQUNBREEwMjMwNjIwQUQwMDA3RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdPcGFx
dWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjJGMjdCMjRGODgzNzkwMDBB
NUJDMSAvKiBPcnRob2dvbmFsRmxvd0F2YWlsYWJsZVNpemUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBPcnRob2dvbmFsRmxvd0F2YWlsYWJsZVNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNzYyLDYgKzM3NjQsNyBAQAogCQkJCUVDQTY4MENEMUU2OENDMDkwMDczMUQy
MCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2
IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovLAogCQkJCTQxRTY3QTg0MjVEMTZFODMwMDdC
MEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCAqLywKKwkJCQkxQzlERDkyMjI2OTc2
NTVCMDAyNzREQjIgLyogU1ZHSW1hZ2VDYXN0cy5jcHAgKi8sCiAJCQkJOTNBMjU4OTgxRjkyRkYx
NTAwM0U1MTBDIC8qIFRleHRDb2RlYy5jcHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYy
N0ZCIC8qIFRpbWVSYW5nZXMuY3BwICovLAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIxNjlBNCAv
KiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCkBAIC01NTA5LDcgKzU1MTIsNiBAQAogCQkJ
CUNEQ0Y3OEE4MjQ0QTMyRjcwMDQ4MDMxMSAvKiBGdWxsc2NyZWVuQWxlcnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCMjEzQkQyNEVGNTIyODAwRkRFMzAxIC8qIEZ1bGxz
Y3JlZW5Gb2N1cy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUY0NEE3RDIwMjY4RDVDNjkwMEI0OUJC
OCAvKiBJbWFnZUFuYWx5c2lzVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU3N0QyNTI1
QTY1OTFDMDBENDExNUUgLyogRnVsbHNjcmVlblBvaW50ZXJMZWF2ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEREM3QzY5MjVGRkY2RDAwMDIyNDI3OCAvKiBGdWxsc2NyZWVuUmVtb3ZlTm9kZUJl
Zm9yZUVudGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRkNDNDUxQTlGRjQ1MzAwQTdCNjkx
IC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01NTQz
LDYgKzU1NDUsNyBAQAogCQkJCTUxMDQ3Nzc4MUQyOTkyM0IwMDk3NDdFQiAvKiBJREJEZWxldGVS
ZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMTBGQ0ZBMUUwMUNEQjgwMDZGOEQwQiAv
KiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCQ0JDODMyM0ND
NkYyQTAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJRjQ0QTdEMjAyNjhENUM2OTAwQjQ5QkI4IC8qIEltYWdlQW5hbHlzaXNUZXN0
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdCMTg0MTdDMjY3Mzg2MDIwMEVENEY4RCAvKiBJbWFn
ZUJ1ZmZlclRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE5QUY3MjY0OUJCREQwMEU3
Q0IxNiAvKiBJbW1lZGlhdGVBY3Rpb25UZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUVF
RjZEMjQwNzM1OUQwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC01Nzg3LDYgKzU3OTAsNyBAQAogCQkJCTQxRTY3QTg1MjVEMTZFODMwMDdCMEE0QyAv
KiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQy
MUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1MUVCMTI2NzI0Q0I4NzUzMDAwQ0IwMzAgLyogU3VuTGlnaHRBcHBsaWNhdGlvbkdl
bmVyaWNORVMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzlERDkyMzI2OTc2NTVCMDAyNzREQjIg
LyogU1ZHSW1hZ2VDYXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDMzQTM5NjIwODA0NDE0
MDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VBODFBNDExQTE5MDA0NDdDNEMgLyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9y
V2luZG93Lm0gaW4gU291cmNlcyAqLywKIAkJCQlFM0VGQjAyRjI1NTA2NTAzMDAzQzJGOTYgLyog
U3lzdGVtQmVlcC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZjM2ZjU2ODBk
NmUzYmEwMTVlZDNkNTg3YmMyYjdkMjAyZDQ3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VPYnNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1ZHSW1hZ2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitjbGFzcyBUZXN0SW1hZ2VPYnNlcnZlciA6IHB1YmxpYyBJbWFnZU9ic2VydmVyIHsKK3B1
YmxpYzoKKyAgICBVUkwgc291cmNlVXJsKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBVUkwoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBs
b25nIGxvbmcpIGZpbmFsCisgICAgeworICAgIH0KKworICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJ
bWFnZSYpIGZpbmFsCisgICAgeworICAgIH0KKworICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWRE
YXRhKGNvbnN0IEltYWdlJikgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5p
bWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGlu
Z1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbAorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0cikgZmluYWwKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsCisgICAgeworICAgIH0KK307CisK
K1RFU1QoU1ZHSW1hZ2VDYXN0cywgU1ZHSW1hZ2VGb3JDb250YWluZXJJc05vdFNWR0ltYWdlKQor
eworICAgIFRlc3RJbWFnZU9ic2VydmVyIGltYWdlT2JzZXJ2ZXI7CisgICAgYXV0byBzdmdJbWFn
ZSA9IFNWR0ltYWdlOjpjcmVhdGUoaW1hZ2VPYnNlcnZlcik7CisgICAgSW1hZ2UmIHN2Z0ltYWdl
QmFzZSA9IHN2Z0ltYWdlLmdldCgpOworICAgIEVYUEVDVF9UUlVFKGlzPFNWR0ltYWdlPihzdmdJ
bWFnZUJhc2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXM8U1ZHSW1hZ2VGb3JDb250YWluZXI+KHN2
Z0ltYWdlQmFzZSkpOworICAgIGF1dG8gc3ZnSW1hZ2VGb3JDb250YWluZXIgPSBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6Y3JlYXRlKHN2Z0ltYWdlLnB0cigpLCB7IH0sIDAsIFVSTCgpKTsKKyAgICBJ
bWFnZSYgc3ZnSW1hZ2VGb3JDb250YWluZXJCYXNlID0gc3ZnSW1hZ2VGb3JDb250YWluZXIuZ2V0
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGlzPFNWR0ltYWdlPihzdmdJbWFnZUZvckNvbnRhaW5lckJh
c2UpKTsKKyAgICBFWFBFQ1RfVFJVRShpczxTVkdJbWFnZUZvckNvbnRhaW5lcj4oc3ZnSW1hZ2VG
b3JDb250YWluZXJCYXNlKSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433153</attachid>
            <date>2021-07-08 12:15:13 -0700</date>
            <delta_ts>2021-07-08 13:35:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227807-20210708121512.patch</filename>
            <type>text/plain</type>
            <size>26451</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiOTMyZGJiYzI2MDMz
ZjM1ODlhNTYyMWViNzVlY2JkOTQ5NjgyZC4uMWMzZTc5OTQ1MzZmMWUwNmM4NjA1NmM2YzUxNTI3
MDliMjdjOWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA3LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2VG
b3JDb250YWluZXIgcmVwb3J0cyB0cnVlIGZvciBpczxTVkdJbWFnZT4oKSBidXQgaXQgZG9lc24n
dCBpbmhlcml0IGZyb20gU1ZHSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzgwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEl0J3MgdG9vIGVhc3kgdG8gd3JpdGUgY29kZSBsaWtlOgorICAgICAg
ICBpZiAoaXM8U1ZHSW1hZ2U+KGltYWdlKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0ltYWdl
PihpbWFnZSkuZG9Tb21ldGhpbmcoKTsKKworICAgICAgICBUZXN0OiBTVkdJbWFnZUNhc3RzLlNW
R0ltYWdlRm9yQ29udGFpbmVySXNOb3RTVkdJbWFnZQorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmVmZmVjdGl2ZUltYWdlRGV2aWNlUGl4ZWxSYXRpbyBjb25zdCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBl
cik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpoYXNTVkdJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4dEZvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDcm9zc2ZhZGVTdWJpbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjppc1NW
R0ltYWdlRm9yQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjphY3Rz
TGlrZVNWR0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9i
c2VydmVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpTVkdJbWFnZUZvckNvbnRhaW5lcik6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIwMjEtMDctMDggIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nl
c3NdIERyYXcgUERGcyB1c2luZyBhbiBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXIgd2hlbiB1c2lu
ZyB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA0NDAwMTgwZjc5MjA1OTc2OWMyNTA0NzZlMGIxZTVkYTE2
NGU2MjMyLi5lZjAwM2Q0YWI4ZGYwMjMwYjI2MDU0ZTVlNGY2OTlkZGU5NDczYTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NzcsNyArMjc3LDcgQEAKIAkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRy
aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYw
QkZDMTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLzsgfTsKIAkJMDhGMkYw
MEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0
OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdl
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDhGODU5RDUxNDYzRjlDRDAwNjdE
OTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuaCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0lt
YWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZE
QUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAv
KiBQbHVnaW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBCOTA1NjFBMEYyNTc4QkYwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCOTA1NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQjkwNTYxQjBGMjU3OEJG
MDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFi
bGVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMzc5Miw3ICszNzkyLDcgQEAKIAkJQjIyMzYyMjkwQzNBRjA0QTAwMDhDQTlCIC8qIEpT
U1ZHVGV4dFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIzNjIyNzBDM0FGMDRBMDAwOENBOUIgLyogSlNTVkdUZXh0UGF0aEVsZW1l
bnQuaCAqLzsgfTsKIAkJQjIzNTQwRjMwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzNTQw
RjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyNTU5OTg1MEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdGRUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OThFQjBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHRkVJbWFnZS5oICovOyB9Owot
CQlCMjU1OTlBNDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAv
KiBTVkdJbWFnZS5oICovOyB9OworCQlCMjU1OTlBNDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5
OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyNTU5OUE1MEQwMEQ4QkEwMEJCODI1QyAvKiBF
bXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5OTBEMEQwMEQ4QjkwMEJCODI1QyAvKiBFbXB0eUNsaWVudHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1MzU2NTBCMDUzODE0
MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCMjc1MzU2NzBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTM5MEIwNTM4MTQwMDJDRTY0RiAv
KiBDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA4ZjI3N2U0N2FkNTg2MDk5MDFiNmY2N2QzYTllMGNj
NDM2MzIwODU2Li45ODIwOWFiY2Y1NDFhZTVlMWEzNjYwMmI2OTViZjljZWYyYTI5YTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKQEAgLTMyNDksNyArMzI0OSw3IEBAIEFjY2Vzc2liaWxpdHlTVkdS
b290KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudChDcmVh
dGlvbkNoCiAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgaWYg
KCFpczxTVkdJbWFnZT4oaW1hZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwog
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG93bmNhc3Q8U1ZHSW1hZ2U+KCppbWFnZSkuZnJh
bWVWaWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggN2QxMmQ5YmU1YTQ2
ZjEwMTlhMTUxM2MyOTAxZmM3ODg1ZjUzZDIzMy4uYmQ2ZjRiMjRjNjM2OWNkMDg0MWU1NmU5ZTk1
ZTcxNzdkZTI1NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CkBAIC01MTUsNyArNTE1LDcgQEAgZmxvYXQgSFRNTEltYWdlRWxlbWVudDo6ZWZmZWN0aXZlSW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIAogICAgIGF1dG8qIGltYWdlID0gbV9pbWFnZUxv
YWRlci0+aW1hZ2UoKS0+aW1hZ2UoKTsKIAotICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNTVkdJ
bWFnZSgpKQorICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+YWN0c0xpa2VTVkdJbWFnZSgpKQogICAg
ICAgICByZXR1cm4gMS4wZjsKIAogICAgIHJldHVybiBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNWE0MzhiYmE4OGMyMzI1NGIzZmM3MjZkZTI1OWM3
YTU2NjNlNzc5Ni4uYWI4M2ZmMzZhNjMxZWJmMTU5ZDA5ZDY1NmQ2ZTg4NDljNjc4Y2RiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NTQsNyArMTU1NCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShEb2N1bWVudCYgZG9j
dW1lbnQsIENhCiAKICAgICBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IGltYWdlLT5pbWFnZU9i
c2VydmVyKCk7CiAKLSAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkgeworICAgIGlmIChpbWFn
ZS0+YWN0c0xpa2VTVkdJbWFnZSgpKSB7CiAgICAgICAgIGltYWdlLT5zZXRJbWFnZU9ic2VydmVy
KG51bGxwdHIpOwogICAgICAgICBpbWFnZS0+c2V0Q29udGFpbmVyU2l6ZShpbWFnZVJlY3Quc2l6
ZSgpKTsKICAgICB9CkBAIC0xNTg5LDcgKzE1ODksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBD
YQogICAgIGVsc2UKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAKLSAgICBp
ZiAoaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICBpZiAoaW1hZ2UtPmFjdHNMaWtlU1ZHSW1hZ2Uo
KSkKICAgICAgICAgaW1hZ2UtPnNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTE5NzcsNyArMTk3Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAg
ICAgLy8gICAgICB0aGUgb3JpZ2luIGlzIGNsZWFuLgogICAgIC8vICAgMikgRHluYW1pY2FsbHkg
dmVyaWZ5IHRoZSBvcmlnaW4gY2hlY2tzIGF0IGRyYXcgdGltZSwgYW5kIGRpcnR5IHRoZSBjYW52
YXMgYWNjb3JkaW5nbHkuCiAgICAgLy8gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgdGFpbnQgdGhl
IG9yaWdpbiBmb3IgYWxsIHBhdHRlcm5zIGNvbnRhaW5pbmcgU1ZHIGltYWdlcyBmb3Igbm93Lgot
ICAgIGlmIChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNTVkdJbWFnZSgpKQorICAgIGlmIChjYWNo
ZWRJbWFnZS0+aW1hZ2UoKS0+YWN0c0xpa2VTVkdJbWFnZSgpKQogICAgICAgICBvcmlnaW5DbGVh
biA9IGZhbHNlOwogCiAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg3YjE0
YzQ3ZDM2ZGJiN2Y3MjQ5ZTY4NDVhNTQ1MjYxZmUxMzBmMjYuLjQzNTc0ZDhmYmE3MGFhZDM4OGYz
MGUyNWMyZjI5MGVlY2IwMWE0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC00ODM3LDcgKzQ4Mzcs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFn
ZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0aQogICAgICAgICBpZiAoIWltYWdlRm9yUmVuZGVy
KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBpZiAoaW1hZ2VGb3JSZW5kZXIt
PmlzU1ZHSW1hZ2UoKSB8fCBpbWFnZUZvclJlbmRlci0+b3JpZW50YXRpb24oKSAhPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lIHx8IGltYWdlRm9yUmVuZGVyLT5oYXNEZW5zaXR5Q29ycmVjdGVkU2l6
ZSgpKQorICAgICAgICBpZiAoaW1hZ2VGb3JSZW5kZXItPmFjdHNMaWtlU1ZHSW1hZ2UoKSB8fCBp
bWFnZUZvclJlbmRlci0+b3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lIHx8
IGltYWdlRm9yUmVuZGVyLT5oYXNEZW5zaXR5Q29ycmVjdGVkU2l6ZSgpKQogICAgICAgICAgICAg
aW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCppbWFnZUZvclJlbmRlciwgaW1h
Z2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSwgZnVuY3Rpb25OYW1lKTsKIAogICAgICAg
ICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMoZnVuY3Rpb25OYW1lLCBm
dW5jdGlvblR5cGUsIFNvdXJjZUhUTUxJbWFnZUVsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCBpbWFnZUZvclJlbmRlci0+d2lkdGgoKSwgaW1hZ2VGb3JSZW5kZXItPmhlaWdo
dCgpLCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXgg
MDUxZjcyYmM1ZWMwNTM0ZDkzNjRkNWZkYjQwYmViNzUzZDhmMDM5MS4uNDM3ZTlmMTgwOTYyMDQ1
NWU1YWM0NWEyYTZiOWRkODQ4MTY3MzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgSW1hZ2UqIENhY2hlZEltYWdl
OjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgaWYg
KCFtX2ltYWdlKQogICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGlm
IChtX2ltYWdlLT5pc1NWR0ltYWdlKCkpIHsKKyAgICBpZiAobV9pbWFnZS0+YWN0c0xpa2VTVkdJ
bWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VG
b3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIGlmIChpbWFnZSAhPSAmSW1hZ2U6Om51bGxJ
bWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIElt
YWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogCiBib29sIENhY2hlZEltYWdlOjpoYXNTVkdJbWFnZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNTVkdJbWFnZSgpOworICAgIHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmFjdHNMaWtlU1ZHSW1hZ2UoKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFn
ZTo6c2V0Q29udGFpbmVyQ29udGV4dEZvckNsaWVudChjb25zdCBDYWNoZWRJbWFnZUNsaWVudCYg
Y2xpZW50LCBjb25zdCBMYXlvdXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJa
b29tLCBjb25zdCBVUkwmIGltYWdlVVJMKQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OnNldENvbnRhaW5lckNvbnRleHRGb3JDbGllbnQoY29uc3QgQ2FjaGVkSW1hZ2VDbGll
bnQmIGNsaWVudCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9pbWFnZS0+
aXNTVkdJbWFnZSgpKSB7CisgICAgaWYgKCFtX2ltYWdlLT5hY3RzTGlrZVNWR0ltYWdlKCkpIHsK
ICAgICAgICAgbV9pbWFnZS0+c2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBGbG9hdFNpemUgQ2FjaGVkSW1h
Z2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBT
aXplVAogICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChp
czxTVkdJbWFnZT4oKm1faW1hZ2UpICYmIHNpemVUeXBlID09IFVzZWRTaXplKQorICAgIGlmICht
X2ltYWdlLT5hY3RzTGlrZVNWR0ltYWdlKCkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUpCiAgICAg
ICAgIHJldHVybiBtX3N2Z0ltYWdlQ2FjaGUtPmltYWdlU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVy
KTsKIAogICAgIHJldHVybiBtX2ltYWdlLT5zaXplKHJlbmRlcmVyID8gcmVuZGVyZXItPmltYWdl
T3JpZW50YXRpb24oKSA6IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggZWI2MzM1ZDE0NDVjYjM2ZTAxNWIx
MDIwNmUyOWQ3N2JhYTJjNDQyMy4uNTI1ZjQ0ZWM3NjdiZWFlOGQwMmYzODdiMzQyMDgxZjljOWQx
NmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMg
dm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIENvbXBvcwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7
CiAKICAgICAvLyBTVkdJbWFnZSByZXNldHMgdGhlIG9wYWNpdHkgd2hlbiBwYWludGluZywgc28g
d2UgaGF2ZSB0byB1c2UgdHJhbnNwYXJlbmN5IGxheWVycyB0byBhY2N1cmF0ZWx5IHBhaW50IG9u
ZSBhdCBhIGdpdmVuIG9wYWNpdHkuCi0gICAgYm9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9IGlt
YWdlLmlzU1ZHSW1hZ2UoKTsKKyAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2Uu
YWN0c0xpa2VTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKaW5kZXggNmFiNDMyNzMyNmRhMDgyZDgxMWVlNDEyOGZjZDY0YWIyNTY5ZTY5YS4uNzJm
YTQ4NWI0Zjg4N2E0MzIzYjI0ZTcyZTY2NTRmNDFiNDE4NTljNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzc3LDYgKzM3Nyw4IEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlJiBpbWFnZSkKICAgICAg
ICAgdHMgPDwgImdyYWRpZW50IGltYWdlIjsKICAgICBlbHNlIGlmIChpbWFnZS5pc1NWR0ltYWdl
KCkpCiAgICAgICAgIHRzIDw8ICJzdmcgaW1hZ2UiOworICAgIGVsc2UgaWYgKGltYWdlLmlzU1ZH
SW1hZ2VGb3JDb250YWluZXIoKSkKKyAgICAgICAgdHMgPDwgInN2ZyBpbWFnZSBmb3IgY29udGFp
bmVyIjsKICAgICBlbHNlIGlmIChpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAg
dHMgPDwgInBkZiBpbWFnZSI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRjN2Y0YTY3MzkwN2IxYzRlZmI3NGNmMTIzMGE0NTYwNjEzM2QxYjYuLmFiMDBi
ZmJiZmE3MWU2ZWRmZTNlMzQ2MTZmODY2OTY1Y2VkMGQ3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtOTMsOSArOTMsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlRm9yQ29udGFpbmVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludElt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIGJvb2wgYWN0c0xpa2VTVkdJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzU1ZHSW1hZ2UoKSB8fCBpc1NWR0ltYWdlRm9yQ29udGFpbmVy
KCk7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC0xODgsNyArMTkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2UoSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZShJbWFnZU9i
c2VydmVyKiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9y
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3Im
LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAppbmRleCA4YjA4OWU1OTRjMWFmY2NlZTRmZmI1MDcxMTU5
Nzg3NDY5NWNiMmRlLi4xYWZlZDg4YzI0OGExM2UxZjI1YzA5MWM1YzA2MzY2ODgxMjZmZmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5o
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlVHlwZXMu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAppbmRleCBkMGZmMDUzMDhiOWMxZDQ0M2EyYWNiMGU3NjA3ZmM2ZWJhYjFhM2QwLi42NjZm
NWJlNGM1YTI3NmQwN2QwOGI0ZGI5ZmQ0YmE1NmYyYjI2M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAotICAgIGV4cGxpY2l0IFNWR0ltYWdlKElt
YWdlT2JzZXJ2ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTVkdJbWFnZShJbWFn
ZU9ic2VydmVyJik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdBc05hdGl2ZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250
YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCAwMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRi
OWNiNzM3OGQyN2UyLi4xZDQxODc2NDEyNWRlZTk4MjA2ZmZiOWFiM2MwZjM3ZjkwMThmYjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKQEAgLTI3LDYgKzI3LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorCitT
VkdJbWFnZUZvckNvbnRhaW5lcjo6U1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNv
bnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICAs
IG1fY29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKQorICAgICwgbV9jb250YWluZXJab29tKGNv
bnRhaW5lclpvb20pCisgICAgLCBtX2luaXRpYWxGcmFnbWVudFVSTChpbml0aWFsRnJhZ21lbnRV
UkwpCit7Cit9CisKIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6ZShJbWFnZU9y
aWVudGF0aW9uKSBjb25zdAogewogICAgIEZsb2F0U2l6ZSBzY2FsZWRDb250YWluZXJTaXplKG1f
Y29udGFpbmVyU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDAxYjJmMWJhZmE5NTA1M2M1OTIyNTczNzBmMmI4ZjJm
NTc5NGE0YWIuLjBjNTIwYzRlNjAxNDg5MjFkMmRkNWUzMjFmMGM3ODUxZTJjZTI3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHSW1hZ2VGb3JDb250YWluZXIoaW1hZ2UsIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20s
IGluaXRpYWxGcmFnbWVudFVSTCkpOwogICAgIH0KIAotICAgIGJvb2wgaXNTVkdJbWFnZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU1ZHSW1hZ2VGb3JDb250YWlu
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBGbG9hdFNpemUgc2l6ZShJ
bWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSBjb25zdCBmaW5h
bDsKIApAQCAtNjMsMTMgKzYzLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdl
KiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJa
b29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCkKLSAgICAgICAgOiBtX2ltYWdlKGlt
YWdlKQotICAgICAgICAsIG1fY29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKQotICAgICAgICAs
IG1fY29udGFpbmVyWm9vbShjb250YWluZXJab29tKQotICAgICAgICAsIG1faW5pdGlhbEZyYWdt
ZW50VVJMKGluaXRpYWxGcmFnbWVudFVSTCkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiwgY29uc3QgRmxvYXRTaXplJiBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCk7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCov
ID0gdHJ1ZSkgZmluYWwgeyB9CiAKQEAgLTgwLDMgKzc0LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRShTVkdJ
bWFnZUZvckNvbnRhaW5lcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBjOWUzMWNiZTQ0ODZkYzIwNTJjOWUwM2ZjOTlhODIzYzQ4ODMwMTRhLi45
MzE0OTE2OGRiYzM1NmY3NmFjYWQyNDJiNzI5OWRmYmZiNjYwNjVlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDctMDggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBTVkdJbWFnZUZvckNvbnRhaW5lciByZXBvcnRzIHRydWUgZm9yIGlzPFNWR0ltYWdlPigpIGJ1
dCBpdCBkb2Vzbid0IGluaGVyaXQgZnJvbSBTVkdJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMDctMDggIEdhcnJldHQgRGF2aWRzb24gIDxnYXJyZXR0X2Rhdmlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhlIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuR2V0QXNzZXJ0aW9uTEEgdGVzdCB0byBleHBlY3QgdGhlIHJpZ2h0IHZhbHVlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDNjOWJmODk2NTFmOTdhMzg3YjUwMTEwOTdlNGExOTRhMGMzMmRh
YzUuLmE0MGI5NjUxOWQxYzljYmQ3ZDVkZTNlZjA5YTYwZmFhZTRhNTE0YWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTksNiArMTE5LDcgQEAKIAkJMUM4MTgwMjcyNUZCMDlFMjAwNjA4
QjNFIC8qIEZvbnRSZWdpc3RyeVNhbmRib3hDaGVjay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODE4MDI2MjVGQjA5RTIwMDYwOEIzRSAvKiBGb250
UmVnaXN0cnlTYW5kYm94Q2hlY2subW0gKi87IH07CiAJCTFDOEZBNTNBMjY4NUE2RDUwMEI3RTQ5
RSAvKiBTdHJpbmdXaWR0aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDOEZBNTM5MjY4NUE2RDUwMEI3RTQ5RSAvKiBTdHJpbmdXaWR0aC5tbSAqLzsg
fTsKIAkJMUM5MDQyMEMyMzI2RTAzQzAwQkVGOTFFIC8qIFNlbGVjdGlvbkJ5V29yZC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOTA0MjBCMjMyNkUw
M0MwMEJFRjkxRSAvKiBTZWxlY3Rpb25CeVdvcmQubW0gKi87IH07CisJCTFDOUREOTIzMjY5NzY1
NUIwMDI3NERCMiAvKiBTVkdJbWFnZUNhc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOUREOTIyMjY5NzY1NUIwMDI3NERCMiAvKiBTVkdJbWFn
ZUNhc3RzLmNwcCAqLzsgfTsKIAkJMUM5RUI4NDExRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzlFQjg0MDFFMzgwREExMDA1QzY0NDIgLyogQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJMUNBQ0FEQTEyMzA2MjBBRTAwMDdENTRDIC8qIFdLV2ViVmlld09wYXF1
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUNB
REEwMjMwNjIwQUQwMDA3RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUubW0gKi87IH07CiAJCTFDQjJG
MjdDMjRGODgzNzkwMDBBNUJDMSAvKiBPcnRob2dvbmFsRmxvd0F2YWlsYWJsZVNpemUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0IyRjI3QjI0Rjg4
Mzc5MDAwQTVCQzEgLyogT3J0aG9nb25hbEZsb3dBdmFpbGFibGVTaXplLm1tICovOyB9OwpAQCAt
MTg3OSw2ICsxODgwLDcgQEAKIAkJMUM4MTgwMjYyNUZCMDlFMjAwNjA4QjNFIC8qIEZvbnRSZWdp
c3RyeVNhbmRib3hDaGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRSZWdpc3RyeVNh
bmRib3hDaGVjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RkE1MzkyNjg1
QTZENTAwQjdFNDlFIC8qIFN0cmluZ1dpZHRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3Ry
aW5nV2lkdGgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA0MjBCMjMyNkUw
M0MwMEJFRjkxRSAvKiBTZWxlY3Rpb25CeVdvcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTZWxlY3Rpb25CeVdvcmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDOUREOTIyMjY5NzY1NUIwMDI3NERCMiAvKiBTVkdJbWFnZUNhc3RzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlQ2FzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzlFQjg0MDFFMzgwREExMDA1QzY0NDIgLyogQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUNBREEwMjMw
NjIwQUQwMDA3RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdPcGFxdWUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQjJGMjdCMjRGODgzNzkwMDBBNUJDMSAvKiBPcnRob2dvbmFsRmxvd0F2
YWlsYWJsZVNpemUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPcnRob2dvbmFsRmxvd0F2YWls
YWJsZVNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzYyLDYgKzM3NjQs
NyBAQAogCQkJCUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
Ki8sCiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24u
Y3BwICovLAogCQkJCTQxRTY3QTg0MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNp
bmdUZXN0LmNwcCAqLywKKwkJCQkxQzlERDkyMjI2OTc2NTVCMDAyNzREQjIgLyogU1ZHSW1hZ2VD
YXN0cy5jcHAgKi8sCiAJCQkJOTNBMjU4OTgxRjkyRkYxNTAwM0U1MTBDIC8qIFRleHRDb2RlYy5j
cHAgKi8sCiAJCQkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwICov
LAogCQkJCTdBRDNGRThEMUQ3NUZCOEQwMEIxNjlBNCAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAgKi8sCkBAIC01NTA5LDcgKzU1MTIsNiBAQAogCQkJCUNEQ0Y3OEE4MjQ0QTMyRjcwMDQ4MDMx
MSAvKiBGdWxsc2NyZWVuQWxlcnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDc4RTExRDFEQjdF
QTY2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RCMjEzQkQyNEVGNTIyODAwRkRFMzAxIC8qIEZ1bGxzY3JlZW5Gb2N1cy5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCUY0NEE3RDIwMjY4RDVDNjkwMEI0OUJCOCAvKiBJbWFnZUFuYWx5c2lzVGVzdHMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREU3N0QyNTI1QTY1OTFDMDBENDExNUUgLyogRnVsbHNj
cmVlblBvaW50ZXJMZWF2ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEREM3QzY5MjVGRkY2RDAw
MDIyNDI3OCAvKiBGdWxsc2NyZWVuUmVtb3ZlTm9kZUJlZm9yZUVudGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RCRkNDNDUxQTlGRjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlh
bEZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01NTQzLDYgKzU1NDUsNyBAQAogCQkJCTUxMDQ3
Nzc4MUQyOTkyM0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxMTBGQ0ZBMUUwMUNEQjgwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCQ0JDODMyM0NDNkYyQTAwQ0EyMjIxIC8qIElEQk9iamVj
dFN0b3JlSW5mb1VwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0QTdEMjAyNjhE
NUM2OTAwQjQ5QkI4IC8qIEltYWdlQW5hbHlzaXNUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdCMTg0MTdDMjY3Mzg2MDIwMEVENEY4RCAvKiBJbWFnZUJ1ZmZlclRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NEE5QUY3MjY0OUJCREQwMEU3Q0IxNiAvKiBJbW1lZGlhdGVBY3Rpb25U
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUVFRjZEMjQwNzM1OUQwMEM4N0U0QyAvKiBJ
bkFwcEJyb3dzZXJQcml2YWN5Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC01Nzg3LDYgKzU3OTAsNyBA
QAogCQkJCTQxRTY3QTg1MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQyMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJy
ZXNvdXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUVCMTI2NzI0Q0I4NzUz
MDAwQ0IwMzAgLyogU3VuTGlnaHRBcHBsaWNhdGlvbkdlbmVyaWNORVMubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQzlERDkyMzI2OTc2NTVCMDAyNzREQjIgLyogU1ZHSW1hZ2VDYXN0cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NDMzQTM5NjIwODA0NDE0MDA5MUVENTcgLyogU3luY2hyb25vdXNU
aW1lb3V0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBODFBNDExQTE5MDA0NDdD
NEMgLyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93Lm0gaW4gU291cmNlcyAqLywK
IAkJCQlFM0VGQjAyRjI1NTA2NTAzMDAzQzJGOTYgLyogU3lzdGVtQmVlcC5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0lt
YWdlQ2FzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdl
Q2FzdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZjM2ZjU2ODBkNmUzYmEwMTVlZDNkNTg3YmMyYjdkMjAy
ZDQ3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU1ZHSW1hZ2VDYXN0cy5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VPYnNlcnZlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU1ZHSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBUZXN0SW1hZ2VPYnNl
cnZlciA6IHB1YmxpYyBJbWFnZU9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBVUkwgc291cmNlVXJs
KCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICB9CisKKyAg
ICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIH0KKworICAgIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdm9pZCBk
ZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcpIGZpbmFsCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIGZpbmFsCisgICAgeworICAg
IH0KKworICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgaW1hZ2VGcmFt
ZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkKSBmaW5hbAorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgZmluYWwK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpIGZpbmFsCisgICAgeworICAgIH0KK307CisKK1RFU1QoU1ZHSW1hZ2VDYXN0cywgU1ZH
SW1hZ2VGb3JDb250YWluZXJJc05vdFNWR0ltYWdlKQoreworICAgIFRlc3RJbWFnZU9ic2VydmVy
IGltYWdlT2JzZXJ2ZXI7CisgICAgYXV0byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoaW1h
Z2VPYnNlcnZlcik7CisgICAgSW1hZ2UmIHN2Z0ltYWdlQmFzZSA9IHN2Z0ltYWdlLmdldCgpOwor
ICAgIEVYUEVDVF9UUlVFKGlzPFNWR0ltYWdlPihzdmdJbWFnZUJhc2UpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXM8U1ZHSW1hZ2VGb3JDb250YWluZXI+KHN2Z0ltYWdlQmFzZSkpOworICAgIGF1dG8g
c3ZnSW1hZ2VGb3JDb250YWluZXIgPSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6Y3JlYXRlKHN2Z0lt
YWdlLnB0cigpLCB7IH0sIDAsIFVSTCgpKTsKKyAgICBJbWFnZSYgc3ZnSW1hZ2VGb3JDb250YWlu
ZXJCYXNlID0gc3ZnSW1hZ2VGb3JDb250YWluZXIuZ2V0KCk7CisgICAgRVhQRUNUX0ZBTFNFKGlz
PFNWR0ltYWdlPihzdmdJbWFnZUZvckNvbnRhaW5lckJhc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShp
czxTVkdJbWFnZUZvckNvbnRhaW5lcj4oc3ZnSW1hZ2VGb3JDb250YWluZXJCYXNlKSk7Cit9CisK
K30K
</data>
<flag name="review"
          id="455295"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
          </attachment>
      

    </bug>

</bugzilla>