<?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>218934</bug_id>
          
          <creation_ts>2020-11-13 20:33:49 -0800</creation_ts>
          <short_desc>[GPU Process] Share the NativeImage with GPU Process through a ShareableBitmap</short_desc>
          <delta_ts>2020-12-04 11:48:24 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1707467</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-13 20:33:49 -0800</bug_when>
    <thetext>We need to replace the decoded CGImageRef with a ShareableBitmap which can be shared and used by Web Process and GPU Process. A CGImageRef can be created from ShareableBitmap when drawing the image is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707468</commentid>
    <comment_count>1</comment_count>
      <attachid>414121</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-13 20:36:10 -0800</bug_when>
    <thetext>Created attachment 414121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707476</commentid>
    <comment_count>2</comment_count>
      <attachid>414125</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-13 22:57:32 -0800</bug_when>
    <thetext>Created attachment 414125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708736</commentid>
    <comment_count>3</comment_count>
      <attachid>414125</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-18 13:17:31 -0800</bug_when>
    <thetext>Comment on attachment 414125
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImage.cpp:67
&gt; +    m_observer = &amp;observer;
&gt; +    m_platformImage = nullptr;

It&apos;s weird (and very non-obvious from the API) that seeing an Observer clears the platform image.

&gt; Source/WebCore/platform/graphics/NativeImage.cpp:81
&gt; +        ASSERT(m_observer);
&gt; +        m_platformImage = m_observer-&gt;platformImageOfNativeImage(m_renderingResourceIdentifier);

But now we have both an observer AND a native image!

&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:49
&gt; +    m_nativeImages.add(renderingResourceIdentifier, NativeImage::create(*this, renderingResourceIdentifier));

Why don&apos;t we just create the PlatformImage here and pass it into the NativeImage constructor?

&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:51
&gt; +    WebCore::PlatformImagePtr platformImageOfNativeImage(WebCore::RenderingResourceIdentifier) override;

platformImageForIdentifier()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709656</commentid>
    <comment_count>4</comment_count>
      <attachid>414728</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-20 14:33:41 -0800</bug_when>
    <thetext>Created attachment 414728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709672</commentid>
    <comment_count>5</comment_count>
      <attachid>414125</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-20 14:54:31 -0800</bug_when>
    <thetext>Comment on attachment 414125
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/NativeImage.cpp:67
&gt;&gt; +    m_platformImage = nullptr;
&gt; 
&gt; It&apos;s weird (and very non-obvious from the API) that seeing an Observer clears the platform image.

I renamed NativeImage::Observer to be NativeImage::ImageSource. So setting the ImageSource of the NativeImage should clear the platform image since it will provide it when it is needed.

&gt;&gt; Source/WebCore/platform/graphics/NativeImage.cpp:81
&gt;&gt; +        m_platformImage = m_observer-&gt;platformImageOfNativeImage(m_renderingResourceIdentifier);
&gt; 
&gt; But now we have both an observer AND a native image!

Yes I did not want to break the non GPUP scenario if the same NativeImage is drawn later in WebP. This can be revisited later when all the NativeImages are drawn either in GPUP or WebP but not both.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:49
&gt;&gt; +    m_nativeImages.add(renderingResourceIdentifier, NativeImage::create(*this, renderingResourceIdentifier));
&gt; 
&gt; Why don&apos;t we just create the PlatformImage here and pass it into the NativeImage constructor?

Done. In fact this function RemoteResourceCache::cacheNativeImage() now takes a NativeImage. This cleans the interface and makes caching the NativeImage look very similar to caching the ImageBuffer.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:51
&gt;&gt; +    WebCore::PlatformImagePtr platformImageOfNativeImage(WebCore::RenderingResourceIdentifier) override;
&gt; 
&gt; platformImageForIdentifier()

Name was changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709727</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-20 20:34:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/71650376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711946</commentid>
    <comment_count>7</comment_count>
      <attachid>415383</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-03 21:10:44 -0800</bug_when>
    <thetext>Created attachment 415383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711947</commentid>
    <comment_count>8</comment_count>
      <attachid>415384</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-03 21:14:13 -0800</bug_when>
    <thetext>Created attachment 415384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711950</commentid>
    <comment_count>9</comment_count>
      <attachid>415384</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-03 21:56:49 -0800</bug_when>
    <thetext>Comment on attachment 415384
Patch

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

&gt; Source/WebKit/Shared/ShareableBitmap.h:133
&gt; +    WebCore::PlatformImagePtr createPlatfromImage() { return makeCGImageCopy(); }

Typo: platfrom. it&apos;s in a few places

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:-1103
&gt; -void ArgumentCoder&lt;Ref&lt;NativeImage&gt;&gt;::encode(Encoder&amp; encoder, const Ref&lt;NativeImage&gt;&amp; image)

I&apos;m shocked this wasn&apos;t used for anything else, I thought for sure it predated this project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712064</commentid>
    <comment_count>10</comment_count>
      <attachid>415431</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-04 10:54:56 -0800</bug_when>
    <thetext>Created attachment 415431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712096</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-04 11:48:22 -0800</bug_when>
    <thetext>Committed r270444: &lt;https://trac.webkit.org/changeset/270444&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415431.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414121</attachid>
            <date>2020-11-13 20:36:10 -0800</date>
            <delta_ts>2020-11-13 22:57:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201113203609.patch</filename>
            <type>text/plain</type>
            <size>32643</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5MzhmNzljY2ZlODA3
ZjY5YTRlZGRmYzRmZmM5MmQ5MmQ0ODFmMi4uOWU3ZjQwNTk2N2E1MDNiOGJlMzg4Y2NjOTU0NzVh
MmVhYTdiMjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTExLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmVuc3VyZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6T2JzZXJ2ZXI6OnJlbGVhc2VOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6cGxhdGZvcm1JbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6c2V0T2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
SW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0Fs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNv
bGlkQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorCiAyMDIwLTExLTEzICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNo
ZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNWMwODI1MGEwZmU1MTAxMjlh
ZTg2YWRjY2FlYTNiODY2YjMwMjI3Li4yMGVkMDFhOGIwOWJhMjYzNjhmNTAzZDQzZDAwMGJhMmQx
Y2IxOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTExLTEzICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2hhcmUg
dGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJsZUJpdG1h
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4OTM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnBsYXRmb3JtSW1hZ2VPZk5h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFz
ZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGxhdGZyb21JbWFnZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cGxh
dGZvcm1JbWFnZU9mTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisKIDIwMjAtMTEtMTMgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKaW5kZXggZmUwMTQ1MzFiNjli
NDRkOWQ3ZDkwM2EyNDMyNGY1NTg3NTNjYjMyNC4uOWE4ZDIyODFjNjIxMDRjOGQzYjE2MWU0NmVl
MmRhZjg2NGM1M2JiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmNwcApAQCAtMzcsMTEgKzM3LDkgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkp
KTsKIH0KIAotUmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUlt
YWdlOjpjcmVhdGUoT2JzZXJ2ZXImIG9ic2VydmVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmICghcGxhdGZvcm1JbWFn
ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0
aXZlSW1hZ2UocGxhdGZvcm1JbWFnZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2Uob2JzZXJ2ZXIsIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpOwogfQogCiBOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZv
cm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCkBAIC01MCw4ICs0OCw4IEBAIE5hdGl2ZUltYWdl
OjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKIHsKIH0KIAot
TmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3Jt
SW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCi0gICAgOiBtX3BsYXRmb3JtSW1hZ2UocGxhdGZvcm1JbWFnZSkKK05hdGl2ZUltYWdl
OjpOYXRpdmVJbWFnZShPYnNlcnZlciYgb2JzZXJ2ZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgOiBtX29ic2VydmVyKCZvYnNl
cnZlcikKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKIH0KQEAgLTYyLDQgKzYwLDI4IEBAIE5hdGl2ZUltYWdlOjp+TmF0
aXZlSW1hZ2UoKQogICAgICAgICBtX29ic2VydmVyLT5yZWxlYXNlTmF0aXZlSW1hZ2UobV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIE5hdGl2ZUltYWdlOjpzZXRPYnNl
cnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKCFtX29ic2VydmVyKTsKKyAg
ICBtX29ic2VydmVyID0gJm9ic2VydmVyOworICAgIG1fcGxhdGZvcm1JbWFnZSA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyT2JzZXJ2ZXIoKQoreworICAgIEFTU0VSVCht
X29ic2VydmVyKTsKKyAgICBlbnN1cmVQbGF0Zm9ybUltYWdlKCk7CisgICAgbV9vYnNlcnZlciA9
IG51bGxwdHI7Cit9CisKK2NvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIE5hdGl2ZUltYWdlOjplbnN1
cmVQbGF0Zm9ybUltYWdlKCkKK3sKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSkgeworICAgICAg
ICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgICAgIG1fcGxhdGZvcm1JbWFnZSA9IG1fb2JzZXJ2
ZXItPnBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUltYWdlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisgICAgQVNTRVJUKG1fcGxhdGZvcm1JbWFnZSk7CisgICAgcmV0dXJuIG1f
cGxhdGZvcm1JbWFnZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggNTg4YjFjMDY1NDE3
N2QxN2JhZjA3NDkyMWM0Y2IwOTBjMzIyMDNjNC4uODdiOTc1NzQwODg1ZmM2NzRmYjRjOTczYzhj
YTYzZGRmNWJlNjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCkBAIC0zMywzOSArMzMsNDMgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBOYXRpdmVJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUlt
YWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5hdGl2ZUltYWdlPiB7CitjbGFzcyBOYXRpdmVJ
bWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlT2ZOYXRpdmVJ
bWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsgfQog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiAgICAgfTsKIAog
ICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0
Zm9ybUltYWdlUHRyJiYpOwotICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmPE5hdGl2ZUltYWdlPiBj
cmVhdGUoT2JzZXJ2ZXImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgfk5hdGl2ZUltYWdlKCk7CiAKLSAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAg
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8TmF0aXZlSW1hZ2UmPigqdGhpcykuZW5zdXJlUGxhdGZvcm1JbWFnZSgpOyB9CiAg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICBib29sIGhhc0FscGhh
KCkgY29uc3Q7CiAgICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHNldE9ic2VydmVyKE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVyID0gb2Jz
ZXJ2ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9ic2VydmVyKE9ic2VydmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck9ic2VydmVyKCk7CisKICAgICB2b2lkIGNs
ZWFyU3ViaW1hZ2VzKCk7CiAKIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFn
ZVB0ciYmKTsKLSAgICBOYXRpdmVJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBOYXRpdmVJbWFnZShPYnNlcnZlciYsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgZW5zdXJlUGxhdGZvcm1JbWFnZSgpOwogCiAgICAgUGxhdGZvcm1J
bWFnZVB0ciBtX3BsYXRmb3JtSW1hZ2U7CiAgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IGZkYzdlN2Q2NWZkY2E5MTNlNzBjYzk4
NjgyZWMzYzQ0Mzk2NzdhN2MuLjI0NWVmM2ZmOWU1YTlkMzQwM2JiZGYyOWJlMDViMzNkYmEwMDEx
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBJbnRTaXplIE5hdGl2ZUltYWdlOjpzaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY2Fpcm9TdXJmYWNlU2l6ZShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgIHJldHVy
biBjYWlyb1N1cmZhY2VTaXplKHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiB9CiAKIGJvb2wgTmF0
aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQocGxhdGZvcm1JbWFnZSgpLmdl
dCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogfQogCiBDb2xvciBOYXRpdmVJbWFnZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKQEAgLTUwLDEwICs1MCwxMCBAQCBDb2xvciBOYXRp
dmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoc2l6ZSgpICE9
IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNF
X1RZUEVfSU1BR0UpCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUocGxhdGZvcm1JbWFn
ZSgpLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBD
b2xvcigpOwogCi0gICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5z
aWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQo
KSkpOworICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVk
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpKTsK
ICAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAq
cGl4ZWwgfSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDM0NDgwMGJhMWQ3ZjY2ZTU0YWUzYzNmOGUy
ZDEyMjYwOGM4NTU3NDIuLmNiYjBiODI4NTU0YjhlZDNkNmE1MGM2MTBkZTQ3ZGM5NzcyNjhhY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2
ZUltYWdlQ0cuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJ
bnRTaXplIE5hdGl2ZUltYWdlOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50U2l6ZShD
R0ltYWdlR2V0V2lkdGgobV9wbGF0Zm9ybUltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodCht
X3BsYXRmb3JtSW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lk
dGgocGxhdGZvcm1JbWFnZSgpLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChwbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpKTsKIH0KIAogYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewot
ICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9y
bUltYWdlLmdldCgpKTsKKyAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxw
aGFJbmZvKHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIChpbmZvID49IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0
KTsKIH0KIApAQCAtNTYsNyArNTYsNyBAQCBDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxT
b2xpZENvbG9yKCkgY29uc3QKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIHBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSk7CiAKICAgICBpZiAoIXBpeGVsWzNdKQogICAgICAgICByZXR1cm4gQ29sb3I6
OnRyYW5zcGFyZW50QmxhY2s7CkBAIC02Nyw3ICs2Nyw3IEBAIENvbG9yIE5hdGl2ZUltYWdlOjpz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogdm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJp
bWFnZXMoKQogewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKKyAgICBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpjbGVhckltYWdlKHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2
ZUltYWdlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCmluZGV4IGE2NGI0NTY4YjdjYzUzNTc0OGIwYmQ2MGMx
MzBmNTlkMTFkMWQ1MmEuLmRjODQ0NmE2NjY4ODEwZWYxMzEzNjQxNDExZTEwMTBkNTUwOGYzN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBzdGF0aWMgSVdJ
Q0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCiAKIEludFNpemUgTmF0aXZlSW1hZ2U6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsYXRmb3JtSW1hZ2UtPkdldFBpeGVsU2l6
ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlKCktPkdldFBpeGVsU2l6ZSgpOwogfQogCiBi
b29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgRDJEMV9QSVhFTF9GT1JN
QVQgcGl4ZWxGb3JtYXQgPSBtX3BsYXRmb3JtSW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CisgICAg
RDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBwbGF0Zm9ybUltYWdlKCktPkdldFBpeGVs
Rm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhB
X01PREVfSUdOT1JFOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggODY5Y2VkMTkw
MzlhZTYzYTM0ZjA0NDE1M2IyM2RmOTgzY2M1ODQ1My4uN2VhODFkOTgzMWE0ODBhY2VhMzdiZDY0
NDcwYmVhNTk3ZWFlOWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjIwLDkgKzIy
MCwxMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYm
IGltYWdlKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZSkpOworICAgIGlmIChhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSkpCisgICAgICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmJpdG1hcCksIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA5NWU4Yzk3
NjBkZmI2M2FhMDg0Y2M2ZjdiYWY5ZDJkZjlhNzgyOTljLi5hMzRmNTkxYTIyYTQzYWQ2MGQ3NzMy
ZDY0NmMwM2QwZjI5ZWRkODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTEwNiw3ICsxMDYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdha2VVcEFu
ZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UmJik+JiYpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6
TmF0aXZlSW1hZ2U+JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0Zjc3MzgxYTZmYjk5NTczNDJhMjljMjE0NjA3MmVl
Y2Y4Li5mZWM5NmEyMjdkYmY1M2MwNDYxMGZlZTdlZDQwYzEzZmE0OTE0ZWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1
aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNv
cmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNl
IGltYWdlRGF0YSkgU3luY2hyb25vdXMKLSAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQorICAgIENhY2hlTmF0aXZlSW1hZ2UoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkQ3Jl
YXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRi
MmMzNjkuLmExNjI3MjMwNjA3ZjBmYjcxM2EzNGRmYzQzNDQ4YmZjYTNiZTkxMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAKQEAgLTQyLDE4ICs0MiwzNSBAQCBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCiAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5h
dGl2ZUltYWdlPiYmIGltYWdlKQordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2
ZUltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zaGFyZWFibGVC
aXRtYXBzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoYml0bWFwKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKCp0aGlzLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKK30KKwor
UGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpwbGF0Zm9ybUltYWdlT2ZOYXRp
dmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQoreworICAgIGlmIChhdXRvIGJpdG1hcCA9IG1fc2hhcmVhYmxlQml0bWFwcy5nZXQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGJpdG1hcC0+Y3Jl
YXRlUGxhdGZyb21JbWFnZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChtX2ltYWdl
QnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSkKKworICAgIGF1dG8gaXQgPSBtX25hdGl2ZUltYWdlcy5maW5kKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKGl0ICE9IG1fbmF0aXZlSW1hZ2VzLmVuZCgpKSB7
CisgICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJPYnNlcnZlcigpOworICAgICAgICBtX25hdGl2ZUlt
YWdlcy5yZW1vdmUoaXQpOworCisgICAgICAgIGF1dG8gcmVtb3ZlZCA9IG1fc2hhcmVhYmxlQml0
bWFwcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQg
YmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJjMDEyM2M2NTAzZWM3OTliMGIuLjZk
MWE0M2I0MTg3NjdiY2U3OGUzNjMwMmFjZWE1ZTczOTJiMzg4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApA
QCAtMzAsMjcgKzMwLDI5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCi1jbGFzcyBS
ZW1vdGVSZXNvdXJjZUNhY2hlIHsKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMg
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBSZW1vdGVSZXNv
dXJjZUNhY2hlKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hl
ZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
dm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CisgICAg
dm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAKICAgICBjb25z
dCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNo
TWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQogCiBw
cml2YXRlOgorICAgIHVzaW5nIFNoYXJlYWJsZUJpdG1hcEhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFNoYXJlYWJsZUJpdG1hcD4+Owor
CisgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlT2ZOYXRpdmVJbWFn
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOworCiAgICAg
V2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBTaGFyZWFibGVCaXRtYXBI
YXNoTWFwIG1fc2hhcmVhYmxlQml0bWFwczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA2ZWJmZWM3Zjc4MWMxYzVi
MWQ0OWZlYjgyODJkYThlYzI2YTM0YWE0Li41NjAxMzQxMjZkZTdlMjFmNWZiMWNjOGYyNjExYjIy
NmU2YjY4MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMjcs
MTYgKzI3LDEyIEBACiAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFVT
RShDRykKICNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNlbmRpZgotCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRy
Q2Fpcm8uaD4KICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQpAQCAtMTMzLDE2ICsxMjksMjIg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgY3JlYXRlcyBhIENHSW1hZ2VSZWYgdGhhdCBkaXJlY3Rs
eSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5
IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVh
YmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1ha2VD
R0ltYWdlKCk7CisgICAgCisgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQbGF0
ZnJvbUltYWdlKCkgeyByZXR1cm4gbWFrZUNHSW1hZ2VDb3B5KCk7IH0KICNlbGlmIFVTRShDQUlS
TykKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVy
ZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0
byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0
bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWly
b1N1cmZhY2UoKTsKKyAgICAKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBs
YXRmcm9tSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2VsaWYgVVNF
KERJUkVDVDJEKQogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlRGlyZWN0MkRTdXJmYWNl
KElEM0QxMURldmljZTEqLCBJRDJEMVJlbmRlclRhcmdldCopOwogICAgIElEWEdJU3VyZmFjZTEq
IGR4U3VyZmFjZSgpIHsgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsgfQogICAgIHZvaWQgY3JlYXRl
U2hhcmVkUmVzb3VyY2UoKTsKICAgICB2b2lkIGRpc3Bvc2VTaGFyZWRSZXNvdXJjZSgpOwogICAg
IHZvaWQgbGVha1NoYXJlZFJlc291cmNlKCk7CisgICAgCisgICAgV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVQbGF0ZnJvbUltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjs7IH0KICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlmNmJhNzJlNDgyMGJiNDA2YzJjZmJkZTExM2U5Yi4u
ZTc5OGU5MTJlNDdiMGQ4ZDBmMDM4ZTdmNzZkNzBmYzA2YWY2ZWNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02MSw3ICs2MSw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGguaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aEJv
eC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmg+CkBAIC0xMTAwLDU5ICsxMDk5LDYgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxl
JiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2
ZUltYWdlPiYgaW1hZ2UpCi17Ci0gICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwot
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VT
aXplLCB7IH0pOwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLQotICAgIGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOwotCi0gICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Ci0K
LSAgICBlbmNvZGVyIDw8IGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAg
ICBlbmNvZGVyIDw8IGhhbmRsZTsKLX0KLQotT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJn
dW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwotICAgIGRlY29k
ZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwotICAgIGlmICghZGlkQ3JlYXRlR3JhcGhp
Y3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1ZSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgCi0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsK
LSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1
dG8gaW1hZ2UgPSBiaXRtYXAtPmNyZWF0ZUltYWdlKCk7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgbmF0aXZlSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0g
ICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFnZSk7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZv
bnQ+JiBmb250KQogewogICAgIGVuY29kZXIgPDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3
YmNkZTU1ZTIxMWUxN2M0YmVkZWYxNzA1ZDYuLjkyYWY2MTNiZGZjZTcyZjQzNWM0MGI0MzhmMmIy
OGNkNDQ4ZjZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC00MTksMTEgKzQxOSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6TmF0
aXZlSW1hZ2U+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAKaW5kZXggODU1Yzg5NDk2NmM1ODdiYjBlNmFlYzUxMTlkZTRiOTQ0NTA4N2Q0Yi4uNzlj
MDM1YWRjOGJlYWE3ZTBiMmVlMmU0ZjMzMGU5ZjI3MmQ1MWFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTAwLDEzICsxMDAsNyBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQotICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRl
KG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi0gICAg
cmV0dXJuIG51bGxwdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIE5hdGl2ZUltYWdl
OjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpKTsKLSNlbmRpZgorICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0ZnJvbUltYWdlKCkp
OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCAzNmIwM2QzODFlZDJj
NTI0MWNmY2QzZjViMzU1MTc4YmIzOGNmNmE1Li45NDUxNTI1ZjNlOTEyOTMyZTM5ODlmYzEzYWUx
MDE4NmI3ZTdiMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC0xNzMsOSArMTczLDkgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1
Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGkKICAgICB9CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5h
dGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZSht
YWtlUmVmKGltYWdlKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UoaGFuZGxl
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYjA5
NWEwMDYwNTc0ZDliNDRhOGQ3YTU2ZDdmODcxNGViNTZmMjBkYy4uZjI5YWQ5YTgyNzFhODE1ZTdh
Y2FmYWVlY2MwOTMxOWM4NWRjNGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21t
aXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRX
YXNDcmVhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggOTA0
YWFlYWQ4Y2M3MWU4OGY2NDJiNGI1MzZlNjlhZTFlODkzOTg5Yy4uYjA3M2Q1OWVmOGEzYzY4OTI3
OGViYWExMTBlNzJmMGNkMWUxNTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcApAQCAtNTUsMjIgKzU1LDU2IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpy
ZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlCiAgICAgQVNT
RVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCitpbmxpbmUgc3RhdGljIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CisKKyAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlLnNp
emUoKSwgeyB9KTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgY29udGV4
dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdl
U2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOworICAgIHJldHVybiBiaXRtYXA7Cit9
CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSkKIHsKLSAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgLy8gU2V0IGl0c2VsZiBh
cyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkKLSAg
ICAgICAgLy8gZ2V0cyBjYWxsZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0ZWQu
Ci0gICAgICAgIGltYWdlLnNldE9ic2VydmVyKHRoaXMpOwotCi0gICAgICAgIC8vIFRlbGwgdGhl
IEdQVSBwcm9jZXNzIHRvIGNhY2hlIHRoaXMgcmVzb3VyY2UuCi0gICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotICAgICAgICByZXR1
cm4gbWFrZVdlYWtQdHIoaW1hZ2UpOwotICAgIH0pOworICAgIGlmIChtX3NoYXJlYWJsZUJpdG1h
cHMuY29udGFpbnMoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21O
YXRpdmVJbWFnZShpbWFnZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRtYXAtPmNyZWF0ZUhh
bmRsZShoYW5kbGUpOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFNldCBpdHNlbGYgYXMgYW4gb2JzZXJ2ZXIgdG8gTmF0aXZlSW1hZ2UgYW5kIGdl
dCByaWQgb2YgaXRzIFBsYXRmb3JtSW1hZ2UuCisgICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIoKnRoaXMp
OworCisgICAgLy8gQ2FjaGUgdGhlIGJpdG1hcCBzdWNoIHRoYXQgTmF0aXZlSW1hZ2Ugd2lsbCBz
dGlsbCBiZSBhYmxlIGdldCBhIFBsYXRmb3JtSW1hZ2UuCisgICAgbV9zaGFyZWFibGVCaXRtYXBz
LmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgbWFrZVJlZigqYml0bWFw
KSk7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byBjYWNoZSB0aGlzIHJlc291cmNl
LgorICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaGFu
ZGxlLCBpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Cit9CisKK1BsYXRmb3Jt
SW1hZ2VQdHIgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpwbGF0Zm9ybUltYWdlT2ZOYXRpdmVJ
bWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGlmIChhdXRvIGJpdG1hcCA9IG1fc2hhcmVhYmxlQml0bWFwcy5nZXQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGJpdG1hcC0+Y3JlYXRl
UGxhdGZyb21JbWFnZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX25hdGl2
ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAoIW1f
c2hhcmVhYmxlQml0bWFwcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRo
aXMgcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCAwNmRkNGY2
OGI5M2E5ZTk3ZmE1NDljMDNkZmM0OWRiOTM4ODhiYmZiLi42NjRlZjgwMmZlNzQwOTdmMWQxMjgz
ZmJlZDg5ZmM3ZDM2MjI2YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEltYWdlQnVmZmVyOwpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBJbWFnZUJ1ZmZl
cjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7CitjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVibGljOgpA
QCAtNTMsMTIgKzU1LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAm
IGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAKIHByaXZh
dGU6Ci0gICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsK
KyAgICB1c2luZyBTaGFyZWFibGVCaXRtYXBIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxTaGFyZWFibGVCaXRtYXA+PjsKICAgICAKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUltYWdlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBv
dmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKLSAgICBO
YXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgU2hhcmVhYmxlQml0bWFwSGFz
aE1hcCBtX3NoYXJlYWJsZUJpdG1hcHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414125</attachid>
            <date>2020-11-13 22:57:32 -0800</date>
            <delta_ts>2020-11-20 14:33:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201113225731.patch</filename>
            <type>text/plain</type>
            <size>41565</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5MzhmNzljY2ZlODA3
ZjY5YTRlZGRmYzRmZmM5MmQ5MmQ0ODFmMi4uYjZmMjk5NGYxM2I0M2NlMGFjODZiNDM3OGRlNWVh
MTgzYjYwNzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTExLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIHBsYW4gaXMgdG8gbWFrZSBOYXRpdmVJbWFnZSBiZSBiYWNrZWQgYnkgYSBTaGFyZWFibGVC
aXRtYXAgaWYgaXQgaXMKKyAgICAgICAgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBpbWFnZSBpbiB0
aGUgR1BVIFByb2Nlc3MuIFRvIHNhdmUgbWVtb3J5IHRoZSBtZW1iZXIKKyAgICAgICAgbV9wbGF0
Zm9ybUltYWdlIHdpbGwgYmUgc2V0IHRvIG51bGwgYnV0IHdlIHdpbGwgYWxsb3cgZ2V0dGluZyBh
bm90aGVyIAorICAgICAgICBQbGF0Zm9ybUltYWdlUHRyIGZyb20gdGhlIFNoYXJlYWJsZUJpdG1h
cCBpZiBpdCBpcyBuZWVkZWQgZm9yIG5vbiBHUFUKKyAgICAgICAgZW5hYmxlZCBjYXNlLgorCisg
ICAgICAgIC0tIE1ha2UgTmF0aXZlSW1hZ2U6OnNldE9ic2VydmVyIHNldCB0aGUgbWVtYmVyIG1f
cGxhdGZvcm1JbWFnZSB0byBudWxsLiAKKworICAgICAgICAtLSBNYWtlIE5hdGl2ZUltYWdlOjpP
YnNlcnZlciBiZSByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBhIFBsYXRmb3JtSW1hZ2VQdHIKKyAg
ICAgICAgICAgaWYgbV9wbGF0Zm9ybUltYWdlIGlzIG5lZWRlZCBidXQgaXQgaXMgbnVsbC4KKwor
ICAgICAgICAtLSBNYWtlIE5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKCkgZW5zdXJlIG1fcGxh
dGZvcm1JbWFnZSBpcyBhIHZhbGlkCisgICAgICAgICAgIHBvaW50ZXIuIE1ha2UgYWxsIHRoZSBO
YXRpdmVJbWFnZSBmdW5jdGlvbnMgdXNlIHRoaXMgbWV0aG9kIGluc3RlYWQKKyAgICAgICAgICAg
b2YgYWNjZXNzaW5nIHRoZSBtZW1iZXIgbV9wbGF0Zm9ybUltYWdlIGRpcmVjdGx5LgorCisgICAg
ICAgIC0tIEFkZCBhIG5ldyBtZXRob2RzIG5hbWVkIE5hdGl2ZUltYWdlOjpjbGVhck9ic2VydmVy
KCkgd2hpY2ggd2lsbCBzZXQKKyAgICAgICAgICAgbV9vYnNlcnZlciB0byBudWxsIGJ1dCBhbHNv
IGVuc3VyZSB0aGUgbV9wbGF0Zm9ybUltYWdlIGlzIG5vdCBudWxsCisgICAgICAgICAgIGJlY2F1
c2UgTmF0aXZlSW1hZ2UgaGFzIHRvIGhvbGQgYSB2YWxpZCBQbGF0Zm9ybUltYWdlUHRyIGFsbCB0
aGUgdGltZXMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OmNsZWFyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OmVuc3VyZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXI6OnJlbGVh
c2VOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cGxhdGZvcm1J
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2JzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJl
bmNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZl
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBo
YSBjb25zdCk6CisKIDIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJl
Y29nbml0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1YzA4MjUwYTBmZTUxMDEyOWFlODZhZGNjYWVhM2I4NjZi
MzAyMjcuLmM1YTc5ODY2MmVlY2Q0NjBiYzhiZGJlZTJmODA5ZWM5ZjhhMTA3YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMTEtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaGFyZSB0aGUgTmF0aXZlSW1hZ2Ug
d2l0aCBHUFUgUHJvY2VzcyB0aHJvdWdoIGEgU2hhcmVhYmxlQml0bWFwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg5MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cGxhdGZvcm1JbWFnZU9mTmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Up
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgor
ICAgICAgICBVcG9uIHJlY2VpdmluZyB0aGUgbWVzc2FnZSBDYWNoZU5hdGl2ZUltYWdlLCB0d28g
ZW50cmllcyB3aWxsIGJlIGFkZGVkCisgICAgICAgIHRvIFJlbW90ZVJlc291cmNlQ2FjaGU6IGEg
U2hhcmVhYmxlQml0bWFwIGFuZCBhIE5hdGl2ZUltYWdlIHdpdGggdGhlCisgICAgICAgIHNhbWUg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLiBUaGUgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxs
IGJlIHNldCBhbgorICAgICAgICBvYnNlcnZlciB0byB0aGUgTmF0aXZlSW1hZ2UuIEl0IHdpbGwg
cHJvdmlkZSB0aGUgUGxhdG9ybUltYWdlUHRyIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZSB3
aGVuIGl0IGlzIG5lZWRlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIFNoYXJlYWJsZUJpdG1hcC4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVQbGF0ZnJvbUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6
ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZl
SW1hZ2U+Pjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICBDb2RlIGNsZWFudXAuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cGxhdGZvcm1J
bWFnZU9mTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgIFdoZW4gYSBOYXRpdmVJ
bWFnZSBpcyBjYWNoZWQgd2hpbGUgRGlzcGxheUxpc3QgcmVjb3JkaW5nLCBhIFNoYXJlYWJsZUJp
dG1hcAorICAgICAgICB3aWxsIGJlIGNyZWF0ZWQgdG8gcmVwbGFjZSB0aGUgUGxhdG9ybUltYWdl
UHRyIG9mIHRoaXMgTmF0aXZlSW1hZ2UuIFRoZQorICAgICAgICBoYW5kbGUgb2YgdGhlIFNoYXJl
YWJsZUJpdG1hcCB3aXRoIHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2YgdGhlCisg
ICAgICAgIE5hdGl2ZUltYWdlIHdpbGwgYmUgc2VudCB0byB0aGUgR1BVIFByb2Nlc3MgdG8gYmUg
Y2FjaGVkIHRoZXJlIGFzIHdlbGwuCisKIDIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBiZWIwMDYwYmFlYTQz
OTRhMDUwNGNjZWQyNjdlNjI2MDBhMzk2Yjc2Li44ZjJhZDdlZmE0OTRkNzdmZWEzOTM4NWUyZmQ3
YjdhN2I0OWZjMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMTQsNyArMTIxNCw2IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJ
bmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZmEwOTVmOWE1Nzc2YTNhNDkyZjMwMWNmMjc2
N2I4MTkxYTVjZjVlLi42ZjE1ZTdlMDE4ZTI0ZTRhNzBhM2E1NWQzMDViM2NhNTRiMjM0ZDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMTcyLDcgKzIxNzIsNiBAQAogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVu
ZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQz
MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTgg
LyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFu
aW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcyQUI5
QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBQjlBMUYyNTVBOUVBNjAwRTZF
QkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4
MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgx
RSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAw
N0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5o
ICovOyB9OwpAQCAtOTk5NSw3ICs5OTk0LDYgQEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgz
IC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4
NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdN
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQy
MjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDUyLDcgKzI2NDUwLDYgQEAKIAkJCQkzMTRCRTNB
NTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJ
NzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEz
MzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MkFCOUExRjI1
NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLywKIAkJCQlCMjc1MzU1
MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAw
MkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0
aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTMzNDg2LDcgKzMzNDgzLDYgQEAKIAkJCQlBODE4
NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5h
dGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNF
RDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NG
MDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApp
bmRleCBmZTAxNDUzMWI2OWI0NGQ5ZDdkOTAzYTI0MzI0ZjU1ODc1M2NiMzI0Li45YThkMjI4MWM2
MjEwNGM4ZDNiMTYxZTQ2ZWUyZGFmODY0YzUzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0zNywxMSArMzcsOSBAQCBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSkpOwogfQogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdl
OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK1JlZjxOYXRp
dmVJbWFnZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShPYnNlcnZlciYgb2JzZXJ2ZXIsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
aWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlLCByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShvYnNl
cnZlciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7CiB9CiAKIE5hdGl2ZUltYWdlOjpO
YXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKQEAgLTUwLDggKzQ4
LDggQEAgTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9y
bUltYWdlKQogewogfQogCi1OYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICA6IG1fcGxhdGZvcm1JbWFnZShwbGF0Zm9ybUlt
YWdlKQorTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKE9ic2VydmVyJiBvYnNlcnZlciwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICA6
IG1fb2JzZXJ2ZXIoJm9ic2VydmVyKQogICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogfQpAQCAtNjIsNCArNjAsMjggQEAg
TmF0aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCiAgICAgICAgIG1fb2JzZXJ2ZXItPnJlbGVhc2VO
YXRpdmVJbWFnZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmF0
aXZlSW1hZ2U6OnNldE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQo
IW1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXIgPSAmb2JzZXJ2ZXI7CisgICAgbV9wbGF0Zm9y
bUltYWdlID0gbnVsbHB0cjsKK30KKwordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJPYnNlcnZlcigp
Cit7CisgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIGVuc3VyZVBsYXRmb3JtSW1hZ2UoKTsK
KyAgICBtX29ic2VydmVyID0gbnVsbHB0cjsKK30KKworY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
TmF0aXZlSW1hZ2U6OmVuc3VyZVBsYXRmb3JtSW1hZ2UoKQoreworICAgIGlmICghbV9wbGF0Zm9y
bUltYWdlKSB7CisgICAgICAgIEFTU0VSVChtX29ic2VydmVyKTsKKyAgICAgICAgbV9wbGF0Zm9y
bUltYWdlID0gbV9vYnNlcnZlci0+cGxhdGZvcm1JbWFnZU9mTmF0aXZlSW1hZ2UobV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKyAgICBBU1NFUlQobV9wbGF0Zm9ybUltYWdl
KTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCA1ODhiMWMwNjU0MTc3ZDE3YmFmMDc0OTIxYzRjYjA5MGMzMjIwM2M0Li44N2I5NzU3NDA4
ODVmYzY3NGZiNGM5NzNjOGNhNjNkZGY1YmU2NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTMzLDM5ICszMyw0MyBAQAogI2luY2x1
ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJl
ZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmF0aXZlSW1hZ2U+
IHsKK2NsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBPYnNlcnZl
ciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIHBsYXRm
b3JtSW1hZ2VPZk5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgeyB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBPYnNlcnZlcigpID0gZGVm
YXVsdDsKICAgICB9OwogCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBS
ZWY8TmF0aXZlSW1hZ2U+IGNyZWF0ZShPYnNlcnZlciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKIAotICAgIGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtSW1hZ2U7IH0KKyAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZSY+KCp0aGlzKS5lbnN1cmVQbGF0
Zm9ybUltYWdlKCk7IH0KICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgc2l6ZSgpIGNvbnN0Owog
ICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKSB7
IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T2Jz
ZXJ2ZXIoT2JzZXJ2ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyT2JzZXJ2ZXIo
KTsKKwogICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKIAogcHJpdmF0ZToKICAgICBOYXRpdmVJ
bWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOwotICAgIE5hdGl2ZUltYWdlKGNvbnN0IFBsYXRmb3Jt
SW1hZ2VQdHImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIE5hdGl2ZUltYWdl
KE9ic2VydmVyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBlbnN1cmVQbGF0Zm9ybUltYWdlKCk7
CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIG1fcGxhdGZvcm1JbWFnZTsKICAgICBPYnNlcnZlciog
bV9vYnNlcnZlciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNDlmM2IxYWZlNTM5MGE5ZjlhNGEyYmIzOTY1MTg3OWNkZmJmMTQwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi11c2luZyBOYXRpdmVJbWFnZVJlZmVyZW5jZSA9IFJlZjxOYXRpdmVJ
bWFnZT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKaW5k
ZXggZmRjN2U3ZDY1ZmRjYTkxM2U3MGNjOTg2ODJlYzNjNDQzOTY3N2E3Yy4uMjQ1ZWYzZmY5ZTVh
OWQzNDAzYmJkZjI5YmUwNWIzM2RiYTAwMTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAg
LTM3LDEyICszNywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEludFNpemUgTmF0aXZlSW1h
Z2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBjYWlyb1N1cmZhY2VTaXplKG1fcGxhdGZv
cm1JbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIGNhaXJvU3VyZmFjZVNpemUocGxhdGZvcm1JbWFn
ZSgpLmdldCgpKTsKIH0KIAogYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewot
ICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFnZS5nZXQo
KSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRf
Y29udGVudChwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CiB9
CiAKIENvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdApAQCAt
NTAsMTAgKzUwLDEwIEBAIENvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdAogICAgIGlmIChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJu
IENvbG9yKCk7CiAKLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICBpZiAoY2Fpcm9fc3Vy
ZmFjZV9nZXRfdHlwZShwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQ
RV9JTUFHRSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwg
PSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBpeGVsID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRpcGxpZWQoYXNT
UkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXgg
MzQ0ODAwYmExZDdmNjZlNTRhZTNjM2Y4ZTJkMTIyNjA4Yzg1NTc0Mi4uY2JiMGI4Mjg1NTRiOGVk
M2Q2YTUwYzYxMGRlNDdkYzk3NzI2OGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTM1LDEyICszNSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoKSBjb25z
dAogewotICAgIHJldHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChtX3BsYXRmb3JtSW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOworICAgIHJl
dHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpLCBDR0lt
YWdlR2V0SGVpZ2h0KHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSkpOwogfQogCiBib29sIE5hdGl2ZUlt
YWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0gQ0dJ
bWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgIENHSW1hZ2VBbHBo
YUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8ocGxhdGZvcm1JbWFnZSgpLmdldCgpKTsK
ICAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAo
aW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCkBAIC01Niw3ICs1Niw3IEBAIENvbG9y
IE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogICAgICAgICByZXR1
cm4gQ29sb3IoKTsKIAogICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0Lmdl
dCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgp
KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCAxLCAxKSwgcGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIGlmICghcGl4ZWxb
M10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKQEAgLTY3LDcgKzY3
LDcgQEAgQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB2
b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VT
Ci0gICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1hZ2Uu
Z2V0KCkpOworICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UocGxhdGZvcm1J
bWFnZSgpLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXgg
YTY0YjQ1NjhiN2NjNTM1NzQ4YjBiZDYwYzEzMGY1OWQxMWQxZDUyYS4uZGM4NDQ2YTY2Njg4MTBl
ZjEzMTM2NDE0MTFlMTAxMGQ1NTA4ZjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAt
NDgsMTIgKzQ4LDEyIEBAIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5
KCkKIAogSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGxhdGZvcm1JbWFnZS0+R2V0UGl4ZWxTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2Uo
KS0+R2V0UGl4ZWxTaXplKCk7CiB9CiAKIGJvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29u
c3QKIHsKLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IG1fcGxhdGZvcm1JbWFn
ZS0+R2V0UGl4ZWxGb3JtYXQoKTsKKyAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9
IHBsYXRmb3JtSW1hZ2UoKS0+R2V0UGl4ZWxGb3JtYXQoKTsKICAgICByZXR1cm4gcGl4ZWxGb3Jt
YXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05PUkU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAppbmRleCA4NjljZWQxOTAzOWFlNjNhMzRmMDQ0MTUzYjIzZGY5ODNjYzU4NDUz
Li43ZWE4MWQ5ODMxYTQ4MGFjZWEzN2JkNjQ0NzBiZWE1OTdlYWU5YThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCkBAIC0yMjAsOSArMjIwLDEwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJ
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShp
bWFnZURhdGEpKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhh
bmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKIHsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShXVEZN
b3ZlKGltYWdlKSk7CisgICAgaWYgKGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlKSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1h
Z2UobWFrZVJlZigqYml0bWFwKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCmluZGV4IDk1ZThjOTc2MGRmYjYzYWEwODRjYzZmN2JhZjlkMmRmOWE3ODI5
OWMuLmEzNGY1OTFhMjJhNDNhZDYwZDc3MzJkNjQ2YzAzZDBmMjllZGQ4MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90
IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7Ci0gICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CisgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3Jl
YXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDhlMjdlMDRmNzcz
ODFhNmZiOTk1NzM0MmEyOWMyMTQ2MDcyZWVjZjguLmZlYzk2YTIyN2RiZjUzYzA0NjEwZmVlN2Vk
NDBjMTNmYTQ5MTRlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
CkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90
UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxv
Z2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVw
QW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
CiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAt
PiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIENh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1hZ2Up
CisgICAgQ2FjaGVOYXRpdmVJbWFnZShXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJl
bW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggYzMzMmQyZjcw
NGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2OS4uYTE2MjcyMzA2MDdmMGZiNzEzYTM0ZGZj
NDM0NDhiZmNhM2JlOTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDIsMTggKzQyLDM1IEBA
IEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBi
aXRtYXAsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2Ut
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3NoYXJlYWJsZUJpdG1hcHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgV1RGTW92ZShiaXRtYXApKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fbmF0aXZlSW1hZ2VzLmFkZChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIE5hdGl2ZUltYWdlOjpjcmVhdGUoKnRoaXMsIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpOworfQorCitQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZVJlc291cmNl
Q2FjaGU6OnBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gYml0bWFw
ID0gbV9zaGFyZWFibGVCaXRtYXBzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVQbGF0ZnJvbUltYWdlKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fbmF0aXZlSW1hZ2VzLnJl
bW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorCisgICAgYXV0byBpdCA9IG1fbmF0
aXZlSW1hZ2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQg
IT0gbV9uYXRpdmVJbWFnZXMuZW5kKCkpIHsKKyAgICAgICAgaXQtPnZhbHVlLT5jbGVhck9ic2Vy
dmVyKCk7CisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShpdCk7CisKKyAgICAgICAgYXV0
byByZW1vdmVkID0gbV9zaGFyZWFibGVCaXRtYXBzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNv
dXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggMWYyMTA1OGUzM2ExODc1YmJk
N2Y3MmMwMTIzYzY1MDNlYzc5OWIwYi4uNmQxYTQzYjQxODc2N2JjZTc4ZTM2MzAyYWNlYTVlNzM5
MmIzODhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0zMCwyNyArMzAsMjkgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7Ci0KLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgeworY2xhc3MgUmVt
b3RlUmVzb3VyY2VDYWNoZSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2
b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFNoYXJl
YWJsZUJpdG1hcD4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYg
aW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25z
dCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CiAKIHByaXZhdGU6CisgICAgdXNpbmcgU2hhcmVhYmxlQml0
bWFwSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8U2hhcmVhYmxlQml0bWFwPj47CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
IHBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgb3ZlcnJpZGU7CisKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9p
bWFnZUJ1ZmZlcnM7CiAgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1h
Z2VzOworICAgIFNoYXJlYWJsZUJpdG1hcEhhc2hNYXAgbV9zaGFyZWFibGVCaXRtYXBzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQppbmRleCA5NzA4NzY0OTVmYjFhY2M5MDRjMWVhMjUwNjkwOTNiMjAwZWIyNTVhLi5h
Y2ZiMjAxZmZlMTZhNTc3NTlmOTdiMjBhMjBlM2JmYzNjYjAyYWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOCw3ICsyMTgsNiBAQCBkZWYgdHlwZXNf
dGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRl
bnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAg
ICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDZlYmZlYzdmNzgxYzFjNWIxZDQ5ZmVi
ODI4MmRhOGVjMjZhMzRhYTQuLjU2MDEzNDEyNmRlN2UyMWY1ZmIxY2M4ZjI2MTFiMjI2ZTZiNjgy
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yNywxNiArMjcs
MTIgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgVVNFKENHKQog
I2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
I2VuZGlmCi0KLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5o
PgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCkBAIC0xMzMsMTYgKzEyOSwyMiBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQ0dJbWFnZVJlZiB0aGF0IGRpcmVjdGx5IHJlZmVy
ZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0
byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0
bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbWFrZUNHSW1hZ2Uo
KTsKKyAgICAKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmcm9tSW1h
Z2UoKSB7IHJldHVybiBtYWtlQ0dJbWFnZUNvcHkoKTsgfQogI2VsaWYgVVNFKENBSVJPKQogICAg
IC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0
aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3
aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29u
J3QgY2hhbmdlLgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOworICAgIAorICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZyb21J
bWFnZSgpIHsgcmV0dXJuIGNyZWF0ZUNhaXJvU3VyZmFjZSgpOyB9CiAjZWxpZiBVU0UoRElSRUNU
MkQpCiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDEx
RGV2aWNlMSosIElEMkQxUmVuZGVyVGFyZ2V0Kik7CiAgICAgSURYR0lTdXJmYWNlMSogZHhTdXJm
YWNlKCkgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CiAgICAgdm9pZCBjcmVhdGVTaGFyZWRS
ZXNvdXJjZSgpOwogICAgIHZvaWQgZGlzcG9zZVNoYXJlZFJlc291cmNlKCk7CiAgICAgdm9pZCBs
ZWFrU2hhcmVkUmVzb3VyY2UoKTsKKyAgICAKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
IGNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOzsgfQogI2VuZGlmCiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIwYmI0MDZjMmNmYmRlMTEzZTliLi5lNzk4ZTkx
MmU0N2IwZDhkMGYwMzhlN2Y3NmQ3MGZjMDZhZjZlY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0xlbmd0aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaD4KQEAgLTExMDAsNTkgKzEwOTksNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8
SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdl
SGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2
ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8TmF0aXZlSW1hZ2U+
JiBpbWFnZSkKLXsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsg
fSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwotCi0gICAgZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4dDsKLSAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXpl
KSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7Ci0KLSAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGU7Ci0gICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKLQotICAgIGVu
Y29kZXIgPDwgaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwotICAgIGVuY29k
ZXIgPDwgaGFuZGxlOwotfQotCi1PcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENv
ZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBP
cHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7Ci0gICAgZGVjb2RlciA+PiBk
aWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7Ci0gICAgaWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRl
eHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0LnZhbHVlKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAKLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgIGlm
ICghYml0bWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBpbWFn
ZSA9IGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBuYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBpZiAo
IW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJu
IG1ha2VSZWYoKm5hdGl2ZUltYWdlKTsKLX0KLQogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZv
bnQpCiB7CiAgICAgZW5jb2RlciA8PCBmb250LT5vcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNGE5MzIxNTkxMzBjYjdiY2RlNTVl
MjExZTE3YzRiZWRlZjE3MDVkNi4uOTJhZjYxM2JkZmNlNzJmNDM1YzQwYjQzOGYyYjI4Y2Q0NDhm
NmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTQxOSwxMSArNDE5LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+IHsKLSAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gZGVj
b2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApp
bmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVjNTExOWRlNGI5NDQ1MDg3ZDRiLi43OWMwMzVhZGM4
YmVhYTdlMGIyZWUyZTRmMzMwZTlmMjcyZDUxYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMDAsMTMgKzEwMCw3IEBAIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFjCiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRt
YXAtPm1ha2VDR0ltYWdlQ29weSgpKTsKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSAgICByZXR1cm4g
bnVsbHB0cjsKLSNlbGlmIFVTRShDQUlSTykKLSAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwotI2VuZGlmCisgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSk7CiB9CiAK
IFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDM2YjAzZDM4MWVkMmM1MjQxY2Zj
ZDNmNWIzNTUxNzhiYjM4Y2Y2YTUuLjk0NTE1MjVmM2U5MTI5MzJlMzk4OWZjMTNhZTEwMTg2Yjdl
N2IwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTE3
Myw5ICsxNzMsOSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3VibWl0RGlz
cGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaQogICAgIH0KIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1h
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYo
aW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShoYW5kbGUsIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBiMDk1YTAwNjA1
NzRkOWI0NGE4ZDdhNTZkN2Y4NzE0ZWI1NmYyMGRjLi5mMjlhZDlhODI3MWE4MTVlN2FjYWZhZWVj
YzA5MzE5Yzg1ZGM0ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
QEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpO
YXRpdmVJbWFnZSYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhj
YzcxZTg4ZjY0MmI0YjUzNmU2OWFlMWU4OTM5ODljLi4wNTFkZGNkOTVmNWM3ZTg4MWQxM2Q0OGU3
YWFkYTdmMWJjZmE3OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBA
IC01NSwyMiArNTUsNTYgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmUKICAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKK2lubGluZSBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKK3sKKyAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKKworICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7
IH0pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBjb250ZXh0LT5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwg
RmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7CisgICAgcmV0dXJuIGJpdG1hcDsKK30KKwogdm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlKQogewotICAgIG1fbmF0aXZlSW1hZ2VzLmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAgICAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9i
c2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0aXZlSW1hZ2UoKQotICAgICAgICAv
LyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4KLSAgICAg
ICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7Ci0KLSAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHBy
b2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4KLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7Ci0gICAgICAgIHJldHVybiBtYWtl
V2Vha1B0cihpbWFnZSk7Ci0gICAgfSk7CisgICAgaWYgKG1fc2hhcmVhYmxlQml0bWFwcy5jb250
YWlucyhpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gYml0bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUlt
YWdlKGltYWdlKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSk7CisgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gU2V0IGl0c2VsZiBhcyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSBhbmQgZ2V0IHJpZCBv
ZiBpdHMgUGxhdGZvcm1JbWFnZVB0ci4KKyAgICBpbWFnZS5zZXRPYnNlcnZlcigqdGhpcyk7CisK
KyAgICAvLyBDYWNoZSB0aGUgYml0bWFwIHN1Y2ggdGhhdCBOYXRpdmVJbWFnZSB3aWxsIHN0aWxs
IGJlIGFibGUgZ2V0IGEgUGxhdGZvcm1JbWFnZVB0ci4KKyAgICBtX3NoYXJlYWJsZUJpdG1hcHMu
YWRkKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBtYWtlUmVmKCpiaXRtYXAp
KTsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIGNhY2hlIHRoaXMgcmVzb3VyY2Uu
CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShoYW5k
bGUsIGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKK30KKworUGxhdGZvcm1J
bWFnZVB0ciBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUlt
YWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGF1dG8gYml0bWFwID0gbV9zaGFyZWFibGVCaXRtYXBzLmdldChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVQ
bGF0ZnJvbUltYWdlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1fbmF0aXZl
SW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmICghbV9z
aGFyZWFibGVCaXRtYXBzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhp
cyByZXNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IDA2ZGQ0ZjY4
YjkzYTllOTdmYTU0OWMwM2RmYzQ5ZGI5Mzg4OGJiZmIuLjliZDg4YTQyZmQ5OTU0NGJkOTI1YThj
Yzc3N2Q2OTA2OWE5NjJkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAt
MzgsNiArMzgsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CitjbGFzcyBTaGFyZWFibGVCaXRtYXA7
CiAKIGNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNTMsMTIgKzU0LDEzIEBAIHB1YmxpYzoK
ICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgTmF0aXZlSW1hZ2VI
YXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdl
YWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBTaGFyZWFibGVCaXRtYXBI
YXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJl
ZjxTaGFyZWFibGVCaXRtYXA+PjsKICAgICAKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
IHBsYXRmb3JtSW1hZ2VPZk5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVy
SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKLSAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJ
bWFnZXM7CisgICAgU2hhcmVhYmxlQml0bWFwSGFzaE1hcCBtX3NoYXJlYWJsZUJpdG1hcHM7CiAg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414728</attachid>
            <date>2020-11-20 14:33:41 -0800</date>
            <delta_ts>2020-12-03 21:10:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201120143340.patch</filename>
            <type>text/plain</type>
            <size>38515</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhZDJlMjgwNTdiYWE3
MjczOGQ4ZDZiMjMwZDRjOWJkM2I0YTM2Mi4uMTlhMDhmNDFkNzk4OTI0ZDMzMmE5NDFhMTA5OGFl
NTNjYWM0YmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTExLTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIHBsYW4gaXMgdG8gbWFrZSBOYXRpdmVJbWFnZSBiZSBiYWNrZWQgYnkgYSBTaGFyZWFibGVC
aXRtYXAgaWYgaXQgaXMKKyAgICAgICAgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBpbWFnZSBpbiB0
aGUgR1BVIFByb2Nlc3MuIFRvIHNhdmUgbWVtb3J5IHRoZSBtZW1iZXIKKyAgICAgICAgbV9wbGF0
Zm9ybUltYWdlIHdpbGwgYmUgc2V0IHRvIG51bGwgYnV0IHdlIHdpbGwgYWxsb3cgZ2V0dGluZyBh
bm90aGVyIAorICAgICAgICBQbGF0Zm9ybUltYWdlUHRyIGZyb20gdGhlIFNoYXJlYWJsZUJpdG1h
cCBpZiBpdCBpcyBuZWVkZWQgZm9yIG5vbiBHUFUKKyAgICAgICAgZW5hYmxlZCBjYXNlLgorCisg
ICAgICAgIC0tIE1ha2UgTmF0aXZlSW1hZ2U6OnNldEltYWdlU291cmNlIHNldCB0aGUgbWVtYmVy
IG1fcGxhdGZvcm1JbWFnZSB0byBudWxsLgorCisgICAgICAgIC0tIE1ha2UgTmF0aXZlSW1hZ2U6
OkltYWdlU291cmNlIGJlIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIGEgUGxhdGZvcm1JbWFnZVB0
cgorICAgICAgICAgICBpZiBtX3BsYXRmb3JtSW1hZ2UgaXMgbmVlZGVkIGJ1dCBpdCBpcyBudWxs
LgorCisgICAgICAgIC0tIE1ha2UgTmF0aXZlSW1hZ2U6OnBsYXRmb3JtSW1hZ2UoKSBlbnN1cmUg
bV9wbGF0Zm9ybUltYWdlIGlzIGEgdmFsaWQKKyAgICAgICAgICAgcG9pbnRlci4gTWFrZSBhbGwg
dGhlIE5hdGl2ZUltYWdlIGZ1bmN0aW9ucyB1c2UgdGhpcyBtZXRob2QgaW5zdGVhZAorICAgICAg
ICAgICBvZiBhY2Nlc3NpbmcgdGhlIG1lbWJlciBtX3BsYXRmb3JtSW1hZ2UgZGlyZWN0bHkuCisK
KyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
ZXRJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6ZW5zdXJlUGxh
dGZvcm1JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpJbWFnZVNvdXJjZTo6cmVsZWFzZU5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05h
dGl2ZUltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0FscGhhIGNvbnN0
KToKKwogMjAyMC0xMS0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgaW5saW5lLWJsb2NrCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEy
MzQwMzgwMDVjMzA2OTM3Yjc0OTU5MWNhN2EzZGJlOTkwZmQyNWIuLjViNmM2NmY0Nzg1MGNiNTIz
ZGM0MDAxYWI0MGZiYzljYTU2ZmRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAt
MTEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaGFyZSB0aGUgTmF0aXZlSW1hZ2Ugd2l0aCBHUFUgUHJvY2VzcyB0aHJvdWdo
IGEgU2hhcmVhYmxlQml0bWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaDoKKyAgICAgICAgV2hlbiB0aGUgbWVzc2FnZSAnQ2FjaGVOYXRpdmVJbWFn
ZScgaXMgcmVjZWl2ZWQsIGEgUGxhdGZvcm1JbWFnZSB3aWxsIGJlCisgICAgICAgIGNyZWF0ZWQg
ZnJvbSB0aGUgU2hhcmVhYmxlQml0bWFwIGFuZCBhIE5hdGl2ZUltYWdlIHdpbGwgYmUgYWRkZWQg
dG8KKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aXRoIHRoZSBzYW1lIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBvZiB0aGUKKyAgICAgICAgV2ViUHJvY2VzcyBOYXRpdmVJbWFnZS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVQbGF0ZnJvbUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6
ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZl
SW1hZ2U+Pjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICBDb2RlIGNsZWFudXAuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cGxhdGZvcm1J
bWFnZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgIFdoZW4gYSBOYXRpdmVJ
bWFnZSBpcyBjYWNoZWQgd2hlbiBEaXNwbGF5TGlzdCByZWNvcmRpbmcsIGEgU2hhcmVhYmxlQml0
bWFwCisgICAgICAgIHdpbGwgYmUgY3JlYXRlZCB0byByZXBsYWNlIHRoZSBQbGF0b3JtSW1hZ2VQ
dHIgb2YgdGhpcyBOYXRpdmVJbWFnZS4gVGhlCisgICAgICAgIGhhbmRsZSBvZiB0aGUgU2hhcmVh
YmxlQml0bWFwIHdpdGggdGhlIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBvZiB0aGUKKyAg
ICAgICAgTmF0aXZlSW1hZ2Ugd2lsbCBiZSBzZW50IHRvIHRoZSBHUFUgUHJvY2VzcyB0byBiZSBj
YWNoZWQgdGhlcmUgYXMgd2VsbC4KKwogMjAyMC0xMS0yMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCBmb3IgbXkgYnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDIzZTE1M2RhM2M2N2RlMTdhMjUyYmVmMWNhYjI2ODdk
NDM5MzA2ZC4uN2U4OWUzYmI0NjcxNmY3N2YzZDVkMjUwNzExM2JiOGUzYzMyY2EzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xMjI4LDcgKzEyMjgsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRl
Q2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUmVmZXJlbmNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZmNhZmMxMWM3YjA0YWFmNDQxMGRkNmFjMmQ0MTRhOTgyZGJlMmIyNi4u
M2YzNDk3OTUwOWM5YmJmNGM3ZDg5Y2UzNzkyZjQ0ZWRjZjg3Mzk5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4OSw3ICsy
MTg5LDYgQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNE
Njg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4
MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MkFCOUEyMTI1NUE5RkRFMDBF
NkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJ
bWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1
MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4
MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTEw
MDY5LDcgKzEwMDY4LDYgQEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJl
bXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyQUI5QTFGMjU1
QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJB
QzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VC
dWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNF
MTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI2NTQ4LDcgKzI2NTQ2LDYgQEAKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAx
NDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJNzI1MjM5NkIyNTRD
QURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0
MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVC
RjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAy
Q0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBh
dGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0
YXRlLmNwcCAqLywKQEAgLTMzNjAwLDcgKzMzNTk3LDYgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0Mw
MDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5
NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZE
NTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRp
dmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1Mjkw
MDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAppbmRleCBmZTAxNDUz
MWI2OWI0NGQ5ZDdkOTAzYTI0MzI0ZjU1ODc1M2NiMzI0Li41NjFlYjYzN2FjNmU5OTEzNDE4NTEz
MjNlMGM3Y2Q3MDYzNTNlYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0zMCwzNiArMzAsNDAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZv
cm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUlt
YWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
TmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgIDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpCisgICAgLCBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKIH0KIAotTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBs
YXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQotICAgIDogbV9wbGF0Zm9ybUltYWdlKFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSkpCi0gICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCitOYXRpdmVJbWFnZTo6
fk5hdGl2ZUltYWdlKCkKIHsKKyAgICBpZiAobV9pbWFnZVNvdXJjZSkKKyAgICAgICAgbV9pbWFn
ZVNvdXJjZS0+cmVsZWFzZU5hdGl2ZUltYWdlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIH0KIAotTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
IHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCi0gICAgOiBtX3BsYXRmb3JtSW1hZ2UocGxhdGZvcm1JbWFnZSkKLSAg
ICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKK3ZvaWQgTmF0aXZlSW1hZ2U6OnNldEltYWdlU291cmNlKEltYWdlU291cmNlJiBpbWFn
ZVNvdXJjZSkKIHsKKyAgICBBU1NFUlQoIW1faW1hZ2VTb3VyY2UpOworICAgIG1faW1hZ2VTb3Vy
Y2UgPSAmaW1hZ2VTb3VyY2U7CisgICAgbV9wbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIH0KIAot
TmF0aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCitjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBOYXRp
dmVJbWFnZTo6ZW5zdXJlUGxhdGZvcm1JbWFnZSgpCiB7Ci0gICAgaWYgKG1fb2JzZXJ2ZXIpCi0g
ICAgICAgIG1fb2JzZXJ2ZXItPnJlbGVhc2VOYXRpdmVJbWFnZShtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UpIHsKKyAgICAgICAgQVNTRVJU
KG1faW1hZ2VTb3VyY2UpOworICAgICAgICBtX3BsYXRmb3JtSW1hZ2UgPSBtX2ltYWdlU291cmNl
LT5wbGF0Zm9ybUltYWdlRm9ySWRlbnRpZmllcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgfQorICAgIEFTU0VSVChtX3BsYXRmb3JtSW1hZ2UpOworICAgIHJldHVybiBtX3Bs
YXRmb3JtSW1hZ2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDU4OGIxYzA2NTQxNzdk
MTdiYWYwNzQ5MjFjNGNiMDkwYzMyMjAzYzQuLjlkZWI3YTFjZWM4NjkxNjhhZWU1ZmU3NGZhZjQ5
YTUzOWRmMTg1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaApAQCAtMzMsNDIgKzMzLDQyIEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFn
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOYXRpdmVJbWFnZT4geworY2xhc3MgTmF0aXZlSW1h
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBjbGFzcyBJbWFn
ZVNvdXJjZSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVm
YXVsdDsKKyAgICAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2UoKSA9IGRlZmF1bHQ7CisgICAgICAg
IHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlRm9ySWRlbnRpZmllcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICBJbWFnZVNvdXJj
ZSgpID0gZGVmYXVsdDsKICAgICB9OwogCi0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7Ci0gICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKIAotICAg
IGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtSW1hZ2U7IH0KKyAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZSY+KCp0aGlzKS5lbnN1
cmVQbGF0Zm9ybUltYWdlKCk7IH0KICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgc2l6ZSgpIGNv
bnN0OwogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2UmKTsKICAgICB2b2lkIGNsZWFyU3ViaW1hZ2VzKCk7
CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmKTsKLSAgICBO
YXRpdmVJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgZW5zdXJlUGxhdGZvcm1JbWFnZSgpOwogCiAgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07
CisgICAgSW1hZ2VTb3VyY2UqIG1faW1hZ2VTb3VyY2UgeyBudWxscHRyIH07CiAgICAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0OWYzYjFhZmU1
MzkwYTlmOWE0YTJiYjM5NjUxODc5Y2RmYmYxNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5n
IE5hdGl2ZUltYWdlUmVmZXJlbmNlID0gUmVmPE5hdGl2ZUltYWdlPjsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCBmZGM3ZTdkNjVmZGNhOTEzZTcw
Y2M5ODY4MmVjM2M0NDM5Njc3YTdjLi4yNDVlZjNmZjllNWE5ZDM0MDNiYmRmMjliZTA1YjMzZGJh
MDAxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9OYXRpdmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNhaXJvU3VyZmFjZVNpemUobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKKyAgICBy
ZXR1cm4gY2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogfQogCiBib29s
IE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKIH0KIAogQ29sb3IgTmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CkBAIC01MCwxMCArNTAsMTAgQEAgQ29sb3Ig
TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKHNpemUo
KSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChj
YWlyb19zdXJmYWNlX2dldF90eXBlKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VS
RkFDRV9UWVBFX0lNQUdFKQorICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQogICAgICAgICByZXR1
cm4gQ29sb3IoKTsKIAotICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3BsYXRmb3JtSW1hZ2Uu
Z2V0KCkpKTsKKyAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNp
Z25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEocGxhdGZvcm1JbWFnZSgpLmdldCgp
KSk7CiAgICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdC
IHsgKnBpeGVsIH0pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCAzNDQ4MDBiYTFkN2Y2NmU1NGFlM2Mz
ZjhlMmQxMjI2MDhjODU1NzQyLi5jYmIwYjgyODU1NGI4ZWQzZDZhNTBjNjEwZGU0N2RjOTc3MjY4
YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFNp
emUoQ0dJbWFnZUdldFdpZHRoKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWln
aHQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdl
dFdpZHRoKHBsYXRmb3JtSW1hZ2UoKS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQocGxhdGZvcm1J
bWFnZSgpLmdldCgpKSk7CiB9CiAKIGJvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QK
IHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1fcGxh
dGZvcm1JbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdl
dEFscGhhSW5mbyhwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAgIHJldHVybiAoaW5mbyA+PSBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFG
aXJzdCk7CiB9CiAKQEAgLTU2LDcgKzU2LDcgQEAgQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBp
eGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIDEsIDEpLCBtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dERyYXdJ
bWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBwbGF0Zm9y
bUltYWdlKCkuZ2V0KCkpOwogCiAgICAgaWYgKCFwaXhlbFszXSkKICAgICAgICAgcmV0dXJuIENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrOwpAQCAtNjcsNyArNjcsNyBAQCBDb2xvciBOYXRpdmVJbWFn
ZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFy
U3ViaW1hZ2VzKCkKIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckltYWdlKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CisgICAgU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShwbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCBhNjRiNDU2OGI3Y2M1MzU3NDhiMGJk
NjBjMTMwZjU5ZDExZDFkNTJhLi5kYzg0NDZhNjY2ODgxMGVmMTMxMzY0MTQxMWUxMDEwZDU1MDhm
MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgc3RhdGlj
IElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQogCiBJbnRTaXplIE5hdGl2ZUlt
YWdlOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhl
bFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSgpLT5HZXRQaXhlbFNpemUoKTsKIH0K
IAogYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIEQyRDFfUElYRUxf
Rk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwor
ICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gcGxhdGZvcm1JbWFnZSgpLT5HZXRQ
aXhlbEZvcm1hdCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9B
TFBIQV9NT0RFX0lHTk9SRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGY1OWMz
ODcyNGY4ZjYyZWU3ODAyYjkyMDIzN2Y2ODg0NzNkN2ZiZjkuLjdiODIxNjk1NTAyMDJkN2Y3NzA0
ODFhNWI3MjRlNjM5NDcwOGU0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTIyMyw5
ICsyMjMsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFn
ZT4mJiBpbWFnZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFn
ZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsKKyAgICBpZiAo
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpKSB7CisgICAgICAg
IGlmIChhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0ZVBsYXRm
cm9tSW1hZ2UoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmltYWdlKSk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1
MjQ5NDg5ZDcwNWM3OC4uNTlhYTBmZTJkYjUzYWJkZTlkYzI2MzI4Y2ZiZDQ1OTgwMTMzYTBmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKLSAg
ICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAg
ICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJl
bW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXgg
OGUyN2UwNGY3NzM4MWE2ZmI5OTU3MzQyYTI5YzIxNDYwNzJlZWNmOC4uZmVjOTZhMjI3ZGJmNTNj
MDQ2MTBmZWU3ZWQ0MGMxM2ZhNDkxNGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
bWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpG
bG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNl
dCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9u
b3VzCi0gICAgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZSBu
YXRpdmVJbWFnZSkKKyAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKICAg
ICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDFm
MjEwNThlMzNhMTg3NWJiZDdmNzJjMDEyM2M2NTAzZWM3OTliMGIuLmNiYjgwODgwODY0NzIxOWVi
ZDZlMDQyOTU0ZGM3Y2RkOWQzYjJlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMzAsMTIgKzMwLDkg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
YXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0KIGNsYXNzIFJlbW90ZVJlc291cmNlQ2Fj
aGUgewogcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1NzNlZDNkOGVlOWJiZjQx
MDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1Li5jMWM4Yjc1MjEwNmZmZjczYzIxYzI0OTJkY2IxNzVm
MmNkYjYwNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTIxOCw3ICsyMTgsNiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpO
YXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dl
YkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmlu
ZGV4IDZlYmZlYzdmNzgxYzFjNWIxZDQ5ZmViODI4MmRhOGVjMjZhMzRhYTQuLjU2MDEzNDEyNmRl
N2UyMWY1ZmIxY2M4ZjI2MTFiMjI2ZTZiNjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCkBAIC0yNywxNiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1JbWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0FJUk8pCi0jaW5j
bHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQp
CkBAIC0xMzMsMTYgKzEyOSwyMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQ0dJ
bWFnZVJlZiB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4K
ICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNv
bnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbWFrZUNHSW1hZ2UoKTsKKyAgICAKKyAgICBXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSB7IHJldHVybiBtYWtlQ0dJbWFnZUNvcHko
KTsgfQogI2VsaWYgVVNFKENBSVJPKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcEltYWdl
IHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8v
IFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMg
b2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIAorICAgIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZyb21JbWFnZSgpIHsgcmV0dXJuIGNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpOyB9CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBj
cmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNlMSosIElEMkQxUmVuZGVyVGFyZ2V0Kik7
CiAgICAgSURYR0lTdXJmYWNlMSogZHhTdXJmYWNlKCkgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgp
OyB9CiAgICAgdm9pZCBjcmVhdGVTaGFyZWRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlzcG9zZVNo
YXJlZFJlc291cmNlKCk7CiAgICAgdm9pZCBsZWFrU2hhcmVkUmVzb3VyY2UoKTsKKyAgICAKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSB7IHJldHVy
biBudWxscHRyOzsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5YzI2ZGI0ZTlhOWY2YmE3MmU0ODIw
YmI0MDZjMmNmYmRlMTEzZTliLi5lNzk4ZTkxMmU0N2IwZDhkMGYwMzhlN2Y3NmQ3MGZjMDZhZjZl
Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlv
bk9wdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KQEAgLTExMDAsNTkgKzEw
OTksNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWY8TmF0aXZlSW1hZ2U+JiBpbWFnZSkKLXsKLSAgICBhdXRvIGltYWdlU2l6
ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotCi0gICAgZW5jb2RlciA8PCAhIWdy
YXBoaWNzQ29udGV4dDsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7
Ci0KLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgYml0bWFwLT5jcmVh
dGVIYW5kbGUoaGFuZGxlKTsKLQotICAgIGVuY29kZXIgPDwgaW1hZ2UtPnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpOwotICAgIGVuY29kZXIgPDwgaGFuZGxlOwotfQotCi1PcHRpb25hbDxS
ZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFwaGlj
c0NvbnRleHQ7Ci0gICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7Ci0gICAg
aWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3Jh
cGhpY3NDb250ZXh0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAKLSAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShoYW5kbGUpOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgYXV0byBpbWFnZSA9IGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKLSAg
ICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBuYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUobmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSwgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIG1ha2VSZWYoKm5hdGl2ZUltYWdlKTsKLX0KLQog
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCiB7CiAgICAgZW5jb2RlciA8PCBmb250LT5v
cmlnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNi4uOTJhZjYxM2Jk
ZmNlNzJmNDM1YzQwYjQzOGYyYjI4Y2Q0NDhmNmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQxOSwxMSArNDE5LDYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdl
SGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVm
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA4NTVjODk0OTY2YzU4N2JiMGU2YWVjNTEx
OWRlNGI5NDQ1MDg3ZDRiLi43OWMwMzVhZGM4YmVhYTdlMGIyZWUyZTRmMzMwZTlmMjcyZDUxYWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
CkBAIC0xMDAsMTMgKzEwMCw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAKIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpCi0gICAgcmV0dXJu
IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpKTsKLSNlbGlm
IFVTRShESVJFQ1QyRCkKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbGlmIFVTRShDQUlSTykKLSAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNl
KCkpOwotI2VuZGlmCisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNy
ZWF0ZVBsYXRmcm9tSW1hZ2UoKSk7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVS
ZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IGU1MmNhNDA3MzVlOTc5ZTM4N2Q4M2QxNGQyN2M0OTY2MTc4ZWNmYzcuLmJlOTViNjZl
YzI2YjhlM2ZiZTlmZjgwNTVmYTA3ZjRhYzYzZGJiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaQogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2Fj
aGVOYXRpdmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2
Li4zNmNlYzkxM2E4ZTAzZmYzMjUwZDVmMWRmOTk5MTc3Mzc0ZTY1NWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHN1
Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOworICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZv
ckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhjYzcxZTg4ZjY0MmI0YjUzNmU2OWFlMWU4OTM5ODlj
Li41ZmFiMTM0ODczMGJjZTU2OWZiODgyYzBjZGRkOTY1MGY4YjJjYjI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC01NSwyMiArNTUsNTYgQEAgdm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmUKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKK2lubGlu
ZSBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJv
bU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRvIGltYWdlU2l6ZSA9
IGltYWdlLnNpemUoKTsKKworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IH0pOworICAgIGlmICghYml0bWFwKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAKKyAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwg
RmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7Cisg
ICAgcmV0dXJuIGJpdG1hcDsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogewotICAgIG1fbmF0aXZlSW1hZ2Vz
LmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAg
ICAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxl
YXNlTmF0aXZlSW1hZ2UoKQotICAgICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdl
IGlzIGJlaW5nIGRlbGVsZXRlZC4KLSAgICAgICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7Ci0K
LSAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4K
LSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7Ci0gICAgICAgIHJldHVybiBtYWtlV2Vha1B0cihpbWFnZSk7Ci0gICAgfSk7CisgICAg
aWYgKG1fc2hhcmVhYmxlQml0bWFwcy5jb250YWlucyhpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYml0bWFwID0gY3JlYXRl
U2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBpZiAoIWJpdG1hcCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwor
ICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKGhhbmRsZS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2V0IGl0c2VsZiBhcyB0aGUgSW1hZ2VTb3Vy
Y2Ugb2YgdGhlIE5hdGl2ZUltYWdlLgorICAgIGltYWdlLnNldEltYWdlU291cmNlKCp0aGlzKTsK
KworICAgIC8vIENhY2hlIHRoZSBiaXRtYXAgc3VjaCB0aGF0IE5hdGl2ZUltYWdlIHdpbGwgc3Rp
bGwgYmUgYWJsZSBnZXQgYSBQbGF0Zm9ybUltYWdlUHRyLgorICAgIG1fc2hhcmVhYmxlQml0bWFw
cy5hZGQoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIG1ha2VSZWYoKmJpdG1h
cCkpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJj
ZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGhh
bmRsZSwgaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworfQorCitQbGF0Zm9y
bUltYWdlUHRyIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cGxhdGZvcm1JbWFnZUZvcklkZW50
aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byBiaXRtYXAgPSBtX3NoYXJlYWJsZUJpdG1hcHMuZ2V0KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBiaXRtYXAtPmNyZWF0
ZVBsYXRmcm9tSW1hZ2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmICghbV9uYXRp
dmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKCFt
X3NoYXJlYWJsZUJpdG1hcHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0
aGlzIHJlc291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggMDZkZDRm
NjhiOTNhOWU5N2ZhNTQ5YzAzZGZjNDlkYjkzODg4YmJmYi4uYjY4YmIxYWZiYjFhNmEzYWY4NjY3
ZGRiN2E0MWI0NDU3NTdkMWE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBA
IC0zOCw4ICszOCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKK2NsYXNzIFNoYXJlYWJsZUJpdG1h
cDsKIAotY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGljIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpPYnNlcnZlciB7CitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OkltYWdlU291cmNlIHsKIHB1YmxpYzoKICAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAK
QEAgLTUzLDEyICs1NCwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFw
JiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBwcml2
YXRlOgotICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47
CisgICAgdXNpbmcgU2hhcmVhYmxlQml0bWFwSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8U2hhcmVhYmxlQml0bWFwPj47CiAgICAgCisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlRm9ySWRlbnRpZmllcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVsZWFzZU5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
b3ZlcnJpZGU7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7Ci0gICAg
TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIFNoYXJlYWJsZUJpdG1hcEhh
c2hNYXAgbV9zaGFyZWFibGVCaXRtYXBzOwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415383</attachid>
            <date>2020-12-03 21:10:44 -0800</date>
            <delta_ts>2020-12-03 21:15:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201203211044.patch</filename>
            <type>text/plain</type>
            <size>26472</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ3M2MxMzExMjYxOWFi
OTdlYTBjYmY0MjFhMzg1ZTkzZTM1ODA4My4uMWZkNDAwYzZiYjNhMTI4YmRhMWJhZjliMDg2YTBi
YTVlNDZiZTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTEyLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGVsZXRlIGEgTmF0aXZlSW1hZ2UgY29uc3RydWN0b3IgYW5kIGEgY3JlYXRlIG1ldGhvZCB3aGlj
aCB3ZXJlIHVzZWQgYnkKKyAgICAgICAgdGhlIGRlbGV0ZWQgSVBDIGNvZGVycyBvZiB0aGUgTmF0
aXZlSW1hZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2Uu
aDogUmVtb3ZlZC4KKwogMjAyMC0xMi0wMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KIAogICAgICAgICBJc3N1ZSBsb2dnaW5nIGluIHRvIE1pY3Jvc29mdCBUZWFt
cyBpZiBsb2dnZWQgaW50byBvdGhlciBNaWNyb3NvZnQgYWNjb3VudHMgYW5kIG5hdmlnYXRpbmcg
ZGlyZWN0bHkgdG8gdGVhbXMubWljcm9zb2Z0LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDI2MGU4ZWFjOTZl
YzA1MjM0OTdkMmU0NDgxYWQyZThjMWQ1MzQyLi4yMTJlNmVmOTE0ZmI5MjgzOTU5YzgxNDhhOTk3
ZjhjNTk4YzdkZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEyLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBJUEMgY29kZXJzIHRvIHRyYW5zZmVyIHRoZSBOYXRp
dmVJbWFnZSB0byB0aGUKKyAgICAgICAgR1BVUCwgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhpcyBs
b2dpYyB0byBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kCisgICAgICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuIFRoZSBOYXRpdmVJbWFnZSB3aWxsIGJlIHRyYW5zZmVyZWQgYXMgYSBoYW5k
bGUgb2YKKyAgICAgICAgU2hhcmVhYmxlQml0YW1wIGFuZCBhIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNh
Y2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGxhdGZyb21J
bWFnZSk6CisgICAgICAgIEFkZCB0aGlzIGhlbHBlciBmdW5jdGlvbiBhbmQgYXZvaWQgYWRkaW5n
IGRpcmVjdGl2ZSBjb2RlIGluIG1hbnkgcGxhY2VzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5h
dGl2ZUltYWdlPj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisKIDIwMjAt
MTItMDMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IEZB
TExCQUNLX1BMQVRGT1JNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjcyYTE2NjBhNWQ5ZmY4MDEzYjY5YWJiYjZhM2FhYTc4Yjli
ZTFmMS4uYzIxNDc4NDU4ZGZlZGViYjU0ZjMyYTc3Y2YwYzJiZTU1NzllYjhiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5
Miw3ICsyMTkyLDYgQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlC
QzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4
IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25G
cmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MkFCOUEyMTI1NUE5
RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAv
KiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsK
QEAgLTEwMDg4LDcgKzEwMDg3LDYgQEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAv
KiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyQUI5
QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFD
M0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NjA0LDcgKzI2NjAyLDYgQEAKIAkJCQkzMTRCRTNBNTFCMzEw
M0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJNzI1MjM5
NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFE
ODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MkFCOUExRjI1NUE5RUE2
MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUz
ODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZl
cnNhbFN0YXRlLmNwcCAqLywKQEAgLTMzNjYzLDcgKzMzNjYwLDYgQEAKIAkJCQlBODE4NzIyMzA5
NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4
NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5v
ZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAv
KiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFG
NkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAppbmRleCA1
ZDExMDBlY2U3MmMwNmM0YTE2MjJmZDc2NDZiNWU2MmI3YjNiMjIwLi4wYTMxNTU4NTAzNDk1ZTJk
ZTkzN2U3MjY5MzFlYzc4ODBjZjY5YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0zMCwyOCArMzAsMTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUo
UGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE5h
dGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdl
KSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUlt
YWdlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQotewotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UocGxhdGZvcm1JbWFnZSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7Ci19Ci0KLU5hdGl2ZUltYWdlOjpOYXRpdmVJbWFn
ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKK05hdGl2ZUltYWdlOjpOYXRpdmVJ
bWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1J
bWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQotICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQotewotfQot
Ci1OYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKLSAgICA6IG1fcGxhdGZvcm1JbWFnZShwbGF0Zm9ybUltYWdlKQogICAgICwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgK
aW5kZXggMGJhZTBhNDExN2Q5NzM5ODI5NmFkZjQ4YTZlYzQxNjRmNDQ1YjVkOC4uOTQ1YjhkZTk4
ZDRiOTg4Y2VkOWEyNjVkMTZlNTk0MDEzMWQxMzgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC00OSw4ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYp
OwotICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZv
cm1JbWFnZVB0ciYmLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfk5hdGl2
ZUltYWdlKCk7CiAKQEAgLTY4LDcgKzY3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE5h
dGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7Ci0gICAgTmF0aXZlSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgTmF0aXZl
SW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBtX3BsYXRmb3JtSW1hZ2U7CiAgICAgSGFzaFNldDxPYnNl
cnZlcio+IG1fb2JzZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA0OWYzYjFhZmU1MzkwYTlmOWE0YTJiYjM5NjUxODc5Y2RmYmYxNDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXVzaW5nIE5hdGl2ZUltYWdlUmVmZXJlbmNlID0gUmVmPE5hdGl2ZUltYWdl
PjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDZkZGViMDI3OTI5ZTUwNGY4M2IwYTE4NmM3ZWVhYjhlNWI5ZDY4NzIuLjA5ZTc4M2Y0MjU3Njc5
ZmYxOGNkNjY1MGM5YjFiNjA2MzQ0NTJkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTIyMyw5ICsyMjMsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0K
IAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRp
dmVJbWFnZT4mJiBpbWFnZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsKKyAg
ICBpZiAoYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0
ZVBsYXRmcm9tSW1hZ2UoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmltYWdl
KSk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMy
NjRmNTc1MjQ5NDg5ZDcwNWM3OC4uNTlhYTBmZTJkYjUzYWJkZTlkYzI2MzI4Y2ZiZDQ1OTgwMTMz
YTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRl
bnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdl
YkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYm
KTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYm
KTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVs
ZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
aW5kZXggOGUyN2UwNGY3NzM4MWE2ZmI5OTU3MzQyYTI5YzIxNDYwNzJlZWNmOC4uZmVjOTZhMjI3
ZGJmNTNjMDQ2MTBmZWU3ZWQ0MGMxM2ZhNDkxNGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKICAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5
bmNocm9ub3VzCi0gICAgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVy
ZW5jZSBuYXRpdmVJbWFnZSkKKyAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIERpZENyZWF0ZVNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cikKICAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggNmViZmVjN2Y3ODFjMWM1YjFkNDlmZWI4MjgyZGE4
ZWMyNmEzNGFhNC4uN2Y4ZWRmNDRjNmVjMGY2OWE3YTM0MzIxN2VlY2EyOTMyYmZhZjdmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTI3LDE2ICsyNywxMiBAQAog
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVk
ZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYK
LQotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjZW5k
aWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTEzMywxNiArMTI5LDIyIEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGNyZWF0ZXMgYSBDR0ltYWdlUmVmIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0
aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3
aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29u
J3QgY2hhbmdlLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYWtlQ0dJbWFnZSgpOworCisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQbGF0ZnJvbUltYWdlKCkgeyByZXR1
cm4gbWFrZUNHSW1hZ2VDb3B5KCk7IH0KICNlbGlmIFVTRShDQUlSTykKICAgICAvLyBUaGlzIGNy
ZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBi
aXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93
IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4K
ICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKworICAg
IFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZyb21JbWFnZSgpIHsgcmV0dXJu
IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOyB9CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRy
PElEMkQxQml0bWFwPiBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNlMSosIElEMkQx
UmVuZGVyVGFyZ2V0Kik7CiAgICAgSURYR0lTdXJmYWNlMSogZHhTdXJmYWNlKCkgeyByZXR1cm4g
bV9zdXJmYWNlLmdldCgpOyB9CiAgICAgdm9pZCBjcmVhdGVTaGFyZWRSZXNvdXJjZSgpOwogICAg
IHZvaWQgZGlzcG9zZVNoYXJlZFJlc291cmNlKCk7CiAgICAgdm9pZCBsZWFrU2hhcmVkUmVzb3Vy
Y2UoKTsKKworICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZyb21JbWFn
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWMyNmRiNGU5YTlm
NmJhNzJlNDgyMGJiNDA2YzJjZmJkZTExM2U5Yi4uZTc5OGU5MTJlNDdiMGQ4ZDBmMDM4ZTdmNzZk
NzBmYzA2YWY2ZWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGgu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aEJveC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFTZWxlY3Rpb25PcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg+CkBAIC0x
MTAwLDU5ICsxMDk5LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2ZUltYWdlPiYgaW1hZ2UpCi17Ci0gICAgYXV0
byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwotICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLQotICAgIGVuY29k
ZXIgPDwgISFncmFwaGljc0NvbnRleHQ7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSkpOwotCi0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGJp
dG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Ci0KLSAgICBlbmNvZGVyIDw8IGltYWdlLT5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLX0KLQot
T3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0OwotICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250
ZXh0OwotICAgIGlmICghZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRp
ZENyZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gaW1hZ2UgPSBiaXRtYXAtPmNyZWF0ZUlt
YWdlKCk7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIW5h
dGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgbmF0aXZlSW1h
Z2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFn
ZSk7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQogewogICAgIGVuY29kZXIg
PDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUxN2M0YmVkZWYxNzA1ZDYu
LjkyYWY2MTNiZGZjZTcyZjQzNWM0MGI0MzhmMmIyOGNkNDQ4ZjZhOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00MTksMTEgKzQxOSw2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsK
ICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+Jik7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7Ci19Owot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggODU1Yzg5NDk2NmM1ODdi
YjBlNmFlYzUxMTlkZTRiOTQ0NTA4N2Q0Yi4uNzljMDM1YWRjOGJlYWE3ZTBiMmVlMmU0ZjMzMGU5
ZjI3MmQ1MWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcApAQCAtMTAwLDEzICsxMDAsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwog
CiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKQot
ICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHko
KSk7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZWxpZiBVU0Uo
Q0FJUk8pCi0gICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZUNh
aXJvU3VyZmFjZSgpKTsKLSNlbmRpZgorICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1f
Yml0bWFwLT5jcmVhdGVQbGF0ZnJvbUltYWdlKCkpOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHks
IFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAppbmRleCBjOGEzMjMwZjk3OTgxOWY5ZTlkZjAzMzZlOTQ0YjBhMjk3N2Y4ZDEx
Li45MTgyYTUzMjc1NWE0NzA0ZGQzM2YxODI4MzM2YWU5ZGZlOTNkZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xODIsOSArMTgyLDkgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGkKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKGltYWdlKSksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggOTVmOGQyYjQxMmZiOTFkZjc3YzY4ZjEzNmIwMDc4
NmYwMjRkN2UyNi4uMzZjZWM5MTNhOGUwM2ZmMzI1MGQ1ZjFkZjk5OTE3NzM3NGU2NTVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVu
dGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKyAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBi
b29sIHdhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggZmU2NGYyMzhlNGU5NjNkODI5OGM0ODU0MTYxODk4
NDQ1MjQ2MWFkYi4uNmM3YTUxMzc4NTUyMWUzOTJhOGFhMzc0MDcyOWE1ZGMwNzQ2ODk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtNjEsMTcgKzYxLDQ0IEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwog
fQogCitpbmxpbmUgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJs
ZUJpdG1hcEZyb21OYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit7CisgICAgYXV0byBp
bWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CisKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlLnNpemUoKSwgeyB9KTsKKyAgICBpZiAoIWJpdG1h
cCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXpl
KSk7CisgICAgcmV0dXJuIGJpdG1hcDsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogewotICAgIG1fbmF0aXZl
SW1hZ2VzLmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkg
ewotICAgICAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBz
byByZWxlYXNlTmF0aXZlSW1hZ2UoKQotICAgICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2
ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4KLSAgICAgICAgaW1hZ2UuYWRkT2JzZXJ2ZXIoKnRo
aXMpOwotCi0gICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIGNhY2hlIHRoaXMgcmVz
b3VyY2UuCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZl
SW1hZ2UoaW1hZ2UpOwotICAgICAgICByZXR1cm4gbWFrZVdlYWtQdHIoaW1hZ2UpOwotICAgIH0p
OworICAgIGlmIChtX25hdGl2ZUltYWdlcy5jb250YWlucyhpbWFnZS5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYml0bWFwID0gY3Jl
YXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBpZiAoIWJpdG1h
cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKGhhbmRsZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihpbWFnZSkpOworCisgICAg
Ly8gU2V0IGl0c2VsZiBhcyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5h
dGl2ZUltYWdlKCkKKyAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5n
IGRlbGVsZXRlZC4KKyAgICBpbWFnZS5hZGRPYnNlcnZlcigqdGhpcyk7CisKKyAgICAvLyBUZWxs
IHRoZSBHUFUgcHJvY2VzcyB0byBjYWNoZSB0aGlzIHJlc291cmNlLgorICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaGFuZGxlLCBpbWFnZS5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikK
</data>
<flag name="commit-queue"
          id="432587"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415384</attachid>
            <date>2020-12-03 21:14:13 -0800</date>
            <delta_ts>2020-12-03 21:56:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201203211412.patch</filename>
            <type>text/plain</type>
            <size>27076</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ3M2MxMzExMjYxOWFi
OTdlYTBjYmY0MjFhMzg1ZTkzZTM1ODA4My4uMWI0NTZiMDcwODMyOTQ0OGYzYTJmYzE2ODk0Mjc0
Yjk2ZDYzODc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGVsZXRlIGEgTmF0aXZlSW1hZ2UgY29uc3RydWN0b3IgYW5kIGEgY3JlYXRlIG1ldGhvZCB3aGlj
aCB3ZXJlIHVzZWQgYnkKKyAgICAgICAgdGhlIGRlbGV0ZWQgSVBDIGNvZGVycyBvZiB0aGUgTmF0
aXZlSW1hZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oOiBSZW1vdmVkLgorCiAyMDIwLTEyLTAzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIElzc3VlIGxv
Z2dpbmcgaW4gdG8gTWljcm9zb2Z0IFRlYW1zIGlmIGxvZ2dlZCBpbnRvIG90aGVyIE1pY3Jvc29m
dCBhY2NvdW50cyBhbmQgbmF2aWdhdGluZyBkaXJlY3RseSB0byB0ZWFtcy5taWNyb3NvZnQuY29t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDFkMjYwZThlYWM5NmVjMDUyMzQ5N2QyZTQ0ODFhZDJlOGMxZDUzNDIuLjIx
MmU2ZWY5MTRmYjkyODM5NTljODE0OGE5OTdmOGM1OThjN2RlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMjAtMTItMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaGFyZSB0aGUgTmF0aXZlSW1hZ2Ugd2l0aCBHUFUg
UHJvY2VzcyB0aHJvdWdoIGEgU2hhcmVhYmxlQml0bWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIElQQyBj
b2RlcnMgdG8gdHJhbnNmZXIgdGhlIE5hdGl2ZUltYWdlIHRvIHRoZQorICAgICAgICBHUFVQLCB3
ZSBhcmUgZ29pbmcgdG8gbW92ZSB0aGlzIGxvZ2ljIHRvIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSBhbmQKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4gVGhlIE5hdGl2ZUltYWdlIHdp
bGwgYmUgdHJhbnNmZXJlZCBhcyBhIGhhbmRsZSBvZgorICAgICAgICBTaGFyZWFibGVCaXRhbXAg
YW5kIGEgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVQbGF0ZnJvbUltYWdlKToKKyAgICAgICAgQWRkIHRoaXMgaGVscGVy
IGZ1bmN0aW9uIGFuZCBhdm9pZCBhZGRpbmcgZGlyZWN0aXZlIGNvZGUgaW4gbWFueSBwbGFjZXMu
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZU5hdGl2ZUltYWdlKToKKwogMjAyMC0xMi0wMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRvcHQgRkFMTEJBQ0tfUExBVEZPUk0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IGQ1NDQ4Mzc4Yjk5NDFjNDcxOTg5MDY2NTBhMzU5NTY1ZTA2MWFiNzUuLmVmMzdjZGY3
ZGU0ZmUzYzUxYWE0ZWYwMTdiY2M0NDNhNDY2OTcwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
MTIzNiw3ICsxMjM2LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3
MmExNjYwYTVkOWZmODAxM2I2OWFiYmI2YTNhYWE3OGI5YmUxZjEuLmMyMTQ3ODQ1OGRmZWRlYmI1
NGYzMmE3N2NmMGMyYmU1NTc5ZWI4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTIsNyArMjE5Miw2IEBACiAJCTcyOTlC
QzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyog
UmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3
M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1
ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUlt
YWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNB
RTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICov
OyB9OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIz
MDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMDA4OCw3ICsxMDA4Nyw2IEBA
CiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyog
TmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyog
UGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjYw
NCw3ICsyNjYwMiw2IEBACiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBO
YXRpdmVJbWFnZS5jcHAgKi8sCiAJCQkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2
ZUltYWdlLmggKi8sCi0JCQkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdl
UmVmZXJlbmNlLmggKi8sCiAJCQkJQjI3NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3Bw
ICovLAogCQkJCUIyNzUzNTUzMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4
REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0z
MzY2Myw3ICszMzY2MCw2IEBACiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVk
Tm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8q
IE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJF
RjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MkFCOUEyMTI1NUE5RkRF
MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
QjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdh
dGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKaW5kZXggNWQxMTAwZWNlNzJjMDZjNGExNjIyZmQ3
NjQ2YjVlNjJiN2IzYjIyMC4uMGEzMTU1ODUwMzQ5NWUyZGU5MzdlNzI2OTMxZWM3ODgwY2Y2OWEy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmNwcApAQCAtMzAsMjggKzMwLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRm
b3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmICghcGxhdGZvcm1JbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZl
SW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSksIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikpOwogfQogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIXBsYXRm
b3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5hdGl2ZUltYWdlKHBsYXRmb3JtSW1hZ2UsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpOwotfQotCi1OYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UpCitOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYm
IHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUlt
YWdlKSkKLSAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLXsKLX0KLQotTmF0aXZlSW1hZ2U6Ok5hdGl2ZUlt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgOiBtX3BsYXRm
b3JtSW1hZ2UocGxhdGZvcm1JbWFnZSkKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDBiYWUwYTQxMTdkOTczOTgy
OTZhZGY0OGE2ZWM0MTY0ZjQ0NWI1ZDguLjk0NWI4ZGU5OGQ0Yjk4OGNlZDlhMjY1ZDE2ZTU5NDAx
MzFkMTM4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaApAQCAtNDksOCArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIE9ic2VydmVyKCkgPSBk
ZWZhdWx0OwogICAgIH07CiAKLSAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKLSAgICBzdGF0aWMgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOwogCkBAIC02OCw3ICs2
Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdl
UHRyJiYpOwotICAgIE5hdGl2ZUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIm
JiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
bV9wbGF0Zm9ybUltYWdlOwogICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVm
ZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJl
ZmVyZW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDlmM2IxYWZlNTM5MGE5
ZjlhNGEyYmIzOTY1MTg3OWNkZmJmMTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUmVmZXJlbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBOYXRp
dmVJbWFnZVJlZmVyZW5jZSA9IFJlZjxOYXRpdmVJbWFnZT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2ZGRlYjAyNzkyOWU1MDRmODNiMGEx
ODZjN2VlYWI4ZTViOWQ2ODcyLi4wOWU3ODNmNDI1NzY3OWZmMThjZDY2NTBjOWIxYjYwNjM0NDUy
ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMjMsOSArMjIzLDEyIEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBJCiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2Fj
aGVOYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlKSk7CisgICAgaWYgKGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSkgeworICAgICAgICBpZiAoYXV0byBpbWFnZSA9
IE5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0ZnJvbUltYWdlKCksIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuY2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKCppbWFnZSkpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzguLjU5
YWEwZmUyZGI1M2FiZGU5ZGMyNjMyOGNmYmQ0NTk4MDEzM2EwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdl
YkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRp
YWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlv
bkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3Qs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDhlMjdlMDRmNzczODFhNmZi
OTk1NzM0MmEyOWMyMTQ2MDcyZWVjZjguLmZlYzk2YTIyN2RiZjUzYzA0NjEwZmVlN2VkNDBjMTNm
YTQ5MTRlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0y
Niw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291
bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxT
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVwQW5kQXBw
bHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIg
aW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAg
R2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIENhY2hlTmF0
aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1hZ2UpCisgICAg
Q2FjaGVOYXRpdmVJbWFnZShXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKICAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJl
c291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmlu
ZGV4IDZlYmZlYzdmNzgxYzFjNWIxZDQ5ZmViODI4MmRhOGVjMjZhMzRhYTQuLjdmOGVkZjQ0YzZl
YzBmNjlhN2EzNDMyMTdlZWNhMjkzMmJmYWY3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCkBAIC0yNywxNiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1JbWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0FJUk8pCi0jaW5j
bHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQp
CkBAIC0xMzMsMTYgKzEyOSwyMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQ0dJ
bWFnZVJlZiB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4K
ICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNv
bnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbWFrZUNHSW1hZ2UoKTsKKworICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1h
Z2VQdHIgY3JlYXRlUGxhdGZyb21JbWFnZSgpIHsgcmV0dXJuIG1ha2VDR0ltYWdlQ29weSgpOyB9
CiAjZWxpZiBVU0UoQ0FJUk8pCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhh
dCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhp
cyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0
aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsg
fQogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlRGly
ZWN0MkRTdXJmYWNlKElEM0QxMURldmljZTEqLCBJRDJEMVJlbmRlclRhcmdldCopOwogICAgIElE
WEdJU3VyZmFjZTEqIGR4U3VyZmFjZSgpIHsgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsgfQogICAg
IHZvaWQgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICAgICB2b2lkIGRpc3Bvc2VTaGFyZWRSZXNv
dXJjZSgpOwogICAgIHZvaWQgbGVha1NoYXJlZFJlc291cmNlKCk7CisKKyAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmcm9tSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUx
MTNlOWIuLmU3OThlOTEyZTQ3YjBkOGQwZjAzOGU3Zjc2ZDcwZmMwNmFmNmVjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNjEsNyAr
NjEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
ZW5ndGhCb3guaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVi
b2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgpAQCAtMTEwMCw1OSArMTA5OSw2IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFn
ZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjxOYXRpdmVJbWFnZT4mIGltYWdlKQotewotICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNp
emUoKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGltYWdlU2l6ZSwgeyB9KTsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0KLSAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0
OwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3Qo
eyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpKTsKLQotICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5k
bGUpOwotCi0gICAgZW5jb2RlciA8PCBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCk7Ci0gICAgZW5jb2RlciA8PCBoYW5kbGU7Ci19Ci0KLU9wdGlvbmFsPFJlZjxOYXRpdmVJbWFn
ZT4+IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKLSAg
ICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKLSAgICBpZiAoIWRpZENyZWF0
ZUdyYXBoaWNzQ29udGV4dC5oYXNWYWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQu
dmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhh
bmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBhdXRvIGltYWdlID0gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwotICAgIGlmICghaW1hZ2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIG5hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwotfQotCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJD
b3JlOjpGb250PiYgZm9udCkKIHsKICAgICBlbmNvZGVyIDw8IGZvbnQtPm9yaWdpbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1
OTEzMGNiN2JjZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li45MmFmNjEzYmRmY2U3MmY0MzVjNDBi
NDM4ZjJiMjhjZDQ0OGY2YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtNDE5LDExICs0MTksNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07
CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6TmF0
aXZlSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIwZTZhZWM1MTE5ZGU0Yjk0NDUwODdk
NGIuLjc5YzAzNWFkYzhiZWFhN2UwYjJlZTJlNGYzMzBlOWYyNzJkNTFhYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTEwMCwxMyAr
MTAwLDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5KSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwotI2VsaWYgVVNFKERJUkVDVDJE
KQotICAgIHJldHVybiBudWxscHRyOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7Ci0jZW5kaWYK
KyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZyb21J
bWFnZSgpKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggYzhhMzIz
MGY5Nzk4MTlmOWU5ZGYwMzM2ZTk0NGIwYTI5NzdmOGQxMS4uOTE4MmE1MzI3NTVhNDcwNGRkMzNm
MTgyODMzNmFlOWRmZTkzZGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcApAQCAtMTgyLDkgKzE4Miw5IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpCiAgICAg
fQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZl
SW1hZ2UobWFrZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdl
KGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxl
YXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmlu
ZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLjM2Y2VjOTEzYThl
MDNmZjMyNTBkNWYxZGY5OTkxNzczNzRlNjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3VibWl0RGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmlu
ZGV4IGZlNjRmMjM4ZTRlOTYzZDgyOThjNDg1NDE2MTg5ODQ0NTI0NjFhZGIuLjZjN2E1MTM3ODU1
MjFlMzkyYThhYTM3NDA3MjlhNWRjMDc0Njg5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAKQEAgLTYxLDE3ICs2MSw0NCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQog
ICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAoraW5saW5lIHN0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgp
OworCisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShp
bWFnZS5zaXplKCksIHsgfSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29u
dGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOworICAgIHJldHVybiBiaXRtYXA7
Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKIHsKLSAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgLy8gU2V0IGl0c2Vs
ZiBhcyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkK
LSAgICAgICAgLy8gZ2V0cyBjYWxsZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0
ZWQuCi0gICAgICAgIGltYWdlLmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgICAgICAvLyBUZWxs
IHRoZSBHUFUgcHJvY2VzcyB0byBjYWNoZSB0aGlzIHJlc291cmNlLgotICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLSAgICAgICAg
cmV0dXJuIG1ha2VXZWFrUHRyKGltYWdlKTsKLSAgICB9KTsKKyAgICBpZiAobV9uYXRpdmVJbWFn
ZXMuY29udGFpbnMoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21O
YXRpdmVJbWFnZShpbWFnZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRtYXAtPmNyZWF0ZUhh
bmRsZShoYW5kbGUpOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbmF0aXZlSW1hZ2VzLmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgbWFrZVdlYWtQdHIoaW1hZ2UpKTsKKworICAgIC8vIFNldCBpdHNlbGYgYXMgYW4gb2Jz
ZXJ2ZXIgdG8gTmF0aXZlSW1hZ2UsIHNvIHJlbGVhc2VOYXRpdmVJbWFnZSgpCisgICAgLy8gZ2V0
cyBjYWxsZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0ZWQuCisgICAgaW1hZ2Uu
YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2Fj
aGUgdGhpcyByZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNo
ZU5hdGl2ZUltYWdlKGhhbmRsZSwgaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Cg==
</data>
<flag name="review"
          id="432586"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415431</attachid>
            <date>2020-12-04 10:54:56 -0800</date>
            <delta_ts>2020-12-04 11:48:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218934-20201204105456.patch</filename>
            <type>text/plain</type>
            <size>27064</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uYjJjNzRjN2Y2NWM3MjBkYjMzYmMyYWE5NmU0MTYx
NzcwOTc4OGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTA0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2hhcmUgdGhlIE5hdGl2ZUltYWdlIHdpdGggR1BVIFByb2Nlc3MgdGhyb3VnaCBhIFNoYXJlYWJs
ZUJpdG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBEZWxl
dGUgYSBOYXRpdmVJbWFnZSBjb25zdHJ1Y3RvciBhbmQgYSBjcmVhdGUgbWV0aG9kIHdoaWNoIHdl
cmUgdXNlZCBieQorICAgICAgICB0aGUgZGVsZXRlZCBJUEMgY29kZXJzIG9mIHRoZSBOYXRpdmVJ
bWFnZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUmVmZXJlbmNlLmg6IFJlbW92ZWQuCisKIDIwMjAtMTItMDQgIFBlbmcgTGl1
ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZl
ciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNjNmMzQyOTA4MjNiMWM0OGM3NzFhM2M0ZjM4NTJjYTIyMzUzZTQ0ZC4uNGQ5MGVk
OTdkZDI2ZDIwZWI3NjQ0NmUzZmQ0MDYzNmZiMTdlYmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAyMC0xMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIFNoYXJlIHRoZSBOYXRpdmVJbWFnZSB3aXRoIEdQVSBQcm9j
ZXNzIHRocm91Z2ggYSBTaGFyZWFibGVCaXRtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBJUEMgY29kZXJzIHRv
IHRyYW5zZmVyIHRoZSBOYXRpdmVJbWFnZSB0byB0aGUKKyAgICAgICAgR1BVUCwgd2UgYXJlIGdv
aW5nIHRvIG1vdmUgdGhpcyBsb2dpYyB0byBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kCisg
ICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuIFRoZSBOYXRpdmVJbWFnZSB3aWxsIGJlIHRy
YW5zZmVyZWQgYXMgYSBoYW5kbGUgb2YKKyAgICAgICAgU2hhcmVhYmxlQml0YW1wIGFuZCBhIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgIEFkZCB0aGlzIGhlbHBlciBmdW5jdGlv
biBhbmQgYXZvaWQgYWRkaW5nIGRpcmVjdGl2ZSBjb2RlIGluIG1hbnkgcGxhY2VzLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRp
dmVJbWFnZSk6CisKIDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBbTVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNl
QnVmZmVyIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGQ1NDQ4
Mzc4Yjk5NDFjNDcxOTg5MDY2NTBhMzU5NTY1ZTA2MWFiNzUuLmVmMzdjZGY3ZGU0ZmUzYzUxYWE0
ZWYwMTdiY2M0NDNhNDY2OTcwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIzNiw3ICsxMjM2
LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgK
LSAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg1OWJmNTZkMjIzNGFj
NWU5MTliODQ0ZDEyNDJlNmMyYjI0MmQwZDcuLmZjNzZiOTkzYTg0YWZhNjk3MDYxMWMwYmQ2NjA2
MGM0OWE2NzcxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIxOTIsNyArMjE5Miw2IEBACiAJCTcyOTlCQzY4MjNENkE1M0Uw
MENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
OUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUz
MTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkw
MDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0
aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUEx
RjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYx
MDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5
M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyog
TWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMDA4OSw3ICsxMDA4OCw2IEBACiAJCTcyOTlCQzY0
MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjlE
MDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VS
ZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJB
QzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdl
QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjYwNSw3ICsyNjYwMyw2
IEBACiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oICovLAogCQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5j
cHAgKi8sCiAJCQkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8s
Ci0JCQkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmgg
Ki8sCiAJCQkJQjI3NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovLAogCQkJCUIy
NzUzNTUzMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4REQ0ODgwQjQ2MjlC
MDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0zMzY2NSw3ICszMzY2
Miw2IEBACiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2
ZUltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyog
TmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNE
NkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBC
OUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5jcHAKaW5kZXggNWQxMTAwZWNlNzJjMDZjNGExNjIyZmQ3NjQ2YjVlNjJiN2Iz
YjIyMC4uMGEzMTU1ODUwMzQ5NWUyZGU5MzdlNzI2OTMxZWM3ODgwY2Y2OWEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtMzAs
MjggKzMwLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPE5hdGl2ZUltYWdl
PiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHIm
JiBwbGF0Zm9ybUltYWdlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdGl2ZUltYWdl
KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwog
fQogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdGl2ZUlt
YWdlKHBsYXRmb3JtSW1hZ2UsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwotfQotCi1O
YXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2Up
CitOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1h
Z2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKLSAgICAs
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSkKLXsKLX0KLQotTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgOiBtX3BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1JbWFnZSkKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDBiYWUwYTQxMTdkOTczOTgyOTZhZGY0OGE2ZWM0
MTY0ZjQ0NWI1ZDguLjk0NWI4ZGU5OGQ0Yjk4OGNlZDlhMjY1ZDE2ZTU5NDAxMzFkMTM4MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAt
NDksOCArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OwogICAg
IH07CiAKLSAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKLSAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOwogCkBAIC02OCw3ICs2Nyw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOwotICAg
IE5hdGl2ZUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9wbGF0Zm9ybUlt
YWdlOwogICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDlmM2IxYWZlNTM5MGE5ZjlhNGEyYmIzOTY1
MTg3OWNkZmJmMTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTmF0aXZl
SW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBOYXRpdmVJbWFnZVJlZmVy
ZW5jZSA9IFJlZjxOYXRpdmVJbWFnZT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2ZGRlYjAyNzkyOWU1MDRmODNiMGExODZjN2VlYWI4ZTVi
OWQ2ODcyLi45ZmU2ZDhkZjU4MmY3NTdmYTVkYTdkNTE4Y2YyMWE3OGYzMzE2NDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMjMsOSArMjIzLDEyIEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBJCiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RG
TW92ZShpbWFnZURhdGEpKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2Fj
aGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFn
ZShXVEZNb3ZlKGltYWdlKSk7CisgICAgaWYgKGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaGFuZGxlKSkgeworICAgICAgICBpZiAoYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCksIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRp
dmVJbWFnZShtYWtlUmVmKCppbWFnZSkpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4
IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzguLjU5YWEwZmUyZGI1M2Fi
ZGU5ZGMyNjMyOGNmYmQ0NTk4MDEzM2EwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTA2
LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6Oklt
YWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDhlMjdlMDRmNzczODFhNmZiOTk1NzM0MmEyOWMy
MTQ2MDcyZWVjZjguLmZlYzk2YTIyN2RiZjUzYzA0NjEwZmVlN2VkNDBjMTNmYTQ5MTRlYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBA
IG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAg
Q3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlz
dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50
aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRh
KGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIENhY2hlTmF0aXZlSW1hZ2UoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1hZ2UpCisgICAgQ2FjaGVOYXRpdmVJ
bWFnZShXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAg
ICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDZlYmZlYzdm
NzgxYzFjNWIxZDQ5ZmViODI4MmRhOGVjMjZhMzRhYTQuLjNhMWZhZDJjNzliY2UxYzdlNWExYTNh
NzJlNjQwMmI4ZmJiMTg1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CkBAIC0yNywxNiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiAjaWYgVVNFKENHKQogI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSA8V2ViQ29y
ZS9SZWZQdHJDYWlyby5oPgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCkBAIC0xMzMsMTYg
KzEyOSwyMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQ0dJbWFnZVJlZiB0aGF0
IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlz
IGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbWFrZUNHSW1hZ2UoKTsKKworICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
UGxhdGZvcm1JbWFnZSgpIHsgcmV0dXJuIG1ha2VDR0ltYWdlQ29weSgpOyB9CiAjZWxpZiBVU0Uo
Q0FJUk8pCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSBy
ZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNh
ZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxl
IGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRl
Q2Fpcm9TdXJmYWNlKCk7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBs
YXRmb3JtSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2VsaWYgVVNF
KERJUkVDVDJEKQogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlRGlyZWN0MkRTdXJmYWNl
KElEM0QxMURldmljZTEqLCBJRDJEMVJlbmRlclRhcmdldCopOwogICAgIElEWEdJU3VyZmFjZTEq
IGR4U3VyZmFjZSgpIHsgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsgfQogICAgIHZvaWQgY3JlYXRl
U2hhcmVkUmVzb3VyY2UoKTsKICAgICB2b2lkIGRpc3Bvc2VTaGFyZWRSZXNvdXJjZSgpOwogICAg
IHZvaWQgbGVha1NoYXJlZFJlc291cmNlKCk7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIuLmU3OThl
OTEyZTQ3YjBkOGQwZjAzOGU3Zjc2ZDcwZmMwNmFmNmVjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNjEsNyArNjEsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGVuZ3RoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oPgpAQCAtMTEwMCw1OSArMTA5OSw2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1h
Z2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWY8TmF0
aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRpdmVJbWFn
ZT4mIGltYWdlKQotewotICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKLSAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
eyB9KTsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7Ci0KLSAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwotICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNp
emUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpKTsKLQotICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKLSAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwotCi0gICAg
ZW5jb2RlciA8PCBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAgZW5j
b2RlciA8PCBoYW5kbGU7Ci19Ci0KLU9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50
Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKLSAgICBkZWNvZGVyID4+
IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKLSAgICBpZiAoIWRpZENyZWF0ZUdyYXBoaWNzQ29u
dGV4dC5oYXNWYWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQudmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAg
aWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGlt
YWdlID0gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIG5hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlm
ICghbmF0aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1
cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYg
Zm9udCkKIHsKICAgICBlbmNvZGVyIDw8IGZvbnQtPm9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTkzMjE1OTEzMGNiN2JjZGU1
NWUyMTFlMTdjNGJlZGVmMTcwNWQ2Li45MmFmNjEzYmRmY2U3MmY0MzVjNDBiNDM4ZjJiMjhjZDQ0
OGY2YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNDE5LDExICs0MTksNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gewotICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiBk
ZWNvZGUoRGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
CmluZGV4IDg1NWM4OTQ5NjZjNTg3YmIwZTZhZWM1MTE5ZGU0Yjk0NDUwODdkNGIuLjdiNzU3NWIw
NmJjYjBiMjUyMjFmOGJmOWY2NTE4MzYyYTVlNjMzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTEwMCwxMyArMTAwLDcgQEAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAogewotI2lmIFVTRShDRykKLSAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2Jp
dG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwotI2VsaWYgVVNFKERJUkVDVDJEKQotICAgIHJldHVy
biBudWxscHRyOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7Ci0jZW5kaWYKKyAgICByZXR1cm4g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpKTsKIH0K
IAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggYzhhMzIzMGY5Nzk4MTlmOWU5
ZGYwMzM2ZTk0NGIwYTI5NzdmOGQxMS4uOTE4MmE1MzI3NTVhNDcwNGRkMzNmMTgyODMzNmFlOWRm
ZTkzZGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAt
MTgyLDkgKzE4Miw5IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXRE
aXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpCiAgICAgfQogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYgaW1hZ2UpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJ
bWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UobWFrZVJl
ZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGhhbmRsZSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk1ZjhkMmI0
MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLjM2Y2VjOTEzYThlMDNmZjMyNTBkNWYx
ZGY5OTkxNzczNzRlNjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0
YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IGZlNjRmMjM4
ZTRlOTYzZDgyOThjNDg1NDE2MTg5ODQ0NTI0NjFhZGIuLjZjN2E1MTM3ODU1MjFlMzkyYThhYTM3
NDA3MjlhNWRjMDc0Njg5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAK
QEAgLTYxLDE3ICs2MSw0NCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIEFTU0VSVF9V
TlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAoraW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlKQoreworICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOworCisgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZS5zaXplKCks
IHsgfSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAo
IWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29udGV4dC0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZs
b2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOworICAgIHJldHVybiBiaXRtYXA7Cit9CisKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKIHsKLSAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgLy8gU2V0IGl0c2VsZiBhcyBhbiBvYnNl
cnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkKLSAgICAgICAgLy8g
Z2V0cyBjYWxsZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0ZWQuCi0gICAgICAg
IGltYWdlLmFkZE9ic2VydmVyKCp0aGlzKTsKLQotICAgICAgICAvLyBUZWxsIHRoZSBHUFUgcHJv
Y2VzcyB0byBjYWNoZSB0aGlzIHJlc291cmNlLgotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLSAgICAgICAgcmV0dXJuIG1ha2VX
ZWFrUHRyKGltYWdlKTsKLSAgICB9KTsKKyAgICBpZiAobV9uYXRpdmVJbWFnZXMuY29udGFpbnMo
aW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZShp
bWFnZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAgIFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUp
OworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbmF0
aXZlSW1hZ2VzLmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgbWFrZVdl
YWtQdHIoaW1hZ2UpKTsKKworICAgIC8vIFNldCBpdHNlbGYgYXMgYW4gb2JzZXJ2ZXIgdG8gTmF0
aXZlSW1hZ2UsIHNvIHJlbGVhc2VOYXRpdmVJbWFnZSgpCisgICAgLy8gZ2V0cyBjYWxsZWQgd2hl
biBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0ZWQuCisgICAgaW1hZ2UuYWRkT2JzZXJ2ZXIo
KnRoaXMpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNv
dXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZUltYWdl
KGhhbmRsZSwgaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>