<?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>172485</bug_id>
          
          <creation_ts>2017-05-22 19:45:21 -0700</creation_ts>
          <short_desc>Snapshotting via -renderInContext: should do synchronous image decodes</short_desc>
          <delta_ts>2023-05-23 16:28:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=257239</see_also>
          <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>172535</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>buildbot</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1311729</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-22 19:45:21 -0700</bug_when>
    <thetext>Snapshotting via -renderInContext: should do synchronous image decodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311740</commentid>
    <comment_count>1</comment_count>
      <attachid>310974</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-22 20:05:55 -0700</bug_when>
    <thetext>Created attachment 310974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311741</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-22 20:06:19 -0700</bug_when>
    <thetext>rdar://problem/32276146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311742</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-22 20:08:51 -0700</bug_when>
    <thetext>Attachment 310974 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/LegacyTileCache.mm:513:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:639:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311773</commentid>
    <comment_count>4</comment_count>
      <attachid>310983</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-22 23:31:30 -0700</bug_when>
    <thetext>Created attachment 310983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311774</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-22 23:33:23 -0700</bug_when>
    <thetext>Attachment 310983 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/LegacyTileCache.mm:513:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:639:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/mac/WebLayer.mm:53:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/mac/WebLayer.mm:74:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
ERROR: Source/WebCore/platform/ios/LegacyTileLayer.mm:79:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 5 in 53 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311776</commentid>
    <comment_count>6</comment_count>
      <attachid>310983</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-05-22 23:36:05 -0700</bug_when>
    <thetext>Comment on attachment 310983
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1566
&gt; -void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp; context, const FloatRect&amp; clip)
&gt; +void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp; context, const FloatRect&amp; clip, GraphicsLayerPaintFlags flags)

Hmm, why is this not just a bit on GraphicsContext?

&gt; Source/WebCore/platform/graphics/mac/WebLayer.mm:55
&gt; +@interface WebSimpleLayer () {
&gt; +    BOOL _isRenderingInContext;
&gt; +}

Don&apos;t think you can do this in 32 bit (you&apos;ll have to put it in the real interface).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311862</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-23 07:56:46 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; Comment on attachment 310983 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310983&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1566
&gt; &gt; -void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp; context, const FloatRect&amp; clip)
&gt; &gt; +void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp; context, const FloatRect&amp; clip, GraphicsLayerPaintFlags flags)
&gt; 
&gt; Hmm, why is this not just a bit on GraphicsContext?

Because with filters etc you can use several different GraphicsContexts, and you&apos;d have to propagate the bit between them. Also I think this concept is slightly higher-level than GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311865</commentid>
    <comment_count>8</comment_count>
      <attachid>311012</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-23 08:18:23 -0700</bug_when>
    <thetext>Created attachment 311012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311866</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-23 08:20:22 -0700</bug_when>
    <thetext>Attachment 311012 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/LegacyTileCache.mm:513:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:639:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/mac/WebLayer.mm:68:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
ERROR: Source/WebCore/platform/ios/LegacyTileLayer.mm:75:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 4 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311952</commentid>
    <comment_count>10</comment_count>
      <attachid>311031</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-23 11:27:42 -0700</bug_when>
    <thetext>Created attachment 311031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311954</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-23 11:30:40 -0700</bug_when>
    <thetext>Attachment 311031 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/LegacyTileCache.mm:513:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:639:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/mac/WebLayer.mm:68:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
ERROR: Source/WebCore/platform/ios/LegacyTileLayer.mm:75:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 4 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311963</commentid>
    <comment_count>12</comment_count>
      <attachid>311032</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-23 11:40:01 -0700</bug_when>
    <thetext>Created attachment 311032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311965</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-23 11:41:55 -0700</bug_when>
    <thetext>Attachment 311032 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/LegacyTileCache.mm:513:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:639:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/mac/WebLayer.mm:68:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
ERROR: Source/WebCore/platform/ios/LegacyTileLayer.mm:75:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 4 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312004</commentid>
    <comment_count>14</comment_count>
      <attachid>311032</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-05-23 12:58:28 -0700</bug_when>
    <thetext>Comment on attachment 311032
Patch

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

&gt; Source/WebCore/platform/graphics/mac/WebLayer.h:33
&gt; +    BOOL m_isRenderingInContext;

Shouldn&apos;t have an m prefix.

&gt; Source/WebCore/platform/graphics/mac/WebLayer.h:35
&gt; +@property (nonatomic) BOOL _isRenderingInContext;

Why is this readwrite? Why does this have a leading underscore? This is an internal class. Should check with the SPI guidelines but I don&apos;t think the _ is required.

&gt; Source/WebCore/platform/ios/wak/WAKWindow.h:136
&gt; +- (void)setIsInSnapshottingPaint:(BOOL)isInSnapshottingPaint;
&gt; +- (BOOL)isInSnapshottingPaint;

Why is this not a property :P

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:-771
&gt; -- (void)_setIncludesFlattenedCompositingLayersWhenDrawingToBitmap:(BOOL)flag;
&gt; -- (BOOL)_includesFlattenedCompositingLayersWhenDrawingToBitmap;

Are you sure it&apos;s OK to remove these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312024</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-23 13:44:34 -0700</bug_when>
    <thetext>https://trac.webkit.org/r217296</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310974</attachid>
            <date>2017-05-22 20:05:55 -0700</date>
            <delta_ts>2017-05-22 23:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172485-20170522200554.patch</filename>
            <type>text/plain</type>
            <size>84302</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0Y2M2MDQ3ZTFjNGU4
ODMwNTczZmNkODAyODBlN2I0OTQ0M2I2Ni4uNTVmN2NkNzMwM2IxZDc2MWYzMjliYjBjNGRmYzhi
MzM1OWQ2MjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0yMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRp
bmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5jaHJvbm91cyBpbWFnZSBkZWNv
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI0
ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFVJV2ViVmlldyBjbGllbnRzIHNuYXBz
aG90IHRoZSB2aWV3IHZpYSAtcmVuZGVySW5Db250ZXh0OiBvbiB0aGUgVUlWaWV3J3MgbGF5ZXIs
CisgICAgICAgIFdlYktpdCBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RlcyBzbyB0
aGF0IHRoZSBpbWFnZXMgc2hvdyBpbiB0aGUgc25hcHNob3QuCisKKyAgICAgICAgRml4IGJ5IHBs
dW1iaW5nIHRocm91Z2ggYSAic25hcHNob3R0aW5nIiBwYWludCBiZWhhdmlvciBmbGFnIGZyb20g
dHdvIHNvdXJjZSBsb2NhdGlvbnM6CisgICAgICAgIFdlYlNpbXBsZUxheWVyLCB1c2VkIGJ5IGNv
bXBvc2l0aW5nIGxheWVycywgYW5kIExlZ2FjeVRpbGVMYXllciwgdXNlZCBmb3IgdGhlIFdLMSB0
aWxlIGNhY2hlLgorICAgICAgICBPbiBXZWJTaW1wbGVMYXllciB0aGUgZmxhZyBwcm9wYWdhdGVz
IHRocm91Z2ggUGxhdGZvcm1DQUxheWVyIHRvIEdyYXBoaWNzTGF5ZXIsIGFuZCBvbiBMZWdhY3lU
aWxlTGF5ZXIKKyAgICAgICAgaXQgc2V0cyBzb21lIHN0YXRlIG9uIHRoZSBXQUtXaW5kb3csIHdo
aWNoIGlzIGRldGVjdGVkIGJ5IC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQ6XS4KKyAgICAgICAgSW4gYm90aCBjYXNlcywgdGhlIGZsYWcgYmVjb21lcyBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nIHdoaWNoIGlzIHBhc3NlZCBkb3duIHRocm91Z2ggcGFpbnRp
bmcKKyAgICAgICAgaW4gUGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuCisKKyAgICAgICAgRml4IGNv
ZGUgdGhhdCB3YXMgY2hlY2tpbmcgcGFpbnRCZWhhdmlvciBvbiB0aGUgRnJhbWVWaWV3IHRvIGp1
c3QgbG9va2luZyBhdCBQYWludEluZm8ucGFpbnRCZWhhdmlvciwKKyAgICAgICAgd2hpY2ggcmVx
dWlyZWQgcGFzc2luZyBQYWludEluZm8gYWxvbmcgaW4gUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoKS4KKworICAgICAgICBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyBmbGFnLCBiZWNhdXNlIHRoYXQgdHJpZ2dlcnMKKyAgICAgICAg
YSBmbGF0dGVuaW5nIHBhaW50IG9mIGNvbXBvc2l0aW5nIGxheWVycywgYW5kIHdlIGRvbid0IHdh
bnQgdGhhdCBiZWhhdmlvciBmb3IgLXJlbmRlckluQ29udGV4dDosCisgICAgICAgIHNpbmNlIENv
cmVBbmltYXRpb24gY2FsbHMgLXJlbmRlckluQ29udGV4dDogb24gZWFjaCBvZiBvdXIgbGF5ZXJz
IGFuZCB3ZSBuZWVkIHRvIGF2b2lkIGRvdWJsZS1wYWludGluZy4KKyAgICAgICAgU28gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZyBpcyBub3cgYWRkZWQgdG8gdGhlIGNhbGwgc2l0ZXMgdGhhdCBh
bHNvIHNldCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzCisgICAgICAgIGlu
IG1vc3QgY2FzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IFNuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJM
YXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciByZW5kZXJJ
bkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oOiBVc2UgaW5pdGlhbGl6
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0xlZ2FjeVRpbGVMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAg
ICAgICgtW0xlZ2FjeVRpbGVMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tMZWdh
Y3lUaWxlTGF5ZXIgbGF5ZXJCZWluZ1BhaW50ZWRdKTogRGVsZXRlZC4gVGhlcmUgd2VyZSBubyBj
YWxsZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAg
KC1bV0FLVmlldyBfZHJhd1JlY3Q6Y29udGV4dDpsb2NrRm9jdXM6XSk6IGJvb2wgLT4gQk9PTAor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRJc0luU25h
cHNob3R0aW5nUGFpbnQ6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBpc0luU25hcHNob3R0aW5n
UGFpbnRdKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRQaGFzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2tJbWFnZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAxNy0wNS0xOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXdsaW5lIGFm
dGVyIHRoZSBVUkwgaW4gc2hvd0xheWVyVHJlZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzBiNjU2MzBkMjFmY2ZiMDA1YWM5NzExZWFhMzQ1Mjk4NWU2NzhkYi4uZTk5NDQ1YWRlOWUwMjRh
Mzg2ODhlM2EyM2RkMGM4YzIxMjhiNjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA1LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNuYXBzaG90dGluZyB2aWEgLXJlbmRlckluQ29udGV4dDogc2hvdWxkIGRvIHN5
bmNocm9ub3VzIGltYWdlIGRlY29kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MjQ4NQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI3NjE0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0
bWFwOiBTUEkgdGhhdCBubyBsb25nZXIKKyAgICAgICAgaGFzIGFueSBjYWxsZXJzLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGluRmxhdHRlbmluZ1BhaW50XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JG
b3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zaG91bGRGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZXcgX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wNS0xOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKEFQUExFX1BBWV9ERUxF
R0FURSkgc2hvdWxkIGJlIE5PIG9uIG1hY09TIFNpZXJyYSBhbmQgZWFybGllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNmNGYzOWFjNGQ4YzExZGZmODQ2ZDg2ZDY3NjhkM2ZjNWQ1YmVlZmIuLjMwMWYxYTk1YzUz
YmVlOTM0OTlkNDYwNmFhZDM4ZjA3YjU2NmZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxNy0wNS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTbmFwc2hvdHRpbmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nIGZsYWcgaW4gZnVuY3Rpb25zIHRoYXQgZG8gc25hcHNo
b3R0aW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJl
bmRlcmVkSW1hZ2UpOgorCiAyMDE3LTA1LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZG8gbm90IGNhY2hlIGdVTSBwZXJt
aXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDNhMWU1OGY3NDlmMzc4YzA4NGE0NzVkOTgxNGJhYmFjOGI1OTFl
Y2EuLmVlODE4YmEyZjcxZmZkOGExNTk0NWEzNzFhYzQwNDZjNzYyM2UwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTE0MDIsNyArMTQwMiw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZywgbnVsbHB0ciwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJhZjZjZDdhYTdjYjM1ZjNmZTBjNTc0N2Q5
NTM3MzFkNTZlYTJhODcuLjJiY2Y2NzQzYzIxZTBiMTA0NzllYWNhNjZkM2E0MzE4YWFkMzc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTksMTAgKzQzOTksMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsIFBhaW4KICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIAorICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+
cHJpbnRpbmcoKSkKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTI5LDcgKzQ1MzIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdAogCiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5l
dyBiZWhhdmlvciBhcHByb3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Ig
b2xkQmVoYXZpb3IgPSBwYWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKTsKIAogICAgIC8vIElmIHRo
ZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMg
d2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRE9NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggYzIyMWRj
MjgxZmRlZDAwYTE4ZTBiYjFmNmQzY2Y1MDYzMGUwYTBkMC4uNDI0MWE0YmZlMmI5OTFmNmU3MWE0
ZWUzNTI0ODM3MTZkZmE2MGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzTmFtZXMoYm9vbCBw
YXJhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBh
aW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0
KQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRGbGFn
cykKIHsKICAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRHcmFwaGljc0xheWVyIDogbV9vdmVybGF5
R3JhcGhpY3NMYXllcnMpIHsKICAgICAgICAgaWYgKG92ZXJsYXlBbmRHcmFwaGljc0xheWVyLnZh
bHVlLmdldCgpICE9IGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaAppbmRleCAwNTQ2OTI5YWU2NTQ3MTIwZGI0OGQwOTkxMjZkZmJkOGUx
YzQyMDM5Li5iOTY0NTFhZDkwOTczYjI0NjMyZDlhYjg0N2M2NGNlOGJlNWU2NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2tpcExh
eWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCmluZGV4IGExMzE5YmIwZTllY2Vm
MDJlOTgxMWYxZjM2ZDFhZDkyMzg0OTE3M2MuLmQzYWFiOWZkNjE2YWM3YmMzNzA2MWE3ZDQ3MWIz
ZmU4M2QzNjZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAvLyBHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJl
ZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgaW5DbGlwKSBvdmVycmlkZTsKKyAgICAg
ICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiBpbkNsaXAs
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICAgICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaEZh
ZGVPdXRBbmltYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGZiYTEwOWE5NjNkYmYzZjRlMjgwMjIyY2Q2
NzU4Y2YwNDdkYjE2OWEuLjA3MDk2ZTgyN2YzOGMxMmQ0M2M3NWFlMGE3YTQzOGVjYWQ3MGFhOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5CiAg
ICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2go
KTsKIH0KIAotdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JikKK3Zv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEZsYWdzKQogewogICAgIGlmICghRGF0YURldGVjdG9yc0xpYnJhcnkoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCA5MmY2Y2ZmY2JkZDJiYjQxZDAxZmZkZjg3MWVkZTZhMTA1MDdjNjNj
Li42OThmNzU4ZjE5M2U0YjViNjc1NTdmNGQzODcxYTNjM2M4M2M3NWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDE3
LDcgKzQxNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQogCi12b2lk
IEdyYXBoaWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQordm9pZCBHcmFwaGljc0xheWVyOjpw
YWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAgICAg
RmxvYXRTaXplIG9mZnNldCA9IG9mZnNldEZyb21SZW5kZXJlcigpOwogICAgIGNvbnRleHQudHJh
bnNsYXRlKC1vZmZzZXQpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6
cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGCiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KGNsaXApOwogICAgIGNsaXBSZWN0Lm1vdmUob2Zm
c2V0KTsKIAotICAgIG1fY2xpZW50LnBhaW50Q29udGVudHModGhpcywgY29udGV4dCwgbV9wYWlu
dGluZ1BoYXNlLCBjbGlwUmVjdCk7CisgICAgbV9jbGllbnQucGFpbnRDb250ZW50cyh0aGlzLCBj
b250ZXh0LCBtX3BhaW50aW5nUGhhc2UsIGNsaXBSZWN0LCBmbGFncyk7CiB9CiAKIFN0cmluZyBH
cmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKaW5kZXggMzIyYmY4MGVmMjk0NDQ3M2U2NGJjODQwNzJkMTRhMzhjNWQ2YjE0
Mi4uMGYzYzFhNWEwODAxNjZlYjFkNWNkNzY3NTE4ODc2YTNjNDg2ZDJiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtNDQyLDcg
KzQ0Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRyYW5zaXRpb25zIGFyZSBpZGVudGlmaWVkIGJ5
IGEgc3BlY2lhbCBhbmltYXRpb24gbmFtZSB0aGF0IGNhbm5vdCBjbGFzaCB3aXRoIGEga2V5ZnJh
bWUgaWRlbnRpZmllci4KICAgICBzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0
aW9uKEFuaW1hdGVkUHJvcGVydHlJRCk7Ci0gICAgCisKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgYW5pbWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIGNvbXBvc2l0aW5nIHN5c3RlbS4gSWYgdGhp
cyByZXR1cm5zCiAgICAgLy8gZmFsc2UsIHRoZSBhbmltYXRpb24gd2lsbCBiZSBydW4gYnkgQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci4KICAgICAvLyBUaGVzZSBtZXRob2RzIGhhbmRsZSBib3RoIHRy
YW5zaXRpb25zIGFuZCBrZXlmcmFtZSBhbmltYXRpb25zLgpAQCAtNDUyLDcgKzQ1Miw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9u
cyhkb3VibGUgdGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3VtZUFu
aW1hdGlvbnMoKTsKLSAgICAKKwogICAgIC8vIExheWVyIGNvbnRlbnRzCiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNDY1LDExICs0NjUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29udGVu
dHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBDYWxsYmFjayBmcm9t
IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbSB0byBkcmF3IGxheWVyIGNvbnRlbnRzLgot
ICAgIHZvaWQgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBjbGlwKTsKLSAgICAKKyAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3MpOworCiAgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVy
IGluIGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBlbnVtIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiB7IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNU
b3BEb3duLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXAgfTsKIAogICAgIC8vIEZsaXBw
ZWRuZXNzIG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIGxheWVyLiBEb2VzIG5vdCBhZmZlY3Qgc3Vi
bGF5ZXIgZ2VvbWV0cnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXggZjZlOTBiOGUzNTIyOWIyNGE2NGJmNzZk
NjRjZmM1ODk0OGQxMGY3Ni4uNDVmNjUxMmY5ZDU1Zjk4ZGZlZDM2N2QwYjFkMGE1N2Y3MjkxZTlk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDbGllbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBHcmFwaGljc0xheWVyQ2xpZW50X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllckNs
aWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJU
aWxlZEJhY2tpbmcuaCIKQEAgLTc2LDYgKzc1LDggQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhh
dmlvckZsYWdzIHsKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJlaGF2aW9y
OwogCitlbnVtIGNsYXNzIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIHsgTm9uZSwgU25hcHNob3R0
aW5nIH07CisgICAgCiBjbGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5HcmFwaGljc0xheWVyQ2xpZW50KCkge30KQEAgLTkzLDcgKzk0LDcgQEAgcHVibGlj
OgogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IHRoaXMgbGF5ZXIgcmVxdWlyZXMgYSBmbHVzaCBi
ZWZvcmUgdGhlIG5leHQgZGlzcGxheSByZWZyZXNoLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlG
bHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGlj
c0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiAv
KiBpbkNsaXAgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSwgY29uc3QgRmxvYXRSZWN0JiAvKiBpbkNsaXAgKi8sIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqKSBjb25zdCB7IH0KIAogICAgIC8vIFByb3ZpZGVzIGN1cnJlbnQgdHJhbnNm
b3JtICh0YWtpbmcgdHJhbnNmb3JtLW9yaWdpbiBhbmQgYW5pbWF0aW9ucyBpbnRvIGFjY291bnQp
LiBJbnB1dCBtYXRyaXggaGFzIGJlZW4KQEAgLTEzOSw0ICsxNDAsMyBAQCBwdWJsaWM6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKaW5kZXggNjUxMTNiMGQyYWI4NWUyNzUwNWU3NjVmODYxYzZjMzk5ZTYwZGZl
NS4uYmRiYTI2ODhjNmYxODEwZjVhMTg0YTRiNWJhY2FlMGMxOWJkZWQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCkBAIC0xNTM5LDcgKzE1MzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZl
Q29tbWl0Q2hhbmdlcyhjb25zdCBDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbgogICAgICAg
ICBHcmFwaGljc0NvbnRleHQgY29udGV4dDsKICAgICAgICAgLy8gVGhlIFJlY29yZGVyIGlzIGxh
cmdlLCBzbyBoZWFwLWFsbG9jYXRlLgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q6OlJlY29yZGVyPiByZWNvcmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJl
Y29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5z
Zm9ybSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50R3JhcGhpY3NMYXll
ckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSksIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKIAogI2lmZGVmIExPR19SRUNPUkRJTkdfVElNRQog
ICAgICAgICBkb3VibGUgZHVyYXRpb24gPSBjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lOwpAQCAt
MTU2Myw3ICsxNTYzLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclNo
b3dSZXBhaW50Q291bnRlcihQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3IKICAgICByZXR1cm4gaXNT
aG93aW5nUmVwYWludENvdW50ZXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50
RmxhZ3MgZmxhZ3MpCiB7CiAgICAgbV9oYXNFdmVyUGFpbnRlZCA9IHRydWU7CiAgICAgaWYgKG1f
ZGlzcGxheUxpc3QpIHsKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNz
Q29uCiAgICAgfQogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoUGFpbnRMYXllclN0YXJ0
LCBQYWludExheWVyRW5kKTsKLSAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0
LCBjbGlwKTsKKyAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBjbGlwLCBm
bGFncyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTZXROZWVk
c1RvUmV2YWxpZGF0ZVRpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggNTEzOWZhZjgyZTdmODJlOGZjZmRi
NWM1ZmQxNjVhNTAwOWU3Y2IzYy4uOWFlMTgzNDE4YjBjYWVjNjk2ZmY4YzU3MDY1NTM5MTZmYzVj
Y2IxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbktleSwgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckFuaW1hdGlvbkVuZGVkKGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uS2V5KSBvdmVycmlkZTsKICAgICBDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzT3JpZW50YXRpb24gcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3JpZW50YXRpb24oKTsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9y
bUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBib29sIHBsYXRmb3JtQ0FMYXllclNo
b3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc1Nob3dpbmdEZWJ1Z0Jv
cmRlcigpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVw
YWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IHBs
YXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVy
cmlkZSB7IHJldHVybiBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCBi
MmEyMTY5MTNkZjI5MzM5NjM5NmQ4MmUzNjNiNzYxYjA2YTUyMzBiLi5mOTRjMDdlMTZjYzA2OGU0
YThhM2M4NzQ1Mjk2OTc5YzZkMDExMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMjc3LDcgKzI3Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBp
bXBsZW1lbnRhdGlvbiBhY3Jvc3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKICAgICBzdGF0
aWMgUmVwYWludFJlY3RMaXN0IGNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmLCBQbGF0
Zm9ybUNBTGF5ZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRl
eHRSZWYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cyk7Cisg
ICAgc3RhdGljIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNB
TGF5ZXIqLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMsIEdyYXBoaWNzTGF5ZXJQYWludEZs
YWdzKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYs
IFBsYXRmb3JtQ0FMYXllciosIGludCByZXBhaW50Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFj
a2dyb3VuZENvbG9yKTsKICAgICBzdGF0aWMgQ0dSZWN0IGZyYW1lRm9yTGF5ZXIoY29uc3QgUGxh
dGZvcm1MYXllciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmluZGV4IDEwYzgyZjQ0YTA1ZjRj
NGMyMDZkYWZiYTcyMmRkODVhYzU1NTUxMWIuLjI4Y2JjMzViNGUxYThhNzJiMzNjZTY3YjBkNjMy
NzY3ZTIxNzhjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCi0j
ZGVmaW5lIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXIuaCIKIApAQCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiAvKmFu
aW1hdGlvbktleSovLCBDRlRpbWVJbnRlcnZhbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQ0FMYXllckFuaW1hdGlvbkVuZGVkKGNvbnN0IFN0cmluZyYgLyphbmltYXRpb25LZXkqLykg
eyB9CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVy
KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbkNsaXApID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCwgR3JhcGhpY3NMYXll
clBhaW50RmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0Rl
YnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVu
dFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSB7IHJldHVybiAwOyB9CkBAIC03Miw0ICs3
MSwzIEBAIHByb3RlY3RlZDoKIAogfQogCi0jZW5kaWYgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q292ZXJhZ2VNYXAuY3BwCmluZGV4IDAyNjBiYWI4NjYzNWU1Y2E5M2JlODY5ZTgyZGE2ZTVlOGVi
NTlmZGMuLmQ2MmM3ZjU3NGVlZjM0ZjNmZjcxYmYwNjI1N2IyM2U3NTVjODFkM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdl
TWFwLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgVGlsZUNvdmVyYWdlTWFwOjp1cGRhdGUo
KQogICAgIG1fdmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29s
b3IodmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xvcik7CiB9CiAKLXZvaWQgVGlsZUNvdmVyYWdlTWFw
OjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1D
QUxheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lk
IFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNB
TGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHBsYXRmb3JtQ0FMYXllciwgcGxhdGZvcm1DQUxheWVyID09IG1fbGF5ZXIucHRyKCkpOwogICAg
IG1fY29udHJvbGxlci50aWxlR3JpZCgpLmRyYXdUaWxlTWFwQ29udGVudHMoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgbV9sYXllci5nZXQoKS5ib3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCmluZGV4IDhj
Y2ZlMTYxNTNiM2Y4OWExZjVlOWQyMDQ4YjU1NzZmNjE0MTVmNTkuLmFiNDNhNTYwNmQyODBmYzQ2
M2RhMjk0Nzg5Y2Q2NTY0ZDhhNDgxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCkBAIC02MSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAgICAgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bjsgfQog
ICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBH
cmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7CiAgICAgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRl
VGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUdyaWQuY3BwCmluZGV4IDEyMjM3MjI5OWI0YjBiM2E0YTc2ZTY5MjE2OTY5NWU3MDM0NGMx
NWUuLmNiMWVhNTFmYzdiMjcwYTgxYzQ0ZjFiMmM5YmE5YmYxMjY1Nzk5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTcxMiw3
ICs3MTIsNyBAQCB2b2lkIFRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpIGNvbgogICAgIH0KIH0KIAotdm9pZCBUaWxl
R3JpZDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRm
b3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQor
dm9pZCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5
ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyBmbGFncykKIHsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQg
VGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBw
bGF0Zm9ybUNBTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQuc2NhbGUobV9zY2FsZSk7CiAKICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgZGlydHlSZWN0cyA9IFBsYXRm
b3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCBwbGF0Zm9ybUNBTGF5ZXIpOwotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICZtX2NvbnRyb2xsZXIucm9vdExheWVy
KCksIGRpcnR5UmVjdHMpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRl
bnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICZtX2NvbnRyb2xsZXIucm9vdExheWVyKCks
IGRpcnR5UmVjdHMsIGZsYWdzKTsKICAgICB9CiAKICAgICBpbnQgcmVwYWludENvdW50ID0gcGxh
dGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAppbmRleCAzMjUz
MzZmODE5MWU0NTgyM2M3NTVkODc4MmM0MmFhMGRlNTc2NTFkLi4yZjg3N2I0ODdhOWFlODRmNzgw
Y2IyYTJhNzQwMjIxYTY0OGJiY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVtb3ZlVGlsZXMoVmVjdG9yPFRpbGVHcmlkOjpUaWxlSW5kZXg+JiB0b1JlbW92ZSk7CiAK
ICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQKLSAgICB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdy
YXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBib29sIHBsYXRmb3JtQ0FMYXll
clNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHBsYXRmb3JtQ0FM
YXllclNob3dSZXBhaW50Q291bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsK
ICAgICBpbnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KFBsYXRmb3JtQ0FM
YXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBl
YTIzOGU2ODk4ODMyNGU5MjUxMTMxMzQ4Nzg2YmI0ODBmYzM4YTRmLi4xNjU4MTQ0NTRmNzg2MGEz
YTNkNDZiY2IwNzZiNThiZWMxYjhhYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQpAQCAtMTExMiw3ICsxMTEyLDcgQEAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExp
c3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFIKICAgICBy
ZXR1cm4gZGlydHlSZWN0czsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNv
bnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBs
YXRmb3JtQ0FMYXllciwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzKQordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVwYWludFJlY3RMaXN0JiBkaXJ0
eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyBmbGFncykKIHsKICAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyQ29udGVudHMgPSBwbGF0Zm9ybUNBTGF5ZXItPm93
bmVyKCk7CiAgICAgaWYgKCFsYXllckNvbnRlbnRzKQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0
LCBXZWJDb3JlOjpQbGF0Zm9ybUMKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmNsaXAocmVjdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVyLCBncmFwaGljc0Nv
bnRleHQsIHJlY3QpOworICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgZmxh
Z3MpOwogICAgICAgICB9CiAgICAgICAgIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IGFhOGE5YTc1ZGRjZjVlY2Q4M2M3
ODUwZTAxM2JmMDQwYjJlNjUyM2IuLjQ2NWI0YTNlMzM3ODExNzUxZGE5ZDJjMWYwZTY2YzdjYjgz
OTE1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRpc3BsYXlD
YWxsYmFjayhDQUNGTGF5ZXJSZWYgY2FMYXllciwgQ0dDb250ZXh0CiAgICAgLy8gc21hbGxlciB0
aGFuIHRoZSBsYXllciBib3VuZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQogICAgIENHUmVjdCBjbGlw
Qm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOwogICAgIEludFJl
Y3QgY2xpcChlbmNsb3NpbmdJbnRSZWN0KGNsaXBCb3VuZHMpKTsKLSAgICBjbGllbnQtPnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMob3duZXIoKSwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwKTsK
KyAgICBjbGllbnQtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMob3duZXIoKSwgZ3JhcGhp
Y3NDb250ZXh0LCBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAKICAgICBp
ZiAoY2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIob3duZXIoKSkKICAg
ICAgICAgJiYgIXJlcGFpbnRDb3VudGVyc0FyZURyYXduQnlHcmlkQ29udHJvbGxlcihsYXllclR5
cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAzMTY2NWJm
ODMxNmE3ZTU0NzMxZjBmZTE4YjliYTA1NDk3ZTAxMDEzLi5kNGVlNTdiNjhiNDc5ZTQ1Y2VlYTU4
ZmQ5NzM1ZTgzMjg3Y2M4OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5j
cHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6ZGlzcGxh
eUNhbGxiYWNrKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHRSZWYKICAgICAvLyBzbWFs
bGVyIHRoYW4gdGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCiAgICAgQ0dSZWN0
IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CiAgICAg
SW50UmVjdCBjbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwotICAgIGNsaWVudC0+
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQsIGNs
aXApOworICAgIGNsaWVudC0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhvd25lcigpLCBn
cmFwaGljc0NvbnRleHQsIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKIAog
ICAgIGlmIChjbGllbnQtPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihvd25lcigp
KSkgewogICAgICAgICBpbnQgZHJhd0NvdW50ID0gY2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJJbmNy
ZW1lbnRSZXBhaW50Q291bnQob3duZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggZWNkZWM1ZTEyYmQ2MGJlNWRmNWNlNmYx
ZDQ2ZTk5MDMzYWZmNmViZS4uOTQ3NjM0OWUyOTczYjZlMjYzZmMxYTkxMzM1N2I1Njk5NTRlZDQy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxh
eWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgorI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJXS0dyYXBoaWNzLmgiCkBAIC00OSw2ICs1MCwxMCBAQCAtICh2b2lkKWRyYXdTY2FsZWRD
b250ZW50c0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CiBAZW5kCiAjZW5kaWYKIAor
QGludGVyZmFjZSBXZWJTaW1wbGVMYXllciAoKQorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0SXNSZW5kZXJpbmdJbkNvbnRleHQ6KSBCT09MIF9pc1JlbmRlcmluZ0luQ29udGV4dDsK
K0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYkxheWVyCiAKIC0gKHZvaWQpZHJhd0luQ29udGV4
dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKQEAgLTU2LDcgKzYxLDcgQEAgLSAodm9pZClkcmF3SW5D
b250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKICAgICBpZiAobGF5ZXIp
IHsKICAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1BhaW50
ID0gUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIGxheWVyKTsK
LSAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXll
ciwgcmVjdHNUb1BhaW50KTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250
ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLl9pc1JlbmRlcmluZ0luQ29u
dGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgOiBHcmFwaGljc0xh
eWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAgfQogfQogCkBAIC02NCw2ICs2OSwxMiBAQCBAZW5k
IC8vIGltcGxlbWVudGF0aW9uIFdlYkxheWVyCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJTaW1wbGVM
YXllcgogCistICh2b2lkKXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sK
KyAgICBTZXRGb3JTY29wZTxCT09MPiBjaGFuZ2UoX19pc1JlbmRlcmluZ0luQ29udGV4dCwgWUVT
KTsKKyAgICBbc3VwZXIgcmVuZGVySW5Db250ZXh0OmNvbnRleHRdOworfQorCiAtIChpZDxDQUFj
dGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAqKWtleQogewogICAgIC8vIEZpeCBmb3IgPHJk
YXI6Ly9wcm9ibGVtLzkwMTU2NzU+OiBGb3JjZSB0aGUgbGF5ZXIgY29udGVudCB0byBiZSB1cGRh
dGVkIHdoZW4gdGhlIHRyZWUgaXMgcmVwYXJlbnRlZC4KQEAgLTEyOCw3ICsxMzksNyBAQCAtICh2
b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dChsYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5n
KCkpOwogCiAgICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJv
dW5kaW5nQm94KGNvbnRleHQpOwotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyUGFpbnRDb250ZW50cyhsYXllciwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzKTsKKyAg
ICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobGF5ZXIs
IGdyYXBoaWNzQ29udGV4dCwgY2xpcEJvdW5kcywgc2VsZi5faXNSZW5kZXJpbmdJbkNvbnRleHQg
PyBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nIDogR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6Ok5vbmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDkyYzIxZDI0YjMwMTllZDQxMzdlNmU4MTQ2OTI2
YzM1NDA4YzE4ZjQuLjQwMzQzYjViNTEzYjQ3MTY2Njg2ZTQwZmZkOWNkOTZhMDVjZjI4YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKQEAgLTEz
Myw3ICsxMzMsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnRlcm5hbAogICAgIHZvaWQgZG9MYXlv
dXRUaWxlcygpOwotICAgIHZvaWQgZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4
dFJlZik7CisgICAgCisgICAgZW51bSBjbGFzcyBEcmF3aW5nRmxhZ3MgeyBOb25lLCBTbmFwc2hv
dHRpbmcgfTsKKyAgICB2b2lkIGRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRS
ZWYsIERyYXdpbmdGbGFncyk7CiAgICAgdm9pZCBwcmVwYXJlVG9EcmF3KCk7CiAgICAgdm9pZCBm
aW5pc2hlZENyZWF0aW5nVGlsZXMoYm9vbCBkaWRDcmVhdGVUaWxlcywgYm9vbCBjcmVhdGVNb3Jl
KTsKICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3RJbkxheWVyKENBTGF5ZXIgKikgY29uc3Q7CkBA
IC0xNzIsMzMgKzE3NCwzMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGlsZUNyZWF0aW9uVGltZXJG
aXJlZCgpOwogCiAgICAgdm9pZCBkcmF3UmVwbGFjZW1lbnRJbWFnZShMZWdhY3lUaWxlTGF5ZXIq
LCBDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYpOwotICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQo
TGVnYWN5VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0KTsKKyAgICB2
b2lkIGRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dS
ZWN0IGRpcnR5UmVjdCwgRHJhd2luZ0ZsYWdzKTsKIAotICAgIFdBS1dpbmRvdyogbV93aW5kb3c7
CisgICAgV0FLV2luZG93KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlOwogCi0gICAgYm9vbCBtX2tlZXBz
Wm9vbWVkT3V0VGlsZXM7Ci0KLSAgICBib29sIG1faGFzUGVuZGluZ0xheW91dFRpbGVzOwotICAg
IGJvb2wgbV9oYXNQZW5kaW5nVXBkYXRlVGlsaW5nTW9kZTsKICAgICAvLyBFbnN1cmUgdGhlcmUg
YXJlIG5vIGFzeW5jIGNhbGxzIG9uIGEgZGVhZCB0aWxlIGNhY2hlLgogICAgIFJldGFpblB0cjxM
ZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmU+IG1fdG9tYnN0b25lOwogCiAgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdDsKIAotICAgIFRpbGluZ01vZGUgbV90
aWxpbmdNb2RlOwotICAgIFRpbGluZ0RpcmVjdGlvbiBtX3RpbGluZ0RpcmVjdGlvbjsKLQotICAg
IEludFNpemUgbV90aWxlU2l6ZTsKLSAgICBib29sIG1fdGlsZXNPcGFxdWU7Ci0KLSAgICBib29s
IG1fdGlsZUJvcmRlcnNWaXNpYmxlOwotICAgIGJvb2wgbV90aWxlUGFpbnRDb3VudGVyc1Zpc2li
bGU7Ci0gICAgYm9vbCBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7Ci0gICAgYm9vbCBtX2lz
U3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkOwotCi0gICAgYm9vbCBtX2RpZENhbGxXaWxs
U3RhcnRTY3JvbGxpbmdPclpvb21pbmc7CisgICAgSW50U2l6ZSBtX3RpbGVTaXplIHsgNTEyLCA1
MTIgfTsKKyAgICAKKyAgICBUaWxpbmdNb2RlIG1fdGlsaW5nTW9kZSB7IE5vcm1hbCB9OworICAg
IFRpbGluZ0RpcmVjdGlvbiBtX3RpbGluZ0RpcmVjdGlvbiB7IFRpbGluZ0RpcmVjdGlvbkRvd24g
fTsKKyAgICAKKyAgICBib29sIG1fa2VlcHNab29tZWRPdXRUaWxlcyB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2hhc1BlbmRpbmdMYXlvdXRUaWxlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Bl
bmRpbmdVcGRhdGVUaWxpbmdNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGlsZXNPcGFxdWUg
eyB0cnVlIH07CisgICAgYm9vbCBtX3RpbGVCb3JkZXJzVmlzaWJsZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Fj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1NwZWN1bGF0
aXZlVGlsZUNyZWF0aW9uRW5hYmxlZCB7IHRydWUgfTsKKyAgICBib29sIG1fdGlsZUNvbnRyb2xs
ZXJTaG91bGRVc2VMb3dTY2FsZVRpbGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkQ2FsbFdp
bGxTdGFydFNjcm9sbGluZ09yWm9vbWluZyB7IGZhbHNlIH07CisgICAgCiAgICAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeVRpbGVHcmlkPiBtX3pvb21lZE91dFRpbGVHcmlkOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lUaWxlR3JpZD4gbV96b29tZWRJblRpbGVHcmlkOwogCkBAIC0yMDYsMTYg
KzIwOCwxNCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEludFJlY3Q+IG1fc2F2ZWREaXNwbGF5
UmVjdHM7CiAKLSAgICBmbG9hdCBtX2N1cnJlbnRTY2FsZTsKKyAgICBmbG9hdCBtX2N1cnJlbnRT
Y2FsZSB7IDEgfTsKIAotICAgIGZsb2F0IG1fcGVuZGluZ1NjYWxlOwotICAgIGZsb2F0IG1fcGVu
ZGluZ1pvb21lZE91dFNjYWxlOworICAgIGZsb2F0IG1fcGVuZGluZ1NjYWxlIHsgMCB9OworICAg
IGZsb2F0IG1fcGVuZGluZ1pvb21lZE91dFNjYWxlIHsgMCB9OwogCiAgICAgbXV0YWJsZSBMb2Nr
IG1fdGlsZU11dGV4OwogICAgIG11dGFibGUgTG9jayBtX3NhdmVkRGlzcGxheVJlY3RNdXRleDsK
ICAgICBtdXRhYmxlIExvY2sgbV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4OwotCi0gICAg
Ym9vbCBtX3RpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2NhbGVUaWxlczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLm1tCmluZGV4IGU0ZGZkZWExMGVlYjQyNTY0YmMyNTA4ZWMwOThkMWE1ZDUyZTVm
NDAuLmNlMjI4NGIyZTFhMzgzMGQ1NDEyZjIwNmJjOGFkNTE1ZDUzZTg0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNzAsMjUgKzcw
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVD
YWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93KHdpbmRvdykKLSAgICAsIG1f
a2VlcHNab29tZWRPdXRUaWxlcyhmYWxzZSkKLSAgICAsIG1faGFzUGVuZGluZ0xheW91dFRpbGVz
KGZhbHNlKQotICAgICwgbV9oYXNQZW5kaW5nVXBkYXRlVGlsaW5nTW9kZShmYWxzZSkKICAgICAs
IG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGlu
aXRdKSkKLSAgICAsIG1fdGlsaW5nTW9kZShOb3JtYWwpCi0gICAgLCBtX3RpbGluZ0RpcmVjdGlv
bihUaWxpbmdEaXJlY3Rpb25Eb3duKQotICAgICwgbV90aWxlU2l6ZSg1MTIsIDUxMikKLSAgICAs
IG1fdGlsZXNPcGFxdWUodHJ1ZSkKLSAgICAsIG1fdGlsZUJvcmRlcnNWaXNpYmxlKGZhbHNlKQot
ICAgICwgbV90aWxlUGFpbnRDb3VudGVyc1Zpc2libGUoZmFsc2UpCi0gICAgLCBtX2FjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2lzU3BlY3VsYXRpdmVUaWxlQ3JlYXRp
b25FbmFibGVkKHRydWUpCi0gICAgLCBtX2RpZENhbGxXaWxsU3RhcnRTY3JvbGxpbmdPclpvb21p
bmcoZmFsc2UpCiAgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8TGVn
YWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGlt
ZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCi0gICAg
LCBtX2N1cnJlbnRTY2FsZSgxLmYpCi0gICAgLCBtX3BlbmRpbmdTY2FsZSgwKQotICAgICwgbV9w
ZW5kaW5nWm9vbWVkT3V0U2NhbGUoMCkKLSAgICAsIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VM
b3dTY2FsZVRpbGVzKGZhbHNlKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjpt
X3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKICAgICBob3N0
TGF5ZXJTaXplQ2hhbmdlZCgpOwpAQCAtNTIwLDE0ICs1MDQsMTggQEAgdm9pZCBMZWdhY3lUaWxl
Q2FjaGU6OmRyYXdSZXBsYWNlbWVudEltYWdlKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29u
dGV4dFJlZgogICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBpbWFnZVJlY3QsIGltYWdl
KTsKIH0KIAotdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZGlydHlSZWN0KQor
dm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRpbGVMYXllciog
bGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxh
Z3MgZHJhd2luZ0ZsYWdzKQogewogICAgIENHUmVjdCBmcmFtZSA9IFtsYXllciBmcmFtZV07CiAg
ICAgRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIgZm9udEFudGlhbGlhc2luZ1N0YXRlKGNvbnRl
eHQsIFttX3dpbmRvdyB1c2VPcmllbnRhdGlvbkRlcGVuZGVudEZvbnRBbnRpYWxpYXNpbmddICYm
IFtsYXllciBpc09wYXF1ZV0pOwogICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5zZXR1cChbV0FL
V2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CiAKKyAgICBpZiAoZHJhd2luZ0ZsYWdz
ID09IERyYXdpbmdGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICBbbV93aW5kb3cgc2V0SXNJ
blNuYXBzaG90dGluZ1BhaW50OllFU107CisgICAgICAgIAogICAgIENHU1JlZ2lvbk9iaiBkcmF3
UmVnaW9uID0gKENHU1JlZ2lvbk9iailbbGF5ZXIgcmVnaW9uQmVpbmdEcmF3bl07CiAgICAgQ0dG
bG9hdCBjb250ZW50c1NjYWxlID0gW2xheWVyIGNvbnRlbnRzU2NhbGVdOworICAgIAogICAgIGlm
IChkcmF3UmVnaW9uICYmIHNob3VsZFJlcGFpbnRJblBpZWNlcyhkaXJ0eVJlY3QsIGRyYXdSZWdp
b24sIGNvbnRlbnRzU2NhbGUpKSB7CiAgICAgICAgIC8vIFVzZSBmaW5lIGdyYWluZWQgcmVwYWlu
dCByZWN0YW5nbGVzIHRvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgcGFpbnRlZCBwaXhlbHMuCiAg
ICAgICAgIENHU1JlZ2lvbkVudW1lcmF0b3JPYmogZW51bWVyYXRvciA9IENHU1JlZ2lvbkVudW1l
cmF0b3IoZHJhd1JlZ2lvbik7CkBAIC01NTAsOSArNTM4LDEyIEBAIHZvaWQgTGVnYWN5VGlsZUNh
Y2hlOjpkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRS
ZWYgY29uCiAgICAgfQogCiAgICAgZm9udEFudGlhbGlhc2luZ1N0YXRlLnJlc3RvcmUoKTsKKyAg
ICAKKyAgICBpZiAoZHJhd2luZ0ZsYWdzID09IERyYXdpbmdGbGFnczo6U25hcHNob3R0aW5nKQor
ICAgICAgICBbbV93aW5kb3cgc2V0SXNJblNuYXBzaG90dGluZ1BhaW50Ok5PXTsKIH0KIAotdm9p
ZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0Nv
bnRleHRSZWYgY29udGV4dCkKK3ZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIoTGVnYWN5
VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIERyYXdpbmdGbGFncyBkcmF3
aW5nRmxhZ3MpCiB7CiAgICAgLy8gVGhlIHdlYiBsb2NrIHVubG9jayBvYnNlcnZlciBydW5zIGFm
dGVyIENBIGNvbW1pdCBvYnNlcnZlci4KICAgICBpZiAoIVdlYlRocmVhZElzTG9ja2VkT3JEaXNh
YmxlZCgpKSB7CkBAIC01NzEsNyArNTYyLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdM
YXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBp
ZiAoUmV0YWluUHRyPENHSW1hZ2U+IGNvbnRlbnRSZXBsYWNlbWVudEltYWdlID0gdGhpcy0+Y29u
dGVudFJlcGxhY2VtZW50SW1hZ2UoKSkKICAgICAgICAgZHJhd1JlcGxhY2VtZW50SW1hZ2UobGF5
ZXIsIGNvbnRleHQsIGNvbnRlbnRSZXBsYWNlbWVudEltYWdlLmdldCgpKTsKICAgICBlbHNlCi0g
ICAgICAgIGRyYXdXaW5kb3dDb250ZW50KGxheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QpOworICAg
ICAgICBkcmF3V2luZG93Q29udGVudChsYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBkcmF3aW5n
RmxhZ3MpOwogCiAgICAgKytsYXllci5wYWludENvdW50OwogICAgIGlmIChtX3RpbGVQYWludENv
dW50ZXJzVmlzaWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllci5oCmluZGV4IDk4NzBlN2IwM2UxZWFlN2MxOTE0ODIwM2E2Mjc3N2FkZTRiZDc1YWIu
LjNlYWE1ZDM5YmQwZTc0MGEwZDc5ZWFlNTA0ZjFhZjEwZWQyMmNhYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExlZ2Fj
eVRpbGVMYXllcl9oCi0jZGVmaW5lIExlZ2FjeVRpbGVMYXllcl9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIFBMQVRGT1JNKElPUykKIApAQCAtNDAsNyArMzksNiBAQCBjbGFzcyBMZWdhY3lUaWxlR3Jp
ZDsKIH0KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSB1bnNpZ25lZCBwYWludENvdW50OwogQHByb3Bl
cnR5IChub25hdG9taWMpIFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkKiB0aWxlR3JpZDsKLSsgKExl
Z2FjeVRpbGVMYXllciAqKWxheWVyQmVpbmdQYWludGVkOwogQGVuZAogCiBAaW50ZXJmYWNlIExl
Z2FjeVRpbGVIb3N0TGF5ZXIgOiBDQUxheWVyIHsKQEAgLTUwLDQgKzQ4LDQgQEAgY2xhc3MgTGVn
YWN5VGlsZUdyaWQ7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0jZW5kaWYgLy8g
VGlsZUxheWVyX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
TGF5ZXIubW0KaW5kZXggNWNhMjEyYTNjNGYyYmVjMjEyZDZiZGY1ZmIxMTI3ZDEzNDY2OWZjNi4u
MDEzYzZjYjhiNTIzMTE1MmM4NDZkYmFhNzVmNTQwM2NmOTNhYWJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTGVnYWN5VGlsZUNhY2hlLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWQu
aCIKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3Bl
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02OCwxMiArNjksMTQgQEAgLSAo
dm9pZClyZW5kZXJJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB9CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgTGVnYWN5VGlsZUxheWVyICgpCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRJc1JlbmRlcmluZ0luQ29udGV4dDopIEJPT0wgX2lzUmVuZGVyaW5nSW5Db250ZXh0Owor
QGVuZAorCiBAaW1wbGVtZW50YXRpb24gTGVnYWN5VGlsZUxheWVyCiBAc3ludGhlc2l6ZSBwYWlu
dENvdW50ID0gX3BhaW50Q291bnQ7CiBAc3ludGhlc2l6ZSB0aWxlR3JpZCA9IF90aWxlR3JpZDsK
IAotc3RhdGljIExlZ2FjeVRpbGVMYXllciAqbGF5ZXJCZWluZ1BhaW50ZWQ7Ci0KIC0gKHZvaWQp
c2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpcmVjdAogewogICAgIC8vIFdlIG5lZWQgdG8g
ZG8gV2ViS2l0IGxheW91dCBiZWZvcmUgcGFpbnRpbmcuIExheW91dCBtYXkgZ2VuZXJhdGUgbmV3
IHJlcGFpbnQgcmVjdHMgYW5kCkBAIC05Myw2ICs5NiwxMiBAQCAtICh2b2lkKWxheW91dFN1Ymxh
eWVycwogICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLnByZXBhcmVUb0RyYXcoKTsKIH0K
IAorLSAodm9pZClyZW5kZXJJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAg
U2V0Rm9yU2NvcGU8Qk9PTD4gY2hhbmdlKF9faXNSZW5kZXJpbmdJbkNvbnRleHQsIFlFUyk7Cisg
ICAgW3N1cGVyIHJlbmRlckluQ29udGV4dDpjb250ZXh0XTsKK30KKwogLSAodm9pZClkcmF3SW5D
b250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewogICAgIC8vIEJ1Z3MgaW4gY2xpZW50cyBv
ciBvdGhlciBmcmFtZXdvcmtzIG1heSBjYXVzZSB0aWxlIGludmFsaWRhdGlvbiBmcm9tIHdpdGhp
biBhIENBIGNvbW1pdC4KQEAgLTEwNSw3ICsxMTQsNyBAQCAtICh2b2lkKWRyYXdJbkNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKIAogICAgIGlm
IChfdGlsZUdyaWQpCi0gICAgICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkuZHJhd0xheWVyKHNl
bGYsIGNvbnRleHQpOworICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmRyYXdMYXllcihz
ZWxmLCBjb250ZXh0LCBzZWxmLl9pc1JlbmRlcmluZ0luQ29udGV4dCA/IExlZ2FjeVRpbGVDYWNo
ZTo6RHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcgOiBMZWdhY3lUaWxlQ2FjaGU6OkRyYXdpbmdG
bGFnczo6Tm9uZSk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5n
ICopa2V5CkBAIC0xMTUsMTEgKzEyNCw2IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6
KE5TU3RyaW5nICopa2V5CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotKyAoTGVnYWN5VGlsZUxheWVy
ICopbGF5ZXJCZWluZ1BhaW50ZWQKLXsKLSAgICByZXR1cm4gbGF5ZXJCZWluZ1BhaW50ZWQ7Ci19
Ci0KIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBlMjhiY2ZkNDEwNjJkZDM2MjUzMTRmNDAxYjAy
OTg4MDg1YzVmYTcxLi5mZDJmODUyYjMxZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC01MDUsNyAr
NTA1LDcgQEAgKyAodm9pZClfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6KGludClxdWFsaXR5CiAg
ICAgc0ludGVycG9sYXRpb25RdWFsaXR5ID0gdG9DR0ludGVycG9sYXRpb25RdWFsaXR5KChXZWJD
b3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eSlxdWFsaXR5KTsKIH0KIAotLSAodm9pZClfZHJhd1Jl
Y3Q6KE5TUmVjdClkaXJ0eVJlY3QgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0Zv
Y3VzOihib29sKWxvY2tGb2N1cworLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3Qg
Y29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihCT09MKWxvY2tGb2N1cwog
ewogICAgIGlmIChfaXNIaWRkZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oCmluZGV4IDJiNWI5OWQ5OWE0NzQyYWJjMjQ4MjYz
YmM3YjE1M2Y2YmJkOTYzY2YuLjg3Mzk5YTE3MGRjNjE3OTkyMDZjMWY5MzNmNmVhNjE5ZGE0MmNl
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaApAQCAt
ODQsNiArODQsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdBS1Jl
c3BvbmRlcgogICAgIFdBS1ZpZXcgKl9uZXh0UmVzcG9uZGVyOwogCiAgICAgQk9PTCBfdmlzaWJs
ZTsKKyAgICBCT09MIF9pc0luU25hcHNob3R0aW5nUGFpbnQ7CiAgICAgQk9PTCBfdXNlT3JpZW50
YXRpb25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5nOwogICAgIEJPT0wgX2VudGlyZVdpbmRvd1Zp
c2libGVGb3JUZXN0aW5nOwogfQpAQCAtMTMxLDYgKzEzMiw5IEBAIFdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAtICh2b2lkKXNlbmRFdmVudFN5bmNo
cm9ub3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudDsKIC0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50
OihXZWJFdmVudCAqKWFuRXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUNv
bnRlbnRDaGFuZ2U7CiAKKy0gKHZvaWQpc2V0SXNJblNuYXBzaG90dGluZ1BhaW50OihCT09MKWlz
SW5TbmFwc2hvdHRpbmdQYWludDsKKy0gKEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OworCiAv
LyBUaHJlYWQgc2FmZSB3YXkgb2YgcHJvdmlkaW5nIHRoZSAidXNhYmxlIiByZWN0IG9mIHRoZSBX
QUtXaW5kb3cgaW4gdGhlIHZpZXdwb3J0L3Njcm9sbHZpZXcuCiAtIChDR1JlY3QpZXhwb3NlZFNj
cm9sbFZpZXdSZWN0OwogLy8gc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0IHNob3VsZCBvbmx5IGV2
ZXIgYmUgY2FsbGVkIGZyb20gVUlLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV0FLV2luZG93Lm1tCmluZGV4IDk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIwZTI2Mzgx
ZjkwYjkuLjAyNjk4MmM5YTQxN2JiNzgwN2JiYWYxZmRiYmRmOTdkZDIyODJiNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC00MzgsNiArNDM4
LDE2IEBAIC0gKHZvaWQpc2V0VGlsZXNPcGFxdWU6KEJPT0wpb3BhcXVlCiAgICAgX3RpbGVDYWNo
ZS0+c2V0VGlsZXNPcGFxdWUob3BhcXVlKTsKIH0KIAorLSAodm9pZClzZXRJc0luU25hcHNob3R0
aW5nUGFpbnQ6KEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50Cit7CisgICAgX2lzSW5TbmFwc2hv
dHRpbmdQYWludCA9IGlzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKworLSAoQk9PTClpc0luU25h
cHNob3R0aW5nUGFpbnQKK3sKKyAgICByZXR1cm4gX2lzSW5TbmFwc2hvdHRpbmdQYWludDsKK30K
KwogLSAodm9pZClzZXRFbnRpcmVXaW5kb3dWaXNpYmxlRm9yVGVzdGluZzooQk9PTCllbnRpcmVX
aW5kb3dWaXNpYmxlCiB7CiAgICAgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0aW5nID0gZW50
aXJlV2luZG93VmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4
IGYxNjdlODdhOGUwMjIxMjJjZGZmMDRkNmI2NjhhN2M5YzIwOWQzMTYuLjU5OGU4NTBlM2M3Mjdk
ZThjODI1YWNlZjJkYzhlOTlmZjk3OTIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50
UGhhc2UuaApAQCAtNTgsMTIgKzU4LDEzIEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAg
ICBQYWludEJlaGF2aW9yU2tpcFNlbGVjdGlvbkhpZ2hsaWdodCAgICAgID0gMSA8PCAxLAogICAg
IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCAgICAgICAgICAgICAgPSAxIDw8IDIsCiAgICAg
UGFpbnRCZWhhdmlvckZvcmNlV2hpdGVUZXh0ICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICBQ
YWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA0LAotICAgIFBh
aW50QmVoYXZpb3JSZW5kZXJpbmdTVkdNYXNrICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgUGFp
bnRCZWhhdmlvclNraXBSb290QmFja2dyb3VuZCAgICAgICAgICA9IDEgPDwgNiwKLSAgICBQYWlu
dEJlaGF2aW9yUm9vdEJhY2tncm91bmRPbmx5ICAgICAgICAgID0gMSA8PCA3LAotICAgIFBhaW50
QmVoYXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDgsCi0gICAgUGFpbnRC
ZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOSwKKyAgICBQYWludEJl
aGF2aW9yUmVuZGVyaW5nU1ZHTWFzayAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFBhaW50QmVo
YXZpb3JTa2lwUm9vdEJhY2tncm91bmQgICAgICAgICAgPSAxIDw8IDUsCisgICAgUGFpbnRCZWhh
dmlvclJvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICA9IDEgPDwgNiwKKyAgICBQYWludEJlaGF2
aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAorICAgIFBhaW50QmVoYXZp
b3JFeGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBz
dG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCisgICAgUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZyAgICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hv
dHRpbmcsIGUuZy4gZm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCiB9OwogCiB0eXBl
ZGVmIHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDg5ZDM1Y2YwNWE1NTgyNDQ2MjNkNzIwMWY0Yzc4ZTMxOTFmZWEzNzkuLjA2
Njc2Y2YxNGJhMzFhMTcxOTNlZjA1NDUyZTgxYTA2OGVjMjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCB2b2lkIFJlbmRlckJv
eDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRSZWN0JiBwYQogICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwdXNoIGEgdHJhbnNw
YXJlbmN5IGxheWVyIHRvIHJlbmRlciBvdXIgbWFzay4KICAgICBib29sIHB1c2hUcmFuc3BhcmVu
Y3lMYXllciA9IGZhbHNlOwogICAgIGJvb2wgY29tcG9zaXRlZE1hc2sgPSBoYXNMYXllcigpICYm
IGxheWVyKCktPmhhc0NvbXBvc2l0ZWRNYXNrKCk7Ci0gICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMgPSB2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhh
dmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICBib29sIGZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycyA9IHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENv
bXBvc2l0ZVNvdXJjZU92ZXI7CiAKICAgICBib29sIGFsbE1hc2tJbWFnZXNMb2FkZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggZmQ4NWJmOTdkOWIzZmZkNzg2MTRkMzc5YzU0NjBjYTUyMGY1NzBlZi4uNWViNTEx
YzZkYjEwMzIyMjQzMTI0YzZlNmZmMTk5MDE2MTg2OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04ODIsNyArODgyLDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRt
YXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAg
ICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAg
ICAgYXV0byBkZWNvZGluZ01vZGUgPSAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpID8gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAgICAgICAg
YXV0byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhh
dmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcp
KSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
czsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5k
ZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21l
dHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMTZhOTQwNGRm
YzhkMzRmMzhhY2QzYzQ3MTQ3OWM3YzBiNjhhYTZmZi4uNzMzYzllNzFmZTNiY2JiZTZjNTgxOWFm
NmI1NjdkMGI3YTYzNDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAo
Y2xpcCkKICAgICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKIAotICAgIHBhaW50
SW50b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRS
ZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLCBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFj
dG9yKSk7CiAgICAgCiAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdl
cyBhcyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBX
ZSBtYXkgd2FudCAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxl
bWVudEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgp
OwogfQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGlmICghaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgfHwgaW1hZ2VSZXNvdXJjZSgp
LmVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9
IDApCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogCiAgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgp
LgogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAg
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVy
cG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5z
aXplKCkpKSA6IEludGVycG9sYXRpb25EZWZhdWx0OworICAgIEludGVycG9sYXRpb25RdWFsaXR5
IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KHBhaW50
SW5mby5jb250ZXh0KCksICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6
IEludGVycG9sYXRpb25EZWZhdWx0OwogCiAjaWYgVVNFKENHKQogICAgIGlmIChpczxQREZEb2N1
bWVudEltYWdlPihpbWFnZSkpCkBAIC01ODQsOCArNTg0LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNl
dHRpbmdzKHNldHRpbmdzKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHZpZXco
KS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzKSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6
OkFzeW5jaHJvbm91czsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBh
aW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKworICAgIGF1
dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkg
PyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdN
b2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIGJvb2wg
UmVuZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2
b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IGFkYjkyZGZkMjczMmY1OGYzOWRmOGU1Y2UxZGUzODU2OGY4NDhmMzcu
LjkxMmJlZTQ0NDVmZWIzYThlYjI0NjQyNTE0ZmE4NjcwOTM5OWFlZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdjOWE4YTkxMTM4MTQ1MTE3
ZWY1NjkwNjQzZTM1NWY2ZGMwNTAxMDcuLjQ2NTY4YTA5MzUzZDhkNWIzODhlOThmZDQxOGU3N2Mx
ZDk5ZjllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
NDM4Myw2ICs0MzgzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgZWxzZSBp
ZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5
KQogICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91
bmRPbmx5OwogCisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJl
aGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWlu
dEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCkBAIC00Nzg1LDYg
KzQ3ODgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMo
Y29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChsb2NhbFBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAg
ICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsK
IAorICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlv
clNuYXBzaG90dGluZykKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmc7CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmds
ZSBmcmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZv
LmNsaXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZy
YWdtZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVn
cm91bmRSZWN0LmlzRW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzk5ODI1
ZTJiOGE5OTcwZGI5Y2Y4YjQyZmY4NDZiYjEyOWM1OWQxMi4uOTM2MDdlMmMyYzYyMDRlMjZkYWY5
Y2E1NjcyMWFiZTZkZGIxMzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyLCBHcmFwCiB9CiAKIC8vIFVwLWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5n
IGNhbGxiYWNrLgotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3Qg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBH
cmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXApCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xp
cCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAg
IHJlbmRlcmVyKCkucGFnZSgpLnNldElzUGFpbnRpbmcodHJ1ZSk7CkBAIC0yNTY4LDcgKzI1Njgs
MTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRl
cnNlY3QoZW5jbG9zaW5nSW50UmVjdChjb21wb3NpdGVkQm91bmRzSW5jbHVkaW5nTWFyZ2luKCkp
KTsKIAogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQg
dGVzdGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBS
ZWN0cy4KLSAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGly
dHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgUGFp
bnRCZWhhdmlvciBiZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWw7CisgICAgICAgIGlmIChm
bGFncyA9PSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICAg
ICAgYmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKworICAgICAgICBwYWlu
dEludG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBw
YWludGluZ1BoYXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBh
aW50KHJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVy
ID09IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDc3N2Y5YmFhZTVjNjcyMTJkMmY3
NjJlMDY2MTU5NWZjYzFlMTA3Mi4uYzhmYmI4MTM4YTU0NGNlNTIzOWQ4MWM1MDRlZDI2NmFlY2Zi
MzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
aApAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hC
ZWZvcmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4
dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogCiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBjb250ZW50c1Nj
YWxlTXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggMjFmNmQ1MTg1YjBmYWRlOWE2OTNiZTBiZTg0YzE5YzdlMDU5ZDA3My4u
NWFlNWJkOTM0NjYyNjk4YTRlYjVjN2RhMTc3MDMwNTQzMTZlM2JkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjMs
NyArMjg2Myw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MpCiB7CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVk
SXRlbXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhp
Y3NMYXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjOWQ0OGIxOWRi
ZTZlMGQ4OWM5MzBlMmVkZDRiYTdhYWM1YWI4ZWZmLi4wN2Q3NjFkNTE5Yzk0YjE1ZDBmZTdmMjE4
ZGMyODQ0YjFjYWViOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IEdyYXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIG5vdGlmeUZsdXNo
UmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NM
YXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEZsYWdzKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJl
Y3RDb21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZjJkNmVk
NmFmZmJlMTVjNzU5YTBkYzQ3MThiODY0Mzk5NWY0N2EzLi5kMzdjNDg2YWRmNWI0MzY5ZTkzMTU2
N2JlNGI3MWQ2MWFmYTM1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRl
by5jcHAKQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2Vk
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAg
ICBjb250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIp
Ci0gICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIHBhaW50SW50
b1JlY3QocGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNG
dWxsc2NyZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkpIHsKLSAgICAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQ
YWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICBpZiAocGFpbnRJ
bmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KQogICAgICAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNv
bnRleHQsIHJlY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFp
bnQoY29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGNmMDQ4NThiNTk2ZTkzYTdmZDljODMw
YTFmNzFhNDdhMjk0ZmIzY2MuLmMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
LSAodm9pZClhZGRXaW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09ic2VydmVy
czsKIC0gKEJPT0wpc2hvdWxkQ2xpcE91dFBsdWdpbjsKLS0gKEJPT0wpaW5GbGF0dGVuaW5nUGFp
bnQ7CiAKIC0gKEJPT0wpc3VwcG9ydHNTbmFwc2hvdHRpbmc7CiAtICh2b2lkKWNhY2hlU25hcHNo
b3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KaW5kZXggMjFmOTA0NWVmMzc1NzgwNzhkNGNkN2IxOTg5ZDE5Y2MzOWEx
NThhNC4uNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtNDM4LDE0ICs0MzgsNiBAQCAtIChCT09MKXNob3VsZENsaXBPdXRQbHVnaW4KICAg
ICByZXR1cm4gIXdpbmRvdyB8fCBbd2luZG93IGlzTWluaWF0dXJpemVkXSB8fCBbTlNBcHAgaXNI
aWRkZW5dIHx8ICFbc2VsZiBpc0Rlc2NlbmRhbnRPZjpbW3NlbGYgd2luZG93XSBjb250ZW50Vmll
d11dIHx8IFtzZWxmIGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl07CiB9CiAKLS0gKEJPT0wp
aW5GbGF0dGVuaW5nUGFpbnQKLXsKLSAgICBhdXRvKiByZW5kZXJlciA9IF9lbGVtZW50LT5yZW5k
ZXJlcigpOwotICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAg
ICAgICAgcmV0dXJuIE5POwotICAgIHJldHVybiAhIShkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9i
amVjdD4oKnJlbmRlcmVyKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci19Ci0KIC0gKEJPT0wpc3VwcG9y
dHNTbmFwc2hvdHRpbmcKIHsKICAgICByZXR1cm4gW19wbHVnaW5QYWNrYWdlLmdldCgpIHN1cHBv
cnRzU25hcHNob3R0aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDcwMzI2MDA3NGVjMzM5Yzg4ODIwYjc5NTBjZmIxNDRlZDc3NGNkODQuLjljMGY4MmRlYmQ1YWVi
MDQyZTNhMDU1NGYwNTlmNTNhNzgwMDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQpAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV0FLU2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV0tHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkUnVuLmg+CiAjZW5kaWYKQEAgLTU4MiwyNCArNTgzLDMxIEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgcmV0dXJuIHBsYWluVGV4dChjb3Jl
KHJhbmdlKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotLSAoQk9P
TClfc2hvdWxkRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOihDR0NvbnRleHRSZWYpY29udGV4dAor
CistIChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gLWN1cnJl
bnRDb250ZXh0RHJhd2luZ1RvU2NyZWVuIHJldHVybnMgWUVTIGZvciBiaXRtYXAgY29udGV4dHMu
CiAgICAgQk9PTCBpc1ByaW50aW5nID0gIVtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dERyYXdpbmdUb1NjcmVlbl07CiAgICAgaWYgKGlzUHJpbnRpbmcpCi0gICAgICAgIHJldHVybiBZ
RVM7CisgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
IHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCiAgICAgaWYgKCFXS0NHQ29u
dGV4dElzQml0bWFwQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIE5POworICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2Ug
bWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmll
dy4KICAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVu
dFZpZXddOwotICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0gJiYgWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0lu
dG9MYXllcl0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBbZ2V0V2ViVmlldyhz
ZWxmKSBfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRt
YXBdOworICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0pIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChbW2RvY3VtZW50VmlldyB3
aW5kb3ddIGlzSW5TbmFwc2hvdHRpbmdQYWludF0pCisgICAgICAgICAgICByZXR1cm4gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZzsKKyNlbmRpZgorICAgICAgICBpZiAoWyhXZWJIVE1MVmlldyAq
KWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogfQogCiAtICh2b2lkKV9k
cmF3UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQpAQCAt
NjIyLDI4ICs2MzAsMjkgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRz
T25seTooQk9PTCljb250ZW50c09ubHkKIAogICAgIEZyYW1lVmlldyogdmlldyA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPnZpZXcoKTsKICAgICAKLSAgICBib29sIHNob3VsZEZsYXR0ZW4gPSBmYWxz
ZTsKKyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gdmlldy0+cGFpbnRCZWhhdmlvcigp
OworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZEJlaGF2aW9yOworICAgIAog
ICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT50cmVlKCku
cGFyZW50KCkpIHsKICAgICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0
IHRoZSBwYWludCBiZWhhdmlvciBmcm9tIG91ciBwYXJlbnQKLSAgICAgICAgRnJhbWVWaWV3KiBw
YXJlbnRWaWV3ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogMDsKLSAgICAg
ICAgaWYgKHBhcmVudFZpZXcpCi0gICAgICAgICAgICBzaG91bGRGbGF0dGVuID0gcGFyZW50Vmll
dy0+cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
czsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lID8gcGFy
ZW50RnJhbWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3
LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KQorICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJl
bnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQorICAg
ICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsK
KyAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzaG91bGRGbGF0dGVuID0gW3NlbGYgX3No
b3VsZEZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczpjdHhdOworICAgICAgICBwYWludEJlaGF2aW9y
IHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAg
ICAgIAorICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKLSAgICBQ
YWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAo
c2hvdWxkRmxhdHRlbikgewotICAgICAgICBvbGRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZp
b3IoKTsKLSAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50
QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgIH0KLSAgICAKICAgICBpZiAo
Y29udGVudHNPbmx5KQogICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xv
c2luZ0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgdmlldy0+cGFpbnQoY29udGV4
dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKLSAgICBpZiAoc2hvdWxkRmxhdHRlbikKLSAg
ICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0
UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CiB9CiAKIC0gKEJPT0wpX2dldFZpc2libGVSZWN0
OihOU1JlY3QqKXJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDVkNTVhYjEzYmE3NGNiN2YxYmZlY2I3OTE4NjcwMzIwM2YyY2QwN2IuLjk0Nzg5NTljY2Vm
ZGU4ZWQ2NjU5YzRmYWIyNDA5OGU1ZjdhMTdhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtNzI5Nyw4ICs3Mjk3LDggQEAgc3RhdGljIENHSW1hZ2VSZWYg
aW1hZ2VGcm9tUmVjdChGcmFtZSogZnJhbWUsIENHUmVjdCByZWN0KQogICAgIFdlYkhUTUxWaWV3
ICp2aWV3ID0gKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIAogICAgIFBhaW50QmVo
YXZpb3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsK
LSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQ
YWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKKyAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyk7CisK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCiAgICAgQ0dSZWN0IGJvdW5k
cyA9IFt2aWV3IGJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
N2MxZTA1N2MzN2UzZTFjN2FmMGVlNDdiNDVlNTZmOGZjZjU2YjZjYy4uNTlkYjllMDUyNWQ4NWYy
OWVjY2EwNWI0NDY1MzMwZmEyM2U5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTM2OSw3ICsxMzY5LDYgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbHNl
CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dD
b2xvcihDb2xvcjo6d2hpdGUpKTsKICNlbmRpZgotICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0
ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBfcHJpdmF0ZS0+d2luZG93VmlzaWJpbGl0eU9ic2VydmVyID0gYWRv
cHROUyhbW1dlYldpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNl
bGZdKTsKQEAgLTQ1MDQsMTYgKzQ1MDMsNiBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJs
ZQogICAgIHJldHVybiBZRVM7CiB9CiAKLS0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29t
cG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWcKLXsKLSAgICBfcHJp
dmF0ZS0+aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRt
YXAgPSBmbGFnOwotfQotCi0tIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5
ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcAotewotICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVkZXNG
bGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7Ci19Ci0KIC0gKHZv
aWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLmgKaW5kZXggNmMzNjkyODY3N2JmNjUzNjRlYWJkY2M1NmUwOTQ1YzEwNmMyZTY5My4uMGE1
NDA2ODNmYTJlNGQ3NWYwMTc5OGQxNmQ1YzBkNmVmYTZmZGU3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZhdGU6CiAKICAg
ICBCT09MIHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCi0gICAgQk9PTCBpbmNsdWRlc0Zs
YXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKLQogICAgIC8vIFdo
ZW4gdGhpcyBmbGFnIGlzIHNldCwgbmV4dCB0aW1lIGEgV2ViSFRNTFZpZXcgZHJhd3MsIGl0IG5l
ZWRzIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgc2NyZWVuIHVwZGF0ZXMKICAgICAvLyBzbyB0aGF0
IHRoZSBOU1ZpZXcgZHJhd2luZyBpcyB2aXN1YWxseSBzeW5jaHJvbml6ZWQgd2l0aCBDQUxheWVy
IHVwZGF0ZXMuCiAgICAgQk9PTCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5OTQ3ODZi
MTRlOTE4Y2JlNzkzNzc0NTczMDQwNTg3ZjFkNjFiYjMuLjRmZDA3NWEzYzBiY2FlYTc4ZDJhMTgw
N2U3ZWM1NjU5ZDc5YmZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTc2NSwxMCArNzY1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRo
ZSBBUEkuCiAKIC8vIFJldHVybnMgWUVTIGlmIE5TVmlldyAtZGlzcGxheVJlY3RJZ25vcmluZ09w
YWNpdHk6aW5Db250ZXh0OiB3aWxsIHByb2R1Y2UgYSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgY29udGVudC4KIC0gKEJPT0wpX2lzU29mdHdhcmVSZW5kZXJhYmxlOwotLy8gV2hlbiBk
cmF3aW5nIGludG8gYSBiaXRtYXAgY29udGV4dCwgd2Ugbm9ybWFsbHkgZmxhdHRlbiBjb21wb3Np
dGluZyBsYXllcnMgKGFuZCBkaXN0b3J0IDNEIHRyYW5zZm9ybXMpLgotLy8gQ2xpZW50cyB3aG8g
YXJlIGFibGUgdG8gY2FwdHVyZSB0aGVpciBvd24gY29weSBvZiB0aGUgY29tcG9zaXRpbmcgbGF5
ZXJzIG5lZWQgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoaXMuCi0tICh2b2lkKV9zZXRJbmNsdWRl
c0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDooQk9PTClmbGFn
OwotLSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5n
VG9CaXRtYXA7CiAKIC0gKHZvaWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZzsKIC0gKEJP
T0wpaXNUcmFja2luZ1JlcGFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcAppbmRleCAzNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFk
ODY1MmIwNjRmLi45ZTYwYzRmZDYzN2M4ZGM5MGM3MDViMWI0YTcwZTdhNmVhMDRhZTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAt
MTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxh
eWVyQW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsgfQogICAgIHZp
cnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgeyB9CiAgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENv
dW50ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxh
eWVyKikgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggMjg0MGI5NTY2M2NmZTkzZGY1NWMxMDJk
OWFiODMwZTA5N2FmZTg3Yi4uY2U3MDUzZDIzM2NkODc0YmFhMmY4M2MwMDViYmUyNDI4YjRlNWQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCkBAIC0zNDAsMTcgKzM0MCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJl
ZgogICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgbV9sYXllci0+b3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJv
dW5kcyk7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29u
dGVudHMobV9sYXllciwgY29udGV4dCwgZGlydHlCb3VuZHMsIEdyYXBoaWNzTGF5ZXJQYWludEZs
YWdzOjpOb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVdlYkxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNr
ZHJvcExheWVyOgotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNn
Q29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0
cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXll
cjoKICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVy
IGhpZXJhcmNoeS4gV2UgbmVlZCB0byBwYWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5
ZXIgaW4gb3JkZXIgdG8gc2VlIHRoZSByZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBQbGF0Zm9y
bUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGlu
Z1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0Nv
bnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6
Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxh
eWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5k
ZXggMzQ3MWQyZGQzMjhiYzc4ZmFhNDA2YTVmZmI1NjYzN2Y1YTQ4ZGFmYi4uY2E0OWIwYzM3OTJm
MmViNWI2ZDFmODVhYzJiMWI4MmM4ZmIyMjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFJlZlB0
cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRS
ZWN0JiBwYWludGkKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxl
Y3Rpb25IaWdobGlnaHRpbmcpCiAgICAgICAgIHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVW
aWV3OjpFeGNsdWRlU2VsZWN0aW9uOwogCi0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9y
ID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmll
dy0+cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXll
cnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9u
c0ZvcmNlV2hpdGVUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAppbmRleCBmNzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0
Li5kMWZiYzI1ZDVjMjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3
IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJ
bWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xh
dGUoLXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsKIAogICAgIFBhaW50QmVoYXZpb3Ig
b2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIFBhaW50
QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9y
U2VsZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Cisg
ICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50
QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNGb3JjZVdoaXRlVGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA5NzFlYzcwNzY0YzI4MGEwNmI4OTEyMDhkYmM0ODA2NzA2MGI0NTNlLi4w
ZjJmY2IxNjA2MDg5ZTQzY2UxY2YyODNkZTI4YWY0NzEzZTc5NWVhIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTct
MDUtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAg
U25hcHNob3R0aW5nIHZpYSAtcmVuZGVySW5Db250ZXh0OiBzaG91bGQgZG8gc3luY2hyb25vdXMg
aW1hZ2UgZGVjb2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcyNDg1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjc2MTQ2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0LgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90
VmlhUmVuZGVySW5Db250ZXh0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVySW5Db250ZXh0
V2ViVmlld0RlbGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtSZW5k
ZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFBpeGVsSW5kZXgpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDUtMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEVOQUJMRShBUFBMRV9QQVlfREVMRUdBVEUpIHNob3VsZCBiZSBO
TyBvbiBtYWNPUyBTaWVycmEgYW5kIGVhcmxpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NDk2YzczYmJkMDVhMzg2NGU3OTFkOGU1YjQ0NGM0Y2NlYzE0YjBkMi4uYTY5MmRlOWE1MWE5Y2M1
Y2Y3OWNhMDcxNDY0ZDgyN2FkNDRkYzRjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMz
LDYgKzMzLDggQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAq
LzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAwNTQy
RDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjNCOTRBNzFBNzcyNjc0MDBERTMyNzIgLyogV0tX
ZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbSAqLzsgfTsKKwkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8q
IFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90
VmlhUmVuZGVySW5Db250ZXh0Lm1tICovOyB9OworCQkwRjRGRkFBMTFFRDNEMERFMDBGNzExMUYg
LyogSW1hZ2VJTy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRGRkFBMDFFRDNEMERFMDBGNzExMUYgLyogSW1hZ2VJTy5mcmFtZXdv
cmsgKi87IH07CiAJCTFBMDJDODcwMTI1RDRDRkQwMEUzRjRCRCAvKiBmaW5kLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMkM4NEIx
MjVENEE1RTAwRTNGNEJEIC8qIGZpbmQuaHRtbCAqLzsgfTsKIAkJMUEzNTI0QUUxRDYzQTRGQjAw
MzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMzUyNEFDMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgKi87IH07CiAJ
CTFBNEY4MUNGMUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEY4MUNE
MUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSAqLzsgfTsK
QEAgLTg5OCw2ICs5MDAsOCBAQAogCQkwRjE3QkJENDE1QUY2QzREMDA3QUI3NTMgLyogV2ViQ29y
ZVN0YXRpc3RpY3NXaXRoTm9XZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkMyMEI3MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCOTRBNTFBNzcyNjZDMDBERTMyNzIgLyogV0tX
ZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFS
ZW5kZXJJbkNvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0RkZBQTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBJbWFnZUlPLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQkw
RkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZEJsYWNrVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1ldGFBbGxvY2F0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4
RUIgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzQsNiAr
MTU3OCw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkwRjRGRkFBMTFFRDNEMERF
MDBGNzExMUYgLyogSW1hZ2VJTy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk2MzQ5
MTBFMDFFOUQzRkYzMDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAogCQkJCTdBMDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8q
IGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE4NjcsNiArMTg3Miw3IEBA
CiAJCTdDODNFMDI4MUQwQTVDREYwMEZFQkNGMyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjRGRkFBMDFFRDNEMERFMDBGNzEx
MUYgLyogSW1hZ2VJTy5mcmFtZXdvcmsgKi8sCiAJCQkJNjM0OTEwREYxRTlEM0ZGMzAwODgwMzA5
IC8qIENvcmVMb2NhdGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJN0EwMTBCQ0ExRDg3N0MwNTAwRURF
NzJBIC8qIENvcmVHcmFwaGljcy5mcmFtZXdvcmsgKi8sCiAJCQkJN0M4M0UwMzMxRDBBNUYyNzAw
RkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCkBAIC0yNTE2LDYgKzI1MjIsNyBAQAogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJQ0RDOEU0OUExQkM3MjhGRTAwNTk0RkVDIC8qIFJlc291cmNlcyAq
LywKIAkJCQlDREM4RTQ4NTFCQzVCMTk0MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJ
T1MubW0gKi8sCisJCQkJMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVu
ZGVySW5Db250ZXh0Lm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzA0MSw2ICszMDQ4LDcgQEAKIAkJCQkyRUZGMDZENDFEOEFFREJC
MDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFMzUyNEY5
MUIxNDQxQzQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQx
MUE3RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VERTFBNDExQTkyMDA0NDdDNEMgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RUIwMUE0MTFBNDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lvcy9TbmFwc2hvdFZp
YVJlbmRlckluQ29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lv
cy9TbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDkxNWNjMzY0NGM3
MTVlYTFlNmFmODkxZmNmZTk0NWI3MzRjMzhlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1t
CkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShJT1MpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxV
SUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8c3RkbGliLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK3N0YXRpYyBib29sIGxvYWRDb21wbGV0ZSA9IGZhbHNlOworc3RhdGljIGJvb2wgbG9h
ZEZhaWxlZCA9IGZhbHNlOworCitAaW50ZXJmYWNlIFJlbmRlckluQ29udGV4dFdlYlZpZXdEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxVSVdlYlZpZXdEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFJlbmRlckluQ29udGV4dFdlYlZpZXdEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXdEaWRG
aW5pc2hMb2FkOihVSVdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgbG9hZENvbXBsZXRlID0gdHJ1
ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihVSVdlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxMb2Fk
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBsb2FkQ29tcGxldGUgPSB0cnVlOwor
ICAgIGxvYWRGYWlsZWQgPSB0cnVlOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIE5TSW50ZWdlciBnZXRQaXhlbEluZGV4KE5TSW50ZWdlciB4LCBOU0lu
dGVnZXIgeSwgTlNJbnRlZ2VyIHdpZHRoKQoreworICAgIHJldHVybiAoeSAqIHdpZHRoICsgeCkg
KiA0OworfQorCitURVNUKFdlYktpdDEsIFJlbmRlckluQ29udGV4dFNuYXBzaG90KQoreworICAg
IGNvbnN0IE5TSW50ZWdlciB3aWR0aCA9IDgwMDsKKyAgICBjb25zdCBOU0ludGVnZXIgaGVpZ2h0
ID0gNjAwOworICAgIAorICAgIFJldGFpblB0cjxVSVdpbmRvdz4gdWlXaW5kb3cgPSBhZG9wdE5T
KFtbVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB3aWR0aCwg
aGVpZ2h0KV0pOworICAgIFJldGFpblB0cjxVSVdlYlZpZXc+IHVpV2ViVmlldyA9IGFkb3B0TlMo
W1tVSVdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB3aWR0aCwg
aGVpZ2h0KV0pOworICAgIFt1aVdpbmRvdyBhZGRTdWJ2aWV3OnVpV2ViVmlldy5nZXQoKV07Cisg
ICAgCisgICAgUmV0YWluUHRyPFJlbmRlckluQ29udGV4dFdlYlZpZXdEZWxlZ2F0ZT4gdWlEZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tSZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICB1aVdlYlZpZXcuZ2V0KCkuZGVsZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOwor
ICAgIAorICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgTlNMb2coQCJMb2FkaW5n
ICVAIiwgdXJsKTsKKyAgICBbdWlXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dXJsXV07CisgICAgCisgICAgVXRpbDo6cnVuKCZsb2FkQ29tcGxldGUpOwor
ICAgIAorICAgIEVYUEVDVF9UUlVFKGxvYWRDb21wbGV0ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGxv
YWRGYWlsZWQpOworICAgIAorICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNhbGxvYyh3aWR0aCAqIGhlaWdodCwgNCkpOworICAgIAor
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBj
b250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsQnVmZmVyLCB3aWR0aCwgaGVpZ2h0
LCA4LCA0ICogd2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKTsKKyAgICAKKyAgICAvLyBGbGlwIHRo
ZSBjb250ZXh0CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOwor
ICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCAtaGVpZ2h0KTsKKyAg
ICAKKyAgICBbdWlXZWJWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAxLCA2MDEpXTsg
Ly8gVGhpcyByZXNpemUgc3RvcHMgQ29yZSBBbmltYXRpb24gZnJvbSB1c2luZyBjYWNoZWQgbGF5
ZXIgYmFja2luZyBzdG9yZQorICAgIFtbdWlXZWJWaWV3IGxheWVyXSByZW5kZXJJbkNvbnRleHQ6
IGNvbnRleHQuZ2V0KCldOworICAgIAorICAgIC8vIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBzcXVh
cmUgYXQgMCwwIC0gMTAweDEwMAorICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJ
bmRleCgxLCAxLCB3aWR0aCk7CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZSA9IHBpeGVsQnVmZmVy
W3BpeGVsSW5kZXhdOworICAgIEVYUEVDVF9FUSgyNTUsIHZhbHVlKTsKKyAgICBFWFBFQ1RfRVEo
MCwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDFdKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGl4ZWxC
dWZmZXJbcGl4ZWxJbmRleCArIDJdKTsKKyAgICAKKyAgICAvLyBSaWdodC1ib3R0b20gY29ybmVy
IG9mIHRoZSBkaXYgKDAsIDAsIDEwMCwgMTAwKQorICAgIHBpeGVsSW5kZXggPSBnZXRQaXhlbElu
ZGV4KDk4LCA5OCwgd2lkdGgpOworICAgIEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVs
SW5kZXhdKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDFdKTsK
KyAgICBFWFBFQ1RfRVEoMCwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDJdKTsKKyAgICAKKyAg
ICAvLyBPdXRzaWRlIHRoZSBkaXYgKDAsIDAsIDEwMCwgMTAwKQorICAgIHBpeGVsSW5kZXggPSBn
ZXRQaXhlbEluZGV4KDEwMSwgMTAxLCB3aWR0aCk7CisgICAgRVhQRUNUX0VRKDI1NSwgcGl4ZWxC
dWZmZXJbcGl4ZWxJbmRleF0pOworICAgIEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVs
SW5kZXggKyAxXSk7CisgICAgRVhQRUNUX0VRKDI1NSwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCAr
IDJdKTsKKyAgICAKKyAgICBmcmVlKHBpeGVsQnVmZmVyKTsKK30KKworfQorCisjZW5kaWYKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310983</attachid>
            <date>2017-05-22 23:31:30 -0700</date>
            <delta_ts>2017-05-23 08:18:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172485-20170522233129.patch</filename>
            <type>text/plain</type>
            <size>85886</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0Y2M2MDQ3ZTFjNGU4
ODMwNTczZmNkODAyODBlN2I0OTQ0M2I2Ni4uNTVmN2NkNzMwM2IxZDc2MWYzMjliYjBjNGRmYzhi
MzM1OWQ2MjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0yMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRp
bmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5jaHJvbm91cyBpbWFnZSBkZWNv
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI0
ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFVJV2ViVmlldyBjbGllbnRzIHNuYXBz
aG90IHRoZSB2aWV3IHZpYSAtcmVuZGVySW5Db250ZXh0OiBvbiB0aGUgVUlWaWV3J3MgbGF5ZXIs
CisgICAgICAgIFdlYktpdCBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RlcyBzbyB0
aGF0IHRoZSBpbWFnZXMgc2hvdyBpbiB0aGUgc25hcHNob3QuCisKKyAgICAgICAgRml4IGJ5IHBs
dW1iaW5nIHRocm91Z2ggYSAic25hcHNob3R0aW5nIiBwYWludCBiZWhhdmlvciBmbGFnIGZyb20g
dHdvIHNvdXJjZSBsb2NhdGlvbnM6CisgICAgICAgIFdlYlNpbXBsZUxheWVyLCB1c2VkIGJ5IGNv
bXBvc2l0aW5nIGxheWVycywgYW5kIExlZ2FjeVRpbGVMYXllciwgdXNlZCBmb3IgdGhlIFdLMSB0
aWxlIGNhY2hlLgorICAgICAgICBPbiBXZWJTaW1wbGVMYXllciB0aGUgZmxhZyBwcm9wYWdhdGVz
IHRocm91Z2ggUGxhdGZvcm1DQUxheWVyIHRvIEdyYXBoaWNzTGF5ZXIsIGFuZCBvbiBMZWdhY3lU
aWxlTGF5ZXIKKyAgICAgICAgaXQgc2V0cyBzb21lIHN0YXRlIG9uIHRoZSBXQUtXaW5kb3csIHdo
aWNoIGlzIGRldGVjdGVkIGJ5IC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQ6XS4KKyAgICAgICAgSW4gYm90aCBjYXNlcywgdGhlIGZsYWcgYmVjb21lcyBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nIHdoaWNoIGlzIHBhc3NlZCBkb3duIHRocm91Z2ggcGFpbnRp
bmcKKyAgICAgICAgaW4gUGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuCisKKyAgICAgICAgRml4IGNv
ZGUgdGhhdCB3YXMgY2hlY2tpbmcgcGFpbnRCZWhhdmlvciBvbiB0aGUgRnJhbWVWaWV3IHRvIGp1
c3QgbG9va2luZyBhdCBQYWludEluZm8ucGFpbnRCZWhhdmlvciwKKyAgICAgICAgd2hpY2ggcmVx
dWlyZWQgcGFzc2luZyBQYWludEluZm8gYWxvbmcgaW4gUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoKS4KKworICAgICAgICBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyBmbGFnLCBiZWNhdXNlIHRoYXQgdHJpZ2dlcnMKKyAgICAgICAg
YSBmbGF0dGVuaW5nIHBhaW50IG9mIGNvbXBvc2l0aW5nIGxheWVycywgYW5kIHdlIGRvbid0IHdh
bnQgdGhhdCBiZWhhdmlvciBmb3IgLXJlbmRlckluQ29udGV4dDosCisgICAgICAgIHNpbmNlIENv
cmVBbmltYXRpb24gY2FsbHMgLXJlbmRlckluQ29udGV4dDogb24gZWFjaCBvZiBvdXIgbGF5ZXJz
IGFuZCB3ZSBuZWVkIHRvIGF2b2lkIGRvdWJsZS1wYWludGluZy4KKyAgICAgICAgU28gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZyBpcyBub3cgYWRkZWQgdG8gdGhlIGNhbGwgc2l0ZXMgdGhhdCBh
bHNvIHNldCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzCisgICAgICAgIGlu
IG1vc3QgY2FzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IFNuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJM
YXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciByZW5kZXJJ
bkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oOiBVc2UgaW5pdGlhbGl6
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0xlZ2FjeVRpbGVMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAg
ICAgICgtW0xlZ2FjeVRpbGVMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tMZWdh
Y3lUaWxlTGF5ZXIgbGF5ZXJCZWluZ1BhaW50ZWRdKTogRGVsZXRlZC4gVGhlcmUgd2VyZSBubyBj
YWxsZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAg
KC1bV0FLVmlldyBfZHJhd1JlY3Q6Y29udGV4dDpsb2NrRm9jdXM6XSk6IGJvb2wgLT4gQk9PTAor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRJc0luU25h
cHNob3R0aW5nUGFpbnQ6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBpc0luU25hcHNob3R0aW5n
UGFpbnRdKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRQaGFzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2tJbWFnZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAxNy0wNS0xOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXdsaW5lIGFm
dGVyIHRoZSBVUkwgaW4gc2hvd0xheWVyVHJlZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzBiNjU2MzBkMjFmY2ZiMDA1YWM5NzExZWFhMzQ1Mjk4NWU2NzhkYi4uZTk5NDQ1YWRlOWUwMjRh
Mzg2ODhlM2EyM2RkMGM4YzIxMjhiNjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA1LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNuYXBzaG90dGluZyB2aWEgLXJlbmRlckluQ29udGV4dDogc2hvdWxkIGRvIHN5
bmNocm9ub3VzIGltYWdlIGRlY29kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MjQ4NQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI3NjE0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0
bWFwOiBTUEkgdGhhdCBubyBsb25nZXIKKyAgICAgICAgaGFzIGFueSBjYWxsZXJzLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGluRmxhdHRlbmluZ1BhaW50XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JG
b3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zaG91bGRGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZXcgX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wNS0xOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKEFQUExFX1BBWV9ERUxF
R0FURSkgc2hvdWxkIGJlIE5PIG9uIG1hY09TIFNpZXJyYSBhbmQgZWFybGllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNmNGYzOWFjNGQ4YzExZGZmODQ2ZDg2ZDY3NjhkM2ZjNWQ1YmVlZmIuLjMwMWYxYTk1YzUz
YmVlOTM0OTlkNDYwNmFhZDM4ZjA3YjU2NmZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxNy0wNS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTbmFwc2hvdHRpbmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nIGZsYWcgaW4gZnVuY3Rpb25zIHRoYXQgZG8gc25hcHNo
b3R0aW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJl
bmRlcmVkSW1hZ2UpOgorCiAyMDE3LTA1LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZG8gbm90IGNhY2hlIGdVTSBwZXJt
aXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDNhMWU1OGY3NDlmMzc4YzA4NGE0NzVkOTgxNGJhYmFjOGI1OTFl
Y2EuLmVlODE4YmEyZjcxZmZkOGExNTk0NWEzNzFhYzQwNDZjNzYyM2UwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTE0MDIsNyArMTQwMiw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZywgbnVsbHB0ciwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJhZjZjZDdhYTdjYjM1ZjNmZTBjNTc0N2Q5
NTM3MzFkNTZlYTJhODcuLjJiY2Y2NzQzYzIxZTBiMTA0NzllYWNhNjZkM2E0MzE4YWFkMzc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTksMTAgKzQzOTksMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsIFBhaW4KICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIAorICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+
cHJpbnRpbmcoKSkKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTI5LDcgKzQ1MzIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdAogCiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5l
dyBiZWhhdmlvciBhcHByb3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Ig
b2xkQmVoYXZpb3IgPSBwYWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKTsKIAogICAgIC8vIElmIHRo
ZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMg
d2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRE9NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggYzIyMWRj
MjgxZmRlZDAwYTE4ZTBiYjFmNmQzY2Y1MDYzMGUwYTBkMC4uNDI0MWE0YmZlMmI5OTFmNmU3MWE0
ZWUzNTI0ODM3MTZkZmE2MGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzTmFtZXMoYm9vbCBw
YXJhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBh
aW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0
KQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRGbGFn
cykKIHsKICAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRHcmFwaGljc0xheWVyIDogbV9vdmVybGF5
R3JhcGhpY3NMYXllcnMpIHsKICAgICAgICAgaWYgKG92ZXJsYXlBbmRHcmFwaGljc0xheWVyLnZh
bHVlLmdldCgpICE9IGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaAppbmRleCAwNTQ2OTI5YWU2NTQ3MTIwZGI0OGQwOTkxMjZkZmJkOGUx
YzQyMDM5Li5iOTY0NTFhZDkwOTczYjI0NjMyZDlhYjg0N2M2NGNlOGJlNWU2NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2tpcExh
eWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggMDdkODhh
Mjg3NmIyYmE0OGRkYmQ1ZThlZjgxZGFjOWMxNTQ1N2NmZS4uZmZjNDk0MmIyMzIzZWNiMjZlYzg1
ZDlmZjFjNWIyZGJmYTAwYTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlCisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KGNsaXAsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuOGYpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRleCBhMTMx
OWJiMGU5ZWNlZjAyZTk4MTFmMWYzNmQxYWQ5MjM4NDkxNzNjLi5kM2FhYjlmZDYxNmFjN2JjMzcw
NjFhN2Q0NzFiM2ZlODNkMzY2ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAogICAgICAgICB2b2lkIG5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgaW5DbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7CiAgICAgICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBk
aWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmYmExMDlhOTYzZGJmM2Y0
ZTI4MDIyMmNkNjc1OGNmMDQ3ZGIxNjlhLi4wNzA5NmU4MjdmMzhjMTJkNDNjNzVhZTBhN2E0Mzhl
Y2FkNzBhYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheQogICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCk7CiB9CiAKLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0
UmVjdCYpCit2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFw
aGljc0xheWVyUGFpbnRGbGFncykKIHsKICAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTJmNmNmZmNiZGQyYmI0MWQwMWZmZGY4NzFlZGU2
YTEwNTA3YzYzYy4uNjk4Zjc1OGYxOTNlNGI1YjY3NTU3ZjRkMzg3MWEzYzNjODNjNzVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgR3JhcGhp
Y3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdz
KQogewogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgtb2Zmc2V0KTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdChjbGlwKTsKICAgICBjbGlwUmVj
dC5tb3ZlKG9mZnNldCk7CiAKLSAgICBtX2NsaWVudC5wYWludENvbnRlbnRzKHRoaXMsIGNvbnRl
eHQsIG1fcGFpbnRpbmdQaGFzZSwgY2xpcFJlY3QpOworICAgIG1fY2xpZW50LnBhaW50Q29udGVu
dHModGhpcywgY29udGV4dCwgbV9wYWludGluZ1BoYXNlLCBjbGlwUmVjdCwgZmxhZ3MpOwogfQog
CiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDMyMmJmODBlZjI5NDQ0NzNlNjRiYzg0MDcyZDE0
YTM4YzVkNmIxNDIuLjk1ZmE3Yzg5ZjA0YzNmMGQ1OWUzMzc4YjUyZjk4MTUzYzU0MDg2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUcmFuc2l0aW9ucyBhcmUgaWRl
bnRpZmllZCBieSBhIHNwZWNpYWwgYW5pbWF0aW9uIG5hbWUgdGhhdCBjYW5ub3QgY2xhc2ggd2l0
aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCiAgICAgc3RhdGljIFN0cmluZyBhbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQpOwotICAgIAorCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgdGhlIGFuaW1hdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb21wb3NpdGluZyBzeXN0
ZW0uIElmIHRoaXMgcmV0dXJucwogICAgIC8vIGZhbHNlLCB0aGUgYW5pbWF0aW9uIHdpbGwgYmUg
cnVuIGJ5IENTU0FuaW1hdGlvbkNvbnRyb2xsZXIuCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBoYW5k
bGUgYm90aCB0cmFuc2l0aW9ucyBhbmQga2V5ZnJhbWUgYW5pbWF0aW9ucy4KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgCisKICAgICAvLyBMYXllciBjb250ZW50cwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KQEAgLTQ2NSwxMSArNDY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ2Fs
bGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gdG8gZHJhdyBsYXllciBj
b250ZW50cy4KLSAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCk7Ci0gICAgCisgICAgdm9pZCBwYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAs
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUp
OworCiAgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxh
eWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBlbnVtIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiB7IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duLCBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzQm90dG9tVXAgfTsKIAogICAgIC8vIEZsaXBwZWRuZXNzIG9mIHRoZSBj
b250ZW50cyBvZiB0aGlzIGxheWVyLiBEb2VzIG5vdCBhZmZlY3Qgc3VibGF5ZXIgZ2VvbWV0cnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmgKaW5kZXggZjZlOTBiOGUzNTIyOWIyNGE2NGJmNzZkNjRjZmM1ODk0OGQxMGY3
Ni4uNDVmNjUxMmY5ZDU1Zjk4ZGZlZDM2N2QwYjFkMGE1N2Y3MjkxZTlkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFw
aGljc0xheWVyQ2xpZW50X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllckNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
QEAgLTc2LDYgKzc1LDggQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKIH07
CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yOwogCitlbnVtIGNsYXNz
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIHsgTm9uZSwgU25hcHNob3R0aW5nIH07CisgICAgCiBj
bGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFwaGlj
c0xheWVyQ2xpZW50KCkge30KQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIE5vdGlm
aWNhdGlvbiB0aGF0IHRoaXMgbGF5ZXIgcmVxdWlyZXMgYSBmbHVzaCBiZWZvcmUgdGhlIG5leHQg
ZGlzcGxheSByZWZyZXNoLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3Bs
YXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiAvKiBpbkNsaXAgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBH
cmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRS
ZWN0JiAvKiBpbkNsaXAgKi8sIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCB7IH0KIAogICAgIC8vIFByb3ZpZGVzIGN1cnJlbnQgdHJhbnNmb3JtICh0YWtpbmcgdHJh
bnNmb3JtLW9yaWdpbiBhbmQgYW5pbWF0aW9ucyBpbnRvIGFjY291bnQpLiBJbnB1dCBtYXRyaXgg
aGFzIGJlZW4KQEAgLTEzOSw0ICsxNDAsMyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggZTRkMGY5MTY5ZDQyNTRiMjlkZTMzODQ1N2EyNjlmNGIwMzQ1Y2IyOS4uOGEwYWQ1MDVl
ZDAxODQxZWJhMTMzMzA3Mjc1YTFhNmFiMzM3ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkgeyB9CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxh
dGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291
bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5
ZXIqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2NTExM2IwZDJhYjg1ZTI3NTA1
ZTc2NWY4NjFjNmMzOTllNjBkZmU1Li5iZTA4NzdjMTAzNzFiZThlMGE5NjQ1YWEzNTU0YzllYWNh
MzBlNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NjMsNyArMTU2Myw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9yCiAgICAgcmV0dXJuIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBj
bGlwKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
UGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdzKQogewogICAgIG1faGFzRXZl
clBhaW50ZWQgPSB0cnVlOwogICAgIGlmIChtX2Rpc3BsYXlMaXN0KSB7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbgogICAgIH0KIAogICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKFBhaW50TGF5ZXJTdGFydCwgUGFpbnRMYXllckVuZCk7Ci0gICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7CisgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoY29udGV4dCwgY2xpcCwgZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IDUxMzlmYWY4MmU3ZjgyZThmY2ZkYjVjNWZkMTY1YTUwMDllN2NiM2MuLjlhZTE4MzQx
OGIwY2FlYzY5NmZmOGM1NzA2NTUzOTE2ZmM1Y2NiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkgb3ZlcnJp
ZGU7CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09y
aWVudGF0aW9uKCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBjbGlwKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7
CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKFBsYXRmb3JtQ0FMYXllciop
IGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50
Q291bnQoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGUgeyByZXR1cm4gaW5jcmVtZW50UmVwYWlu
dENvdW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggYjJhMjE2OTEzZGYyOTMzOTYzOTZkODJlMzYzYjc2
MWIwNmE1MjMwYi4uZjk0YzA3ZTE2Y2MwNjhlNGE4YTNjODc0NTI5Njk3OWM2ZDAxMTFiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIC8vIEZ1
bmN0aW9ucyBhbGxvd3MgdXMgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gYWNyb3NzIFdlYlRpbGVk
TGF5ZXIgYW5kIFdlYkxheWVyCiAgICAgc3RhdGljIFJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVj
dHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKik7Ci0gICAgc3RhdGljIHZv
aWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBh
aW50UmVjdExpc3QmIGRpcnR5UmVjdHMpOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRl
bnRzKENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0
eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd1Jl
cGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWlu
dENvdW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CiAgICAgc3RhdGljIENH
UmVjdCBmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaAppbmRleCAxMGM4MmY0NGEwNWY0YzRjMjA2ZGFmYmE3MjJkZDg1YWM1NTU1MTFiLi4y
OGNiYzM1YjRlMWE4YTcyYjMzY2U2N2IwZDYzMjc2N2UyMTc4Y2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRfaAotI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKQEAgLTQ0LDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRp
b25TdGFydGVkKGNvbnN0IFN0cmluZyYgLyphbmltYXRpb25LZXkqLywgQ0ZUaW1lSW50ZXJ2YWwp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25z
dCBTdHJpbmcmIC8qYW5pbWF0aW9uS2V5Ki8pIHsgfQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
cjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpAQCAtNzIsNCArNzEsMyBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2Vu
ZGlmIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAppbmRleCAwMjYwYmFi
ODY2MzVlNWNhOTNiZTg2OWU4MmRhNmU1ZThlYjU5ZmRjLi5kNjJjN2Y1NzRlZWYzNGYzZmY3MWJm
MDYyNTdiMjNlNzU1YzgxZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGlj
YXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ip
OwogfQogCi12b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50
RmxhZ3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9ybUNBTGF5ZXIsIHBsYXRmb3JtQ0FM
YXllciA9PSBtX2xheWVyLnB0cigpKTsKICAgICBtX2NvbnRyb2xsZXIudGlsZUdyaWQoKS5kcmF3
VGlsZU1hcENvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5ZXIuZ2V0KCku
Ym91bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ292ZXJhZ2VNYXAuaAppbmRleCA4Y2NmZTE2MTUzYjNmODlhMWY1ZTlkMjA0OGI1NTc2
ZjYxNDE1ZjU5Li5hYjQzYTU2MDZkMjgwZmM0NjNkYTI5NDc4OWNkNjU2NGQ4YTQ4MTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJh
Z2VNYXAuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJy
aWRlOwogICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRleCAxMjIzNzIyOTli
NGIwYjNhNGE3NmU2OTIxNjk2OTVlNzAzNDRjMTVlLi5jYjFlYTUxZmM3YjI3MGE4MWM0NGYxYjJj
OWJhOWJmMTI2NTc5OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuY3BwCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBUaWxlR3JpZDo6ZHJh
d1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGxheWVyQm91bmRz
KSBjb24KICAgICB9CiB9CiAKLXZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29u
dGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChwdGhyZWFkX21haW5fbnAo
KSkKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogICAgICAgICBj
b250ZXh0LnNjYWxlKG1fc2NhbGUpOwogCiAgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWlu
dFJlY3RMaXN0IGRpcnR5UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFp
bnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBmbGFncyk7CiAgICAgfQog
CiAgICAgaW50IHJlcGFpbnRDb3VudCA9IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRD
b3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVHcmlkLmgKaW5kZXggMzI1MzM2ZjgxOTFlNDU4MjNjNzU1ZDg3ODJjNDJhYTBk
ZTU3NjUxZC4uMmY4NzdiNDg3YTlhZTg0Zjc4MGNiMmEyYTc0MDIyMWE2NDhiYmNhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVRpbGVzKFZlY3RvcjxUaWxlR3Jp
ZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpOwogCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50
Ci0gICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IHBsYXRmb3JtQ0FMYXllckluY3Jl
bWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggZWEyMzhlNjg5ODgzMjRlOTI1MTEzMTM0ODc4NmJi
NDgwZmMzOGE0Zi4uMTY1ODE0NDU0Zjc4NjBhM2EzZDQ2YmNiMDc2YjU4YmVjMWI4YWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTExMTIsNyArMTExMiw3IEBAIFBs
YXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJl
Y3RzVG9QYWludChDR0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlz
dCYgZGlydHlSZWN0cykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cywgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNv
bnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50
cykKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKKyAgICAgICAgICAgIGxh
eWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVy
LCBncmFwaGljc0NvbnRleHQsIHJlY3QsIGZsYWdzKTsKICAgICAgICAgfQogICAgICAgICAKICNp
ZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cAppbmRleCBhYThhOWE3NWRkY2Y1ZWNkODNjNzg1MGUwMTNiZjA0MGIyZTY1MjNiLi40NjViNGEz
ZTMzNzgxMTc1MWRhOWQyYzFmMGU2NmM3Y2I4MzkxNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsOjpkaXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmIGNhTGF5ZXIs
IENHQ29udGV4dAogICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgbGF5ZXIgYm91bmRzIChlLmcuIHRp
bGVkIGxheWVycykKICAgICBDR1JlY3QgY2xpcEJvdW5kcyA9IENHQ29udGV4dEdldENsaXBCb3Vu
ZGluZ0JveChjb250ZXh0KTsKICAgICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlw
Qm91bmRzKSk7Ci0gICAgY2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG93bmVy
KCksIGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7CisgICAgY2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29udGV4dCwgY2xpcCwgR3JhcGhpY3NMYXll
clBhaW50RmxhZ3M6Ok5vbmUpOwogCiAgICAgaWYgKGNsaWVudC0+cGxhdGZvcm1DQUxheWVyU2hv
d1JlcGFpbnRDb3VudGVyKG93bmVyKCkpCiAgICAgICAgICYmICFyZXBhaW50Q291bnRlcnNBcmVE
cmF3bkJ5R3JpZENvbnRyb2xsZXIobGF5ZXJUeXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tp
bmdMYXllcldpbi5jcHAKaW5kZXggMzE2NjViZjgzMTZhN2U1NDczMWYwZmUxOGI5YmEwNTQ5N2Uw
MTAxMy4uZDRlZTU3YjY4YjQ3OWU0NWNlZWE1OGZkOTczNWU4MzI4N2NjODhmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2lu
Z0xheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2Vi
VGlsZWRCYWNraW5nTGF5ZXJXaW46OmRpc3BsYXlDYWxsYmFjayhDQUNGTGF5ZXJSZWYgY2FMYXll
ciwgQ0dDb250ZXh0UmVmCiAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXllciBib3VuZHMgKGUu
Zy4gdGlsZWQgbGF5ZXJzKQogICAgIENHUmVjdCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xp
cEJvdW5kaW5nQm94KGNvbnRleHQpOwogICAgIEludFJlY3QgY2xpcChlbmNsb3NpbmdJbnRSZWN0
KGNsaXBCb3VuZHMpKTsKLSAgICBjbGllbnQtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
b3duZXIoKSwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwKTsKKyAgICBjbGllbnQtPnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMob3duZXIoKSwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwLCBHcmFwaGlj
c0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAKICAgICBpZiAoY2xpZW50LT5wbGF0Zm9ybUNBTGF5
ZXJTaG93UmVwYWludENvdW50ZXIob3duZXIoKSkpIHsKICAgICAgICAgaW50IGRyYXdDb3VudCA9
IGNsaWVudC0+cGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KG93bmVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmlu
ZGV4IGVjZGVjNWUxMmJkNjBiZTVkZjVjZTZmMWQ0NmU5OTAzM2FmZjZlYmUuLmYzNjA2ODU3OGNi
MzgxNGI4MmMwODY2MzkzOWEyMDEyYTU5MWM5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0tHcmFwaGljcy5oIgpAQCAtNDksNiAr
NTAsMTIgQEAgLSAodm9pZClkcmF3U2NhbGVkQ29udGVudHNJbkNvbnRleHQ6KENHQ29udGV4dFJl
Ziljb250ZXh0OwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgV2ViU2ltcGxlTGF5ZXIgKCkg
eworICAgIEJPT0wgX2lzUmVuZGVyaW5nSW5Db250ZXh0OworfQorQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgaXNSZW5kZXJpbmdJbkNvbnRleHQ7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJMYXllcgogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CkBA
IC01Niw3ICs2Myw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIoc2VsZik7CiAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgIFBsYXRmb3JtQ0FMYXll
cjo6UmVwYWludFJlY3RMaXN0IHJlY3RzVG9QYWludCA9IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVj
dFJlY3RzVG9QYWludChjb250ZXh0LCBsYXllcik7Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgbGF5ZXIsIHJlY3RzVG9QYWludCk7CisgICAgICAg
IFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgbGF5ZXIsIHJlY3Rz
VG9QYWludCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZs
YWdzOjpTbmFwc2hvdHRpbmcgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAg
fQogfQogCkBAIC02NCw2ICs3MSwxNCBAQCBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYkxheWVy
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJTaW1wbGVMYXllcgogCitAc3ludGhlc2l6ZSBpc1JlbmRl
cmluZ0luQ29udGV4dCA9IF9pc1JlbmRlcmluZ0luQ29udGV4dDsKKworLSAodm9pZClyZW5kZXJJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4g
Y2hhbmdlKF9pc1JlbmRlcmluZ0luQ29udGV4dCwgWUVTKTsKKyAgICBbc3VwZXIgcmVuZGVySW5D
b250ZXh0OmNvbnRleHRdOworfQorCiAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0
cmluZyAqKWtleQogewogICAgIC8vIEZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzkwMTU2NzU+OiBG
b3JjZSB0aGUgbGF5ZXIgY29udGVudCB0byBiZSB1cGRhdGVkIHdoZW4gdGhlIHRyZWUgaXMgcmVw
YXJlbnRlZC4KQEAgLTEyOCw3ICsxNDMsNyBAQCAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29u
dGV4dFJlZiljb250ZXh0CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRJc0FjY2VsZXJhdGVk
Q29udGV4dChsYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwogCiAgICAgICAgIEZsb2F0UmVj
dCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOwotICAg
ICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhsYXllciwg
Z3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzKTsKKyAgICAgICAgbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgY2xpcEJv
dW5kcywgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
OjpTbmFwc2hvdHRpbmcgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5k
ZXggOTJjMjFkMjRiMzAxOWVkNDEzN2U2ZTgxNDY5MjZjMzU0MDhjMThmNC4uNDAzNDNiNWI1MTNi
NDcxNjY2ODZlNDBmZmQ5Y2Q5NmEwNWNmMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaApAQCAtMTMzLDcgKzEzMyw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEludGVybmFsCiAgICAgdm9pZCBkb0xheW91dFRpbGVzKCk7Ci0gICAgdm9pZCBkcmF3
TGF5ZXIoTGVnYWN5VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmKTsKKyAgICAKKyAgICBlbnVtIGNs
YXNzIERyYXdpbmdGbGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OworICAgIHZvaWQgZHJhd0xh
eWVyKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgRHJhd2luZ0ZsYWdzKTsKICAgICB2
b2lkIHByZXBhcmVUb0RyYXcoKTsKICAgICB2b2lkIGZpbmlzaGVkQ3JlYXRpbmdUaWxlcyhib29s
IGRpZENyZWF0ZVRpbGVzLCBib29sIGNyZWF0ZU1vcmUpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxl
UmVjdEluTGF5ZXIoQ0FMYXllciAqKSBjb25zdDsKQEAgLTE3MiwzMyArMTc0LDMzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGRyYXdS
ZXBsYWNlbWVudEltYWdlKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dJbWFnZVJl
Zik7Ci0gICAgdm9pZCBkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRl
eHRSZWYsIENHUmVjdCBkaXJ0eVJlY3QpOworICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQoTGVn
YWN5VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxh
Z3MpOwogCi0gICAgV0FLV2luZG93KiBtX3dpbmRvdzsKKyAgICBXQUtXaW5kb3cqIG1fd2luZG93
IHsgbnVsbHB0ciB9OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY29udGVudFJlcGxh
Y2VtZW50SW1hZ2U7CiAKLSAgICBib29sIG1fa2VlcHNab29tZWRPdXRUaWxlczsKLQotICAgIGJv
b2wgbV9oYXNQZW5kaW5nTGF5b3V0VGlsZXM7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdVcGRhdGVU
aWxpbmdNb2RlOwogICAgIC8vIEVuc3VyZSB0aGVyZSBhcmUgbm8gYXN5bmMgY2FsbHMgb24gYSBk
ZWFkIHRpbGUgY2FjaGUuCiAgICAgUmV0YWluUHRyPExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZT4g
bV90b21ic3RvbmU7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9vdmVycmlkZVZp
c2libGVSZWN0OwogCi0gICAgVGlsaW5nTW9kZSBtX3RpbGluZ01vZGU7Ci0gICAgVGlsaW5nRGly
ZWN0aW9uIG1fdGlsaW5nRGlyZWN0aW9uOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAg
IGJvb2wgbV90aWxlc09wYXF1ZTsKLQotICAgIGJvb2wgbV90aWxlQm9yZGVyc1Zpc2libGU7Ci0g
ICAgYm9vbCBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZTsKLSAgICBib29sIG1fYWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZDsKLSAgICBib29sIG1faXNTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVu
YWJsZWQ7Ci0KLSAgICBib29sIG1fZGlkQ2FsbFdpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsK
KyAgICBJbnRTaXplIG1fdGlsZVNpemUgeyA1MTIsIDUxMiB9OworICAgIAorICAgIFRpbGluZ01v
ZGUgbV90aWxpbmdNb2RlIHsgTm9ybWFsIH07CisgICAgVGlsaW5nRGlyZWN0aW9uIG1fdGlsaW5n
RGlyZWN0aW9uIHsgVGlsaW5nRGlyZWN0aW9uRG93biB9OworICAgIAorICAgIGJvb2wgbV9rZWVw
c1pvb21lZE91dFRpbGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0xheW91dFRp
bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ1VwZGF0ZVRpbGluZ01vZGUgeyBm
YWxzZSB9OworICAgIGJvb2wgbV90aWxlc09wYXF1ZSB7IHRydWUgfTsKKyAgICBib29sIG1fdGls
ZUJvcmRlcnNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGlsZVBhaW50Q291bnRlcnNW
aXNpYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkIHsg
dHJ1ZSB9OworICAgIGJvb2wgbV90aWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRDYWxsV2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5n
IHsgZmFsc2UgfTsKKyAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5VGlsZUdyaWQ+IG1f
em9vbWVkT3V0VGlsZUdyaWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVRpbGVHcmlkPiBt
X3pvb21lZEluVGlsZUdyaWQ7CiAKQEAgLTIwNiwxNiArMjA4LDE0IEBAIHByaXZhdGU6CiAKICAg
ICBWZWN0b3I8SW50UmVjdD4gbV9zYXZlZERpc3BsYXlSZWN0czsKIAotICAgIGZsb2F0IG1fY3Vy
cmVudFNjYWxlOworICAgIGZsb2F0IG1fY3VycmVudFNjYWxlIHsgMSB9OwogCi0gICAgZmxvYXQg
bV9wZW5kaW5nU2NhbGU7Ci0gICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGU7CisgICAg
ZmxvYXQgbV9wZW5kaW5nU2NhbGUgeyAwIH07CisgICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0
U2NhbGUgeyAwIH07CiAKICAgICBtdXRhYmxlIExvY2sgbV90aWxlTXV0ZXg7CiAgICAgbXV0YWJs
ZSBMb2NrIG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4OwogICAgIG11dGFibGUgTG9jayBtX2NvbnRl
bnRSZXBsYWNlbWVudEltYWdlTXV0ZXg7Ci0KLSAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91
bGRVc2VMb3dTY2FsZVRpbGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZTRkZmRl
YTEwZWViNDI1NjRiYzI1MDhlYzA5OGQxYTVkNTJlNWY0MC4uY2UyMjg0YjJlMWEzODMwZDU0MTJm
MjA2YmM4YWQ1MTVkNTNlODQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCkBAIC03MCwyNSArNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQog
ICAgIDogbV93aW5kb3cod2luZG93KQotICAgICwgbV9rZWVwc1pvb21lZE91dFRpbGVzKGZhbHNl
KQotICAgICwgbV9oYXNQZW5kaW5nTGF5b3V0VGlsZXMoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRp
bmdVcGRhdGVUaWxpbmdNb2RlKGZhbHNlKQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xl
Z2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV90aWxpbmdNb2Rl
KE5vcm1hbCkKLSAgICAsIG1fdGlsaW5nRGlyZWN0aW9uKFRpbGluZ0RpcmVjdGlvbkRvd24pCi0g
ICAgLCBtX3RpbGVTaXplKDUxMiwgNTEyKQotICAgICwgbV90aWxlc09wYXF1ZSh0cnVlKQotICAg
ICwgbV90aWxlQm9yZGVyc1Zpc2libGUoZmFsc2UpCi0gICAgLCBtX3RpbGVQYWludENvdW50ZXJz
VmlzaWJsZShmYWxzZSkKLSAgICAsIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkK
LSAgICAsIG1faXNTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQodHJ1ZSkKLSAgICAsIG1f
ZGlkQ2FsbFdpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZyhmYWxzZSkKICAgICAsIG1fem9vbWVk
T3V0VGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGls
ZVNpemUpKQogICAgICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRpbGVDYWNo
ZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fY3VycmVudFNjYWxlKDEuZikKLSAg
ICAsIG1fcGVuZGluZ1NjYWxlKDApCi0gICAgLCBtX3BlbmRpbmdab29tZWRPdXRTY2FsZSgwKQot
ICAgICwgbV90aWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMoZmFsc2UpCiB7CiAg
ICAgW2hvc3RMYXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVI
b3N0TGF5ZXIoKSBhdEluZGV4OjBdOwogICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CkBAIC01
MjAsMTQgKzUwNCwxOCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1JlcGxhY2VtZW50SW1h
Z2UoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmCiAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQsIGltYWdlUmVjdCwgaW1hZ2UpOwogfQogCi12b2lkIExlZ2FjeVRpbGVD
YWNoZTo6ZHJhd1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENHUmVjdCBkaXJ0eVJlY3QpCit2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJh
d1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCBkaXJ0eVJlY3QsIERyYXdpbmdGbGFncyBkcmF3aW5nRmxhZ3MpCiB7CiAgICAg
Q0dSZWN0IGZyYW1lID0gW2xheWVyIGZyYW1lXTsKICAgICBGb250QW50aWFsaWFzaW5nU3RhdGVT
YXZlciBmb250QW50aWFsaWFzaW5nU3RhdGUoY29udGV4dCwgW21fd2luZG93IHVzZU9yaWVudGF0
aW9uRGVwZW5kZW50Rm9udEFudGlhbGlhc2luZ10gJiYgW2xheWVyIGlzT3BhcXVlXSk7CiAgICAg
Zm9udEFudGlhbGlhc2luZ1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50
YXRpb25dKTsKIAorICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0ZsYWdzOjpTbmFwc2hv
dHRpbmcpCisgICAgICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5nUGFpbnQ6WUVTXTsK
KyAgICAgICAgCiAgICAgQ0dTUmVnaW9uT2JqIGRyYXdSZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVts
YXllciByZWdpb25CZWluZ0RyYXduXTsKICAgICBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUgPSBbbGF5
ZXIgY29udGVudHNTY2FsZV07CisgICAgCiAgICAgaWYgKGRyYXdSZWdpb24gJiYgc2hvdWxkUmVw
YWludEluUGllY2VzKGRpcnR5UmVjdCwgZHJhd1JlZ2lvbiwgY29udGVudHNTY2FsZSkpIHsKICAg
ICAgICAgLy8gVXNlIGZpbmUgZ3JhaW5lZCByZXBhaW50IHJlY3RhbmdsZXMgdG8gbWluaW1pemUg
dGhlIGFtb3VudCBvZiBwYWludGVkIHBpeGVscy4KICAgICAgICAgQ0dTUmVnaW9uRW51bWVyYXRv
ck9iaiBlbnVtZXJhdG9yID0gQ0dTUmVnaW9uRW51bWVyYXRvcihkcmF3UmVnaW9uKTsKQEAgLTU1
MCw5ICs1MzgsMTIgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExl
Z2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb24KICAgICB9CiAKICAgICBmb250
QW50aWFsaWFzaW5nU3RhdGUucmVzdG9yZSgpOworICAgIAorICAgIGlmIChkcmF3aW5nRmxhZ3Mg
PT0gRHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcpCisgICAgICAgIFttX3dpbmRvdyBzZXRJc0lu
U25hcHNob3R0aW5nUGFpbnQ6Tk9dOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xh
eWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRl
eHRSZWYgY29udGV4dCwgRHJhd2luZ0ZsYWdzIGRyYXdpbmdGbGFncykKIHsKICAgICAvLyBUaGUg
d2ViIGxvY2sgdW5sb2NrIG9ic2VydmVyIHJ1bnMgYWZ0ZXIgQ0EgY29tbWl0IG9ic2VydmVyLgog
ICAgIGlmICghV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpIHsKQEAgLTU3MSw3ICs1NjIs
NyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5
ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgIGlmIChSZXRhaW5QdHI8Q0dJbWFnZT4gY29u
dGVudFJlcGxhY2VtZW50SW1hZ2UgPSB0aGlzLT5jb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpKQog
ICAgICAgICBkcmF3UmVwbGFjZW1lbnRJbWFnZShsYXllciwgY29udGV4dCwgY29udGVudFJlcGxh
Y2VtZW50SW1hZ2UuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhd1dpbmRvd0NvbnRlbnQo
bGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCk7CisgICAgICAgIGRyYXdXaW5kb3dDb250ZW50KGxh
eWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGRyYXdpbmdGbGFncyk7CiAKICAgICArK2xheWVyLnBh
aW50Q291bnQ7CiAgICAgaWYgKG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgKaW5kZXggOTg3MGU3YjAz
ZTFlYWU3YzE5MTQ4MjAzYTYyNzc3YWRlNGJkNzVhYi4uZmQ2MjU1ZTIxZjdkMWFhZDkxYjE0YjMw
YzQwZGIwNGM0MWFmZjNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlTGF5ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTGVnYWN5VGlsZUxheWVyX2gKLSNkZWZpbmUgTGVn
YWN5VGlsZUxheWVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oSU9TKQogCkBAIC0z
NywxMCArMzYsMTAgQEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBAaW50ZXJmYWNlIExlZ2FjeVRp
bGVMYXllciA6IENBTGF5ZXIgewogICAgIFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkKiBfdGlsZUdy
aWQ7CiAgICAgdW5zaWduZWQgX3BhaW50Q291bnQ7CisgICAgQk9PTCBfaXNSZW5kZXJpbmdJbkNv
bnRleHQ7CiB9CiBAcHJvcGVydHkgKG5vbmF0b21pYykgdW5zaWduZWQgcGFpbnRDb3VudDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCogdGlsZUdyaWQ7Ci0r
IChMZWdhY3lUaWxlTGF5ZXIgKilsYXllckJlaW5nUGFpbnRlZDsKIEBlbmQKIAogQGludGVyZmFj
ZSBMZWdhY3lUaWxlSG9zdExheWVyIDogQ0FMYXllciB7CkBAIC01MCw0ICs0OSw0IEBAIGNsYXNz
IExlZ2FjeVRpbGVHcmlkOwogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotI2VuZGlm
IC8vIFRpbGVMYXllcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUxheWVyLm1tCmluZGV4IDVjYTIxMmEzYzRmMmJlYzIxMmQ2YmRmNWZiMTEyN2QxMzQ2Njlm
YzYuLjIwNjNjOGE2MzFmZjM3NDA0ZTMyYmZlYzIyZmIyNGIxMTY1NTFjZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkxlZ2FjeVRpbGVDYWNoZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVH
cmlkLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjgsMTEgKzY5LDE0IEBA
IC0gKHZvaWQpcmVuZGVySW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogfQogQGVuZAog
CitAaW50ZXJmYWNlIExlZ2FjeVRpbGVMYXllciAoKQorQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgaXNSZW5kZXJpbmdJbkNvbnRleHQ7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBMZWdhY3lU
aWxlTGF5ZXIKIEBzeW50aGVzaXplIHBhaW50Q291bnQgPSBfcGFpbnRDb3VudDsKIEBzeW50aGVz
aXplIHRpbGVHcmlkID0gX3RpbGVHcmlkOwotCi1zdGF0aWMgTGVnYWN5VGlsZUxheWVyICpsYXll
ckJlaW5nUGFpbnRlZDsKK0BzeW50aGVzaXplIGlzUmVuZGVyaW5nSW5Db250ZXh0ID0gX2lzUmVu
ZGVyaW5nSW5Db250ZXh0OwogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KXJlY3QKIHsKQEAgLTkzLDYgKzk3LDEyIEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCiAgICAg
ICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkucHJlcGFyZVRvRHJhdygpOwogfQogCistICh2b2lk
KXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBTZXRGb3JTY29w
ZTxCT09MPiBjaGFuZ2UoX2lzUmVuZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAgIFtzdXBlciBy
ZW5kZXJJbkNvbnRleHQ6Y29udGV4dF07Cit9CisKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dD
b250ZXh0UmVmKWNvbnRleHQKIHsKICAgICAvLyBCdWdzIGluIGNsaWVudHMgb3Igb3RoZXIgZnJh
bWV3b3JrcyBtYXkgY2F1c2UgdGlsZSBpbnZhbGlkYXRpb24gZnJvbSB3aXRoaW4gYSBDQSBjb21t
aXQuCkBAIC0xMDUsNyArMTE1LDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRS
ZWYpY29udGV4dAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBpZiAoX3RpbGVHcmlk
KQotICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmRyYXdMYXllcihzZWxmLCBjb250ZXh0
KTsKKyAgICAgICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5kcmF3TGF5ZXIoc2VsZiwgY29udGV4
dCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IExlZ2FjeVRpbGVDYWNoZTo6RHJhd2luZ0Zs
YWdzOjpTbmFwc2hvdHRpbmcgOiBMZWdhY3lUaWxlQ2FjaGU6OkRyYXdpbmdGbGFnczo6Tm9uZSk7
CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CkBAIC0x
MTUsMTEgKzEyNSw2IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICop
a2V5CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotKyAoTGVnYWN5VGlsZUxheWVyICopbGF5ZXJCZWlu
Z1BhaW50ZWQKLXsKLSAgICByZXR1cm4gbGF5ZXJCZWluZ1BhaW50ZWQ7Ci19Ci0KIEBlbmQKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLVmlldy5tbQppbmRleCBlMjhiY2ZkNDEwNjJkZDM2MjUzMTRmNDAxYjAyOTg4MDg1YzVmYTcx
Li5mZDJmODUyYjMxZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC01MDUsNyArNTA1LDcgQEAgKyAo
dm9pZClfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6KGludClxdWFsaXR5CiAgICAgc0ludGVycG9s
YXRpb25RdWFsaXR5ID0gdG9DR0ludGVycG9sYXRpb25RdWFsaXR5KChXZWJDb3JlOjpJbnRlcnBv
bGF0aW9uUXVhbGl0eSlxdWFsaXR5KTsKIH0KIAotLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClk
aXJ0eVJlY3QgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihib29sKWxv
Y2tGb2N1cworLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QgY29udGV4dDooQ0dD
b250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihCT09MKWxvY2tGb2N1cwogewogICAgIGlmIChf
aXNIaWRkZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1dpbmRvdy5oCmluZGV4IDJiNWI5OWQ5OWE0NzQyYWJjMjQ4MjYzYmM3YjE1M2Y2YmJk
OTYzY2YuLjg3Mzk5YTE3MGRjNjE3OTkyMDZjMWY5MzNmNmVhNjE5ZGE0MmNlYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaApAQCAtODQsNiArODQsNyBA
QCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdBS1Jlc3BvbmRlcgogICAg
IFdBS1ZpZXcgKl9uZXh0UmVzcG9uZGVyOwogCiAgICAgQk9PTCBfdmlzaWJsZTsKKyAgICBCT09M
IF9pc0luU25hcHNob3R0aW5nUGFpbnQ7CiAgICAgQk9PTCBfdXNlT3JpZW50YXRpb25EZXBlbmRl
bnRGb250QW50aWFsaWFzaW5nOwogICAgIEJPT0wgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0
aW5nOwogfQpAQCAtMTMxLDYgKzEzMiw5IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV0FL
V2luZG93IDogV0FLUmVzcG9uZGVyCiAtICh2b2lkKXNlbmRFdmVudFN5bmNocm9ub3VzbHk6KFdl
YkV2ZW50ICopYW5FdmVudDsKIC0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50OihXZWJFdmVudCAq
KWFuRXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUNvbnRlbnRDaGFuZ2U7
CiAKKy0gKHZvaWQpc2V0SXNJblNuYXBzaG90dGluZ1BhaW50OihCT09MKWlzSW5TbmFwc2hvdHRp
bmdQYWludDsKKy0gKEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OworCiAvLyBUaHJlYWQgc2Fm
ZSB3YXkgb2YgcHJvdmlkaW5nIHRoZSAidXNhYmxlIiByZWN0IG9mIHRoZSBXQUtXaW5kb3cgaW4g
dGhlIHZpZXdwb3J0L3Njcm9sbHZpZXcuCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9sbFZpZXdSZWN0
OwogLy8gc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0IHNob3VsZCBvbmx5IGV2ZXIgYmUgY2FsbGVk
IGZyb20gVUlLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93
Lm1tCmluZGV4IDk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIwZTI2MzgxZjkwYjkuLjAyNjk4
MmM5YTQxN2JiNzgwN2JiYWYxZmRiYmRmOTdkZDIyODJiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC00MzgsNiArNDM4LDE2IEBAIC0gKHZv
aWQpc2V0VGlsZXNPcGFxdWU6KEJPT0wpb3BhcXVlCiAgICAgX3RpbGVDYWNoZS0+c2V0VGlsZXNP
cGFxdWUob3BhcXVlKTsKIH0KIAorLSAodm9pZClzZXRJc0luU25hcHNob3R0aW5nUGFpbnQ6KEJP
T0wpaXNJblNuYXBzaG90dGluZ1BhaW50Cit7CisgICAgX2lzSW5TbmFwc2hvdHRpbmdQYWludCA9
IGlzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKworLSAoQk9PTClpc0luU25hcHNob3R0aW5nUGFp
bnQKK3sKKyAgICByZXR1cm4gX2lzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKwogLSAodm9pZClz
ZXRFbnRpcmVXaW5kb3dWaXNpYmxlRm9yVGVzdGluZzooQk9PTCllbnRpcmVXaW5kb3dWaXNpYmxl
CiB7CiAgICAgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0aW5nID0gZW50aXJlV2luZG93Vmlz
aWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IGYxNjdlODdhOGUw
MjIxMjJjZGZmMDRkNmI2NjhhN2M5YzIwOWQzMTYuLjU5OGU4NTBlM2M3MjdkZThjODI1YWNlZjJk
YzhlOTlmZjk3OTIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaApAQCAt
NTgsMTIgKzU4LDEzIEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQYWludEJlaGF2
aW9yU2tpcFNlbGVjdGlvbkhpZ2hsaWdodCAgICAgID0gMSA8PCAxLAogICAgIFBhaW50QmVoYXZp
b3JGb3JjZUJsYWNrVGV4dCAgICAgICAgICAgICAgPSAxIDw8IDIsCiAgICAgUGFpbnRCZWhhdmlv
ckZvcmNlV2hpdGVUZXh0ICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA0LAotICAgIFBhaW50QmVoYXZpb3JS
ZW5kZXJpbmdTVkdNYXNrICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgUGFpbnRCZWhhdmlvclNr
aXBSb290QmFja2dyb3VuZCAgICAgICAgICA9IDEgPDwgNiwKLSAgICBQYWludEJlaGF2aW9yUm9v
dEJhY2tncm91bmRPbmx5ICAgICAgICAgID0gMSA8PCA3LAotICAgIFBhaW50QmVoYXZpb3JTZWxl
Y3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDgsCi0gICAgUGFpbnRCZWhhdmlvckV4Y2x1
ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOSwKKyAgICBQYWludEJlaGF2aW9yUmVuZGVy
aW5nU1ZHTWFzayAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFBhaW50QmVoYXZpb3JTa2lwUm9v
dEJhY2tncm91bmQgICAgICAgICAgPSAxIDw8IDUsCisgICAgUGFpbnRCZWhhdmlvclJvb3RCYWNr
Z3JvdW5kT25seSAgICAgICAgICA9IDEgPDwgNiwKKyAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9u
QW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAorICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2Vs
ZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBv
c2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCisgICAgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyAg
ICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRpbmcsIGUuZy4g
Zm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVk
IFBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IDg5ZDM1Y2YwNWE1NTgyNDQ2MjNkNzIwMWY0Yzc4ZTMxOTFmZWEzNzkuLjA2Njc2Y2YxNGJhMzFh
MTcxOTNlZjA1NDUyZTgxYTA2OGVjMjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNr
SW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQog
ICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwdXNoIGEgdHJhbnNwYXJlbmN5IGxheWVy
IHRvIHJlbmRlciBvdXIgbWFzay4KICAgICBib29sIHB1c2hUcmFuc3BhcmVuY3lMYXllciA9IGZh
bHNlOwogICAgIGJvb2wgY29tcG9zaXRlZE1hc2sgPSBoYXNMYXllcigpICYmIGxheWVyKCktPmhh
c0NvbXBvc2l0ZWRNYXNrKCk7Ci0gICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgPSB2
aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVyczsKKyAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyA9IHBh
aW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7CiAKICAgICBib29sIGFsbE1hc2tJbWFnZXNMb2FkZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZmQ4
NWJmOTdkOWIzZmZkNzg2MTRkMzc5YzU0NjBjYTUyMGY1NzBlZi4uNWViNTExYzZkYjEwMzIyMjQz
MTI0YzZlNmZmMTk5MDE2MTg2OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmlt
YWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAgICAgICAgIGF1dG8g
aW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFn
ZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgYXV0byBkZWNv
ZGluZ01vZGUgPSAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpID8gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAgICAgICAgYXV0byBkZWNvZGlu
Z01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKSA/IERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsKICAgICAgICAg
ICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0
b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXpl
KCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVP
cCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMTZhOTQwNGRmYzhkMzRmMzhhY2Qz
YzQ3MTQ3OWM3YzBiNjhhYTZmZi4uNzMzYzllNzFmZTNiY2JiZTZjNTgxOWFmNmI1NjdkMGI3YTYz
NDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NzUs
NyArNDc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoY2xpcCkKICAgICAg
ICAgY29udGV4dC5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKIAotICAgIHBhaW50SW50b1JlY3QoY29u
dGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0LCBkZXZpY2VT
Y2FsZUZhY3RvcikpOworICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAg
CiAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VG
b3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdlcyBhcyB1bnBhaW50
ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBtYXkgd2FudCAK
QEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxlbWVudEZvY3VzQ2hh
bmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgpOwogfQogCi12b2lk
IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmICghaW1h
Z2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgfHwgaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJy
ZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAg
IHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9S
ZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiAg
ICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgpLgogICAgIEltYWdl
KiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFs
aXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6IElu
dGVycG9sYXRpb25EZWZhdWx0OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRp
b24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KHBhaW50SW5mby5jb250ZXh0
KCksICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6IEludGVycG9sYXRp
b25EZWZhdWx0OwogCiAjaWYgVVNFKENHKQogICAgIGlmIChpczxQREZEb2N1bWVudEltYWdlPihp
bWFnZSkpCkBAIC01ODQsOCArNTg0LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVj
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAg
ICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRp
bmdzKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9y
aWVudGF0aW9uKCkpOwotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHZpZXcoKS5mcmFtZVZpZXco
KS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
czsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKworICAgIGF1dG8gZGVjb2RpbmdN
b2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
Y29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIGJvb2wgUmVuZGVySW1hZ2U6
OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5s
aW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmlu
ZGV4IGFkYjkyZGZkMjczMmY1OGYzOWRmOGU1Y2UxZGUzODU2OGY4NDhmMzcuLjkxMmJlZTQ0NDVm
ZWIzYThlYjI0NjQyNTE0ZmE4NjcwOTM5OWFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiwgY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdjOWE4YTkxMTM4MTQ1MTE3ZWY1NjkwNjQzZTM1
NWY2ZGMwNTAxMDcuLjQ2NTY4YTA5MzUzZDhkNWIzODhlOThmZDQxOGU3N2MxZDk5ZjllYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDM4Myw2ICs0Mzgz
LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgZWxzZSBpZiAobG9jYWxQYWlu
dEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQogICAgICAgICAg
ICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRPbmx5OwogCisg
ICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JTbmFw
c2hvdHRpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFw
c2hvdHRpbmc7CisKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFp
bnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCkBAIC00Nzg1LDYgKzQ3ODgsOSBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJG
cmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJl
aGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgIGxvY2FsUGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAorICAgIGlmIChs
b2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGlu
ZykKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmc7CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBj
YXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5
UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5z
aG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0Lmlz
RW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzk5ODI1ZTJiOGE5OTcwZGI5
Y2Y4YjQyZmY4NDZiYjEyOWM1OWQxMi4uOTM2MDdlMmMyYzYyMDRlMjZkYWY5Y2E1NjcyMWFiZTZk
ZGIxMzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpw
YWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwCiB9
CiAKIC8vIFVwLWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNhbGxiYWNrLgot
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVy
UGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCit2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBn
cmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlIHBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHJlbmRlcmVyKCku
cGFnZSgpLnNldElzUGFpbnRpbmcodHJ1ZSk7CkBAIC0yNTY4LDcgKzI1NjgsMTEgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoZW5jbG9z
aW5nSW50UmVjdChjb21wb3NpdGVkQm91bmRzSW5jbHVkaW5nTWFyZ2luKCkpKTsKIAogICAgICAg
ICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVzdGluZywgYmVj
YXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0cy4KLSAgICAg
ICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBQYWlu
dEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgUGFpbnRCZWhhdmlvciBi
ZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWw7CisgICAgICAgIGlmIChmbGFncyA9PSBHcmFw
aGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICAgICAgYmVoYXZpb3Ig
fD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKworICAgICAgICBwYWludEludG9MYXllcihn
cmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBwYWludGluZ1BoYXNl
KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KHJlbmRlcmVy
KCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9y
SG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDc3N2Y5YmFhZTVjNjcyMTJkMmY3NjJlMDY2MTU5NWZj
YzFlMTA3Mi4uYzhmYmI4MTM4YTU0NGNlNTIzOWQ4MWM1MDRlZDI2NmFlY2ZiMzhiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMTk3LDcg
KzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5
UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNz
TGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlOworICAg
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0
JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3Jh
cGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBjb250ZW50c1NjYWxlTXVsdGlwbGll
ckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggMjFmNmQ1MTg1YjBmYWRlOWE2OTNiZTBiZTg0YzE5YzdlMDU5ZDA3My4uNWFlNWJkOTM0NjYy
Njk4YTRlYjVjN2RhMTc3MDMwNTQzMTZlM2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBA
IHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Us
IGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpCiB7CiAgICAg
SW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRlbXMgPSBzbmFw
cGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBs
YXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjOWQ0OGIxOWRiZTZlMGQ4OWM5MzBl
MmVkZDRiYTdhYWM1YWI4ZWZmLi4wN2Q3NjFkNTE5Yzk0YjE1ZDBmZTdmMjE4ZGMyODQ0YjFjYWVi
OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5
ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29u
c3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25z
dCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5n
UGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBv
dmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJlY3RDb21wdXRhdGlv
bihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZjJkNmVkNmFmZmJlMTVjNzU5
YTBkYzQ3MThiODY0Mzk5NWY0N2EzLi5kMzdjNDg2YWRmNWI0MzY5ZTkzMTU2N2JlNGI3MWQ2MWFm
YTM1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKQEAgLTE5
OCw5ICsxOTgsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBjb250ZXh0LmNs
aXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCi0gICAgICAgIHBh
aW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIHBhaW50SW50b1JlY3QocGFpbnRJ
bmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxsc2NyZWVuKCkg
fHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpIHsKLSAgICAg
ICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICBpZiAocGFpbnRJbmZvLnBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAg
ICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3Qp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQoY29udGV4dCwg
cmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCmluZGV4IGNmMDQ4NThiNTk2ZTkzYTdmZDljODMwYTFmNzFhNDdhMjk0
ZmIzY2MuLmMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAodm9pZClhZGRX
aW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09ic2VydmVyczsKIC0gKEJPT0wp
c2hvdWxkQ2xpcE91dFBsdWdpbjsKLS0gKEJPT0wpaW5GbGF0dGVuaW5nUGFpbnQ7CiAKIC0gKEJP
T0wpc3VwcG9ydHNTbmFwc2hvdHRpbmc7CiAtICh2b2lkKWNhY2hlU25hcHNob3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0KaW5kZXggMjFmOTA0NWVmMzc1NzgwNzhkNGNkN2IxOTg5ZDE5Y2MzOWExNThhNC4uNjRkZTkw
MTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNDM4
LDE0ICs0MzgsNiBAQCAtIChCT09MKXNob3VsZENsaXBPdXRQbHVnaW4KICAgICByZXR1cm4gIXdp
bmRvdyB8fCBbd2luZG93IGlzTWluaWF0dXJpemVkXSB8fCBbTlNBcHAgaXNIaWRkZW5dIHx8ICFb
c2VsZiBpc0Rlc2NlbmRhbnRPZjpbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld11dIHx8IFtzZWxm
IGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl07CiB9CiAKLS0gKEJPT0wpaW5GbGF0dGVuaW5n
UGFpbnQKLXsKLSAgICBhdXRvKiByZW5kZXJlciA9IF9lbGVtZW50LT5yZW5kZXJlcigpOwotICAg
IGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJu
IE5POwotICAgIHJldHVybiAhIShkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRl
cmVyKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci19Ci0KIC0gKEJPT0wpc3VwcG9ydHNTbmFwc2hvdHRp
bmcKIHsKICAgICByZXR1cm4gW19wbHVnaW5QYWNrYWdlLmdldCgpIHN1cHBvcnRzU25hcHNob3R0
aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDcwMzI2MDA3NGVj
MzM5Yzg4ODIwYjc5NTBjZmIxNDRlZDc3NGNkODQuLjljMGY4MmRlYmQ1YWViMDQyZTNhMDU1NGYw
NTlmNTNhNzgwMDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
MTIwLDYgKzEyMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV0FLU2Ny
b2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV0tHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAj
ZW5kaWYKQEAgLTU4MiwyNCArNTgzLDMxIEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJhbmdl
OihET01SYW5nZSAqKXJhbmdlCiAgICAgcmV0dXJuIHBsYWluVGV4dChjb3JlKHJhbmdlKSwgVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotLSAoQk9PTClfc2hvdWxkRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzOihDR0NvbnRleHRSZWYpY29udGV4dAorCistIChQYWludEJl
aGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0NvbnRleHRSZWYp
Y29udGV4dAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gLWN1cnJlbnRDb250ZXh0RHJh
d2luZ1RvU2NyZWVuIHJldHVybnMgWUVTIGZvciBiaXRtYXAgY29udGV4dHMuCiAgICAgQk9PTCBp
c1ByaW50aW5nID0gIVtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dERyYXdpbmdUb1Nj
cmVlbl07CiAgICAgaWYgKGlzUHJpbnRpbmcpCi0gICAgICAgIHJldHVybiBZRVM7CisgICAgICAg
IHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCiAgICAgaWYgKCFXS0NHQ29udGV4dElzQml0bWFw
Q29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIE5POworICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25h
cHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KICAgICBpZCBk
b2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXddOwotICAg
IGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0gJiYg
WyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCi0g
ICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBbZ2V0V2ViVmlldyhzZWxmKSBfaW5jbHVk
ZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXBdOworICAgIGlm
IChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChbW2RvY3VtZW50VmlldyB3aW5kb3ddIGlzSW5T
bmFwc2hvdHRpbmdQYWludF0pCisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZzsKKyNlbmRpZgorICAgICAgICBpZiAoWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50Vmll
dyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogfQogCiAtICh2b2lkKV9kcmF3UmVjdDooTlNS
ZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQpAQCAtNjIyLDI4ICs2MzAs
MjkgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzT25seTooQk9PTClj
b250ZW50c09ubHkKIAogICAgIEZyYW1lVmlldyogdmlldyA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PnZpZXcoKTsKICAgICAKLSAgICBib29sIHNob3VsZEZsYXR0ZW4gPSBmYWxzZTsKKyAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gdmlldy0+cGFpbnRCZWhhdmlvcigpOworICAgIFBhaW50
QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZEJlaGF2aW9yOworICAgIAogICAgIGlmIChGcmFt
ZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsK
ICAgICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0IHRoZSBwYWludCBi
ZWhhdmlvciBmcm9tIG91ciBwYXJlbnQKLSAgICAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0g
cGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogMDsKLSAgICAgICAgaWYgKHBhcmVu
dFZpZXcpCi0gICAgICAgICAgICBzaG91bGRGbGF0dGVuID0gcGFyZW50Vmlldy0+cGFpbnRCZWhh
dmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAg
aWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnZp
ZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2
aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICAg
ICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVyczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQorICAgICAgICAgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICAgICAgfQog
ICAgIH0gZWxzZQotICAgICAgICBzaG91bGRGbGF0dGVuID0gW3NlbGYgX3Nob3VsZEZsYXR0ZW5D
b21wb3NpdGluZ0xheWVyczpjdHhdOworICAgICAgICBwYWludEJlaGF2aW9yIHw9IFtzZWxmIF9w
YWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAgICAgIAorICAgIHZp
ZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKLSAgICBQYWludEJlaGF2aW9y
IG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAoc2hvdWxkRmxhdHRl
bikgewotICAgICAgICBvbGRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsKLSAgICAg
ICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgIH0KLSAgICAKICAgICBpZiAoY29udGVudHNPbmx5
KQogICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3Qo
cmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgZW5jbG9zaW5n
SW50UmVjdChyZWN0KSk7CiAKLSAgICBpZiAoc2hvdWxkRmxhdHRlbikKLSAgICAgICAgdmlldy0+
c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlv
cihvbGRCZWhhdmlvcik7CiB9CiAKIC0gKEJPT0wpX2dldFZpc2libGVSZWN0OihOU1JlY3QqKXJl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDVkNTVhYjEz
YmE3NGNiN2YxYmZlY2I3OTE4NjcwMzIwM2YyY2QwN2IuLjk0Nzg5NTljY2VmZGU4ZWQ2NjU5YzRm
YWIyNDA5OGU1ZjdhMTdhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtNzI5Nyw4ICs3Mjk3LDggQEAgc3RhdGljIENHSW1hZ2VSZWYgaW1hZ2VGcm9tUmVj
dChGcmFtZSogZnJhbWUsIENHUmVjdCByZWN0KQogICAgIFdlYkhUTUxWaWV3ICp2aWV3ID0gKFdl
YkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIAogICAgIFBhaW50QmVoYXZpb3Igb2xkUGFp
bnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKKyAgICBmcmFtZS0+dmlldygpLT5zZXRQ
YWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyk7CisKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCiAgICAgQ0dSZWN0IGJvdW5kcyA9IFt2aWV3IGJv
dW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggN2MxZTA1N2MzN2Uz
ZTFjN2FmMGVlNDdiNDVlNTZmOGZjZjU2YjZjYy4uNTlkYjllMDUyNWQ4NWYyOWVjY2EwNWI0NDY1
MzMwZmEyM2U5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTM2
OSw3ICsxMzY5LDYgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbHNlCiAgICAgX3ByaXZh
dGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6
d2hpdGUpKTsKICNlbmRpZgotICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0
aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBfcHJpdmF0ZS0+d2luZG93VmlzaWJpbGl0eU9ic2VydmVyID0gYWRvcHROUyhbW1dlYldp
bmRvd1Zpc2liaWxpdHlPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKQEAgLTQ1
MDQsMTYgKzQ1MDMsNiBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJsZQogICAgIHJldHVy
biBZRVM7CiB9CiAKLS0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXll
cnNXaGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWcKLXsKLSAgICBfcHJpdmF0ZS0+aW5jbHVk
ZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAgPSBmbGFnOwot
fQotCi0tIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdp
bmdUb0JpdG1hcAotewotICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVkZXNGbGF0dGVuZWRDb21w
b3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7Ci19Ci0KIC0gKHZvaWQpc2V0VHJhY2tz
UmVwYWludHM6KEJPT0wpZmxhZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFp
bkNvcmVGcmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXgg
NmMzNjkyODY3N2JmNjUzNjRlYWJkY2M1NmUwOTQ1YzEwNmMyZTY5My4uMGE1NDA2ODNmYTJlNGQ3
NWYwMTc5OGQxNmQ1YzBkNmVmYTZmZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZhdGU6CiAKICAgICBCT09MIHNob3Vs
ZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCi0gICAgQk9PTCBpbmNsdWRlc0ZsYXR0ZW5lZENvbXBv
c2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKLQogICAgIC8vIFdoZW4gdGhpcyBmbGFn
IGlzIHNldCwgbmV4dCB0aW1lIGEgV2ViSFRNTFZpZXcgZHJhd3MsIGl0IG5lZWRzIHRvIHRlbXBv
cmFyaWx5IGRpc2FibGUgc2NyZWVuIHVwZGF0ZXMKICAgICAvLyBzbyB0aGF0IHRoZSBOU1ZpZXcg
ZHJhd2luZyBpcyB2aXN1YWxseSBzeW5jaHJvbml6ZWQgd2l0aCBDQUxheWVyIHVwZGF0ZXMuCiAg
ICAgQk9PTCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5OTQ3ODZiMTRlOTE4Y2JlNzkz
Nzc0NTczMDQwNTg3ZjFkNjFiYjMuLjRmZDA3NWEzYzBiY2FlYTc4ZDJhMTgwN2U3ZWM1NjU5ZDc5
YmZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAg
LTc2NSwxMCArNzY1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAKIC8v
IFJldHVybnMgWUVTIGlmIE5TVmlldyAtZGlzcGxheVJlY3RJZ25vcmluZ09wYWNpdHk6aW5Db250
ZXh0OiB3aWxsIHByb2R1Y2UgYSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udGVu
dC4KIC0gKEJPT0wpX2lzU29mdHdhcmVSZW5kZXJhYmxlOwotLy8gV2hlbiBkcmF3aW5nIGludG8g
YSBiaXRtYXAgY29udGV4dCwgd2Ugbm9ybWFsbHkgZmxhdHRlbiBjb21wb3NpdGluZyBsYXllcnMg
KGFuZCBkaXN0b3J0IDNEIHRyYW5zZm9ybXMpLgotLy8gQ2xpZW50cyB3aG8gYXJlIGFibGUgdG8g
Y2FwdHVyZSB0aGVpciBvd24gY29weSBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXJzIG5lZWQgdG8g
YmUgYWJsZSB0byBkaXNhYmxlIHRoaXMuCi0tICh2b2lkKV9zZXRJbmNsdWRlc0ZsYXR0ZW5lZENv
bXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDooQk9PTClmbGFnOwotLSAoQk9PTClf
aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7CiAK
IC0gKHZvaWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZzsKIC0gKEJPT0wpaXNUcmFja2lu
Z1JlcGFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAppbmRleCAzNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1MmIwNjRmLi45
ZTYwYzRmZDYzN2M4ZGM5MGM3MDViMWI0YTcwZTdhNmVhMDRhZTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0aW9u
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsgfQogICAgIHZpcnR1YWwgR3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFp
bnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgeyB9CiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGludCBwbGF0
Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVyKikgeyByZXR1
cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KaW5kZXggMjg0MGI5NTY2M2NmZTkzZGY1NWMxMDJkOWFiODMwZTA5N2Fm
ZTg3Yi4uY2U3MDUzZDIzM2NkODc0YmFhMmY4M2MwMDViYmUyNDI4YjRlNWQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CkBAIC0zNDAsMTcgKzM0MCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgIHN3aXRj
aCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRp
bGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5kcyk7CisgICAg
ICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobV9sYXll
ciwgY29udGV4dCwgZGlydHlCb3VuZHMsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxh
eWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJvcExheWVyOgot
ICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9s
YXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5
ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoKICAgICAgICAg
Ly8gRklYTUU6IFRoZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhpZXJhcmNoeS4g
V2UgbmVlZCB0byBwYWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIgaW4gb3JkZXIg
dG8gc2VlIHRoZSByZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRy
YXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAg
ICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5
ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI6CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggMzQ3MWQyZGQz
MjhiYzc4ZmFhNDA2YTVmZmI1NjYzN2Y1YTQ4ZGFmYi4uY2E0OWIwYzM3OTJmMmViNWI2ZDFmODVh
YzJiMWI4MmM4ZmIyMjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4g
aW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkK
ICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGln
aHRpbmcpCiAgICAgICAgIHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNsdWRl
U2VsZWN0aW9uOwogCi0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gZnJhbWVWaWV3
LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
OworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhh
dmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJl
aGF2aW9yU25hcHNob3R0aW5nKTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0Zv
cmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGb3Jj
ZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVU
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApp
bmRleCBmNzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0Li5kMWZiYzI1ZDVj
MjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxX
ZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hv
dE9wdGlvbnMgb3B0aW9uCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVj
dC54KCksIC1wYWludFJlY3QueSgpKTsKIAogICAgIFBhaW50QmVoYXZpb3Igb2xkUGFpbnRCZWhh
dmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIFBhaW50QmVoYXZpb3IgcGFp
bnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25s
eSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JTZWxl
Y3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRm9y
Y2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRl
VGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA5NzFlYzcwNzY0YzI4MGEwNmI4OTEyMDhkYmM0ODA2NzA2MGI0NTNlLi4wZjJmY2IxNjA2MDg5
ZTQzY2UxY2YyODNkZTI4YWY0NzEzZTc5NWVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDUtMjIgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU25hcHNob3R0aW5n
IHZpYSAtcmVuZGVySW5Db250ZXh0OiBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2Rl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDg1
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjc2MTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5D
b250ZXh0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVySW5Db250ZXh0V2ViVmlld0RlbGVn
YXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtSZW5kZXJJbkNvbnRleHRX
ZWJWaWV3RGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmdldFBpeGVsSW5kZXgpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTctMDUtMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEVOQUJMRShBUFBMRV9QQVlfREVMRUdBVEUpIHNob3VsZCBiZSBOTyBvbiBtYWNPUyBT
aWVycmEgYW5kIGVhcmxpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk2YzczYmJkMDVh
Mzg2NGU3OTFkOGU1YjQ0NGM0Y2NlYzE0YjBkMi4uYTY5MmRlOWE1MWE5Y2M1Y2Y3OWNhMDcxNDY0
ZDgyN2FkNDRkYzRjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzLDYgKzMzLDggQEAK
IAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFB
NDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYy
QzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUu
Y3BwICovOyB9OwogCQkwRjNCOTRBNzFBNzcyNjc0MDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVh
dGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbSAqLzsgfTsKKwkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90Vmlh
UmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5D
b250ZXh0Lm1tICovOyB9OworCQkwRjRGRkFBMTFFRDNEMERFMDBGNzExMUYgLyogSW1hZ2VJTy5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjRGRkFBMDFFRDNEMERFMDBGNzExMUYgLyogSW1hZ2VJTy5mcmFtZXdvcmsgKi87IH07CiAJ
CTFBMDJDODcwMTI1RDRDRkQwMEUzRjRCRCAvKiBmaW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMkM4NEIxMjVENEE1RTAwRTNG
NEJEIC8qIGZpbmQuaHRtbCAqLzsgfTsKIAkJMUEzNTI0QUUxRDYzQTRGQjAwMzE3MjlCIC8qIFNj
b3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MzUyNEFDMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgKi87IH07CiAJCTFBNEY4MUNGMUJE
RkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEY4MUNEMUJERkZENTMwMDRF
NjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSAqLzsgfTsKQEAgLTg5OCw2ICs5
MDAsOCBAQAogCQkwRjE3QkJENDE1QUY2QzREMDA3QUI3NTMgLyogV2ViQ29yZVN0YXRpc3RpY3NX
aXRoTm9XZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkMyMEI3MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjNCOTRBNTFBNzcyNjZDMDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVh
dGVKYXZhU2NyaXB0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRl
eHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTbmFwc2hvdFZp
YVJlbmRlckluQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RkZB
QTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUg
PSBJbWFnZUlPLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSW1h
Z2VJTy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQkwRkM2QzRDQjE0MTAy
N0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlZEJsYWNrVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1ldGFBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFya2lu
Z0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzQsNiArMTU3OCw3IEBACiAJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkwRjRGRkFBMTFFRDNEMERFMDBGNzExMUYgLyog
SW1hZ2VJTy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk2MzQ5MTBFMDFFOUQzRkYz
MDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CTdBMDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUu
ZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE4NjcsNiArMTg3Miw3IEBACiAJCTdDODNFMDI4
MUQwQTVDREYwMEZFQkNGMyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjRGRkFBMDFFRDNEMERFMDBGNzExMUYgLyogSW1hZ2VJ
Ty5mcmFtZXdvcmsgKi8sCiAJCQkJNjM0OTEwREYxRTlEM0ZGMzAwODgwMzA5IC8qIENvcmVMb2Nh
dGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJN0EwMTBCQ0ExRDg3N0MwNTAwRURFNzJBIC8qIENvcmVH
cmFwaGljcy5mcmFtZXdvcmsgKi8sCiAJCQkJN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxp
YmljdWNvcmUuZHlsaWIgKi8sCkBAIC0yNTE2LDYgKzI1MjIsNyBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQ0RDOEU0OUExQkM3MjhGRTAwNTk0RkVDIC8qIFJlc291cmNlcyAqLywKIAkJCQlDREM4
RTQ4NTFCQzVCMTk0MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0gKi8sCisJ
CQkJMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0
Lm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzA0MSw2ICszMDQ4LDcgQEAKIAkJCQkyRUZGMDZENDFEOEFFREJCMDAwNEJCMzAgLyog
VGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFMzUyNEY5MUIxNDQxQzQwMDI4
QTdDNSAvKiBUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVy
SW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRD
IC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VERTFBNDEx
QTkyMDA0NDdDNEMgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUIwMUE0MTFB
NDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lvcy9TbmFwc2hvdFZpYVJlbmRlckluQ29u
dGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lvcy9TbmFwc2hvdFZp
YVJlbmRlckluQ29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDkxNWNjMzY0NGM3MTVlYTFlNmFmODkx
ZmNmZTk0NWI3MzRjMzhlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1Mp
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5o
PgorI2ltcG9ydCA8c3RkbGliLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRp
YyBib29sIGxvYWRDb21wbGV0ZSA9IGZhbHNlOworc3RhdGljIGJvb2wgbG9hZEZhaWxlZCA9IGZh
bHNlOworCitAaW50ZXJmYWNlIFJlbmRlckluQ29udGV4dFdlYlZpZXdEZWxlZ2F0ZSA6IE5TT2Jq
ZWN0IDxVSVdlYlZpZXdEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFJlbmRlcklu
Q29udGV4dFdlYlZpZXdEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXdEaWRGaW5pc2hMb2FkOihV
SVdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgbG9hZENvbXBsZXRlID0gdHJ1ZTsKK30KKworLSAo
dm9pZCl3ZWJWaWV3OihVSVdlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxMb2FkV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IKK3sKKyAgICBsb2FkQ29tcGxldGUgPSB0cnVlOworICAgIGxvYWRGYWls
ZWQgPSB0cnVlOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3Rh
dGljIE5TSW50ZWdlciBnZXRQaXhlbEluZGV4KE5TSW50ZWdlciB4LCBOU0ludGVnZXIgeSwgTlNJ
bnRlZ2VyIHdpZHRoKQoreworICAgIHJldHVybiAoeSAqIHdpZHRoICsgeCkgKiA0OworfQorCitU
RVNUKFdlYktpdDEsIFJlbmRlckluQ29udGV4dFNuYXBzaG90KQoreworICAgIGNvbnN0IE5TSW50
ZWdlciB3aWR0aCA9IDgwMDsKKyAgICBjb25zdCBOU0ludGVnZXIgaGVpZ2h0ID0gNjAwOworICAg
IAorICAgIFJldGFpblB0cjxVSVdpbmRvdz4gdWlXaW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KV0pOwor
ICAgIFJldGFpblB0cjxVSVdlYlZpZXc+IHVpV2ViVmlldyA9IGFkb3B0TlMoW1tVSVdlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KV0pOwor
ICAgIFt1aVdpbmRvdyBhZGRTdWJ2aWV3OnVpV2ViVmlldy5nZXQoKV07CisgICAgCisgICAgUmV0
YWluUHRyPFJlbmRlckluQ29udGV4dFdlYlZpZXdEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tSZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB1
aVdlYlZpZXcuZ2V0KCkuZGVsZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworICAgIAorICAgIE5T
VVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2Ut
cmVkLXNxdWFyZS1pbWFnZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgTlNMb2coQCJMb2FkaW5nICVAIiwgdXJsKTsK
KyAgICBbdWlXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dXJsXV07CisgICAgCisgICAgVXRpbDo6cnVuKCZsb2FkQ29tcGxldGUpOworICAgIAorICAgIEVY
UEVDVF9UUlVFKGxvYWRDb21wbGV0ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGxvYWRGYWlsZWQpOwor
ICAgIAorICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KGNhbGxvYyh3aWR0aCAqIGhlaWdodCwgNCkpOworICAgIAorICAgIFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsQnVmZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCA0ICogd2lk
dGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMyQmlnKTsKKyAgICAKKyAgICAvLyBGbGlwIHRoZSBjb250ZXh0Cisg
ICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOworICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCAtaGVpZ2h0KTsKKyAgICAKKyAgICBbdWlX
ZWJWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAxLCA2MDEpXTsgLy8gVGhpcyByZXNp
emUgc3RvcHMgQ29yZSBBbmltYXRpb24gZnJvbSB1c2luZyBjYWNoZWQgbGF5ZXIgYmFja2luZyBz
dG9yZQorICAgIFtbdWlXZWJWaWV3IGxheWVyXSByZW5kZXJJbkNvbnRleHQ6IGNvbnRleHQuZ2V0
KCldOworICAgIAorICAgIC8vIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBzcXVhcmUgYXQgMCwwIC0g
MTAweDEwMAorICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgxLCAxLCB3
aWR0aCk7CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZSA9IHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhd
OworICAgIEVYUEVDVF9FUSgyNTUsIHZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGl4ZWxCdWZm
ZXJbcGl4ZWxJbmRleCArIDFdKTsKKyAgICBFWFBFQ1RfRVEoMCwgcGl4ZWxCdWZmZXJbcGl4ZWxJ
bmRleCArIDJdKTsKKyAgICAKKyAgICAvLyBSaWdodC1ib3R0b20gY29ybmVyIG9mIHRoZSBkaXYg
KDAsIDAsIDEwMCwgMTAwKQorICAgIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDk4LCA5OCwg
d2lkdGgpOworICAgIEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDFdKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDJdKTsKKyAgICAKKyAgICAvLyBPdXRzaWRl
IHRoZSBkaXYgKDAsIDAsIDEwMCwgMTAwKQorICAgIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4
KDEwMSwgMTAxLCB3aWR0aCk7CisgICAgRVhQRUNUX0VRKDI1NSwgcGl4ZWxCdWZmZXJbcGl4ZWxJ
bmRleF0pOworICAgIEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAxXSk7
CisgICAgRVhQRUNUX0VRKDI1NSwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleCArIDJdKTsKKyAgICAK
KyAgICBmcmVlKHBpeGVsQnVmZmVyKTsKK30KKworfQorCisjZW5kaWYKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311012</attachid>
            <date>2017-05-23 08:18:23 -0700</date>
            <delta_ts>2017-05-23 11:27:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172485-20170523081822.patch</filename>
            <type>text/plain</type>
            <size>88599</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0Y2M2MDQ3ZTFjNGU4
ODMwNTczZmNkODAyODBlN2I0OTQ0M2I2Ni4uNTVmN2NkNzMwM2IxZDc2MWYzMjliYjBjNGRmYzhi
MzM1OWQ2MjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0yMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRp
bmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5jaHJvbm91cyBpbWFnZSBkZWNv
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI0
ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFVJV2ViVmlldyBjbGllbnRzIHNuYXBz
aG90IHRoZSB2aWV3IHZpYSAtcmVuZGVySW5Db250ZXh0OiBvbiB0aGUgVUlWaWV3J3MgbGF5ZXIs
CisgICAgICAgIFdlYktpdCBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RlcyBzbyB0
aGF0IHRoZSBpbWFnZXMgc2hvdyBpbiB0aGUgc25hcHNob3QuCisKKyAgICAgICAgRml4IGJ5IHBs
dW1iaW5nIHRocm91Z2ggYSAic25hcHNob3R0aW5nIiBwYWludCBiZWhhdmlvciBmbGFnIGZyb20g
dHdvIHNvdXJjZSBsb2NhdGlvbnM6CisgICAgICAgIFdlYlNpbXBsZUxheWVyLCB1c2VkIGJ5IGNv
bXBvc2l0aW5nIGxheWVycywgYW5kIExlZ2FjeVRpbGVMYXllciwgdXNlZCBmb3IgdGhlIFdLMSB0
aWxlIGNhY2hlLgorICAgICAgICBPbiBXZWJTaW1wbGVMYXllciB0aGUgZmxhZyBwcm9wYWdhdGVz
IHRocm91Z2ggUGxhdGZvcm1DQUxheWVyIHRvIEdyYXBoaWNzTGF5ZXIsIGFuZCBvbiBMZWdhY3lU
aWxlTGF5ZXIKKyAgICAgICAgaXQgc2V0cyBzb21lIHN0YXRlIG9uIHRoZSBXQUtXaW5kb3csIHdo
aWNoIGlzIGRldGVjdGVkIGJ5IC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQ6XS4KKyAgICAgICAgSW4gYm90aCBjYXNlcywgdGhlIGZsYWcgYmVjb21lcyBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nIHdoaWNoIGlzIHBhc3NlZCBkb3duIHRocm91Z2ggcGFpbnRp
bmcKKyAgICAgICAgaW4gUGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuCisKKyAgICAgICAgRml4IGNv
ZGUgdGhhdCB3YXMgY2hlY2tpbmcgcGFpbnRCZWhhdmlvciBvbiB0aGUgRnJhbWVWaWV3IHRvIGp1
c3QgbG9va2luZyBhdCBQYWludEluZm8ucGFpbnRCZWhhdmlvciwKKyAgICAgICAgd2hpY2ggcmVx
dWlyZWQgcGFzc2luZyBQYWludEluZm8gYWxvbmcgaW4gUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoKS4KKworICAgICAgICBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyBmbGFnLCBiZWNhdXNlIHRoYXQgdHJpZ2dlcnMKKyAgICAgICAg
YSBmbGF0dGVuaW5nIHBhaW50IG9mIGNvbXBvc2l0aW5nIGxheWVycywgYW5kIHdlIGRvbid0IHdh
bnQgdGhhdCBiZWhhdmlvciBmb3IgLXJlbmRlckluQ29udGV4dDosCisgICAgICAgIHNpbmNlIENv
cmVBbmltYXRpb24gY2FsbHMgLXJlbmRlckluQ29udGV4dDogb24gZWFjaCBvZiBvdXIgbGF5ZXJz
IGFuZCB3ZSBuZWVkIHRvIGF2b2lkIGRvdWJsZS1wYWludGluZy4KKyAgICAgICAgU28gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZyBpcyBub3cgYWRkZWQgdG8gdGhlIGNhbGwgc2l0ZXMgdGhhdCBh
bHNvIHNldCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzCisgICAgICAgIGlu
IG1vc3QgY2FzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IFNuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJM
YXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciByZW5kZXJJ
bkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oOiBVc2UgaW5pdGlhbGl6
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0xlZ2FjeVRpbGVMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAg
ICAgICgtW0xlZ2FjeVRpbGVMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tMZWdh
Y3lUaWxlTGF5ZXIgbGF5ZXJCZWluZ1BhaW50ZWRdKTogRGVsZXRlZC4gVGhlcmUgd2VyZSBubyBj
YWxsZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAg
KC1bV0FLVmlldyBfZHJhd1JlY3Q6Y29udGV4dDpsb2NrRm9jdXM6XSk6IGJvb2wgLT4gQk9PTAor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRJc0luU25h
cHNob3R0aW5nUGFpbnQ6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBpc0luU25hcHNob3R0aW5n
UGFpbnRdKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRQaGFzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2tJbWFnZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAxNy0wNS0xOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXdsaW5lIGFm
dGVyIHRoZSBVUkwgaW4gc2hvd0xheWVyVHJlZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzBiNjU2MzBkMjFmY2ZiMDA1YWM5NzExZWFhMzQ1Mjk4NWU2NzhkYi4uZTk5NDQ1YWRlOWUwMjRh
Mzg2ODhlM2EyM2RkMGM4YzIxMjhiNjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA1LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNuYXBzaG90dGluZyB2aWEgLXJlbmRlckluQ29udGV4dDogc2hvdWxkIGRvIHN5
bmNocm9ub3VzIGltYWdlIGRlY29kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MjQ4NQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI3NjE0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0
bWFwOiBTUEkgdGhhdCBubyBsb25nZXIKKyAgICAgICAgaGFzIGFueSBjYWxsZXJzLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGluRmxhdHRlbmluZ1BhaW50XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JG
b3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zaG91bGRGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZXcgX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wNS0xOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKEFQUExFX1BBWV9ERUxF
R0FURSkgc2hvdWxkIGJlIE5PIG9uIG1hY09TIFNpZXJyYSBhbmQgZWFybGllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNmNGYzOWFjNGQ4YzExZGZmODQ2ZDg2ZDY3NjhkM2ZjNWQ1YmVlZmIuLjMwMWYxYTk1YzUz
YmVlOTM0OTlkNDYwNmFhZDM4ZjA3YjU2NmZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxNy0wNS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTbmFwc2hvdHRpbmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nIGZsYWcgaW4gZnVuY3Rpb25zIHRoYXQgZG8gc25hcHNo
b3R0aW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJl
bmRlcmVkSW1hZ2UpOgorCiAyMDE3LTA1LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZG8gbm90IGNhY2hlIGdVTSBwZXJt
aXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDNhMWU1OGY3NDlmMzc4YzA4NGE0NzVkOTgxNGJhYmFjOGI1OTFl
Y2EuLmVlODE4YmEyZjcxZmZkOGExNTk0NWEzNzFhYzQwNDZjNzYyM2UwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTE0MDIsNyArMTQwMiw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZywgbnVsbHB0ciwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJhZjZjZDdhYTdjYjM1ZjNmZTBjNTc0N2Q5
NTM3MzFkNTZlYTJhODcuLjJiY2Y2NzQzYzIxZTBiMTA0NzllYWNhNjZkM2E0MzE4YWFkMzc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTksMTAgKzQzOTksMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsIFBhaW4KICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIAorICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+
cHJpbnRpbmcoKSkKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTI5LDcgKzQ1MzIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdAogCiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5l
dyBiZWhhdmlvciBhcHByb3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Ig
b2xkQmVoYXZpb3IgPSBwYWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKTsKIAogICAgIC8vIElmIHRo
ZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMg
d2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRE9NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggYzIyMWRj
MjgxZmRlZDAwYTE4ZTBiYjFmNmQzY2Y1MDYzMGUwYTBkMC4uNDI0MWE0YmZlMmI5OTFmNmU3MWE0
ZWUzNTI0ODM3MTZkZmE2MGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzTmFtZXMoYm9vbCBw
YXJhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBh
aW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0
KQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRGbGFn
cykKIHsKICAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRHcmFwaGljc0xheWVyIDogbV9vdmVybGF5
R3JhcGhpY3NMYXllcnMpIHsKICAgICAgICAgaWYgKG92ZXJsYXlBbmRHcmFwaGljc0xheWVyLnZh
bHVlLmdldCgpICE9IGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaAppbmRleCAwNTQ2OTI5YWU2NTQ3MTIwZGI0OGQwOTkxMjZkZmJkOGUx
YzQyMDM5Li5iOTY0NTFhZDkwOTczYjI0NjMyZDlhYjg0N2M2NGNlOGJlNWU2NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2tpcExh
eWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggMDdkODhh
Mjg3NmIyYmE0OGRkYmQ1ZThlZjgxZGFjOWMxNTQ1N2NmZS4uZmZjNDk0MmIyMzIzZWNiMjZlYzg1
ZDlmZjFjNWIyZGJmYTAwYTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlCisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KGNsaXAsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuOGYpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRleCBhMTMx
OWJiMGU5ZWNlZjAyZTk4MTFmMWYzNmQxYWQ5MjM4NDkxNzNjLi5kM2FhYjlmZDYxNmFjN2JjMzcw
NjFhN2Q0NzFiM2ZlODNkMzY2ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAogICAgICAgICB2b2lkIG5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgaW5DbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7CiAgICAgICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBk
aWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmYmExMDlhOTYzZGJmM2Y0
ZTI4MDIyMmNkNjc1OGNmMDQ3ZGIxNjlhLi4wNzA5NmU4MjdmMzhjMTJkNDNjNzVhZTBhN2E0Mzhl
Y2FkNzBhYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheQogICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCk7CiB9CiAKLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0
UmVjdCYpCit2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFw
aGljc0xheWVyUGFpbnRGbGFncykKIHsKICAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTJmNmNmZmNiZGQyYmI0MWQwMWZmZGY4NzFlZGU2
YTEwNTA3YzYzYy4uNjk4Zjc1OGYxOTNlNGI1YjY3NTU3ZjRkMzg3MWEzYzNjODNjNzVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgR3JhcGhp
Y3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdz
KQogewogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgtb2Zmc2V0KTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdChjbGlwKTsKICAgICBjbGlwUmVj
dC5tb3ZlKG9mZnNldCk7CiAKLSAgICBtX2NsaWVudC5wYWludENvbnRlbnRzKHRoaXMsIGNvbnRl
eHQsIG1fcGFpbnRpbmdQaGFzZSwgY2xpcFJlY3QpOworICAgIG1fY2xpZW50LnBhaW50Q29udGVu
dHModGhpcywgY29udGV4dCwgbV9wYWludGluZ1BoYXNlLCBjbGlwUmVjdCwgZmxhZ3MpOwogfQog
CiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDMyMmJmODBlZjI5NDQ0NzNlNjRiYzg0MDcyZDE0
YTM4YzVkNmIxNDIuLjk1ZmE3Yzg5ZjA0YzNmMGQ1OWUzMzc4YjUyZjk4MTUzYzU0MDg2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUcmFuc2l0aW9ucyBhcmUgaWRl
bnRpZmllZCBieSBhIHNwZWNpYWwgYW5pbWF0aW9uIG5hbWUgdGhhdCBjYW5ub3QgY2xhc2ggd2l0
aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCiAgICAgc3RhdGljIFN0cmluZyBhbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQpOwotICAgIAorCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgdGhlIGFuaW1hdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb21wb3NpdGluZyBzeXN0
ZW0uIElmIHRoaXMgcmV0dXJucwogICAgIC8vIGZhbHNlLCB0aGUgYW5pbWF0aW9uIHdpbGwgYmUg
cnVuIGJ5IENTU0FuaW1hdGlvbkNvbnRyb2xsZXIuCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBoYW5k
bGUgYm90aCB0cmFuc2l0aW9ucyBhbmQga2V5ZnJhbWUgYW5pbWF0aW9ucy4KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgCisKICAgICAvLyBMYXllciBjb250ZW50cwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KQEAgLTQ2NSwxMSArNDY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ2Fs
bGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gdG8gZHJhdyBsYXllciBj
b250ZW50cy4KLSAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCk7Ci0gICAgCisgICAgdm9pZCBwYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAs
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUp
OworCiAgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxh
eWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBlbnVtIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiB7IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duLCBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzQm90dG9tVXAgfTsKIAogICAgIC8vIEZsaXBwZWRuZXNzIG9mIHRoZSBj
b250ZW50cyBvZiB0aGlzIGxheWVyLiBEb2VzIG5vdCBhZmZlY3Qgc3VibGF5ZXIgZ2VvbWV0cnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmgKaW5kZXggZjZlOTBiOGUzNTIyOWIyNGE2NGJmNzZkNjRjZmM1ODk0OGQxMGY3
Ni4uNDVmNjUxMmY5ZDU1Zjk4ZGZlZDM2N2QwYjFkMGE1N2Y3MjkxZTlkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFw
aGljc0xheWVyQ2xpZW50X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllckNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
QEAgLTc2LDYgKzc1LDggQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKIH07
CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yOwogCitlbnVtIGNsYXNz
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIHsgTm9uZSwgU25hcHNob3R0aW5nIH07CisgICAgCiBj
bGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFwaGlj
c0xheWVyQ2xpZW50KCkge30KQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIE5vdGlm
aWNhdGlvbiB0aGF0IHRoaXMgbGF5ZXIgcmVxdWlyZXMgYSBmbHVzaCBiZWZvcmUgdGhlIG5leHQg
ZGlzcGxheSByZWZyZXNoLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3Bs
YXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiAvKiBpbkNsaXAgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBH
cmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRS
ZWN0JiAvKiBpbkNsaXAgKi8sIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCB7IH0KIAogICAgIC8vIFByb3ZpZGVzIGN1cnJlbnQgdHJhbnNmb3JtICh0YWtpbmcgdHJh
bnNmb3JtLW9yaWdpbiBhbmQgYW5pbWF0aW9ucyBpbnRvIGFjY291bnQpLiBJbnB1dCBtYXRyaXgg
aGFzIGJlZW4KQEAgLTEzOSw0ICsxNDAsMyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggZTRkMGY5MTY5ZDQyNTRiMjlkZTMzODQ1N2EyNjlmNGIwMzQ1Y2IyOS4uOGEwYWQ1MDVl
ZDAxODQxZWJhMTMzMzA3Mjc1YTFhNmFiMzM3ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkgeyB9CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxh
dGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291
bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5
ZXIqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2NTExM2IwZDJhYjg1ZTI3NTA1
ZTc2NWY4NjFjNmMzOTllNjBkZmU1Li5iZTA4NzdjMTAzNzFiZThlMGE5NjQ1YWEzNTU0YzllYWNh
MzBlNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NjMsNyArMTU2Myw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9yCiAgICAgcmV0dXJuIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBj
bGlwKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
UGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdzKQogewogICAgIG1faGFzRXZl
clBhaW50ZWQgPSB0cnVlOwogICAgIGlmIChtX2Rpc3BsYXlMaXN0KSB7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbgogICAgIH0KIAogICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKFBhaW50TGF5ZXJTdGFydCwgUGFpbnRMYXllckVuZCk7Ci0gICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7CisgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoY29udGV4dCwgY2xpcCwgZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IDUxMzlmYWY4MmU3ZjgyZThmY2ZkYjVjNWZkMTY1YTUwMDllN2NiM2MuLjlhZTE4MzQx
OGIwY2FlYzY5NmZmOGM1NzA2NTUzOTE2ZmM1Y2NiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkgb3ZlcnJp
ZGU7CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09y
aWVudGF0aW9uKCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBjbGlwKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7
CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKFBsYXRmb3JtQ0FMYXllciop
IGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50
Q291bnQoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGUgeyByZXR1cm4gaW5jcmVtZW50UmVwYWlu
dENvdW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggYjJhMjE2OTEzZGYyOTMzOTYzOTZkODJlMzYzYjc2
MWIwNmE1MjMwYi4uZjk0YzA3ZTE2Y2MwNjhlNGE4YTNjODc0NTI5Njk3OWM2ZDAxMTFiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIC8vIEZ1
bmN0aW9ucyBhbGxvd3MgdXMgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gYWNyb3NzIFdlYlRpbGVk
TGF5ZXIgYW5kIFdlYkxheWVyCiAgICAgc3RhdGljIFJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVj
dHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKik7Ci0gICAgc3RhdGljIHZv
aWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBh
aW50UmVjdExpc3QmIGRpcnR5UmVjdHMpOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRl
bnRzKENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0
eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd1Jl
cGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWlu
dENvdW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CiAgICAgc3RhdGljIENH
UmVjdCBmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaAppbmRleCAxMGM4MmY0NGEwNWY0YzRjMjA2ZGFmYmE3MjJkZDg1YWM1NTU1MTFiLi4y
OGNiYzM1YjRlMWE4YTcyYjMzY2U2N2IwZDYzMjc2N2UyMTc4Y2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRfaAotI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKQEAgLTQ0LDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRp
b25TdGFydGVkKGNvbnN0IFN0cmluZyYgLyphbmltYXRpb25LZXkqLywgQ0ZUaW1lSW50ZXJ2YWwp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25z
dCBTdHJpbmcmIC8qYW5pbWF0aW9uS2V5Ki8pIHsgfQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
cjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpAQCAtNzIsNCArNzEsMyBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2Vu
ZGlmIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAppbmRleCAwMjYwYmFi
ODY2MzVlNWNhOTNiZTg2OWU4MmRhNmU1ZThlYjU5ZmRjLi5kNjJjN2Y1NzRlZWYzNGYzZmY3MWJm
MDYyNTdiMjNlNzU1YzgxZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGlj
YXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ip
OwogfQogCi12b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50
RmxhZ3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9ybUNBTGF5ZXIsIHBsYXRmb3JtQ0FM
YXllciA9PSBtX2xheWVyLnB0cigpKTsKICAgICBtX2NvbnRyb2xsZXIudGlsZUdyaWQoKS5kcmF3
VGlsZU1hcENvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5ZXIuZ2V0KCku
Ym91bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ292ZXJhZ2VNYXAuaAppbmRleCA4Y2NmZTE2MTUzYjNmODlhMWY1ZTlkMjA0OGI1NTc2
ZjYxNDE1ZjU5Li5hYjQzYTU2MDZkMjgwZmM0NjNkYTI5NDc4OWNkNjU2NGQ4YTQ4MTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJh
Z2VNYXAuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJy
aWRlOwogICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRleCAxMjIzNzIyOTli
NGIwYjNhNGE3NmU2OTIxNjk2OTVlNzAzNDRjMTVlLi5jYjFlYTUxZmM3YjI3MGE4MWM0NGYxYjJj
OWJhOWJmMTI2NTc5OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuY3BwCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBUaWxlR3JpZDo6ZHJh
d1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGxheWVyQm91bmRz
KSBjb24KICAgICB9CiB9CiAKLXZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29u
dGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChwdGhyZWFkX21haW5fbnAo
KSkKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogICAgICAgICBj
b250ZXh0LnNjYWxlKG1fc2NhbGUpOwogCiAgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWlu
dFJlY3RMaXN0IGRpcnR5UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFp
bnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBmbGFncyk7CiAgICAgfQog
CiAgICAgaW50IHJlcGFpbnRDb3VudCA9IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRD
b3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVHcmlkLmgKaW5kZXggMzI1MzM2ZjgxOTFlNDU4MjNjNzU1ZDg3ODJjNDJhYTBk
ZTU3NjUxZC4uMmY4NzdiNDg3YTlhZTg0Zjc4MGNiMmEyYTc0MDIyMWE2NDhiYmNhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVRpbGVzKFZlY3RvcjxUaWxlR3Jp
ZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpOwogCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50
Ci0gICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IHBsYXRmb3JtQ0FMYXllckluY3Jl
bWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggZWEyMzhlNjg5ODgzMjRlOTI1MTEzMTM0ODc4NmJi
NDgwZmMzOGE0Zi4uMTY1ODE0NDU0Zjc4NjBhM2EzZDQ2YmNiMDc2YjU4YmVjMWI4YWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTExMTIsNyArMTExMiw3IEBAIFBs
YXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJl
Y3RzVG9QYWludChDR0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlz
dCYgZGlydHlSZWN0cykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cywgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNv
bnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50
cykKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKKyAgICAgICAgICAgIGxh
eWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVy
LCBncmFwaGljc0NvbnRleHQsIHJlY3QsIGZsYWdzKTsKICAgICAgICAgfQogICAgICAgICAKICNp
ZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDVlMTQ5ZmQ0
YTgxZmU1MDg2NmFlYTA1MGExN2NiZGRmOTYzNDNiYjYuLjFiOTRjMjk0OWE3OGUxZGRmYWMxZTg4
NWEwNmZiM2U4ZDEyZTBjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxh
eWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFIKICAgICByZXR1cm4gZGlydHlSZWN0
czsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4
dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwg
UmVwYWludFJlY3RMaXN0JikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50
cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9y
bUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewog
ICAgIGludGVybihwbGF0Zm9ybUNBTGF5ZXIpLT5kaXNwbGF5Q2FsbGJhY2socGxhdGZvcm1DQUxh
eWVyLT5wbGF0Zm9ybUxheWVyKCksIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKaW5kZXggYWE4YTlhNzVkZGNmNWVjZDgzYzc4NTBlMDEzYmYw
NDBiMmU2NTIzYi4uNDY1YjRhM2UzMzc4MTE3NTFkYTlkMmMxZjBlNjZjN2NiODM5MTViYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHQKICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGxh
eWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCiAgICAgQ0dSZWN0IGNsaXBCb3VuZHMgPSBD
R0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CiAgICAgSW50UmVjdCBjbGlwKGVu
Y2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwotICAgIGNsaWVudC0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQsIGNsaXApOworICAgIGNsaWVu
dC0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQs
IGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKIAogICAgIGlmIChjbGllbnQt
PnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihvd25lcigpKQogICAgICAgICAmJiAh
cmVwYWludENvdW50ZXJzQXJlRHJhd25CeUdyaWRDb250cm9sbGVyKGxheWVyVHlwZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxl
ZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDMxNjY1YmY4MzE2YTdlNTQ3
MzFmMGZlMThiOWJhMDU0OTdlMDEwMTMuLmQ0ZWU1N2I2OGI0NzllNDVjZWVhNThmZDk3MzVlODMy
ODdjYzg4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpkaXNwbGF5Q2FsbGJhY2so
Q0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJlZgogICAgIC8vIHNtYWxsZXIgdGhhbiB0
aGUgbGF5ZXIgYm91bmRzIChlLmcuIHRpbGVkIGxheWVycykKICAgICBDR1JlY3QgY2xpcEJvdW5k
cyA9IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KTsKICAgICBJbnRSZWN0IGNs
aXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgY2xpZW50LT5wbGF0Zm9ybUNB
TGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7CisgICAg
Y2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29u
dGV4dCwgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogCiAgICAgaWYgKGNs
aWVudC0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKG93bmVyKCkpKSB7CiAgICAg
ICAgIGludCBkcmF3Q291bnQgPSBjbGllbnQtPnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFp
bnRDb3VudChvd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLmgKaW5kZXggZGQ0Y2FkNzA4N2Y4NmEzYTAzMmI5MWUwMTg1NTNlNjI1ODE2
MDUyMi4uNDIyMzAwMzdjYjRiYWZmNjQ2ZGI2NjNhYjg2ODcxY2IwNGNiMmU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKQEAgLTI5LDcg
KzI5LDEwIEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKICNpZmRlZiBf
X09CSkNfXwotQGludGVyZmFjZSBXZWJTaW1wbGVMYXllciA6IENBTGF5ZXIKK0BpbnRlcmZhY2Ug
V2ViU2ltcGxlTGF5ZXIgOiBDQUxheWVyIHsKKyAgICBCT09MIG1faXNSZW5kZXJpbmdJbkNvbnRl
eHQ7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBXZWJTaW1wbGVMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IGVjZGVj
NWUxMmJkNjBiZTVkZjVjZTZmMWQ0NmU5OTAzM2FmZjZlYmUuLjdhNWViZTRmNTJkMDM2NWNkZTli
Mzg4MzZhNjMwMzI2ZjFhNGRlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkdyYXBo
aWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0tHcmFwaGljcy5oIgpAQCAtNTYsNyArNTcsNyBAQCAt
ICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwog
ICAgIGlmIChsYXllcikgewogICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlz
dCByZWN0c1RvUGFpbnQgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29u
dGV4dCwgbGF5ZXIpOwotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRz
KGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQsIHNlbGYuX2lz
UmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGlu
ZyA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKICAgICB9CiB9CiAKQEAgLTY0LDYg
KzY1LDE0IEBAIEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAogQGltcGxlbWVudGF0
aW9uIFdlYlNpbXBsZUxheWVyCiAKK0BzeW50aGVzaXplIF9pc1JlbmRlcmluZ0luQ29udGV4dCA9
IG1faXNSZW5kZXJpbmdJbkNvbnRleHQ7CisKKy0gKHZvaWQpcmVuZGVySW5Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAoreworICAgIFNldEZvclNjb3BlPEJPT0w+IGNoYW5nZShtX2lzUmVu
ZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAgIFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4
dF07Cit9CisKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CiB7
CiAgICAgLy8gRml4IGZvciA8cmRhcjovL3Byb2JsZW0vOTAxNTY3NT46IEZvcmNlIHRoZSBsYXll
ciBjb250ZW50IHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgdHJlZSBpcyByZXBhcmVudGVkLgpAQCAt
MTI4LDcgKzEzNyw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGxheWVy
LT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMg
PSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRl
eHQsIGNsaXBCb3VuZHMpOworICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhsYXllciwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzLCBzZWxmLl9p
c1JlbmRlcmluZ0luQ29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRp
bmcgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggOTJjMjFkMjRi
MzAxOWVkNDEzN2U2ZTgxNDY5MjZjMzU0MDhjMThmNC4uNDAzNDNiNWI1MTNiNDcxNjY2ODZlNDBm
ZmQ5Y2Q5NmEwNWNmMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUuaApAQCAtMTMzLDcgKzEzMyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEludGVy
bmFsCiAgICAgdm9pZCBkb0xheW91dFRpbGVzKCk7Ci0gICAgdm9pZCBkcmF3TGF5ZXIoTGVnYWN5
VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmKTsKKyAgICAKKyAgICBlbnVtIGNsYXNzIERyYXdpbmdG
bGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OworICAgIHZvaWQgZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciosIENHQ29udGV4dFJlZiwgRHJhd2luZ0ZsYWdzKTsKICAgICB2b2lkIHByZXBhcmVU
b0RyYXcoKTsKICAgICB2b2lkIGZpbmlzaGVkQ3JlYXRpbmdUaWxlcyhib29sIGRpZENyZWF0ZVRp
bGVzLCBib29sIGNyZWF0ZU1vcmUpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEluTGF5ZXIo
Q0FMYXllciAqKSBjb25zdDsKQEAgLTE3MiwzMyArMTc0LDMzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGRyYXdSZXBsYWNlbWVudElt
YWdlKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dJbWFnZVJlZik7Ci0gICAgdm9p
ZCBkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRSZWYsIENHUmVj
dCBkaXJ0eVJlY3QpOworICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVy
KiwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxhZ3MpOwogCi0gICAg
V0FLV2luZG93KiBtX3dpbmRvdzsKKyAgICBXQUtXaW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9
OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2U7
CiAKLSAgICBib29sIG1fa2VlcHNab29tZWRPdXRUaWxlczsKLQotICAgIGJvb2wgbV9oYXNQZW5k
aW5nTGF5b3V0VGlsZXM7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxpbmdNb2RlOwog
ICAgIC8vIEVuc3VyZSB0aGVyZSBhcmUgbm8gYXN5bmMgY2FsbHMgb24gYSBkZWFkIHRpbGUgY2Fj
aGUuCiAgICAgUmV0YWluUHRyPExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZT4gbV90b21ic3RvbmU7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9vdmVycmlkZVZpc2libGVSZWN0Owog
Ci0gICAgVGlsaW5nTW9kZSBtX3RpbGluZ01vZGU7Ci0gICAgVGlsaW5nRGlyZWN0aW9uIG1fdGls
aW5nRGlyZWN0aW9uOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGJvb2wgbV90aWxl
c09wYXF1ZTsKLQotICAgIGJvb2wgbV90aWxlQm9yZGVyc1Zpc2libGU7Ci0gICAgYm9vbCBtX3Rp
bGVQYWludENvdW50ZXJzVmlzaWJsZTsKLSAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDsKLSAgICBib29sIG1faXNTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQ7Ci0KLSAg
ICBib29sIG1fZGlkQ2FsbFdpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsKKyAgICBJbnRTaXpl
IG1fdGlsZVNpemUgeyA1MTIsIDUxMiB9OworICAgIAorICAgIFRpbGluZ01vZGUgbV90aWxpbmdN
b2RlIHsgTm9ybWFsIH07CisgICAgVGlsaW5nRGlyZWN0aW9uIG1fdGlsaW5nRGlyZWN0aW9uIHsg
VGlsaW5nRGlyZWN0aW9uRG93biB9OworICAgIAorICAgIGJvb2wgbV9rZWVwc1pvb21lZE91dFRp
bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0xheW91dFRpbGVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzUGVuZGluZ1VwZGF0ZVRpbGluZ01vZGUgeyBmYWxzZSB9OworICAg
IGJvb2wgbV90aWxlc09wYXF1ZSB7IHRydWUgfTsKKyAgICBib29sIG1fdGlsZUJvcmRlcnNWaXNp
YmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzU3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV90aWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9kaWRDYWxsV2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5nIHsgZmFsc2UgfTsK
KyAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGls
ZUdyaWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVRpbGVHcmlkPiBtX3pvb21lZEluVGls
ZUdyaWQ7CiAKQEAgLTIwNiwxNiArMjA4LDE0IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8SW50
UmVjdD4gbV9zYXZlZERpc3BsYXlSZWN0czsKIAotICAgIGZsb2F0IG1fY3VycmVudFNjYWxlOwor
ICAgIGZsb2F0IG1fY3VycmVudFNjYWxlIHsgMSB9OwogCi0gICAgZmxvYXQgbV9wZW5kaW5nU2Nh
bGU7Ci0gICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGU7CisgICAgZmxvYXQgbV9wZW5k
aW5nU2NhbGUgeyAwIH07CisgICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgeyAwIH07
CiAKICAgICBtdXRhYmxlIExvY2sgbV90aWxlTXV0ZXg7CiAgICAgbXV0YWJsZSBMb2NrIG1fc2F2
ZWREaXNwbGF5UmVjdE11dGV4OwogICAgIG11dGFibGUgTG9jayBtX2NvbnRlbnRSZXBsYWNlbWVu
dEltYWdlTXV0ZXg7Ci0KLSAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VMb3dTY2Fs
ZVRpbGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZTRkZmRlYTEwZWViNDI1NjRi
YzI1MDhlYzA5OGQxYTVkNTJlNWY0MC4uY2UyMjg0YjJlMWEzODMwZDU0MTJmMjA2YmM4YWQ1MTVk
NTNlODQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCkBAIC03MCwyNSArNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExlZ2FjeVRp
bGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5k
b3cod2luZG93KQotICAgICwgbV9rZWVwc1pvb21lZE91dFRpbGVzKGZhbHNlKQotICAgICwgbV9o
YXNQZW5kaW5nTGF5b3V0VGlsZXMoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxp
bmdNb2RlKGZhbHNlKQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNo
ZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV90aWxpbmdNb2RlKE5vcm1hbCkKLSAg
ICAsIG1fdGlsaW5nRGlyZWN0aW9uKFRpbGluZ0RpcmVjdGlvbkRvd24pCi0gICAgLCBtX3RpbGVT
aXplKDUxMiwgNTEyKQotICAgICwgbV90aWxlc09wYXF1ZSh0cnVlKQotICAgICwgbV90aWxlQm9y
ZGVyc1Zpc2libGUoZmFsc2UpCi0gICAgLCBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZShmYWxz
ZSkKLSAgICAsIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1faXNT
cGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQodHJ1ZSkKLSAgICAsIG1fZGlkQ2FsbFdpbGxT
dGFydFNjcm9sbGluZ09yWm9vbWluZyhmYWxzZSkKICAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQo
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAg
ICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0
aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fY3VycmVudFNjYWxlKDEuZikKLSAgICAsIG1fcGVuZGlu
Z1NjYWxlKDApCi0gICAgLCBtX3BlbmRpbmdab29tZWRPdXRTY2FsZSgwKQotICAgICwgbV90aWxl
Q29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMoZmFsc2UpCiB7CiAgICAgW2hvc3RMYXll
cigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBh
dEluZGV4OjBdOwogICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CkBAIC01MjAsMTQgKzUwNCwx
OCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1JlcGxhY2VtZW50SW1hZ2UoTGVnYWN5VGls
ZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQsIGltYWdlUmVjdCwgaW1hZ2UpOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dp
bmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCBkaXJ0eVJlY3QpCit2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dpbmRvd0NvbnRl
bnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBk
aXJ0eVJlY3QsIERyYXdpbmdGbGFncyBkcmF3aW5nRmxhZ3MpCiB7CiAgICAgQ0dSZWN0IGZyYW1l
ID0gW2xheWVyIGZyYW1lXTsKICAgICBGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlciBmb250QW50
aWFsaWFzaW5nU3RhdGUoY29udGV4dCwgW21fd2luZG93IHVzZU9yaWVudGF0aW9uRGVwZW5kZW50
Rm9udEFudGlhbGlhc2luZ10gJiYgW2xheWVyIGlzT3BhcXVlXSk7CiAgICAgZm9udEFudGlhbGlh
c2luZ1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKTsKIAor
ICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcpCisgICAg
ICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5nUGFpbnQ6WUVTXTsKKyAgICAgICAgCiAg
ICAgQ0dTUmVnaW9uT2JqIGRyYXdSZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVtsYXllciByZWdpb25C
ZWluZ0RyYXduXTsKICAgICBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUgPSBbbGF5ZXIgY29udGVudHNT
Y2FsZV07CisgICAgCiAgICAgaWYgKGRyYXdSZWdpb24gJiYgc2hvdWxkUmVwYWludEluUGllY2Vz
KGRpcnR5UmVjdCwgZHJhd1JlZ2lvbiwgY29udGVudHNTY2FsZSkpIHsKICAgICAgICAgLy8gVXNl
IGZpbmUgZ3JhaW5lZCByZXBhaW50IHJlY3RhbmdsZXMgdG8gbWluaW1pemUgdGhlIGFtb3VudCBv
ZiBwYWludGVkIHBpeGVscy4KICAgICAgICAgQ0dTUmVnaW9uRW51bWVyYXRvck9iaiBlbnVtZXJh
dG9yID0gQ0dTUmVnaW9uRW51bWVyYXRvcihkcmF3UmVnaW9uKTsKQEAgLTU1MCw5ICs1MzgsMTIg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRpbGVMYXll
ciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb24KICAgICB9CiAKICAgICBmb250QW50aWFsaWFzaW5n
U3RhdGUucmVzdG9yZSgpOworICAgIAorICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0Zs
YWdzOjpTbmFwc2hvdHRpbmcpCisgICAgICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6Tk9dOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4
dCwgRHJhd2luZ0ZsYWdzIGRyYXdpbmdGbGFncykKIHsKICAgICAvLyBUaGUgd2ViIGxvY2sgdW5s
b2NrIG9ic2VydmVyIHJ1bnMgYWZ0ZXIgQ0EgY29tbWl0IG9ic2VydmVyLgogICAgIGlmICghV2Vi
VGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpIHsKQEAgLTU3MSw3ICs1NjIsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4
dFJlZiBjb250ZXh0KQogICAgIGlmIChSZXRhaW5QdHI8Q0dJbWFnZT4gY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2UgPSB0aGlzLT5jb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpKQogICAgICAgICBkcmF3
UmVwbGFjZW1lbnRJbWFnZShsYXllciwgY29udGV4dCwgY29udGVudFJlcGxhY2VtZW50SW1hZ2Uu
Z2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhd1dpbmRvd0NvbnRlbnQobGF5ZXIsIGNvbnRl
eHQsIGRpcnR5UmVjdCk7CisgICAgICAgIGRyYXdXaW5kb3dDb250ZW50KGxheWVyLCBjb250ZXh0
LCBkaXJ0eVJlY3QsIGRyYXdpbmdGbGFncyk7CiAKICAgICArK2xheWVyLnBhaW50Q291bnQ7CiAg
ICAgaWYgKG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgKaW5kZXggOTg3MGU3YjAzZTFlYWU3YzE5MTQ4
MjAzYTYyNzc3YWRlNGJkNzVhYi4uYmYxZWU3MmQ5MGIzM2Y1YzQ0NDE1NGM1ZWFmNzA2YTM1OWFk
Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIu
aApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTGVnYWN5VGlsZUxheWVyX2gKLSNkZWZpbmUgTGVnYWN5VGlsZUxheWVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oSU9TKQogCkBAIC0zNywxMCArMzYsMTEg
QEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVMYXllciA6IENB
TGF5ZXIgewogICAgIFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkKiBfdGlsZUdyaWQ7CiAgICAgdW5z
aWduZWQgX3BhaW50Q291bnQ7CisgICAgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7CiB9CiBA
cHJvcGVydHkgKG5vbmF0b21pYykgdW5zaWduZWQgcGFpbnRDb3VudDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCogdGlsZUdyaWQ7Ci0rIChMZWdhY3lUaWxl
TGF5ZXIgKilsYXllckJlaW5nUGFpbnRlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGlz
UmVuZGVyaW5nSW5Db250ZXh0OwogQGVuZAogCiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVIb3N0TGF5
ZXIgOiBDQUxheWVyIHsKQEAgLTUwLDQgKzUwLDQgQEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBA
ZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0jZW5kaWYgLy8gVGlsZUxheWVyX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KaW5kZXgg
NWNhMjEyYTNjNGYyYmVjMjEyZDZiZGY1ZmIxMTI3ZDEzNDY2OWZjNi4uYWU2MmE0MWVlYWJhNTNk
NGI3NmRiOWYxN2M2NGY4MzFhNDY2NWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGVn
YWN5VGlsZUNhY2hlLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbmNsdWRlICJX
ZWJDb3JlVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MSw4ICs3Miw3IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlv
biBMZWdhY3lUaWxlTGF5ZXIKIEBzeW50aGVzaXplIHBhaW50Q291bnQgPSBfcGFpbnRDb3VudDsK
IEBzeW50aGVzaXplIHRpbGVHcmlkID0gX3RpbGVHcmlkOwotCi1zdGF0aWMgTGVnYWN5VGlsZUxh
eWVyICpsYXllckJlaW5nUGFpbnRlZDsKK0BzeW50aGVzaXplIGlzUmVuZGVyaW5nSW5Db250ZXh0
ID0gX2lzUmVuZGVyaW5nSW5Db250ZXh0OwogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVj
dDooQ0dSZWN0KXJlY3QKIHsKQEAgLTkzLDYgKzkzLDEyIEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5
ZXJzCiAgICAgICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkucHJlcGFyZVRvRHJhdygpOwogfQog
CistICh2b2lkKXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBT
ZXRGb3JTY29wZTxCT09MPiBjaGFuZ2UoX2lzUmVuZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAg
IFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4dF07Cit9CisKIC0gKHZvaWQpZHJhd0luQ29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKICAgICAvLyBCdWdzIGluIGNsaWVudHMgb3Ig
b3RoZXIgZnJhbWV3b3JrcyBtYXkgY2F1c2UgdGlsZSBpbnZhbGlkYXRpb24gZnJvbSB3aXRoaW4g
YSBDQSBjb21taXQuCkBAIC0xMDUsNyArMTExLDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBpZiAo
X3RpbGVHcmlkKQotICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmRyYXdMYXllcihzZWxm
LCBjb250ZXh0KTsKKyAgICAgICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5kcmF3TGF5ZXIoc2Vs
ZiwgY29udGV4dCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IExlZ2FjeVRpbGVDYWNoZTo6
RHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcgOiBMZWdhY3lUaWxlQ2FjaGU6OkRyYXdpbmdGbGFn
czo6Tm9uZSk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICop
a2V5CkBAIC0xMTUsMTEgKzEyMSw2IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5T
U3RyaW5nICopa2V5CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotKyAoTGVnYWN5VGlsZUxheWVyICop
bGF5ZXJCZWluZ1BhaW50ZWQKLXsKLSAgICByZXR1cm4gbGF5ZXJCZWluZ1BhaW50ZWQ7Ci19Ci0K
IEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBlMjhiY2ZkNDEwNjJkZDM2MjUzMTRmNDAxYjAyOTg4
MDg1YzVmYTcxLi5mZDJmODUyYjMxZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC01MDUsNyArNTA1
LDcgQEAgKyAodm9pZClfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6KGludClxdWFsaXR5CiAgICAg
c0ludGVycG9sYXRpb25RdWFsaXR5ID0gdG9DR0ludGVycG9sYXRpb25RdWFsaXR5KChXZWJDb3Jl
OjpJbnRlcnBvbGF0aW9uUXVhbGl0eSlxdWFsaXR5KTsKIH0KIAotLSAodm9pZClfZHJhd1JlY3Q6
KE5TUmVjdClkaXJ0eVJlY3QgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3Vz
Oihib29sKWxvY2tGb2N1cworLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QgY29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihCT09MKWxvY2tGb2N1cwogewog
ICAgIGlmIChfaXNIaWRkZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oCmluZGV4IDJiNWI5OWQ5OWE0NzQyYWJjMjQ4MjYzYmM3
YjE1M2Y2YmJkOTYzY2YuLjg3Mzk5YTE3MGRjNjE3OTkyMDZjMWY5MzNmNmVhNjE5ZGE0MmNlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaApAQCAtODQs
NiArODQsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdBS1Jlc3Bv
bmRlcgogICAgIFdBS1ZpZXcgKl9uZXh0UmVzcG9uZGVyOwogCiAgICAgQk9PTCBfdmlzaWJsZTsK
KyAgICBCT09MIF9pc0luU25hcHNob3R0aW5nUGFpbnQ7CiAgICAgQk9PTCBfdXNlT3JpZW50YXRp
b25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5nOwogICAgIEJPT0wgX2VudGlyZVdpbmRvd1Zpc2li
bGVGb3JUZXN0aW5nOwogfQpAQCAtMTMxLDYgKzEzMiw5IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAtICh2b2lkKXNlbmRFdmVudFN5bmNocm9u
b3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudDsKIC0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50OihX
ZWJFdmVudCAqKWFuRXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUNvbnRl
bnRDaGFuZ2U7CiAKKy0gKHZvaWQpc2V0SXNJblNuYXBzaG90dGluZ1BhaW50OihCT09MKWlzSW5T
bmFwc2hvdHRpbmdQYWludDsKKy0gKEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OworCiAvLyBU
aHJlYWQgc2FmZSB3YXkgb2YgcHJvdmlkaW5nIHRoZSAidXNhYmxlIiByZWN0IG9mIHRoZSBXQUtX
aW5kb3cgaW4gdGhlIHZpZXdwb3J0L3Njcm9sbHZpZXcuCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9s
bFZpZXdSZWN0OwogLy8gc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0IHNob3VsZCBvbmx5IGV2ZXIg
YmUgY2FsbGVkIGZyb20gVUlLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCmluZGV4IDk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIwZTI2MzgxZjkw
YjkuLjAyNjk4MmM5YTQxN2JiNzgwN2JiYWYxZmRiYmRmOTdkZDIyODJiNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC00MzgsNiArNDM4LDE2
IEBAIC0gKHZvaWQpc2V0VGlsZXNPcGFxdWU6KEJPT0wpb3BhcXVlCiAgICAgX3RpbGVDYWNoZS0+
c2V0VGlsZXNPcGFxdWUob3BhcXVlKTsKIH0KIAorLSAodm9pZClzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6KEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50Cit7CisgICAgX2lzSW5TbmFwc2hvdHRp
bmdQYWludCA9IGlzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKworLSAoQk9PTClpc0luU25hcHNo
b3R0aW5nUGFpbnQKK3sKKyAgICByZXR1cm4gX2lzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKwog
LSAodm9pZClzZXRFbnRpcmVXaW5kb3dWaXNpYmxlRm9yVGVzdGluZzooQk9PTCllbnRpcmVXaW5k
b3dWaXNpYmxlCiB7CiAgICAgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0aW5nID0gZW50aXJl
V2luZG93VmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IGYx
NjdlODdhOGUwMjIxMjJjZGZmMDRkNmI2NjhhN2M5YzIwOWQzMTYuLjU5OGU4NTBlM2M3MjdkZThj
ODI1YWNlZjJkYzhlOTlmZjk3OTIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaApAQCAtNTgsMTIgKzU4LDEzIEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQ
YWludEJlaGF2aW9yU2tpcFNlbGVjdGlvbkhpZ2hsaWdodCAgICAgID0gMSA8PCAxLAogICAgIFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCAgICAgICAgICAgICAgPSAxIDw8IDIsCiAgICAgUGFp
bnRCZWhhdmlvckZvcmNlV2hpdGVUZXh0ICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA0LAotICAgIFBhaW50
QmVoYXZpb3JSZW5kZXJpbmdTVkdNYXNrICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgUGFpbnRC
ZWhhdmlvclNraXBSb290QmFja2dyb3VuZCAgICAgICAgICA9IDEgPDwgNiwKLSAgICBQYWludEJl
aGF2aW9yUm9vdEJhY2tncm91bmRPbmx5ICAgICAgICAgID0gMSA8PCA3LAotICAgIFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDgsCi0gICAgUGFpbnRCZWhh
dmlvckV4Y2x1ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOSwKKyAgICBQYWludEJlaGF2
aW9yUmVuZGVyaW5nU1ZHTWFzayAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFBhaW50QmVoYXZp
b3JTa2lwUm9vdEJhY2tncm91bmQgICAgICAgICAgPSAxIDw8IDUsCisgICAgUGFpbnRCZWhhdmlv
clJvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICA9IDEgPDwgNiwKKyAgICBQYWludEJlaGF2aW9y
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAorICAgIFBhaW50QmVoYXZpb3JF
eGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9w
IGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCisgICAgUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZyAgICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRp
bmcsIGUuZy4gZm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCiB9OwogCiB0eXBlZGVm
IHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDg5ZDM1Y2YwNWE1NTgyNDQ2MjNkNzIwMWY0Yzc4ZTMxOTFmZWEzNzkuLjA2Njc2
Y2YxNGJhMzFhMTcxOTNlZjA1NDUyZTgxYTA2OGVjMjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYQogICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwdXNoIGEgdHJhbnNwYXJl
bmN5IGxheWVyIHRvIHJlbmRlciBvdXIgbWFzay4KICAgICBib29sIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IGZhbHNlOwogICAgIGJvb2wgY29tcG9zaXRlZE1hc2sgPSBoYXNMYXllcigpICYmIGxh
eWVyKCktPmhhc0NvbXBvc2l0ZWRNYXNrKCk7Ci0gICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMgPSB2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyA9IHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBv
c2l0ZVNvdXJjZU92ZXI7CiAKICAgICBib29sIGFsbE1hc2tJbWFnZXNMb2FkZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggZmQ4NWJmOTdkOWIzZmZkNzg2MTRkMzc5YzU0NjBjYTUyMGY1NzBlZi4uNWViNTExYzZk
YjEwMzIyMjQzMTI0YzZlNmZmMTk5MDE2MTg2OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04ODIsNyArODgyLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAg
YXV0byBkZWNvZGluZ01vZGUgPSAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpID8gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAgICAgICAgYXV0
byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKSA/
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0
UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5
LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhj
b21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMTZhOTQwNGRmYzhk
MzRmMzhhY2QzYzQ3MTQ3OWM3YzBiNjhhYTZmZi4uNzMzYzllNzFmZTNiY2JiZTZjNTgxOWFmNmI1
NjdkMGI3YTYzNDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoY2xp
cCkKICAgICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKIAotICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFjdG9y
KSk7CiAgICAgCiAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdlcyBh
cyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBt
YXkgd2FudCAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxlbWVu
dEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgpOwog
fQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IGlmICghaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgfHwgaW1hZ2VSZXNvdXJjZSgpLmVy
cm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDAp
CiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogCiAgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgpLgog
ICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAgIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXpl
KCkpKSA6IEludGVycG9sYXRpb25EZWZhdWx0OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlu
dGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KHBhaW50SW5m
by5jb250ZXh0KCksICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6IElu
dGVycG9sYXRpb25EZWZhdWx0OwogCiAjaWYgVVNFKENHKQogICAgIGlmIChpczxQREZEb2N1bWVu
dEltYWdlPihpbWFnZSkpCkBAIC01ODQsOCArNTg0LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRp
bmdzKHNldHRpbmdzKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHZpZXcoKS5m
cmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzKSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFz
eW5jaHJvbm91czsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01v
ZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKworICAgIGF1dG8g
ZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2Rl
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIGJvb2wgUmVu
ZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IGFkYjkyZGZkMjczMmY1OGYzOWRmOGU1Y2UxZGUzODU2OGY4NDhmMzcuLjkx
MmJlZTQ0NDVmZWIzYThlYjI0NjQyNTE0ZmE4NjcwOTM5OWFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdjOWE4YTkxMTM4MTQ1MTE3ZWY1
NjkwNjQzZTM1NWY2ZGMwNTAxMDcuLjQ2NTY4YTA5MzUzZDhkNWIzODhlOThmZDQxOGU3N2MxZDk5
ZjllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDM4
Myw2ICs0MzgzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgZWxzZSBpZiAo
bG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQog
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRP
bmx5OwogCisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmc7CisKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCkBAIC00Nzg1LDYgKzQ3
ODgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChsb2NhbFBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAg
IGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAor
ICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZykKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmc7CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBm
cmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNs
aXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdt
ZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91
bmRSZWN0LmlzRW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzk5ODI1ZTJi
OGE5OTcwZGI5Y2Y4YjQyZmY4NDZiYjEyOWM1OWQxMi4uOTM2MDdlMmMyYzYyMDRlMjZkYWY5Y2E1
NjcyMWFiZTZkZGIxMzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
LCBHcmFwCiB9CiAKIC8vIFVwLWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNh
bGxiYWNrLgotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNs
aXApCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNz
TGF5ZXJQYWludGluZ1BoYXNlIHBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHJl
bmRlcmVyKCkucGFnZSgpLnNldElzUGFpbnRpbmcodHJ1ZSk7CkBAIC0yNTY4LDcgKzI1NjgsMTEg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QoZW5jbG9zaW5nSW50UmVjdChjb21wb3NpdGVkQm91bmRzSW5jbHVkaW5nTWFyZ2luKCkpKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVz
dGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0
cy4KLSAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlS
ZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgUGFpbnRC
ZWhhdmlvciBiZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWw7CisgICAgICAgIGlmIChmbGFn
cyA9PSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICAgICAg
YmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKworICAgICAgICBwYWludElu
dG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBwYWlu
dGluZ1BoYXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50
KHJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09
IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDc3N2Y5YmFhZTVjNjcyMTJkMmY3NjJl
MDY2MTU5NWZjYzFlMTA3Mi4uYzhmYmI4MTM4YTU0NGNlNTIzOWQ4MWM1MDRlZDI2NmFlY2ZiMzhi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hCZWZv
cmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogCiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBjb250ZW50c1NjYWxl
TXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggMjFmNmQ1MTg1YjBmYWRlOWE2OTNiZTBiZTg0YzE5YzdlMDU5ZDA3My4uNWFl
NWJkOTM0NjYyNjk4YTRlYjVjN2RhMTc3MDMwNTQzMTZlM2JkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjMsNyAr
Mjg2Myw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdy
YXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3Mp
CiB7CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRl
bXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NM
YXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjOWQ0OGIxOWRiZTZl
MGQ4OWM5MzBlMmVkZDRiYTdhYWM1YWI4ZWZmLi4wN2Q3NjFkNTE5Yzk0YjE1ZDBmZTdmMjE4ZGMy
ODQ0YjFjYWViOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEdy
YXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIG5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhp
Y3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWlu
dEZsYWdzKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJlY3RD
b21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZjJkNmVkNmFm
ZmJlMTVjNzU5YTBkYzQ3MThiODY0Mzk5NWY0N2EzLi5kMzdjNDg2YWRmNWI0MzY5ZTkzMTU2N2Jl
NGI3MWQ2MWFmYTM1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBj
b250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCi0g
ICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIHBhaW50SW50b1Jl
Y3QocGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxs
c2NyZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkp
IHsKLSAgICAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICBpZiAocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQog
ICAgICAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRl
eHQsIHJlY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQo
Y29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGNmMDQ4NThiNTk2ZTkzYTdmZDljODMwYTFm
NzFhNDdhMjk0ZmIzY2MuLmMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAo
dm9pZClhZGRXaW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09ic2VydmVyczsK
IC0gKEJPT0wpc2hvdWxkQ2xpcE91dFBsdWdpbjsKLS0gKEJPT0wpaW5GbGF0dGVuaW5nUGFpbnQ7
CiAKIC0gKEJPT0wpc3VwcG9ydHNTbmFwc2hvdHRpbmc7CiAtICh2b2lkKWNhY2hlU25hcHNob3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0KaW5kZXggMjFmOTA0NWVmMzc1NzgwNzhkNGNkN2IxOTg5ZDE5Y2MzOWExNThh
NC4uNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNDM4LDE0ICs0MzgsNiBAQCAtIChCT09MKXNob3VsZENsaXBPdXRQbHVnaW4KICAgICBy
ZXR1cm4gIXdpbmRvdyB8fCBbd2luZG93IGlzTWluaWF0dXJpemVkXSB8fCBbTlNBcHAgaXNIaWRk
ZW5dIHx8ICFbc2VsZiBpc0Rlc2NlbmRhbnRPZjpbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld11d
IHx8IFtzZWxmIGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl07CiB9CiAKLS0gKEJPT0wpaW5G
bGF0dGVuaW5nUGFpbnQKLXsKLSAgICBhdXRvKiByZW5kZXJlciA9IF9lbGVtZW50LT5yZW5kZXJl
cigpOwotICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIHJldHVybiAhIShkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVj
dD4oKnJlbmRlcmVyKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci19Ci0KIC0gKEJPT0wpc3VwcG9ydHNT
bmFwc2hvdHRpbmcKIHsKICAgICByZXR1cm4gW19wbHVnaW5QYWNrYWdlLmdldCgpIHN1cHBvcnRz
U25hcHNob3R0aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDcw
MzI2MDA3NGVjMzM5Yzg4ODIwYjc5NTBjZmIxNDRlZDc3NGNkODQuLjljMGY4MmRlYmQ1YWViMDQy
ZTNhMDU1NGYwNTlmNTNhNzgwMDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV0FLU2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV0tHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
UnVuLmg+CiAjZW5kaWYKQEAgLTU4MiwyNCArNTgzLDMxIEBAIC0gKE5TU3RyaW5nICopX3N0cmlu
Z0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgcmV0dXJuIHBsYWluVGV4dChjb3JlKHJh
bmdlKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotLSAoQk9PTClf
c2hvdWxkRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOihDR0NvbnRleHRSZWYpY29udGV4dAorCist
IChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gLWN1cnJlbnRD
b250ZXh0RHJhd2luZ1RvU2NyZWVuIHJldHVybnMgWUVTIGZvciBiaXRtYXAgY29udGV4dHMuCiAg
ICAgQk9PTCBpc1ByaW50aW5nID0gIVtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dERy
YXdpbmdUb1NjcmVlbl07CiAgICAgaWYgKGlzUHJpbnRpbmcpCi0gICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCiAgICAgaWYgKCFXS0NHQ29udGV4
dElzQml0bWFwQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIE5POworICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWln
aHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4K
ICAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZp
ZXddOwotICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0gJiYgWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9M
YXllcl0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBbZ2V0V2ViVmlldyhzZWxm
KSBfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXBd
OworICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNz
XV0pIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChbW2RvY3VtZW50VmlldyB3aW5k
b3ddIGlzSW5TbmFwc2hvdHRpbmdQYWludF0pCisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZzsKKyNlbmRpZgorICAgICAgICBpZiAoWyhXZWJIVE1MVmlldyAqKWRv
Y3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogfQogCiAtICh2b2lkKV9kcmF3
UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQpAQCAtNjIy
LDI4ICs2MzAsMjkgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzT25s
eTooQk9PTCljb250ZW50c09ubHkKIAogICAgIEZyYW1lVmlldyogdmlldyA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnZpZXcoKTsKICAgICAKLSAgICBib29sIHNob3VsZEZsYXR0ZW4gPSBmYWxzZTsK
KyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gdmlldy0+cGFpbnRCZWhhdmlvcigpOwor
ICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZEJlaGF2aW9yOworICAgIAogICAg
IGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKICAgICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0IHRo
ZSBwYWludCBiZWhhdmlvciBmcm9tIG91ciBwYXJlbnQKLSAgICAgICAgRnJhbWVWaWV3KiBwYXJl
bnRWaWV3ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogMDsKLSAgICAgICAg
aWYgKHBhcmVudFZpZXcpCi0gICAgICAgICAgICBzaG91bGRGbGF0dGVuID0gcGFyZW50Vmlldy0+
cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lID8gcGFyZW50
RnJhbWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5w
YWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQor
ICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnRW
aWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQorICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzaG91bGRGbGF0dGVuID0gW3NlbGYgX3Nob3Vs
ZEZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczpjdHhdOworICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAgICAg
IAorICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKLSAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAoc2hv
dWxkRmxhdHRlbikgewotICAgICAgICBvbGRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3Io
KTsKLSAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgIH0KLSAgICAKICAgICBpZiAoY29u
dGVudHNPbmx5KQogICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgdmlldy0+cGFpbnQoY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKLSAgICBpZiAoc2hvdWxkRmxhdHRlbikKLSAgICAg
ICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0UGFp
bnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CiB9CiAKIC0gKEJPT0wpX2dldFZpc2libGVSZWN0OihO
U1JlY3QqKXJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDVkNTVhYjEzYmE3NGNiN2YxYmZlY2I3OTE4NjcwMzIwM2YyY2QwN2IuLjk0Nzg5NTljY2VmZGU4
ZWQ2NjU5YzRmYWIyNDA5OGU1ZjdhMTdhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNzI5Nyw4ICs3Mjk3LDggQEAgc3RhdGljIENHSW1hZ2VSZWYgaW1h
Z2VGcm9tUmVjdChGcmFtZSogZnJhbWUsIENHUmVjdCByZWN0KQogICAgIFdlYkhUTUxWaWV3ICp2
aWV3ID0gKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIAogICAgIFBhaW50QmVoYXZp
b3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAg
ICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKKyAgICBmcmFtZS0+dmll
dygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyk7CisKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCiAgICAgQ0dSZWN0IGJvdW5kcyA9
IFt2aWV3IGJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggN2Mx
ZTA1N2MzN2UzZTFjN2FmMGVlNDdiNDVlNTZmOGZjZjU2YjZjYy4uNTlkYjllMDUyNWQ4NWYyOWVj
Y2EwNWI0NDY1MzMwZmEyM2U5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtMTM2OSw3ICsxMzY5LDYgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbHNlCiAg
ICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xv
cihDb2xvcjo6d2hpdGUpKTsKICNlbmRpZgotICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5l
ZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBfcHJpdmF0ZS0+d2luZG93VmlzaWJpbGl0eU9ic2VydmVyID0gYWRvcHRO
UyhbW1dlYldpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZd
KTsKQEAgLTQ1MDQsMTYgKzQ1MDMsNiBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJsZQog
ICAgIHJldHVybiBZRVM7CiB9CiAKLS0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9z
aXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWcKLXsKLSAgICBfcHJpdmF0
ZS0+aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAg
PSBmbGFnOwotfQotCi0tIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJz
V2hlbkRyYXdpbmdUb0JpdG1hcAotewotICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVkZXNGbGF0
dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7Ci19Ci0KIC0gKHZvaWQp
c2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKaW5kZXggNmMzNjkyODY3N2JmNjUzNjRlYWJkY2M1NmUwOTQ1YzEwNmMyZTY5My4uMGE1NDA2
ODNmYTJlNGQ3NWYwMTc5OGQxNmQ1YzBkNmVmYTZmZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZhdGU6CiAKICAgICBC
T09MIHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCi0gICAgQk9PTCBpbmNsdWRlc0ZsYXR0
ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKLQogICAgIC8vIFdoZW4g
dGhpcyBmbGFnIGlzIHNldCwgbmV4dCB0aW1lIGEgV2ViSFRNTFZpZXcgZHJhd3MsIGl0IG5lZWRz
IHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgc2NyZWVuIHVwZGF0ZXMKICAgICAvLyBzbyB0aGF0IHRo
ZSBOU1ZpZXcgZHJhd2luZyBpcyB2aXN1YWxseSBzeW5jaHJvbml6ZWQgd2l0aCBDQUxheWVyIHVw
ZGF0ZXMuCiAgICAgQk9PTCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5OTQ3ODZiMTRl
OTE4Y2JlNzkzNzc0NTczMDQwNTg3ZjFkNjFiYjMuLjRmZDA3NWEzYzBiY2FlYTc4ZDJhMTgwN2U3
ZWM1NjU5ZDc5YmZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKQEAgLTc2NSwxMCArNzY1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAKIC8vIFJldHVybnMgWUVTIGlmIE5TVmlldyAtZGlzcGxheVJlY3RJZ25vcmluZ09wYWNp
dHk6aW5Db250ZXh0OiB3aWxsIHByb2R1Y2UgYSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY29udGVudC4KIC0gKEJPT0wpX2lzU29mdHdhcmVSZW5kZXJhYmxlOwotLy8gV2hlbiBkcmF3
aW5nIGludG8gYSBiaXRtYXAgY29udGV4dCwgd2Ugbm9ybWFsbHkgZmxhdHRlbiBjb21wb3NpdGlu
ZyBsYXllcnMgKGFuZCBkaXN0b3J0IDNEIHRyYW5zZm9ybXMpLgotLy8gQ2xpZW50cyB3aG8gYXJl
IGFibGUgdG8gY2FwdHVyZSB0aGVpciBvd24gY29weSBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXJz
IG5lZWQgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoaXMuCi0tICh2b2lkKV9zZXRJbmNsdWRlc0Zs
YXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDooQk9PTClmbGFnOwot
LSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9C
aXRtYXA7CiAKIC0gKHZvaWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZzsKIC0gKEJPT0wp
aXNUcmFja2luZ1JlcGFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAppbmRleCAzNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1
MmIwNjRmLi45ZTYwYzRmZDYzN2M4ZGM5MGM3MDViMWI0YTcwZTdhNmVhMDRhZTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVy
QW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsgfQogICAgIHZpcnR1
YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xh
eWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgeyB9CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggMjg0MGI5NTY2M2NmZTkzZGY1NWMxMDJkOWFi
ODMwZTA5N2FmZTg3Yi4uY2U3MDUzZDIzM2NkODc0YmFhMmY4M2MwMDViYmUyNDI4YjRlNWQyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0zNDAsMTcgKzM0MCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgog
ICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgbV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5k
cyk7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVu
dHMobV9sYXllciwgY29udGV4dCwgZGlydHlCb3VuZHMsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
OjpOb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJv
cExheWVyOgotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoK
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhp
ZXJhcmNoeS4gV2UgbmVlZCB0byBwYWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIg
aW4gb3JkZXIgdG8gc2VlIHRoZSByZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1Jl
Y3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRl
eHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5v
bmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXgg
MzQ3MWQyZGQzMjhiYzc4ZmFhNDA2YTVmZmI1NjYzN2Y1YTQ4ZGFmYi4uY2E0OWIwYzM3OTJmMmVi
NWI2ZDFmODVhYzJiMWI4MmM4ZmIyMjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0
JiBwYWludGkKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rp
b25IaWdobGlnaHRpbmcpCiAgICAgICAgIHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3
OjpFeGNsdWRlU2VsZWN0aW9uOwogCi0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0g
ZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+
cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAppbmRleCBmNzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0Li5k
MWZiYzI1ZDVjMjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsKIAogICAgIFBhaW50QmVoYXZpb3Igb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yU2Vs
ZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
cyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggODExZWVlYTIwYjRjODIzNGM2NDM4OTc0MzAyZGRl
NmFjZmM2MTE5NC4uZGM1ZmQyMjg4ZjViZjYwNzIwNmI2ZDc3NTgxNTUwZmJhY2VlOWFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiAgICAgICAgIG1fY2xpZW50
Lm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKIH0KIAotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNv
bnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewogICAg
IG1fY2xpZW50LnBhaW50TGF5ZXJDb250ZW50cyhncmFwaGljc0xheWVyLCBncmFwaGljc0NvbnRl
eHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCA3YzU0MDE4NzMyMGVi
YmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4Li5iMThhZmEyMjA5MTgzMzYzMWJhZTEwNGQ2NDFh
ZGJjYmI5MmExMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5oCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gR3Jh
cGhpY3NMYXllckNsaWVudAogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIHRpbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVjdCwgR3Jh
cGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NzFlYzcwNzY0YzI4MGEwNmI4OTEyMDhkYmM0ODA2NzA2MGI0NTNlLi4wZjJmY2Ix
NjA2MDg5ZTQzY2UxY2YyODNkZTI4YWY0NzEzZTc5NWVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDUtMjIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU25hcHNo
b3R0aW5nIHZpYSAtcmVuZGVySW5Db250ZXh0OiBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2Ug
ZGVjb2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcyNDg1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjc2MTQ2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90VmlhUmVu
ZGVySW5Db250ZXh0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVySW5Db250ZXh0V2ViVmll
d0RlbGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtSZW5kZXJJbkNv
bnRleHRXZWJWaWV3RGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFBpeGVsSW5kZXgpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTctMDUtMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIEVOQUJMRShBUFBMRV9QQVlfREVMRUdBVEUpIHNob3VsZCBiZSBOTyBvbiBt
YWNPUyBTaWVycmEgYW5kIGVhcmxpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk2Yzcz
YmJkMDVhMzg2NGU3OTFkOGU1YjQ0NGM0Y2NlYzE0YjBkMi4uOGNiMWI2NWNlNmFjN2RkYjdkZjJl
ZjkyMDczNTIwZmNkNjg3NDBhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzLDYgKzMz
LDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEz
OUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsK
IAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8q
IFRpbWUuY3BwICovOyB9OwogCQkwRjNCOTRBNzFBNzcyNjc0MDBERTMyNzIgLyogV0tXZWJWaWV3
RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRl
SmF2YVNjcmlwdC5tbSAqLzsgfTsKKwkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVu
ZGVySW5Db250ZXh0Lm1tICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0QkQgLyogZmlu
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87IH07CiAJCTFBMzUy
NEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM1MjRBQzFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUu
Y3BwICovOyB9OwogCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTRGODFDRDFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVn
SW4ubW0gKi87IH07CkBAIC04OTgsNiArODk5LDggQEAKIAkJMEYxN0JCRDQxNUFGNkM0RDAwN0FC
NzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nl
c3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDMjBCNzFEQ0Q1NDQ4MDA1
NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjk0QTUxQTc3MjY2QzAw
REUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8q
IFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNEZGQUEwMUVEM0QwREUwMEY3MTExRiAvKiBJbWFnZUlPLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSW1hZ2VJTy5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RL
Uk9PVDsgfTsKIAkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRCbGFja1RyZWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyog
TWV0YUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZXRhQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNDQ3OTcx
Qjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODY3LDYgKzE4NzAsNyBAQAogCQk3QzgzRTAyODFEMEE1Q0RGMDBGRUJDRjMgLyogRnJh
bWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEY0RkZBQTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovLAogCQkJCTYz
NDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovLAogCQkJ
CTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAog
CQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliICovLApAQCAt
MjUxNiw2ICsyNTIwLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEQzhFNDlBMUJDNzI4RkUw
MDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8q
IEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovLAorCQkJCTBGNEZGQTlEMUVEM0FBODUwMEY3
MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNDEsNiArMzA0Niw3IEBA
CiAJCQkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVn
aW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIw
MDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNEZGQTlFMUVE
M0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREUxQTQxMUE5MjAwNDQ3QzRDIC8qIFVSTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMDFBNDExQTQ0MDA0NDdDNEMgLyogVVJMRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA5MTVjYzM2NDRjNzE1ZWExZTZhZjg5MWZjZmU5NDViNzM0YzM4ZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lvcy9TbmFwc2hv
dFZpYVJlbmRlckluQ29udGV4dC5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPHN0ZGxpYi5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCBsb2FkQ29tcGxldGUgPSBm
YWxzZTsKK3N0YXRpYyBib29sIGxvYWRGYWlsZWQgPSBmYWxzZTsKKworQGludGVyZmFjZSBSZW5k
ZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgOiBOU09iamVjdCA8VUlXZWJWaWV3RGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUK
KworLSAodm9pZCl3ZWJWaWV3RGlkRmluaXNoTG9hZDooVUlXZWJWaWV3ICopd2ViVmlldworewor
ICAgIGxvYWRDb21wbGV0ZSA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooVUlXZWJWaWV3
ICopd2ViVmlldyBkaWRGYWlsTG9hZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAg
bG9hZENvbXBsZXRlID0gdHJ1ZTsKKyAgICBsb2FkRmFpbGVkID0gdHJ1ZTsKK30KKworQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ludGVnZXIgZ2V0UGl4ZWxJ
bmRleChOU0ludGVnZXIgeCwgTlNJbnRlZ2VyIHksIE5TSW50ZWdlciB3aWR0aCkKK3sKKyAgICBy
ZXR1cm4gKHkgKiB3aWR0aCArIHgpICogNDsKK30KKworVEVTVChXZWJLaXQxLCBSZW5kZXJJbkNv
bnRleHRTbmFwc2hvdCkKK3sKKyAgICBjb25zdCBOU0ludGVnZXIgd2lkdGggPSA4MDA7CisgICAg
Y29uc3QgTlNJbnRlZ2VyIGhlaWdodCA9IDYwMDsKKyAgICAKKyAgICBSZXRhaW5QdHI8VUlXaW5k
b3c+IHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBSZXRhaW5QdHI8VUlXZWJWaWV3
PiB1aVdlYlZpZXcgPSBhZG9wdE5TKFtbVUlXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBbdWlXaW5kb3cgYWRkU3Vidmll
dzp1aVdlYlZpZXcuZ2V0KCldOworICAgIAorICAgIFJldGFpblB0cjxSZW5kZXJJbkNvbnRleHRX
ZWJWaWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVuZGVySW5Db250ZXh0V2Vi
Vmlld0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgdWlXZWJWaWV3LmdldCgpLmRlbGVnYXRl
ID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICAKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OworICAgIE5TTG9nKEAiTG9hZGluZyAlQCIsIHVybCk7CisgICAgW3VpV2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIAorICAgIFV0aWw6
OnJ1bigmbG9hZENvbXBsZXRlKTsKKyAgICAKKyAgICBFWFBFQ1RfVFJVRShsb2FkQ29tcGxldGUp
OworICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbGVkKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWxsb2Mod2lkdGgg
KiBoZWlnaHQsIDQpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhl
bEJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgNCAqIHdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZyk7
CisgICAgCisgICAgLy8gRmxpcCB0aGUgY29udGV4dAorICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQuZ2V0KCksIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgLWhlaWdodCk7CisgICAgCisgICAgW3VpV2ViVmlldyBzZXRGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDgwMSwgNjAxKV07IC8vIFRoaXMgcmVzaXplIHN0b3BzIENvcmUgQW5pbWF0aW9u
IGZyb20gdXNpbmcgY2FjaGVkIGxheWVyIGJhY2tpbmcgc3RvcmUKKyAgICBbW3VpV2ViVmlldyBs
YXllcl0gcmVuZGVySW5Db250ZXh0OiBjb250ZXh0LmdldCgpXTsKKyAgICAKKyAgICAvLyBUaGVy
ZSBzaG91bGQgYmUgYSByZWQgc3F1YXJlIGF0IDAsMCAtIDEwMHgxMDAKKyAgICBOU0ludGVnZXIg
cGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoMSwgMSwgd2lkdGgpOworICAgIHVuc2lnbmVkIGNo
YXIgdmFsdWUgPSBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XTsKKyAgICBFWFBFQ1RfRVEoMjU1LCB2
YWx1ZSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAxXSk7Cisg
ICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAg
Ly8gUmlnaHQtYm90dG9tIGNvcm5lciBvZiB0aGUgZGl2ICgwLCAwLCAxMDAsIDEwMCkKKyAgICBw
aXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg5OCwgOTgsIHdpZHRoKTsKKyAgICBFWFBFQ1RfRVEo
MjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVm
ZmVyW3BpeGVsSW5kZXggKyAxXSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVs
SW5kZXggKyAyXSk7CisgICAgCisgICAgLy8gT3V0c2lkZSB0aGUgZGl2ICgwLCAwLCAxMDAsIDEw
MCkKKyAgICBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgxMDEsIDEwMSwgd2lkdGgpOworICAg
IEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsKKyAgICBFWFBFQ1RfRVEo
MjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4ICsgMV0pOworICAgIEVYUEVDVF9FUSgyNTUsIHBp
eGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAgZnJlZShwaXhlbEJ1ZmZlcik7
Cit9CisKK30KKworI2VuZGlmCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311031</attachid>
            <date>2017-05-23 11:27:42 -0700</date>
            <delta_ts>2017-05-23 11:40:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172485-20170523112742.patch</filename>
            <type>text/plain</type>
            <size>88599</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0Y2M2MDQ3ZTFjNGU4
ODMwNTczZmNkODAyODBlN2I0OTQ0M2I2Ni4uNTVmN2NkNzMwM2IxZDc2MWYzMjliYjBjNGRmYzhi
MzM1OWQ2MjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0yMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRp
bmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5jaHJvbm91cyBpbWFnZSBkZWNv
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI0
ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFVJV2ViVmlldyBjbGllbnRzIHNuYXBz
aG90IHRoZSB2aWV3IHZpYSAtcmVuZGVySW5Db250ZXh0OiBvbiB0aGUgVUlWaWV3J3MgbGF5ZXIs
CisgICAgICAgIFdlYktpdCBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RlcyBzbyB0
aGF0IHRoZSBpbWFnZXMgc2hvdyBpbiB0aGUgc25hcHNob3QuCisKKyAgICAgICAgRml4IGJ5IHBs
dW1iaW5nIHRocm91Z2ggYSAic25hcHNob3R0aW5nIiBwYWludCBiZWhhdmlvciBmbGFnIGZyb20g
dHdvIHNvdXJjZSBsb2NhdGlvbnM6CisgICAgICAgIFdlYlNpbXBsZUxheWVyLCB1c2VkIGJ5IGNv
bXBvc2l0aW5nIGxheWVycywgYW5kIExlZ2FjeVRpbGVMYXllciwgdXNlZCBmb3IgdGhlIFdLMSB0
aWxlIGNhY2hlLgorICAgICAgICBPbiBXZWJTaW1wbGVMYXllciB0aGUgZmxhZyBwcm9wYWdhdGVz
IHRocm91Z2ggUGxhdGZvcm1DQUxheWVyIHRvIEdyYXBoaWNzTGF5ZXIsIGFuZCBvbiBMZWdhY3lU
aWxlTGF5ZXIKKyAgICAgICAgaXQgc2V0cyBzb21lIHN0YXRlIG9uIHRoZSBXQUtXaW5kb3csIHdo
aWNoIGlzIGRldGVjdGVkIGJ5IC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQ6XS4KKyAgICAgICAgSW4gYm90aCBjYXNlcywgdGhlIGZsYWcgYmVjb21lcyBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nIHdoaWNoIGlzIHBhc3NlZCBkb3duIHRocm91Z2ggcGFpbnRp
bmcKKyAgICAgICAgaW4gUGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuCisKKyAgICAgICAgRml4IGNv
ZGUgdGhhdCB3YXMgY2hlY2tpbmcgcGFpbnRCZWhhdmlvciBvbiB0aGUgRnJhbWVWaWV3IHRvIGp1
c3QgbG9va2luZyBhdCBQYWludEluZm8ucGFpbnRCZWhhdmlvciwKKyAgICAgICAgd2hpY2ggcmVx
dWlyZWQgcGFzc2luZyBQYWludEluZm8gYWxvbmcgaW4gUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoKS4KKworICAgICAgICBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyBmbGFnLCBiZWNhdXNlIHRoYXQgdHJpZ2dlcnMKKyAgICAgICAg
YSBmbGF0dGVuaW5nIHBhaW50IG9mIGNvbXBvc2l0aW5nIGxheWVycywgYW5kIHdlIGRvbid0IHdh
bnQgdGhhdCBiZWhhdmlvciBmb3IgLXJlbmRlckluQ29udGV4dDosCisgICAgICAgIHNpbmNlIENv
cmVBbmltYXRpb24gY2FsbHMgLXJlbmRlckluQ29udGV4dDogb24gZWFjaCBvZiBvdXIgbGF5ZXJz
IGFuZCB3ZSBuZWVkIHRvIGF2b2lkIGRvdWJsZS1wYWludGluZy4KKyAgICAgICAgU28gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZyBpcyBub3cgYWRkZWQgdG8gdGhlIGNhbGwgc2l0ZXMgdGhhdCBh
bHNvIHNldCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzCisgICAgICAgIGlu
IG1vc3QgY2FzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IFNuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJM
YXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciByZW5kZXJJ
bkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oOiBVc2UgaW5pdGlhbGl6
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0xlZ2FjeVRpbGVMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAg
ICAgICgtW0xlZ2FjeVRpbGVMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tMZWdh
Y3lUaWxlTGF5ZXIgbGF5ZXJCZWluZ1BhaW50ZWRdKTogRGVsZXRlZC4gVGhlcmUgd2VyZSBubyBj
YWxsZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAg
KC1bV0FLVmlldyBfZHJhd1JlY3Q6Y29udGV4dDpsb2NrRm9jdXM6XSk6IGJvb2wgLT4gQk9PTAor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRJc0luU25h
cHNob3R0aW5nUGFpbnQ6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBpc0luU25hcHNob3R0aW5n
UGFpbnRdKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRQaGFzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2tJbWFnZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAxNy0wNS0xOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXdsaW5lIGFm
dGVyIHRoZSBVUkwgaW4gc2hvd0xheWVyVHJlZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzBiNjU2MzBkMjFmY2ZiMDA1YWM5NzExZWFhMzQ1Mjk4NWU2NzhkYi4uZTk5NDQ1YWRlOWUwMjRh
Mzg2ODhlM2EyM2RkMGM4YzIxMjhiNjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA1LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNuYXBzaG90dGluZyB2aWEgLXJlbmRlckluQ29udGV4dDogc2hvdWxkIGRvIHN5
bmNocm9ub3VzIGltYWdlIGRlY29kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MjQ4NQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI3NjE0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0
bWFwOiBTUEkgdGhhdCBubyBsb25nZXIKKyAgICAgICAgaGFzIGFueSBjYWxsZXJzLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGluRmxhdHRlbmluZ1BhaW50XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JG
b3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zaG91bGRGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZXcgX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wNS0xOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKEFQUExFX1BBWV9ERUxF
R0FURSkgc2hvdWxkIGJlIE5PIG9uIG1hY09TIFNpZXJyYSBhbmQgZWFybGllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNmNGYzOWFjNGQ4YzExZGZmODQ2ZDg2ZDY3NjhkM2ZjNWQ1YmVlZmIuLjMwMWYxYTk1YzUz
YmVlOTM0OTlkNDYwNmFhZDM4ZjA3YjU2NmZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxNy0wNS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTbmFwc2hvdHRpbmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nIGZsYWcgaW4gZnVuY3Rpb25zIHRoYXQgZG8gc25hcHNo
b3R0aW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJl
bmRlcmVkSW1hZ2UpOgorCiAyMDE3LTA1LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZG8gbm90IGNhY2hlIGdVTSBwZXJt
aXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDNhMWU1OGY3NDlmMzc4YzA4NGE0NzVkOTgxNGJhYmFjOGI1OTFl
Y2EuLmVlODE4YmEyZjcxZmZkOGExNTk0NWEzNzFhYzQwNDZjNzYyM2UwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTE0MDIsNyArMTQwMiw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZywgbnVsbHB0ciwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJhZjZjZDdhYTdjYjM1ZjNmZTBjNTc0N2Q5
NTM3MzFkNTZlYTJhODcuLjJiY2Y2NzQzYzIxZTBiMTA0NzllYWNhNjZkM2E0MzE4YWFkMzc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTksMTAgKzQzOTksMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsIFBhaW4KICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIAorICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+
cHJpbnRpbmcoKSkKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTI5LDcgKzQ1MzIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdAogCiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5l
dyBiZWhhdmlvciBhcHByb3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Ig
b2xkQmVoYXZpb3IgPSBwYWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKTsKIAogICAgIC8vIElmIHRo
ZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMg
d2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRE9NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggYzIyMWRj
MjgxZmRlZDAwYTE4ZTBiYjFmNmQzY2Y1MDYzMGUwYTBkMC4uNDI0MWE0YmZlMmI5OTFmNmU3MWE0
ZWUzNTI0ODM3MTZkZmE2MGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzTmFtZXMoYm9vbCBw
YXJhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBh
aW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0
KQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRGbGFn
cykKIHsKICAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRHcmFwaGljc0xheWVyIDogbV9vdmVybGF5
R3JhcGhpY3NMYXllcnMpIHsKICAgICAgICAgaWYgKG92ZXJsYXlBbmRHcmFwaGljc0xheWVyLnZh
bHVlLmdldCgpICE9IGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaAppbmRleCAwNTQ2OTI5YWU2NTQ3MTIwZGI0OGQwOTkxMjZkZmJkOGUx
YzQyMDM5Li5iOTY0NTFhZDkwOTczYjI0NjMyZDlhYjg0N2M2NGNlOGJlNWU2NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2tpcExh
eWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggMDdkODhh
Mjg3NmIyYmE0OGRkYmQ1ZThlZjgxZGFjOWMxNTQ1N2NmZS4uZmZjNDk0MmIyMzIzZWNiMjZlYzg1
ZDlmZjFjNWIyZGJmYTAwYTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlCisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KGNsaXAsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuOGYpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRleCBhMTMx
OWJiMGU5ZWNlZjAyZTk4MTFmMWYzNmQxYWQ5MjM4NDkxNzNjLi5kM2FhYjlmZDYxNmFjN2JjMzcw
NjFhN2Q0NzFiM2ZlODNkMzY2ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAogICAgICAgICB2b2lkIG5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgaW5DbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7CiAgICAgICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBk
aWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmYmExMDlhOTYzZGJmM2Y0
ZTI4MDIyMmNkNjc1OGNmMDQ3ZGIxNjlhLi4wNzA5NmU4MjdmMzhjMTJkNDNjNzVhZTBhN2E0Mzhl
Y2FkNzBhYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheQogICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCk7CiB9CiAKLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0
UmVjdCYpCit2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFw
aGljc0xheWVyUGFpbnRGbGFncykKIHsKICAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTJmNmNmZmNiZGQyYmI0MWQwMWZmZGY4NzFlZGU2
YTEwNTA3YzYzYy4uNjk4Zjc1OGYxOTNlNGI1YjY3NTU3ZjRkMzg3MWEzYzNjODNjNzVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgR3JhcGhp
Y3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdz
KQogewogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgtb2Zmc2V0KTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdChjbGlwKTsKICAgICBjbGlwUmVj
dC5tb3ZlKG9mZnNldCk7CiAKLSAgICBtX2NsaWVudC5wYWludENvbnRlbnRzKHRoaXMsIGNvbnRl
eHQsIG1fcGFpbnRpbmdQaGFzZSwgY2xpcFJlY3QpOworICAgIG1fY2xpZW50LnBhaW50Q29udGVu
dHModGhpcywgY29udGV4dCwgbV9wYWludGluZ1BoYXNlLCBjbGlwUmVjdCwgZmxhZ3MpOwogfQog
CiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDMyMmJmODBlZjI5NDQ0NzNlNjRiYzg0MDcyZDE0
YTM4YzVkNmIxNDIuLjk1ZmE3Yzg5ZjA0YzNmMGQ1OWUzMzc4YjUyZjk4MTUzYzU0MDg2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUcmFuc2l0aW9ucyBhcmUgaWRl
bnRpZmllZCBieSBhIHNwZWNpYWwgYW5pbWF0aW9uIG5hbWUgdGhhdCBjYW5ub3QgY2xhc2ggd2l0
aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCiAgICAgc3RhdGljIFN0cmluZyBhbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQpOwotICAgIAorCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgdGhlIGFuaW1hdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb21wb3NpdGluZyBzeXN0
ZW0uIElmIHRoaXMgcmV0dXJucwogICAgIC8vIGZhbHNlLCB0aGUgYW5pbWF0aW9uIHdpbGwgYmUg
cnVuIGJ5IENTU0FuaW1hdGlvbkNvbnRyb2xsZXIuCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBoYW5k
bGUgYm90aCB0cmFuc2l0aW9ucyBhbmQga2V5ZnJhbWUgYW5pbWF0aW9ucy4KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgCisKICAgICAvLyBMYXllciBjb250ZW50cwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KQEAgLTQ2NSwxMSArNDY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ2Fs
bGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gdG8gZHJhdyBsYXllciBj
b250ZW50cy4KLSAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCk7Ci0gICAgCisgICAgdm9pZCBwYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAs
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUp
OworCiAgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxh
eWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBlbnVtIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiB7IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duLCBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzQm90dG9tVXAgfTsKIAogICAgIC8vIEZsaXBwZWRuZXNzIG9mIHRoZSBj
b250ZW50cyBvZiB0aGlzIGxheWVyLiBEb2VzIG5vdCBhZmZlY3Qgc3VibGF5ZXIgZ2VvbWV0cnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmgKaW5kZXggZjZlOTBiOGUzNTIyOWIyNGE2NGJmNzZkNjRjZmM1ODk0OGQxMGY3
Ni4uNDVmNjUxMmY5ZDU1Zjk4ZGZlZDM2N2QwYjFkMGE1N2Y3MjkxZTlkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFw
aGljc0xheWVyQ2xpZW50X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllckNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
QEAgLTc2LDYgKzc1LDggQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKIH07
CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yOwogCitlbnVtIGNsYXNz
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIHsgTm9uZSwgU25hcHNob3R0aW5nIH07CisgICAgCiBj
bGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFwaGlj
c0xheWVyQ2xpZW50KCkge30KQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIE5vdGlm
aWNhdGlvbiB0aGF0IHRoaXMgbGF5ZXIgcmVxdWlyZXMgYSBmbHVzaCBiZWZvcmUgdGhlIG5leHQg
ZGlzcGxheSByZWZyZXNoLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3Bs
YXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiAvKiBpbkNsaXAgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBH
cmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRS
ZWN0JiAvKiBpbkNsaXAgKi8sIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCB7IH0KIAogICAgIC8vIFByb3ZpZGVzIGN1cnJlbnQgdHJhbnNmb3JtICh0YWtpbmcgdHJh
bnNmb3JtLW9yaWdpbiBhbmQgYW5pbWF0aW9ucyBpbnRvIGFjY291bnQpLiBJbnB1dCBtYXRyaXgg
aGFzIGJlZW4KQEAgLTEzOSw0ICsxNDAsMyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggZTRkMGY5MTY5ZDQyNTRiMjlkZTMzODQ1N2EyNjlmNGIwMzQ1Y2IyOS4uOGEwYWQ1MDVl
ZDAxODQxZWJhMTMzMzA3Mjc1YTFhNmFiMzM3ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkgeyB9CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxh
dGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291
bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5
ZXIqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2NTExM2IwZDJhYjg1ZTI3NTA1
ZTc2NWY4NjFjNmMzOTllNjBkZmU1Li5iZTA4NzdjMTAzNzFiZThlMGE5NjQ1YWEzNTU0YzllYWNh
MzBlNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NjMsNyArMTU2Myw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9yCiAgICAgcmV0dXJuIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBj
bGlwKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
UGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdzKQogewogICAgIG1faGFzRXZl
clBhaW50ZWQgPSB0cnVlOwogICAgIGlmIChtX2Rpc3BsYXlMaXN0KSB7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbgogICAgIH0KIAogICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKFBhaW50TGF5ZXJTdGFydCwgUGFpbnRMYXllckVuZCk7Ci0gICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7CisgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoY29udGV4dCwgY2xpcCwgZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IDUxMzlmYWY4MmU3ZjgyZThmY2ZkYjVjNWZkMTY1YTUwMDllN2NiM2MuLjlhZTE4MzQx
OGIwY2FlYzY5NmZmOGM1NzA2NTUzOTE2ZmM1Y2NiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkgb3ZlcnJp
ZGU7CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09y
aWVudGF0aW9uKCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBjbGlwKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7
CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKFBsYXRmb3JtQ0FMYXllciop
IGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50
Q291bnQoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGUgeyByZXR1cm4gaW5jcmVtZW50UmVwYWlu
dENvdW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggYjJhMjE2OTEzZGYyOTMzOTYzOTZkODJlMzYzYjc2
MWIwNmE1MjMwYi4uZjk0YzA3ZTE2Y2MwNjhlNGE4YTNjODc0NTI5Njk3OWM2ZDAxMTFiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIC8vIEZ1
bmN0aW9ucyBhbGxvd3MgdXMgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gYWNyb3NzIFdlYlRpbGVk
TGF5ZXIgYW5kIFdlYkxheWVyCiAgICAgc3RhdGljIFJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVj
dHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKik7Ci0gICAgc3RhdGljIHZv
aWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBh
aW50UmVjdExpc3QmIGRpcnR5UmVjdHMpOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRl
bnRzKENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0
eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd1Jl
cGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWlu
dENvdW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CiAgICAgc3RhdGljIENH
UmVjdCBmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaAppbmRleCAxMGM4MmY0NGEwNWY0YzRjMjA2ZGFmYmE3MjJkZDg1YWM1NTU1MTFiLi4y
OGNiYzM1YjRlMWE4YTcyYjMzY2U2N2IwZDYzMjc2N2UyMTc4Y2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRfaAotI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKQEAgLTQ0LDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRp
b25TdGFydGVkKGNvbnN0IFN0cmluZyYgLyphbmltYXRpb25LZXkqLywgQ0ZUaW1lSW50ZXJ2YWwp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25z
dCBTdHJpbmcmIC8qYW5pbWF0aW9uS2V5Ki8pIHsgfQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
cjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpAQCAtNzIsNCArNzEsMyBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2Vu
ZGlmIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAppbmRleCAwMjYwYmFi
ODY2MzVlNWNhOTNiZTg2OWU4MmRhNmU1ZThlYjU5ZmRjLi5kNjJjN2Y1NzRlZWYzNGYzZmY3MWJm
MDYyNTdiMjNlNzU1YzgxZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGlj
YXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ip
OwogfQogCi12b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50
RmxhZ3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9ybUNBTGF5ZXIsIHBsYXRmb3JtQ0FM
YXllciA9PSBtX2xheWVyLnB0cigpKTsKICAgICBtX2NvbnRyb2xsZXIudGlsZUdyaWQoKS5kcmF3
VGlsZU1hcENvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5ZXIuZ2V0KCku
Ym91bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ292ZXJhZ2VNYXAuaAppbmRleCA4Y2NmZTE2MTUzYjNmODlhMWY1ZTlkMjA0OGI1NTc2
ZjYxNDE1ZjU5Li5hYjQzYTU2MDZkMjgwZmM0NjNkYTI5NDc4OWNkNjU2NGQ4YTQ4MTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJh
Z2VNYXAuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJy
aWRlOwogICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRleCAxMjIzNzIyOTli
NGIwYjNhNGE3NmU2OTIxNjk2OTVlNzAzNDRjMTVlLi5jYjFlYTUxZmM3YjI3MGE4MWM0NGYxYjJj
OWJhOWJmMTI2NTc5OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuY3BwCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBUaWxlR3JpZDo6ZHJh
d1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGxheWVyQm91bmRz
KSBjb24KICAgICB9CiB9CiAKLXZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29u
dGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChwdGhyZWFkX21haW5fbnAo
KSkKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogICAgICAgICBj
b250ZXh0LnNjYWxlKG1fc2NhbGUpOwogCiAgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWlu
dFJlY3RMaXN0IGRpcnR5UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFp
bnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBmbGFncyk7CiAgICAgfQog
CiAgICAgaW50IHJlcGFpbnRDb3VudCA9IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRD
b3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVHcmlkLmgKaW5kZXggMzI1MzM2ZjgxOTFlNDU4MjNjNzU1ZDg3ODJjNDJhYTBk
ZTU3NjUxZC4uMmY4NzdiNDg3YTlhZTg0Zjc4MGNiMmEyYTc0MDIyMWE2NDhiYmNhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVRpbGVzKFZlY3RvcjxUaWxlR3Jp
ZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpOwogCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50
Ci0gICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IHBsYXRmb3JtQ0FMYXllckluY3Jl
bWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggZWEyMzhlNjg5ODgzMjRlOTI1MTEzMTM0ODc4NmJi
NDgwZmMzOGE0Zi4uMTY1ODE0NDU0Zjc4NjBhM2EzZDQ2YmNiMDc2YjU4YmVjMWI4YWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTExMTIsNyArMTExMiw3IEBAIFBs
YXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJl
Y3RzVG9QYWludChDR0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlz
dCYgZGlydHlSZWN0cykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cywgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNv
bnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50
cykKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKKyAgICAgICAgICAgIGxh
eWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVy
LCBncmFwaGljc0NvbnRleHQsIHJlY3QsIGZsYWdzKTsKICAgICAgICAgfQogICAgICAgICAKICNp
ZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDVlMTQ5ZmQ0
YTgxZmU1MDg2NmFlYTA1MGExN2NiZGRmOTYzNDNiYjYuLjFiOTRjMjk0OWE3OGUxZGRmYWMxZTg4
NWEwNmZiM2U4ZDEyZTBjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxh
eWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFIKICAgICByZXR1cm4gZGlydHlSZWN0
czsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4
dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwg
UmVwYWludFJlY3RMaXN0JikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50
cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9y
bUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewog
ICAgIGludGVybihwbGF0Zm9ybUNBTGF5ZXIpLT5kaXNwbGF5Q2FsbGJhY2socGxhdGZvcm1DQUxh
eWVyLT5wbGF0Zm9ybUxheWVyKCksIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKaW5kZXggYWE4YTlhNzVkZGNmNWVjZDgzYzc4NTBlMDEzYmYw
NDBiMmU2NTIzYi4uNDY1YjRhM2UzMzc4MTE3NTFkYTlkMmMxZjBlNjZjN2NiODM5MTViYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHQKICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGxh
eWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCiAgICAgQ0dSZWN0IGNsaXBCb3VuZHMgPSBD
R0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CiAgICAgSW50UmVjdCBjbGlwKGVu
Y2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwotICAgIGNsaWVudC0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQsIGNsaXApOworICAgIGNsaWVu
dC0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQs
IGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKIAogICAgIGlmIChjbGllbnQt
PnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihvd25lcigpKQogICAgICAgICAmJiAh
cmVwYWludENvdW50ZXJzQXJlRHJhd25CeUdyaWRDb250cm9sbGVyKGxheWVyVHlwZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxl
ZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDMxNjY1YmY4MzE2YTdlNTQ3
MzFmMGZlMThiOWJhMDU0OTdlMDEwMTMuLmQ0ZWU1N2I2OGI0NzllNDVjZWVhNThmZDk3MzVlODMy
ODdjYzg4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpkaXNwbGF5Q2FsbGJhY2so
Q0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJlZgogICAgIC8vIHNtYWxsZXIgdGhhbiB0
aGUgbGF5ZXIgYm91bmRzIChlLmcuIHRpbGVkIGxheWVycykKICAgICBDR1JlY3QgY2xpcEJvdW5k
cyA9IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KTsKICAgICBJbnRSZWN0IGNs
aXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgY2xpZW50LT5wbGF0Zm9ybUNB
TGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7CisgICAg
Y2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29u
dGV4dCwgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogCiAgICAgaWYgKGNs
aWVudC0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKG93bmVyKCkpKSB7CiAgICAg
ICAgIGludCBkcmF3Q291bnQgPSBjbGllbnQtPnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFp
bnRDb3VudChvd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLmgKaW5kZXggZGQ0Y2FkNzA4N2Y4NmEzYTAzMmI5MWUwMTg1NTNlNjI1ODE2
MDUyMi4uNDIyMzAwMzdjYjRiYWZmNjQ2ZGI2NjNhYjg2ODcxY2IwNGNiMmU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKQEAgLTI5LDcg
KzI5LDEwIEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKICNpZmRlZiBf
X09CSkNfXwotQGludGVyZmFjZSBXZWJTaW1wbGVMYXllciA6IENBTGF5ZXIKK0BpbnRlcmZhY2Ug
V2ViU2ltcGxlTGF5ZXIgOiBDQUxheWVyIHsKKyAgICBCT09MIG1faXNSZW5kZXJpbmdJbkNvbnRl
eHQ7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBXZWJTaW1wbGVMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IGVjZGVj
NWUxMmJkNjBiZTVkZjVjZTZmMWQ0NmU5OTAzM2FmZjZlYmUuLjdhNWViZTRmNTJkMDM2NWNkZTli
Mzg4MzZhNjMwMzI2ZjFhNGRlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkdyYXBo
aWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0tHcmFwaGljcy5oIgpAQCAtNTYsNyArNTcsNyBAQCAt
ICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwog
ICAgIGlmIChsYXllcikgewogICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlz
dCByZWN0c1RvUGFpbnQgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29u
dGV4dCwgbGF5ZXIpOwotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRz
KGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQsIHNlbGYuX2lz
UmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGlu
ZyA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKICAgICB9CiB9CiAKQEAgLTY0LDYg
KzY1LDE0IEBAIEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAogQGltcGxlbWVudGF0
aW9uIFdlYlNpbXBsZUxheWVyCiAKK0BzeW50aGVzaXplIF9pc1JlbmRlcmluZ0luQ29udGV4dCA9
IG1faXNSZW5kZXJpbmdJbkNvbnRleHQ7CisKKy0gKHZvaWQpcmVuZGVySW5Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAoreworICAgIFNldEZvclNjb3BlPEJPT0w+IGNoYW5nZShtX2lzUmVu
ZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAgIFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4
dF07Cit9CisKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CiB7
CiAgICAgLy8gRml4IGZvciA8cmRhcjovL3Byb2JsZW0vOTAxNTY3NT46IEZvcmNlIHRoZSBsYXll
ciBjb250ZW50IHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgdHJlZSBpcyByZXBhcmVudGVkLgpAQCAt
MTI4LDcgKzEzNyw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGxheWVy
LT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMg
PSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRl
eHQsIGNsaXBCb3VuZHMpOworICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhsYXllciwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzLCBzZWxmLl9p
c1JlbmRlcmluZ0luQ29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRp
bmcgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggOTJjMjFkMjRi
MzAxOWVkNDEzN2U2ZTgxNDY5MjZjMzU0MDhjMThmNC4uNDAzNDNiNWI1MTNiNDcxNjY2ODZlNDBm
ZmQ5Y2Q5NmEwNWNmMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUuaApAQCAtMTMzLDcgKzEzMyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEludGVy
bmFsCiAgICAgdm9pZCBkb0xheW91dFRpbGVzKCk7Ci0gICAgdm9pZCBkcmF3TGF5ZXIoTGVnYWN5
VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmKTsKKyAgICAKKyAgICBlbnVtIGNsYXNzIERyYXdpbmdG
bGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OworICAgIHZvaWQgZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciosIENHQ29udGV4dFJlZiwgRHJhd2luZ0ZsYWdzKTsKICAgICB2b2lkIHByZXBhcmVU
b0RyYXcoKTsKICAgICB2b2lkIGZpbmlzaGVkQ3JlYXRpbmdUaWxlcyhib29sIGRpZENyZWF0ZVRp
bGVzLCBib29sIGNyZWF0ZU1vcmUpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEluTGF5ZXIo
Q0FMYXllciAqKSBjb25zdDsKQEAgLTE3MiwzMyArMTc0LDMzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGRyYXdSZXBsYWNlbWVudElt
YWdlKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dJbWFnZVJlZik7Ci0gICAgdm9p
ZCBkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRSZWYsIENHUmVj
dCBkaXJ0eVJlY3QpOworICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVy
KiwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxhZ3MpOwogCi0gICAg
V0FLV2luZG93KiBtX3dpbmRvdzsKKyAgICBXQUtXaW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9
OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2U7
CiAKLSAgICBib29sIG1fa2VlcHNab29tZWRPdXRUaWxlczsKLQotICAgIGJvb2wgbV9oYXNQZW5k
aW5nTGF5b3V0VGlsZXM7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxpbmdNb2RlOwog
ICAgIC8vIEVuc3VyZSB0aGVyZSBhcmUgbm8gYXN5bmMgY2FsbHMgb24gYSBkZWFkIHRpbGUgY2Fj
aGUuCiAgICAgUmV0YWluUHRyPExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZT4gbV90b21ic3RvbmU7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9vdmVycmlkZVZpc2libGVSZWN0Owog
Ci0gICAgVGlsaW5nTW9kZSBtX3RpbGluZ01vZGU7Ci0gICAgVGlsaW5nRGlyZWN0aW9uIG1fdGls
aW5nRGlyZWN0aW9uOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGJvb2wgbV90aWxl
c09wYXF1ZTsKLQotICAgIGJvb2wgbV90aWxlQm9yZGVyc1Zpc2libGU7Ci0gICAgYm9vbCBtX3Rp
bGVQYWludENvdW50ZXJzVmlzaWJsZTsKLSAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDsKLSAgICBib29sIG1faXNTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQ7Ci0KLSAg
ICBib29sIG1fZGlkQ2FsbFdpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsKKyAgICBJbnRTaXpl
IG1fdGlsZVNpemUgeyA1MTIsIDUxMiB9OworICAgIAorICAgIFRpbGluZ01vZGUgbV90aWxpbmdN
b2RlIHsgTm9ybWFsIH07CisgICAgVGlsaW5nRGlyZWN0aW9uIG1fdGlsaW5nRGlyZWN0aW9uIHsg
VGlsaW5nRGlyZWN0aW9uRG93biB9OworICAgIAorICAgIGJvb2wgbV9rZWVwc1pvb21lZE91dFRp
bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0xheW91dFRpbGVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzUGVuZGluZ1VwZGF0ZVRpbGluZ01vZGUgeyBmYWxzZSB9OworICAg
IGJvb2wgbV90aWxlc09wYXF1ZSB7IHRydWUgfTsKKyAgICBib29sIG1fdGlsZUJvcmRlcnNWaXNp
YmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzU3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV90aWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9kaWRDYWxsV2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5nIHsgZmFsc2UgfTsK
KyAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGls
ZUdyaWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVRpbGVHcmlkPiBtX3pvb21lZEluVGls
ZUdyaWQ7CiAKQEAgLTIwNiwxNiArMjA4LDE0IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8SW50
UmVjdD4gbV9zYXZlZERpc3BsYXlSZWN0czsKIAotICAgIGZsb2F0IG1fY3VycmVudFNjYWxlOwor
ICAgIGZsb2F0IG1fY3VycmVudFNjYWxlIHsgMSB9OwogCi0gICAgZmxvYXQgbV9wZW5kaW5nU2Nh
bGU7Ci0gICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGU7CisgICAgZmxvYXQgbV9wZW5k
aW5nU2NhbGUgeyAwIH07CisgICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgeyAwIH07
CiAKICAgICBtdXRhYmxlIExvY2sgbV90aWxlTXV0ZXg7CiAgICAgbXV0YWJsZSBMb2NrIG1fc2F2
ZWREaXNwbGF5UmVjdE11dGV4OwogICAgIG11dGFibGUgTG9jayBtX2NvbnRlbnRSZXBsYWNlbWVu
dEltYWdlTXV0ZXg7Ci0KLSAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VMb3dTY2Fs
ZVRpbGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZTRkZmRlYTEwZWViNDI1NjRi
YzI1MDhlYzA5OGQxYTVkNTJlNWY0MC4uY2UyMjg0YjJlMWEzODMwZDU0MTJmMjA2YmM4YWQ1MTVk
NTNlODQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCkBAIC03MCwyNSArNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExlZ2FjeVRp
bGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5k
b3cod2luZG93KQotICAgICwgbV9rZWVwc1pvb21lZE91dFRpbGVzKGZhbHNlKQotICAgICwgbV9o
YXNQZW5kaW5nTGF5b3V0VGlsZXMoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxp
bmdNb2RlKGZhbHNlKQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNo
ZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV90aWxpbmdNb2RlKE5vcm1hbCkKLSAg
ICAsIG1fdGlsaW5nRGlyZWN0aW9uKFRpbGluZ0RpcmVjdGlvbkRvd24pCi0gICAgLCBtX3RpbGVT
aXplKDUxMiwgNTEyKQotICAgICwgbV90aWxlc09wYXF1ZSh0cnVlKQotICAgICwgbV90aWxlQm9y
ZGVyc1Zpc2libGUoZmFsc2UpCi0gICAgLCBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZShmYWxz
ZSkKLSAgICAsIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1faXNT
cGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQodHJ1ZSkKLSAgICAsIG1fZGlkQ2FsbFdpbGxT
dGFydFNjcm9sbGluZ09yWm9vbWluZyhmYWxzZSkKICAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQo
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAg
ICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0
aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fY3VycmVudFNjYWxlKDEuZikKLSAgICAsIG1fcGVuZGlu
Z1NjYWxlKDApCi0gICAgLCBtX3BlbmRpbmdab29tZWRPdXRTY2FsZSgwKQotICAgICwgbV90aWxl
Q29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMoZmFsc2UpCiB7CiAgICAgW2hvc3RMYXll
cigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBh
dEluZGV4OjBdOwogICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CkBAIC01MjAsMTQgKzUwNCwx
OCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1JlcGxhY2VtZW50SW1hZ2UoTGVnYWN5VGls
ZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQsIGltYWdlUmVjdCwgaW1hZ2UpOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dp
bmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCBkaXJ0eVJlY3QpCit2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dpbmRvd0NvbnRl
bnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBk
aXJ0eVJlY3QsIERyYXdpbmdGbGFncyBkcmF3aW5nRmxhZ3MpCiB7CiAgICAgQ0dSZWN0IGZyYW1l
ID0gW2xheWVyIGZyYW1lXTsKICAgICBGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlciBmb250QW50
aWFsaWFzaW5nU3RhdGUoY29udGV4dCwgW21fd2luZG93IHVzZU9yaWVudGF0aW9uRGVwZW5kZW50
Rm9udEFudGlhbGlhc2luZ10gJiYgW2xheWVyIGlzT3BhcXVlXSk7CiAgICAgZm9udEFudGlhbGlh
c2luZ1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKTsKIAor
ICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcpCisgICAg
ICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5nUGFpbnQ6WUVTXTsKKyAgICAgICAgCiAg
ICAgQ0dTUmVnaW9uT2JqIGRyYXdSZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVtsYXllciByZWdpb25C
ZWluZ0RyYXduXTsKICAgICBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUgPSBbbGF5ZXIgY29udGVudHNT
Y2FsZV07CisgICAgCiAgICAgaWYgKGRyYXdSZWdpb24gJiYgc2hvdWxkUmVwYWludEluUGllY2Vz
KGRpcnR5UmVjdCwgZHJhd1JlZ2lvbiwgY29udGVudHNTY2FsZSkpIHsKICAgICAgICAgLy8gVXNl
IGZpbmUgZ3JhaW5lZCByZXBhaW50IHJlY3RhbmdsZXMgdG8gbWluaW1pemUgdGhlIGFtb3VudCBv
ZiBwYWludGVkIHBpeGVscy4KICAgICAgICAgQ0dTUmVnaW9uRW51bWVyYXRvck9iaiBlbnVtZXJh
dG9yID0gQ0dTUmVnaW9uRW51bWVyYXRvcihkcmF3UmVnaW9uKTsKQEAgLTU1MCw5ICs1MzgsMTIg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRpbGVMYXll
ciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb24KICAgICB9CiAKICAgICBmb250QW50aWFsaWFzaW5n
U3RhdGUucmVzdG9yZSgpOworICAgIAorICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0Zs
YWdzOjpTbmFwc2hvdHRpbmcpCisgICAgICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6Tk9dOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4
dCwgRHJhd2luZ0ZsYWdzIGRyYXdpbmdGbGFncykKIHsKICAgICAvLyBUaGUgd2ViIGxvY2sgdW5s
b2NrIG9ic2VydmVyIHJ1bnMgYWZ0ZXIgQ0EgY29tbWl0IG9ic2VydmVyLgogICAgIGlmICghV2Vi
VGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpIHsKQEAgLTU3MSw3ICs1NjIsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4
dFJlZiBjb250ZXh0KQogICAgIGlmIChSZXRhaW5QdHI8Q0dJbWFnZT4gY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2UgPSB0aGlzLT5jb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpKQogICAgICAgICBkcmF3
UmVwbGFjZW1lbnRJbWFnZShsYXllciwgY29udGV4dCwgY29udGVudFJlcGxhY2VtZW50SW1hZ2Uu
Z2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhd1dpbmRvd0NvbnRlbnQobGF5ZXIsIGNvbnRl
eHQsIGRpcnR5UmVjdCk7CisgICAgICAgIGRyYXdXaW5kb3dDb250ZW50KGxheWVyLCBjb250ZXh0
LCBkaXJ0eVJlY3QsIGRyYXdpbmdGbGFncyk7CiAKICAgICArK2xheWVyLnBhaW50Q291bnQ7CiAg
ICAgaWYgKG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgKaW5kZXggOTg3MGU3YjAzZTFlYWU3YzE5MTQ4
MjAzYTYyNzc3YWRlNGJkNzVhYi4uYmYxZWU3MmQ5MGIzM2Y1YzQ0NDE1NGM1ZWFmNzA2YTM1OWFk
Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIu
aApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTGVnYWN5VGlsZUxheWVyX2gKLSNkZWZpbmUgTGVnYWN5VGlsZUxheWVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oSU9TKQogCkBAIC0zNywxMCArMzYsMTEg
QEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVMYXllciA6IENB
TGF5ZXIgewogICAgIFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkKiBfdGlsZUdyaWQ7CiAgICAgdW5z
aWduZWQgX3BhaW50Q291bnQ7CisgICAgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7CiB9CiBA
cHJvcGVydHkgKG5vbmF0b21pYykgdW5zaWduZWQgcGFpbnRDb3VudDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCogdGlsZUdyaWQ7Ci0rIChMZWdhY3lUaWxl
TGF5ZXIgKilsYXllckJlaW5nUGFpbnRlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGlz
UmVuZGVyaW5nSW5Db250ZXh0OwogQGVuZAogCiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVIb3N0TGF5
ZXIgOiBDQUxheWVyIHsKQEAgLTUwLDQgKzUwLDQgQEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBA
ZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0jZW5kaWYgLy8gVGlsZUxheWVyX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KaW5kZXgg
NWNhMjEyYTNjNGYyYmVjMjEyZDZiZGY1ZmIxMTI3ZDEzNDY2OWZjNi4uYWU2MmE0MWVlYWJhNTNk
NGI3NmRiOWYxN2M2NGY4MzFhNDY2NWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGVn
YWN5VGlsZUNhY2hlLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbmNsdWRlICJX
ZWJDb3JlVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MSw4ICs3Miw3IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlv
biBMZWdhY3lUaWxlTGF5ZXIKIEBzeW50aGVzaXplIHBhaW50Q291bnQgPSBfcGFpbnRDb3VudDsK
IEBzeW50aGVzaXplIHRpbGVHcmlkID0gX3RpbGVHcmlkOwotCi1zdGF0aWMgTGVnYWN5VGlsZUxh
eWVyICpsYXllckJlaW5nUGFpbnRlZDsKK0BzeW50aGVzaXplIGlzUmVuZGVyaW5nSW5Db250ZXh0
ID0gX2lzUmVuZGVyaW5nSW5Db250ZXh0OwogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVj
dDooQ0dSZWN0KXJlY3QKIHsKQEAgLTkzLDYgKzkzLDEyIEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5
ZXJzCiAgICAgICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkucHJlcGFyZVRvRHJhdygpOwogfQog
CistICh2b2lkKXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBT
ZXRGb3JTY29wZTxCT09MPiBjaGFuZ2UoX2lzUmVuZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAg
IFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4dF07Cit9CisKIC0gKHZvaWQpZHJhd0luQ29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKICAgICAvLyBCdWdzIGluIGNsaWVudHMgb3Ig
b3RoZXIgZnJhbWV3b3JrcyBtYXkgY2F1c2UgdGlsZSBpbnZhbGlkYXRpb24gZnJvbSB3aXRoaW4g
YSBDQSBjb21taXQuCkBAIC0xMDUsNyArMTExLDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBpZiAo
X3RpbGVHcmlkKQotICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmRyYXdMYXllcihzZWxm
LCBjb250ZXh0KTsKKyAgICAgICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5kcmF3TGF5ZXIoc2Vs
ZiwgY29udGV4dCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IExlZ2FjeVRpbGVDYWNoZTo6
RHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcgOiBMZWdhY3lUaWxlQ2FjaGU6OkRyYXdpbmdGbGFn
czo6Tm9uZSk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICop
a2V5CkBAIC0xMTUsMTEgKzEyMSw2IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5T
U3RyaW5nICopa2V5CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotKyAoTGVnYWN5VGlsZUxheWVyICop
bGF5ZXJCZWluZ1BhaW50ZWQKLXsKLSAgICByZXR1cm4gbGF5ZXJCZWluZ1BhaW50ZWQ7Ci19Ci0K
IEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBlMjhiY2ZkNDEwNjJkZDM2MjUzMTRmNDAxYjAyOTg4
MDg1YzVmYTcxLi5mZDJmODUyYjMxZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC01MDUsNyArNTA1
LDcgQEAgKyAodm9pZClfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6KGludClxdWFsaXR5CiAgICAg
c0ludGVycG9sYXRpb25RdWFsaXR5ID0gdG9DR0ludGVycG9sYXRpb25RdWFsaXR5KChXZWJDb3Jl
OjpJbnRlcnBvbGF0aW9uUXVhbGl0eSlxdWFsaXR5KTsKIH0KIAotLSAodm9pZClfZHJhd1JlY3Q6
KE5TUmVjdClkaXJ0eVJlY3QgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3Vz
Oihib29sKWxvY2tGb2N1cworLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QgY29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihCT09MKWxvY2tGb2N1cwogewog
ICAgIGlmIChfaXNIaWRkZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oCmluZGV4IDJiNWI5OWQ5OWE0NzQyYWJjMjQ4MjYzYmM3
YjE1M2Y2YmJkOTYzY2YuLjg3Mzk5YTE3MGRjNjE3OTkyMDZjMWY5MzNmNmVhNjE5ZGE0MmNlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaApAQCAtODQs
NiArODQsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdBS1Jlc3Bv
bmRlcgogICAgIFdBS1ZpZXcgKl9uZXh0UmVzcG9uZGVyOwogCiAgICAgQk9PTCBfdmlzaWJsZTsK
KyAgICBCT09MIF9pc0luU25hcHNob3R0aW5nUGFpbnQ7CiAgICAgQk9PTCBfdXNlT3JpZW50YXRp
b25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5nOwogICAgIEJPT0wgX2VudGlyZVdpbmRvd1Zpc2li
bGVGb3JUZXN0aW5nOwogfQpAQCAtMTMxLDYgKzEzMiw5IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAtICh2b2lkKXNlbmRFdmVudFN5bmNocm9u
b3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudDsKIC0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50OihX
ZWJFdmVudCAqKWFuRXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUNvbnRl
bnRDaGFuZ2U7CiAKKy0gKHZvaWQpc2V0SXNJblNuYXBzaG90dGluZ1BhaW50OihCT09MKWlzSW5T
bmFwc2hvdHRpbmdQYWludDsKKy0gKEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OworCiAvLyBU
aHJlYWQgc2FmZSB3YXkgb2YgcHJvdmlkaW5nIHRoZSAidXNhYmxlIiByZWN0IG9mIHRoZSBXQUtX
aW5kb3cgaW4gdGhlIHZpZXdwb3J0L3Njcm9sbHZpZXcuCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9s
bFZpZXdSZWN0OwogLy8gc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0IHNob3VsZCBvbmx5IGV2ZXIg
YmUgY2FsbGVkIGZyb20gVUlLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCmluZGV4IDk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIwZTI2MzgxZjkw
YjkuLjAyNjk4MmM5YTQxN2JiNzgwN2JiYWYxZmRiYmRmOTdkZDIyODJiNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC00MzgsNiArNDM4LDE2
IEBAIC0gKHZvaWQpc2V0VGlsZXNPcGFxdWU6KEJPT0wpb3BhcXVlCiAgICAgX3RpbGVDYWNoZS0+
c2V0VGlsZXNPcGFxdWUob3BhcXVlKTsKIH0KIAorLSAodm9pZClzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6KEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50Cit7CisgICAgX2lzSW5TbmFwc2hvdHRp
bmdQYWludCA9IGlzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKworLSAoQk9PTClpc0luU25hcHNo
b3R0aW5nUGFpbnQKK3sKKyAgICByZXR1cm4gX2lzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKwog
LSAodm9pZClzZXRFbnRpcmVXaW5kb3dWaXNpYmxlRm9yVGVzdGluZzooQk9PTCllbnRpcmVXaW5k
b3dWaXNpYmxlCiB7CiAgICAgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0aW5nID0gZW50aXJl
V2luZG93VmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IGYx
NjdlODdhOGUwMjIxMjJjZGZmMDRkNmI2NjhhN2M5YzIwOWQzMTYuLjU5OGU4NTBlM2M3MjdkZThj
ODI1YWNlZjJkYzhlOTlmZjk3OTIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaApAQCAtNTgsMTIgKzU4LDEzIEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQ
YWludEJlaGF2aW9yU2tpcFNlbGVjdGlvbkhpZ2hsaWdodCAgICAgID0gMSA8PCAxLAogICAgIFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCAgICAgICAgICAgICAgPSAxIDw8IDIsCiAgICAgUGFp
bnRCZWhhdmlvckZvcmNlV2hpdGVUZXh0ICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA0LAotICAgIFBhaW50
QmVoYXZpb3JSZW5kZXJpbmdTVkdNYXNrICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgUGFpbnRC
ZWhhdmlvclNraXBSb290QmFja2dyb3VuZCAgICAgICAgICA9IDEgPDwgNiwKLSAgICBQYWludEJl
aGF2aW9yUm9vdEJhY2tncm91bmRPbmx5ICAgICAgICAgID0gMSA8PCA3LAotICAgIFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDgsCi0gICAgUGFpbnRCZWhh
dmlvckV4Y2x1ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOSwKKyAgICBQYWludEJlaGF2
aW9yUmVuZGVyaW5nU1ZHTWFzayAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFBhaW50QmVoYXZp
b3JTa2lwUm9vdEJhY2tncm91bmQgICAgICAgICAgPSAxIDw8IDUsCisgICAgUGFpbnRCZWhhdmlv
clJvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICA9IDEgPDwgNiwKKyAgICBQYWludEJlaGF2aW9y
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAorICAgIFBhaW50QmVoYXZpb3JF
eGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9w
IGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCisgICAgUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZyAgICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRp
bmcsIGUuZy4gZm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCiB9OwogCiB0eXBlZGVm
IHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDg5ZDM1Y2YwNWE1NTgyNDQ2MjNkNzIwMWY0Yzc4ZTMxOTFmZWEzNzkuLjA2Njc2
Y2YxNGJhMzFhMTcxOTNlZjA1NDUyZTgxYTA2OGVjMjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYQogICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwdXNoIGEgdHJhbnNwYXJl
bmN5IGxheWVyIHRvIHJlbmRlciBvdXIgbWFzay4KICAgICBib29sIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IGZhbHNlOwogICAgIGJvb2wgY29tcG9zaXRlZE1hc2sgPSBoYXNMYXllcigpICYmIGxh
eWVyKCktPmhhc0NvbXBvc2l0ZWRNYXNrKCk7Ci0gICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMgPSB2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyA9IHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBv
c2l0ZVNvdXJjZU92ZXI7CiAKICAgICBib29sIGFsbE1hc2tJbWFnZXNMb2FkZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggZmQ4NWJmOTdkOWIzZmZkNzg2MTRkMzc5YzU0NjBjYTUyMGY1NzBlZi4uNWViNTExYzZk
YjEwMzIyMjQzMTI0YzZlNmZmMTk5MDE2MTg2OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04ODIsNyArODgyLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAg
YXV0byBkZWNvZGluZ01vZGUgPSAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpID8gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAgICAgICAgYXV0
byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKSA/
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0
UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5
LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhj
b21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMTZhOTQwNGRmYzhk
MzRmMzhhY2QzYzQ3MTQ3OWM3YzBiNjhhYTZmZi4uNzMzYzllNzFmZTNiY2JiZTZjNTgxOWFmNmI1
NjdkMGI3YTYzNDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoY2xp
cCkKICAgICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKIAotICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFjdG9y
KSk7CiAgICAgCiAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdlcyBh
cyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBt
YXkgd2FudCAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxlbWVu
dEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgpOwog
fQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IGlmICghaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgfHwgaW1hZ2VSZXNvdXJjZSgpLmVy
cm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDAp
CiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogCiAgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgpLgog
ICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAgIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXpl
KCkpKSA6IEludGVycG9sYXRpb25EZWZhdWx0OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlu
dGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KHBhaW50SW5m
by5jb250ZXh0KCksICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6IElu
dGVycG9sYXRpb25EZWZhdWx0OwogCiAjaWYgVVNFKENHKQogICAgIGlmIChpczxQREZEb2N1bWVu
dEltYWdlPihpbWFnZSkpCkBAIC01ODQsOCArNTg0LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRp
bmdzKHNldHRpbmdzKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHZpZXcoKS5m
cmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzKSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFz
eW5jaHJvbm91czsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01v
ZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKworICAgIGF1dG8g
ZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2Rl
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIGJvb2wgUmVu
ZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IGFkYjkyZGZkMjczMmY1OGYzOWRmOGU1Y2UxZGUzODU2OGY4NDhmMzcuLjkx
MmJlZTQ0NDVmZWIzYThlYjI0NjQyNTE0ZmE4NjcwOTM5OWFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdjOWE4YTkxMTM4MTQ1MTE3ZWY1
NjkwNjQzZTM1NWY2ZGMwNTAxMDcuLjQ2NTY4YTA5MzUzZDhkNWIzODhlOThmZDQxOGU3N2MxZDk5
ZjllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDM4
Myw2ICs0MzgzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgZWxzZSBpZiAo
bG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQog
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRP
bmx5OwogCisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmc7CisKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCkBAIC00Nzg1LDYgKzQ3
ODgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChsb2NhbFBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAg
IGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAor
ICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZykKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmc7CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBm
cmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNs
aXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdt
ZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91
bmRSZWN0LmlzRW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzk5ODI1ZTJi
OGE5OTcwZGI5Y2Y4YjQyZmY4NDZiYjEyOWM1OWQxMi4uOTM2MDdlMmMyYzYyMDRlMjZkYWY5Y2E1
NjcyMWFiZTZkZGIxMzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
LCBHcmFwCiB9CiAKIC8vIFVwLWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNh
bGxiYWNrLgotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNs
aXApCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNz
TGF5ZXJQYWludGluZ1BoYXNlIHBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHJl
bmRlcmVyKCkucGFnZSgpLnNldElzUGFpbnRpbmcodHJ1ZSk7CkBAIC0yNTY4LDcgKzI1NjgsMTEg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QoZW5jbG9zaW5nSW50UmVjdChjb21wb3NpdGVkQm91bmRzSW5jbHVkaW5nTWFyZ2luKCkpKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVz
dGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0
cy4KLSAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlS
ZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgUGFpbnRC
ZWhhdmlvciBiZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWw7CisgICAgICAgIGlmIChmbGFn
cyA9PSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICAgICAg
YmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKworICAgICAgICBwYWludElu
dG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBwYWlu
dGluZ1BoYXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50
KHJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09
IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDc3N2Y5YmFhZTVjNjcyMTJkMmY3NjJl
MDY2MTU5NWZjYzFlMTA3Mi4uYzhmYmI4MTM4YTU0NGNlNTIzOWQ4MWM1MDRlZDI2NmFlY2ZiMzhi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hCZWZv
cmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogCiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBjb250ZW50c1NjYWxl
TXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggMjFmNmQ1MTg1YjBmYWRlOWE2OTNiZTBiZTg0YzE5YzdlMDU5ZDA3My4uNWFl
NWJkOTM0NjYyNjk4YTRlYjVjN2RhMTc3MDMwNTQzMTZlM2JkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjMsNyAr
Mjg2Myw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdy
YXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3Mp
CiB7CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRl
bXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NM
YXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjOWQ0OGIxOWRiZTZl
MGQ4OWM5MzBlMmVkZDRiYTdhYWM1YWI4ZWZmLi4wN2Q3NjFkNTE5Yzk0YjE1ZDBmZTdmMjE4ZGMy
ODQ0YjFjYWViOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEdy
YXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIG5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhp
Y3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWlu
dEZsYWdzKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJlY3RD
b21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZjJkNmVkNmFm
ZmJlMTVjNzU5YTBkYzQ3MThiODY0Mzk5NWY0N2EzLi5kMzdjNDg2YWRmNWI0MzY5ZTkzMTU2N2Jl
NGI3MWQ2MWFmYTM1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBj
b250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCi0g
ICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIHBhaW50SW50b1Jl
Y3QocGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxs
c2NyZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkp
IHsKLSAgICAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICBpZiAocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQog
ICAgICAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRl
eHQsIHJlY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQo
Y29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGNmMDQ4NThiNTk2ZTkzYTdmZDljODMwYTFm
NzFhNDdhMjk0ZmIzY2MuLmMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAo
dm9pZClhZGRXaW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09ic2VydmVyczsK
IC0gKEJPT0wpc2hvdWxkQ2xpcE91dFBsdWdpbjsKLS0gKEJPT0wpaW5GbGF0dGVuaW5nUGFpbnQ7
CiAKIC0gKEJPT0wpc3VwcG9ydHNTbmFwc2hvdHRpbmc7CiAtICh2b2lkKWNhY2hlU25hcHNob3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0KaW5kZXggMjFmOTA0NWVmMzc1NzgwNzhkNGNkN2IxOTg5ZDE5Y2MzOWExNThh
NC4uNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNDM4LDE0ICs0MzgsNiBAQCAtIChCT09MKXNob3VsZENsaXBPdXRQbHVnaW4KICAgICBy
ZXR1cm4gIXdpbmRvdyB8fCBbd2luZG93IGlzTWluaWF0dXJpemVkXSB8fCBbTlNBcHAgaXNIaWRk
ZW5dIHx8ICFbc2VsZiBpc0Rlc2NlbmRhbnRPZjpbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld11d
IHx8IFtzZWxmIGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl07CiB9CiAKLS0gKEJPT0wpaW5G
bGF0dGVuaW5nUGFpbnQKLXsKLSAgICBhdXRvKiByZW5kZXJlciA9IF9lbGVtZW50LT5yZW5kZXJl
cigpOwotICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIHJldHVybiAhIShkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVj
dD4oKnJlbmRlcmVyKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci19Ci0KIC0gKEJPT0wpc3VwcG9ydHNT
bmFwc2hvdHRpbmcKIHsKICAgICByZXR1cm4gW19wbHVnaW5QYWNrYWdlLmdldCgpIHN1cHBvcnRz
U25hcHNob3R0aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDcw
MzI2MDA3NGVjMzM5Yzg4ODIwYjc5NTBjZmIxNDRlZDc3NGNkODQuLjljMGY4MmRlYmQ1YWViMDQy
ZTNhMDU1NGYwNTlmNTNhNzgwMDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV0FLU2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV0tHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
UnVuLmg+CiAjZW5kaWYKQEAgLTU4MiwyNCArNTgzLDMxIEBAIC0gKE5TU3RyaW5nICopX3N0cmlu
Z0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgcmV0dXJuIHBsYWluVGV4dChjb3JlKHJh
bmdlKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotLSAoQk9PTClf
c2hvdWxkRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOihDR0NvbnRleHRSZWYpY29udGV4dAorCist
IChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gLWN1cnJlbnRD
b250ZXh0RHJhd2luZ1RvU2NyZWVuIHJldHVybnMgWUVTIGZvciBiaXRtYXAgY29udGV4dHMuCiAg
ICAgQk9PTCBpc1ByaW50aW5nID0gIVtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dERy
YXdpbmdUb1NjcmVlbl07CiAgICAgaWYgKGlzUHJpbnRpbmcpCi0gICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCiAgICAgaWYgKCFXS0NHQ29udGV4
dElzQml0bWFwQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIE5POworICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWln
aHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4K
ICAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZp
ZXddOwotICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0gJiYgWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9M
YXllcl0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBbZ2V0V2ViVmlldyhzZWxm
KSBfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXBd
OworICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNz
XV0pIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChbW2RvY3VtZW50VmlldyB3aW5k
b3ddIGlzSW5TbmFwc2hvdHRpbmdQYWludF0pCisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZzsKKyNlbmRpZgorICAgICAgICBpZiAoWyhXZWJIVE1MVmlldyAqKWRv
Y3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogfQogCiAtICh2b2lkKV9kcmF3
UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQpAQCAtNjIy
LDI4ICs2MzAsMjkgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzT25s
eTooQk9PTCljb250ZW50c09ubHkKIAogICAgIEZyYW1lVmlldyogdmlldyA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnZpZXcoKTsKICAgICAKLSAgICBib29sIHNob3VsZEZsYXR0ZW4gPSBmYWxzZTsK
KyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gdmlldy0+cGFpbnRCZWhhdmlvcigpOwor
ICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZEJlaGF2aW9yOworICAgIAogICAg
IGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKICAgICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0IHRo
ZSBwYWludCBiZWhhdmlvciBmcm9tIG91ciBwYXJlbnQKLSAgICAgICAgRnJhbWVWaWV3KiBwYXJl
bnRWaWV3ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogMDsKLSAgICAgICAg
aWYgKHBhcmVudFZpZXcpCi0gICAgICAgICAgICBzaG91bGRGbGF0dGVuID0gcGFyZW50Vmlldy0+
cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lID8gcGFyZW50
RnJhbWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5w
YWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQor
ICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnRW
aWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQorICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzaG91bGRGbGF0dGVuID0gW3NlbGYgX3Nob3Vs
ZEZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczpjdHhdOworICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAgICAg
IAorICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKLSAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAoc2hv
dWxkRmxhdHRlbikgewotICAgICAgICBvbGRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3Io
KTsKLSAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgIH0KLSAgICAKICAgICBpZiAoY29u
dGVudHNPbmx5KQogICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgdmlldy0+cGFpbnQoY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKLSAgICBpZiAoc2hvdWxkRmxhdHRlbikKLSAgICAg
ICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0UGFp
bnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CiB9CiAKIC0gKEJPT0wpX2dldFZpc2libGVSZWN0OihO
U1JlY3QqKXJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDVkNTVhYjEzYmE3NGNiN2YxYmZlY2I3OTE4NjcwMzIwM2YyY2QwN2IuLjk0Nzg5NTljY2VmZGU4
ZWQ2NjU5YzRmYWIyNDA5OGU1ZjdhMTdhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNzI5Nyw4ICs3Mjk3LDggQEAgc3RhdGljIENHSW1hZ2VSZWYgaW1h
Z2VGcm9tUmVjdChGcmFtZSogZnJhbWUsIENHUmVjdCByZWN0KQogICAgIFdlYkhUTUxWaWV3ICp2
aWV3ID0gKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIAogICAgIFBhaW50QmVoYXZp
b3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAg
ICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKKyAgICBmcmFtZS0+dmll
dygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyk7CisKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCiAgICAgQ0dSZWN0IGJvdW5kcyA9
IFt2aWV3IGJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggN2Mx
ZTA1N2MzN2UzZTFjN2FmMGVlNDdiNDVlNTZmOGZjZjU2YjZjYy4uNTlkYjllMDUyNWQ4NWYyOWVj
Y2EwNWI0NDY1MzMwZmEyM2U5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtMTM2OSw3ICsxMzY5LDYgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbHNlCiAg
ICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xv
cihDb2xvcjo6d2hpdGUpKTsKICNlbmRpZgotICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5l
ZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBfcHJpdmF0ZS0+d2luZG93VmlzaWJpbGl0eU9ic2VydmVyID0gYWRvcHRO
UyhbW1dlYldpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZd
KTsKQEAgLTQ1MDQsMTYgKzQ1MDMsNiBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJsZQog
ICAgIHJldHVybiBZRVM7CiB9CiAKLS0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9z
aXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWcKLXsKLSAgICBfcHJpdmF0
ZS0+aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAg
PSBmbGFnOwotfQotCi0tIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJz
V2hlbkRyYXdpbmdUb0JpdG1hcAotewotICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVkZXNGbGF0
dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7Ci19Ci0KIC0gKHZvaWQp
c2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKaW5kZXggNmMzNjkyODY3N2JmNjUzNjRlYWJkY2M1NmUwOTQ1YzEwNmMyZTY5My4uMGE1NDA2
ODNmYTJlNGQ3NWYwMTc5OGQxNmQ1YzBkNmVmYTZmZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZhdGU6CiAKICAgICBC
T09MIHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCi0gICAgQk9PTCBpbmNsdWRlc0ZsYXR0
ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKLQogICAgIC8vIFdoZW4g
dGhpcyBmbGFnIGlzIHNldCwgbmV4dCB0aW1lIGEgV2ViSFRNTFZpZXcgZHJhd3MsIGl0IG5lZWRz
IHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgc2NyZWVuIHVwZGF0ZXMKICAgICAvLyBzbyB0aGF0IHRo
ZSBOU1ZpZXcgZHJhd2luZyBpcyB2aXN1YWxseSBzeW5jaHJvbml6ZWQgd2l0aCBDQUxheWVyIHVw
ZGF0ZXMuCiAgICAgQk9PTCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5OTQ3ODZiMTRl
OTE4Y2JlNzkzNzc0NTczMDQwNTg3ZjFkNjFiYjMuLjRmZDA3NWEzYzBiY2FlYTc4ZDJhMTgwN2U3
ZWM1NjU5ZDc5YmZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKQEAgLTc2NSwxMCArNzY1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAKIC8vIFJldHVybnMgWUVTIGlmIE5TVmlldyAtZGlzcGxheVJlY3RJZ25vcmluZ09wYWNp
dHk6aW5Db250ZXh0OiB3aWxsIHByb2R1Y2UgYSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY29udGVudC4KIC0gKEJPT0wpX2lzU29mdHdhcmVSZW5kZXJhYmxlOwotLy8gV2hlbiBkcmF3
aW5nIGludG8gYSBiaXRtYXAgY29udGV4dCwgd2Ugbm9ybWFsbHkgZmxhdHRlbiBjb21wb3NpdGlu
ZyBsYXllcnMgKGFuZCBkaXN0b3J0IDNEIHRyYW5zZm9ybXMpLgotLy8gQ2xpZW50cyB3aG8gYXJl
IGFibGUgdG8gY2FwdHVyZSB0aGVpciBvd24gY29weSBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXJz
IG5lZWQgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoaXMuCi0tICh2b2lkKV9zZXRJbmNsdWRlc0Zs
YXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDooQk9PTClmbGFnOwot
LSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9C
aXRtYXA7CiAKIC0gKHZvaWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZzsKIC0gKEJPT0wp
aXNUcmFja2luZ1JlcGFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAppbmRleCAzNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1
MmIwNjRmLi45ZTYwYzRmZDYzN2M4ZGM5MGM3MDViMWI0YTcwZTdhNmVhMDRhZTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVy
QW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsgfQogICAgIHZpcnR1
YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xh
eWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgeyB9CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggMjg0MGI5NTY2M2NmZTkzZGY1NWMxMDJkOWFi
ODMwZTA5N2FmZTg3Yi4uY2U3MDUzZDIzM2NkODc0YmFhMmY4M2MwMDViYmUyNDI4YjRlNWQyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0zNDAsMTcgKzM0MCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgog
ICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgbV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5k
cyk7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVu
dHMobV9sYXllciwgY29udGV4dCwgZGlydHlCb3VuZHMsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
OjpOb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJv
cExheWVyOgotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoK
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhp
ZXJhcmNoeS4gV2UgbmVlZCB0byBwYWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIg
aW4gb3JkZXIgdG8gc2VlIHRoZSByZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1Jl
Y3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRl
eHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5v
bmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXgg
MzQ3MWQyZGQzMjhiYzc4ZmFhNDA2YTVmZmI1NjYzN2Y1YTQ4ZGFmYi4uY2E0OWIwYzM3OTJmMmVi
NWI2ZDFmODVhYzJiMWI4MmM4ZmIyMjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0
JiBwYWludGkKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rp
b25IaWdobGlnaHRpbmcpCiAgICAgICAgIHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3
OjpFeGNsdWRlU2VsZWN0aW9uOwogCi0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0g
ZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+
cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAppbmRleCBmNzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0Li5k
MWZiYzI1ZDVjMjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsKIAogICAgIFBhaW50QmVoYXZpb3Igb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yU2Vs
ZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
cyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggODExZWVlYTIwYjRjODIzNGM2NDM4OTc0MzAyZGRl
NmFjZmM2MTE5NC4uZGM1ZmQyMjg4ZjViZjYwNzIwNmI2ZDc3NTgxNTUwZmJhY2VlOWFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiAgICAgICAgIG1fY2xpZW50
Lm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKIH0KIAotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNv
bnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewogICAg
IG1fY2xpZW50LnBhaW50TGF5ZXJDb250ZW50cyhncmFwaGljc0xheWVyLCBncmFwaGljc0NvbnRl
eHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCA3YzU0MDE4NzMyMGVi
YmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4Li5iMThhZmEyMjA5MTgzMzYzMWJhZTEwNGQ2NDFh
ZGJjYmI5MmExMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5oCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gR3Jh
cGhpY3NMYXllckNsaWVudAogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIHRpbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVjdCwgR3Jh
cGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NzFlYzcwNzY0YzI4MGEwNmI4OTEyMDhkYmM0ODA2NzA2MGI0NTNlLi4wZjJmY2Ix
NjA2MDg5ZTQzY2UxY2YyODNkZTI4YWY0NzEzZTc5NWVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDUtMjIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU25hcHNo
b3R0aW5nIHZpYSAtcmVuZGVySW5Db250ZXh0OiBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2Ug
ZGVjb2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcyNDg1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjc2MTQ2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBzaG90VmlhUmVu
ZGVySW5Db250ZXh0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVySW5Db250ZXh0V2ViVmll
d0RlbGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtSZW5kZXJJbkNv
bnRleHRXZWJWaWV3RGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFBpeGVsSW5kZXgpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTctMDUtMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIEVOQUJMRShBUFBMRV9QQVlfREVMRUdBVEUpIHNob3VsZCBiZSBOTyBvbiBt
YWNPUyBTaWVycmEgYW5kIGVhcmxpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk2Yzcz
YmJkMDVhMzg2NGU3OTFkOGU1YjQ0NGM0Y2NlYzE0YjBkMi4uOGNiMWI2NWNlNmFjN2RkYjdkZjJl
ZjkyMDczNTIwZmNkNjg3NDBhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzLDYgKzMz
LDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEz
OUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsK
IAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8q
IFRpbWUuY3BwICovOyB9OwogCQkwRjNCOTRBNzFBNzcyNjc0MDBERTMyNzIgLyogV0tXZWJWaWV3
RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRl
SmF2YVNjcmlwdC5tbSAqLzsgfTsKKwkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVu
ZGVySW5Db250ZXh0Lm1tICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0QkQgLyogZmlu
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87IH07CiAJCTFBMzUy
NEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM1MjRBQzFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUu
Y3BwICovOyB9OwogCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTRGODFDRDFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVn
SW4ubW0gKi87IH07CkBAIC04OTgsNiArODk5LDggQEAKIAkJMEYxN0JCRDQxNUFGNkM0RDAwN0FC
NzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nl
c3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDMjBCNzFEQ0Q1NDQ4MDA1
NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjk0QTUxQTc3MjY2QzAw
REUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8q
IFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNEZGQUEwMUVEM0QwREUwMEY3MTExRiAvKiBJbWFnZUlPLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSW1hZ2VJTy5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RL
Uk9PVDsgfTsKIAkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRCbGFja1RyZWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyog
TWV0YUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZXRhQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNDQ3OTcx
Qjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODY3LDYgKzE4NzAsNyBAQAogCQk3QzgzRTAyODFEMEE1Q0RGMDBGRUJDRjMgLyogRnJh
bWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEY0RkZBQTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovLAogCQkJCTYz
NDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovLAogCQkJ
CTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAog
CQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliICovLApAQCAt
MjUxNiw2ICsyNTIwLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEQzhFNDlBMUJDNzI4RkUw
MDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8q
IEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovLAorCQkJCTBGNEZGQTlEMUVEM0FBODUwMEY3
MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNDEsNiArMzA0Niw3IEBA
CiAJCQkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlkQmVn
aW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIw
MDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNEZGQTlFMUVE
M0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREUxQTQxMUE5MjAwNDQ3QzRDIC8qIFVSTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMDFBNDExQTQ0MDA0NDdDNEMgLyogVVJMRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA5MTVjYzM2NDRjNzE1ZWExZTZhZjg5MWZjZmU5NDViNzM0YzM4ZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lvcy9TbmFwc2hv
dFZpYVJlbmRlckluQ29udGV4dC5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPHN0ZGxpYi5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCBsb2FkQ29tcGxldGUgPSBm
YWxzZTsKK3N0YXRpYyBib29sIGxvYWRGYWlsZWQgPSBmYWxzZTsKKworQGludGVyZmFjZSBSZW5k
ZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgOiBOU09iamVjdCA8VUlXZWJWaWV3RGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUK
KworLSAodm9pZCl3ZWJWaWV3RGlkRmluaXNoTG9hZDooVUlXZWJWaWV3ICopd2ViVmlldworewor
ICAgIGxvYWRDb21wbGV0ZSA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooVUlXZWJWaWV3
ICopd2ViVmlldyBkaWRGYWlsTG9hZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAg
bG9hZENvbXBsZXRlID0gdHJ1ZTsKKyAgICBsb2FkRmFpbGVkID0gdHJ1ZTsKK30KKworQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ludGVnZXIgZ2V0UGl4ZWxJ
bmRleChOU0ludGVnZXIgeCwgTlNJbnRlZ2VyIHksIE5TSW50ZWdlciB3aWR0aCkKK3sKKyAgICBy
ZXR1cm4gKHkgKiB3aWR0aCArIHgpICogNDsKK30KKworVEVTVChXZWJLaXQxLCBSZW5kZXJJbkNv
bnRleHRTbmFwc2hvdCkKK3sKKyAgICBjb25zdCBOU0ludGVnZXIgd2lkdGggPSA4MDA7CisgICAg
Y29uc3QgTlNJbnRlZ2VyIGhlaWdodCA9IDYwMDsKKyAgICAKKyAgICBSZXRhaW5QdHI8VUlXaW5k
b3c+IHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBSZXRhaW5QdHI8VUlXZWJWaWV3
PiB1aVdlYlZpZXcgPSBhZG9wdE5TKFtbVUlXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBbdWlXaW5kb3cgYWRkU3Vidmll
dzp1aVdlYlZpZXcuZ2V0KCldOworICAgIAorICAgIFJldGFpblB0cjxSZW5kZXJJbkNvbnRleHRX
ZWJWaWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVuZGVySW5Db250ZXh0V2Vi
Vmlld0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgdWlXZWJWaWV3LmdldCgpLmRlbGVnYXRl
ID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICAKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OworICAgIE5TTG9nKEAiTG9hZGluZyAlQCIsIHVybCk7CisgICAgW3VpV2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIAorICAgIFV0aWw6
OnJ1bigmbG9hZENvbXBsZXRlKTsKKyAgICAKKyAgICBFWFBFQ1RfVFJVRShsb2FkQ29tcGxldGUp
OworICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbGVkKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWxsb2Mod2lkdGgg
KiBoZWlnaHQsIDQpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhl
bEJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgNCAqIHdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZyk7
CisgICAgCisgICAgLy8gRmxpcCB0aGUgY29udGV4dAorICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQuZ2V0KCksIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgLWhlaWdodCk7CisgICAgCisgICAgW3VpV2ViVmlldyBzZXRGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDgwMSwgNjAxKV07IC8vIFRoaXMgcmVzaXplIHN0b3BzIENvcmUgQW5pbWF0aW9u
IGZyb20gdXNpbmcgY2FjaGVkIGxheWVyIGJhY2tpbmcgc3RvcmUKKyAgICBbW3VpV2ViVmlldyBs
YXllcl0gcmVuZGVySW5Db250ZXh0OiBjb250ZXh0LmdldCgpXTsKKyAgICAKKyAgICAvLyBUaGVy
ZSBzaG91bGQgYmUgYSByZWQgc3F1YXJlIGF0IDAsMCAtIDEwMHgxMDAKKyAgICBOU0ludGVnZXIg
cGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoMSwgMSwgd2lkdGgpOworICAgIHVuc2lnbmVkIGNo
YXIgdmFsdWUgPSBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XTsKKyAgICBFWFBFQ1RfRVEoMjU1LCB2
YWx1ZSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAxXSk7Cisg
ICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAg
Ly8gUmlnaHQtYm90dG9tIGNvcm5lciBvZiB0aGUgZGl2ICgwLCAwLCAxMDAsIDEwMCkKKyAgICBw
aXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg5OCwgOTgsIHdpZHRoKTsKKyAgICBFWFBFQ1RfRVEo
MjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVm
ZmVyW3BpeGVsSW5kZXggKyAxXSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVs
SW5kZXggKyAyXSk7CisgICAgCisgICAgLy8gT3V0c2lkZSB0aGUgZGl2ICgwLCAwLCAxMDAsIDEw
MCkKKyAgICBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgxMDEsIDEwMSwgd2lkdGgpOworICAg
IEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsKKyAgICBFWFBFQ1RfRVEo
MjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4ICsgMV0pOworICAgIEVYUEVDVF9FUSgyNTUsIHBp
eGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAgZnJlZShwaXhlbEJ1ZmZlcik7
Cit9CisKK30KKworI2VuZGlmCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311032</attachid>
            <date>2017-05-23 11:40:01 -0700</date>
            <delta_ts>2017-05-23 12:58:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172485-20170523114000.patch</filename>
            <type>text/plain</type>
            <size>88608</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0Y2M2MDQ3ZTFjNGU4
ODMwNTczZmNkODAyODBlN2I0OTQ0M2I2Ni4uNTVmN2NkNzMwM2IxZDc2MWYzMjliYjBjNGRmYzhi
MzM1OWQ2MjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0yMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRp
bmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5jaHJvbm91cyBpbWFnZSBkZWNv
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI0
ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFVJV2ViVmlldyBjbGllbnRzIHNuYXBz
aG90IHRoZSB2aWV3IHZpYSAtcmVuZGVySW5Db250ZXh0OiBvbiB0aGUgVUlWaWV3J3MgbGF5ZXIs
CisgICAgICAgIFdlYktpdCBzaG91bGQgZG8gc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RlcyBzbyB0
aGF0IHRoZSBpbWFnZXMgc2hvdyBpbiB0aGUgc25hcHNob3QuCisKKyAgICAgICAgRml4IGJ5IHBs
dW1iaW5nIHRocm91Z2ggYSAic25hcHNob3R0aW5nIiBwYWludCBiZWhhdmlvciBmbGFnIGZyb20g
dHdvIHNvdXJjZSBsb2NhdGlvbnM6CisgICAgICAgIFdlYlNpbXBsZUxheWVyLCB1c2VkIGJ5IGNv
bXBvc2l0aW5nIGxheWVycywgYW5kIExlZ2FjeVRpbGVMYXllciwgdXNlZCBmb3IgdGhlIFdLMSB0
aWxlIGNhY2hlLgorICAgICAgICBPbiBXZWJTaW1wbGVMYXllciB0aGUgZmxhZyBwcm9wYWdhdGVz
IHRocm91Z2ggUGxhdGZvcm1DQUxheWVyIHRvIEdyYXBoaWNzTGF5ZXIsIGFuZCBvbiBMZWdhY3lU
aWxlTGF5ZXIKKyAgICAgICAgaXQgc2V0cyBzb21lIHN0YXRlIG9uIHRoZSBXQUtXaW5kb3csIHdo
aWNoIGlzIGRldGVjdGVkIGJ5IC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlv
bkNvbnRleHQ6XS4KKyAgICAgICAgSW4gYm90aCBjYXNlcywgdGhlIGZsYWcgYmVjb21lcyBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nIHdoaWNoIGlzIHBhc3NlZCBkb3duIHRocm91Z2ggcGFpbnRp
bmcKKyAgICAgICAgaW4gUGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuCisKKyAgICAgICAgRml4IGNv
ZGUgdGhhdCB3YXMgY2hlY2tpbmcgcGFpbnRCZWhhdmlvciBvbiB0aGUgRnJhbWVWaWV3IHRvIGp1
c3QgbG9va2luZyBhdCBQYWludEluZm8ucGFpbnRCZWhhdmlvciwKKyAgICAgICAgd2hpY2ggcmVx
dWlyZWQgcGFzc2luZyBQYWludEluZm8gYWxvbmcgaW4gUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoKS4KKworICAgICAgICBXZSBjYW4ndCBqdXN0IHVzZSB0aGUgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyBmbGFnLCBiZWNhdXNlIHRoYXQgdHJpZ2dlcnMKKyAgICAgICAg
YSBmbGF0dGVuaW5nIHBhaW50IG9mIGNvbXBvc2l0aW5nIGxheWVycywgYW5kIHdlIGRvbid0IHdh
bnQgdGhhdCBiZWhhdmlvciBmb3IgLXJlbmRlckluQ29udGV4dDosCisgICAgICAgIHNpbmNlIENv
cmVBbmltYXRpb24gY2FsbHMgLXJlbmRlckluQ29udGV4dDogb24gZWFjaCBvZiBvdXIgbGF5ZXJz
IGFuZCB3ZSBuZWVkIHRvIGF2b2lkIGRvdWJsZS1wYWludGluZy4KKyAgICAgICAgU28gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZyBpcyBub3cgYWRkZWQgdG8gdGhlIGNhbGwgc2l0ZXMgdGhhdCBh
bHNvIHNldCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzCisgICAgICAgIGlu
IG1vc3QgY2FzZXMuCisKKyAgICAgICAgVGVzdGVkIGJ5IFNuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRm
b3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJM
YXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciByZW5kZXJJ
bkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRyYXdJbkNvbnRleHQ6XSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oOiBVc2UgaW5pdGlhbGl6
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0xlZ2FjeVRpbGVMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAg
ICAgICgtW0xlZ2FjeVRpbGVMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tMZWdh
Y3lUaWxlTGF5ZXIgbGF5ZXJCZWluZ1BhaW50ZWRdKTogRGVsZXRlZC4gVGhlcmUgd2VyZSBubyBj
YWxsZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAg
KC1bV0FLVmlldyBfZHJhd1JlY3Q6Y29udGV4dDpsb2NrRm9jdXM6XSk6IGJvb2wgLT4gQk9PTAor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRJc0luU25h
cHNob3R0aW5nUGFpbnQ6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBpc0luU25hcHNob3R0aW5n
UGFpbnRdKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRQaGFzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2tJbWFnZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAxNy0wNS0xOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXdsaW5lIGFm
dGVyIHRoZSBVUkwgaW4gc2hvd0xheWVyVHJlZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzBiNjU2MzBkMjFmY2ZiMDA1YWM5NzExZWFhMzQ1Mjk4NWU2NzhkYi4uZTk5NDQ1YWRlOWUwMjRh
Mzg2ODhlM2EyM2RkMGM4YzIxMjhiNjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA1LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFNuYXBzaG90dGluZyB2aWEgLXJlbmRlckluQ29udGV4dDogc2hvdWxkIGRvIHN5
bmNocm9ub3VzIGltYWdlIGRlY29kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MjQ4NQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI3NjE0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0
bWFwOiBTUEkgdGhhdCBubyBsb25nZXIKKyAgICAgICAgaGFzIGFueSBjYWxsZXJzLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3IGluRmxhdHRlbmluZ1BhaW50XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JG
b3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zaG91bGRGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0SW5jbHVkZXNGbGF0dGVuZWRD
b21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZXcgX2luY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2lu
Z1RvQml0bWFwXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wNS0xOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKEFQUExFX1BBWV9ERUxF
R0FURSkgc2hvdWxkIGJlIE5PIG9uIG1hY09TIFNpZXJyYSBhbmQgZWFybGllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNmNGYzOWFjNGQ4YzExZGZmODQ2ZDg2ZDY3NjhkM2ZjNWQ1YmVlZmIuLjMwMWYxYTk1YzUz
YmVlOTM0OTlkNDYwNmFhZDM4ZjA3YjU2NmZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxNy0wNS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTbmFwc2hvdHRpbmcgdmlhIC1yZW5kZXJJbkNvbnRleHQ6IHNob3VsZCBkbyBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzIyNzYxNDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nIGZsYWcgaW4gZnVuY3Rpb25zIHRoYXQgZG8gc25hcHNo
b3R0aW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJl
bmRlcmVkSW1hZ2UpOgorCiAyMDE3LTA1LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZG8gbm90IGNhY2hlIGdVTSBwZXJt
aXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDNhMWU1OGY3NDlmMzc4YzA4NGE0NzVkOTgxNGJhYmFjOGI1OTFl
Y2EuLmVlODE4YmEyZjcxZmZkOGExNTk0NWEzNzFhYzQwNDZjNzYyM2UwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAg
LTE0MDIsNyArMTQwMiw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250
ZXh0KCksIHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZywgbnVsbHB0ciwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJhZjZjZDdhYTdjYjM1ZjNmZTBjNTc0N2Q5
NTM3MzFkNTZlYTJhODcuLjJiY2Y2NzQzYzIxZTBiMTA0NzllYWNhNjZkM2E0MzE4YWFkMzc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTksMTAgKzQzOTksMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsIFBhaW4KICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3Io
KSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIAorICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+
cHJpbnRpbmcoKSkKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTI5LDcgKzQ1MzIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdAogCiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5l
dyBiZWhhdmlvciBhcHByb3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Ig
b2xkQmVoYXZpb3IgPSBwYWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKTsKIAogICAgIC8vIElmIHRo
ZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMg
d2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRE9NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggYzIyMWRj
MjgxZmRlZDAwYTE4ZTBiYjFmNmQzY2Y1MDYzMGUwYTBkMC4uNDI0MWE0YmZlMmI5OTFmNmU3MWE0
ZWUzNTI0ODM3MTZkZmE2MGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzTmFtZXMoYm9vbCBw
YXJhCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBh
aW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0
KQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRGbGFn
cykKIHsKICAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRHcmFwaGljc0xheWVyIDogbV9vdmVybGF5
R3JhcGhpY3NMYXllcnMpIHsKICAgICAgICAgaWYgKG92ZXJsYXlBbmRHcmFwaGljc0xheWVyLnZh
bHVlLmdldCgpICE9IGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheUNvbnRyb2xsZXIuaAppbmRleCAwNTQ2OTI5YWU2NTQ3MTIwZGI0OGQwOTkxMjZkZmJkOGUx
YzQyMDM5Li5iOTY0NTFhZDkwOTczYjI0NjMyZDlhYjg0N2M2NGNlOGJlNWU2NWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZTsKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2tpcExh
eWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggMDdkODhh
Mjg3NmIyYmE0OGRkYmQ1ZThlZjgxZGFjOWMxNTQ1N2NmZS4uZmZjNDk0MmIyMzIzZWNiMjZlYzg1
ZDlmZjFjNWIyZGJmYTAwYTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlCisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KGNsaXAsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuOGYpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRleCBhMTMx
OWJiMGU5ZWNlZjAyZTk4MTFmMWYzNmQxYWQ5MjM4NDkxNzNjLi5kM2FhYjlmZDYxNmFjN2JjMzcw
NjFhN2Q0NzFiM2ZlODNkMzY2ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAogICAgICAgICB2b2lkIG5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgaW5DbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7CiAgICAgICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBk
aWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmYmExMDlhOTYzZGJmM2Y0
ZTI4MDIyMmNkNjc1OGNmMDQ3ZGIxNjlhLi4wNzA5NmU4MjdmMzhjMTJkNDNjNzVhZTBhN2E0Mzhl
Y2FkNzBhYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheQogICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCk7CiB9CiAKLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0
UmVjdCYpCit2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFw
aGljc0xheWVyUGFpbnRGbGFncykKIHsKICAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTJmNmNmZmNiZGQyYmI0MWQwMWZmZGY4NzFlZGU2
YTEwNTA3YzYzYy4uNjk4Zjc1OGYxOTNlNGI1YjY3NTU3ZjRkMzg3MWEzYzNjODNjNzVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgR3JhcGhp
Y3NMYXllcjo6cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdz
KQogewogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBvZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgtb2Zmc2V0KTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdChjbGlwKTsKICAgICBjbGlwUmVj
dC5tb3ZlKG9mZnNldCk7CiAKLSAgICBtX2NsaWVudC5wYWludENvbnRlbnRzKHRoaXMsIGNvbnRl
eHQsIG1fcGFpbnRpbmdQaGFzZSwgY2xpcFJlY3QpOworICAgIG1fY2xpZW50LnBhaW50Q29udGVu
dHModGhpcywgY29udGV4dCwgbV9wYWludGluZ1BoYXNlLCBjbGlwUmVjdCwgZmxhZ3MpOwogfQog
CiBTdHJpbmcgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDMyMmJmODBlZjI5NDQ0NzNlNjRiYzg0MDcyZDE0
YTM4YzVkNmIxNDIuLjk1ZmE3Yzg5ZjA0YzNmMGQ1OWUzMzc4YjUyZjk4MTUzYzU0MDg2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUcmFuc2l0aW9ucyBhcmUgaWRl
bnRpZmllZCBieSBhIHNwZWNpYWwgYW5pbWF0aW9uIG5hbWUgdGhhdCBjYW5ub3QgY2xhc2ggd2l0
aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCiAgICAgc3RhdGljIFN0cmluZyBhbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQpOwotICAgIAorCiAgICAgLy8gUmV0dXJu
IHRydWUgaWYgdGhlIGFuaW1hdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb21wb3NpdGluZyBzeXN0
ZW0uIElmIHRoaXMgcmV0dXJucwogICAgIC8vIGZhbHNlLCB0aGUgYW5pbWF0aW9uIHdpbGwgYmUg
cnVuIGJ5IENTU0FuaW1hdGlvbkNvbnRyb2xsZXIuCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBoYW5k
bGUgYm90aCB0cmFuc2l0aW9ucyBhbmQga2V5ZnJhbWUgYW5pbWF0aW9ucy4KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgCisKICAgICAvLyBMYXllciBjb250ZW50cwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KQEAgLTQ2NSwxMSArNDY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ2Fs
bGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gdG8gZHJhdyBsYXllciBj
b250ZW50cy4KLSAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCk7Ci0gICAgCisgICAgdm9pZCBwYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAs
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUp
OworCiAgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxh
eWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBlbnVtIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiB7IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duLCBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzQm90dG9tVXAgfTsKIAogICAgIC8vIEZsaXBwZWRuZXNzIG9mIHRoZSBj
b250ZW50cyBvZiB0aGlzIGxheWVyLiBEb2VzIG5vdCBhZmZlY3Qgc3VibGF5ZXIgZ2VvbWV0cnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmgKaW5kZXggZjZlOTBiOGUzNTIyOWIyNGE2NGJmNzZkNjRjZmM1ODk0OGQxMGY3
Ni4uNDVmNjUxMmY5ZDU1Zjk4ZGZlZDM2N2QwYjFkMGE1N2Y3MjkxZTlkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFw
aGljc0xheWVyQ2xpZW50X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllckNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
QEAgLTc2LDYgKzc1LDggQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKIH07
CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yOwogCitlbnVtIGNsYXNz
IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIHsgTm9uZSwgU25hcHNob3R0aW5nIH07CisgICAgCiBj
bGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFwaGlj
c0xheWVyQ2xpZW50KCkge30KQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIE5vdGlm
aWNhdGlvbiB0aGF0IHRoaXMgbGF5ZXIgcmVxdWlyZXMgYSBmbHVzaCBiZWZvcmUgdGhlIG5leHQg
ZGlzcGxheSByZWZyZXNoLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3Bs
YXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiAvKiBpbkNsaXAgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBH
cmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRS
ZWN0JiAvKiBpbkNsaXAgKi8sIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCB7IH0KIAogICAgIC8vIFByb3ZpZGVzIGN1cnJlbnQgdHJhbnNmb3JtICh0YWtpbmcgdHJh
bnNmb3JtLW9yaWdpbiBhbmQgYW5pbWF0aW9ucyBpbnRvIGFjY291bnQpLiBJbnB1dCBtYXRyaXgg
aGFzIGJlZW4KQEAgLTEzOSw0ICsxNDAsMyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggZTRkMGY5MTY5ZDQyNTRiMjlkZTMzODQ1N2EyNjlmNGIwMzQ1Y2IyOS4uOGEwYWQ1MDVl
ZDAxODQxZWJhMTMzMzA3Mjc1YTFhNmFiMzM3ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkgeyB9CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxh
dGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291
bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5
ZXIqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2NTExM2IwZDJhYjg1ZTI3NTA1
ZTc2NWY4NjFjNmMzOTllNjBkZmU1Li5iZTA4NzdjMTAzNzFiZThlMGE5NjQ1YWEzNTU0YzllYWNh
MzBlNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NjMsNyArMTU2Myw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9yCiAgICAgcmV0dXJuIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBj
bGlwKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
UGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzIGZsYWdzKQogewogICAgIG1faGFzRXZl
clBhaW50ZWQgPSB0cnVlOwogICAgIGlmIChtX2Rpc3BsYXlMaXN0KSB7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbgogICAgIH0KIAogICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKFBhaW50TGF5ZXJTdGFydCwgUGFpbnRMYXllckVuZCk7Ci0gICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7CisgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoY29udGV4dCwgY2xpcCwgZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IDUxMzlmYWY4MmU3ZjgyZThmY2ZkYjVjNWZkMTY1YTUwMDllN2NiM2MuLjlhZTE4MzQx
OGIwY2FlYzY5NmZmOGM1NzA2NTUzOTE2ZmM1Y2NiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkgb3ZlcnJp
ZGU7CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09y
aWVudGF0aW9uKCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBjbGlwKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJpZGU7
CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKFBsYXRmb3JtQ0FMYXllciop
IGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50
Q291bnQoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGUgeyByZXR1cm4gaW5jcmVtZW50UmVwYWlu
dENvdW50KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggYjJhMjE2OTEzZGYyOTMzOTYzOTZkODJlMzYzYjc2
MWIwNmE1MjMwYi4uZjk0YzA3ZTE2Y2MwNjhlNGE4YTNjODc0NTI5Njk3OWM2ZDAxMTFiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIC8vIEZ1
bmN0aW9ucyBhbGxvd3MgdXMgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gYWNyb3NzIFdlYlRpbGVk
TGF5ZXIgYW5kIFdlYkxheWVyCiAgICAgc3RhdGljIFJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVj
dHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKik7Ci0gICAgc3RhdGljIHZv
aWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBh
aW50UmVjdExpc3QmIGRpcnR5UmVjdHMpOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRl
bnRzKENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0
eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd1Jl
cGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWlu
dENvdW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CiAgICAgc3RhdGljIENH
UmVjdCBmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaAppbmRleCAxMGM4MmY0NGEwNWY0YzRjMjA2ZGFmYmE3MjJkZDg1YWM1NTU1MTFiLi4y
OGNiYzM1YjRlMWE4YTcyYjMzY2U2N2IwZDYzMjc2N2UyMTc4Y2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRfaAotI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKQEAgLTQ0LDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRp
b25TdGFydGVkKGNvbnN0IFN0cmluZyYgLyphbmltYXRpb25LZXkqLywgQ0ZUaW1lSW50ZXJ2YWwp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25z
dCBTdHJpbmcmIC8qYW5pbWF0aW9uS2V5Ki8pIHsgfQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
cjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpAQCAtNzIsNCArNzEsMyBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2Vu
ZGlmIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAppbmRleCAwMjYwYmFi
ODY2MzVlNWNhOTNiZTg2OWU4MmRhNmU1ZThlYjU5ZmRjLi5kNjJjN2Y1NzRlZWYzNGYzZmY3MWJm
MDYyNTdiMjNlNzU1YzgxZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGlj
YXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ip
OwogfQogCi12b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50
RmxhZ3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9ybUNBTGF5ZXIsIHBsYXRmb3JtQ0FM
YXllciA9PSBtX2xheWVyLnB0cigpKTsKICAgICBtX2NvbnRyb2xsZXIudGlsZUdyaWQoKS5kcmF3
VGlsZU1hcENvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5ZXIuZ2V0KCku
Ym91bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ292ZXJhZ2VNYXAuaAppbmRleCA4Y2NmZTE2MTUzYjNmODlhMWY1ZTlkMjA0OGI1NTc2
ZjYxNDE1ZjU5Li5hYjQzYTU2MDZkMjgwZmM0NjNkYTI5NDc4OWNkNjU2NGQ4YTQ4MTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJh
Z2VNYXAuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJy
aWRlOwogICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRleCAxMjIzNzIyOTli
NGIwYjNhNGE3NmU2OTIxNjk2OTVlNzAzNDRjMTVlLi5jYjFlYTUxZmM3YjI3MGE4MWM0NGYxYjJj
OWJhOWJmMTI2NTc5OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUdyaWQuY3BwCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBUaWxlR3JpZDo6ZHJh
d1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGxheWVyQm91bmRz
KSBjb24KICAgICB9CiB9CiAKLXZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29u
dGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChwdGhyZWFkX21haW5fbnAo
KSkKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogICAgICAgICBj
b250ZXh0LnNjYWxlKG1fc2NhbGUpOwogCiAgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWlu
dFJlY3RMaXN0IGRpcnR5UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFp
bnQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCAmbV9jb250cm9sbGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBmbGFncyk7CiAgICAgfQog
CiAgICAgaW50IHJlcGFpbnRDb3VudCA9IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRD
b3VudChwbGF0Zm9ybUNBTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVHcmlkLmgKaW5kZXggMzI1MzM2ZjgxOTFlNDU4MjNjNzU1ZDg3ODJjNDJhYTBk
ZTU3NjUxZC4uMmY4NzdiNDg3YTlhZTg0Zjc4MGNiMmEyYTc0MDIyMWE2NDhiYmNhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVRpbGVzKFZlY3RvcjxUaWxlR3Jp
ZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpOwogCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50
Ci0gICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IHBsYXRmb3JtQ0FMYXllckluY3Jl
bWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggZWEyMzhlNjg5ODgzMjRlOTI1MTEzMTM0ODc4NmJi
NDgwZmMzOGE0Zi4uMTY1ODE0NDU0Zjc4NjBhM2EzZDQ2YmNiMDc2YjU4YmVjMWI4YWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTExMTIsNyArMTExMiw3IEBAIFBs
YXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJl
Y3RzVG9QYWludChDR0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlz
dCYgZGlydHlSZWN0cykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhD
R0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cywgR3JhcGhpY3NMYXllclBhaW50Rmxh
Z3MgZmxhZ3MpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNv
bnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJDb250ZW50
cykKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KHBsYXRmb3JtQ0FMYXllciwgZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKKyAgICAgICAgICAgIGxh
eWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVy
LCBncmFwaGljc0NvbnRleHQsIHJlY3QsIGZsYWdzKTsKICAgICAgICAgfQogICAgICAgICAKICNp
ZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDVlMTQ5ZmQ0
YTgxZmU1MDg2NmFlYTA1MGExN2NiZGRmOTYzNDNiYjYuLjFiOTRjMjk0OWE3OGUxZGRmYWMxZTg4
NWEwNmZiM2U4ZDEyZTBjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxh
eWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFIKICAgICByZXR1cm4gZGlydHlSZWN0
czsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4
dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwg
UmVwYWludFJlY3RMaXN0JikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50
cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9y
bUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewog
ICAgIGludGVybihwbGF0Zm9ybUNBTGF5ZXIpLT5kaXNwbGF5Q2FsbGJhY2socGxhdGZvcm1DQUxh
eWVyLT5wbGF0Zm9ybUxheWVyKCksIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKaW5kZXggYWE4YTlhNzVkZGNmNWVjZDgzYzc4NTBlMDEzYmYw
NDBiMmU2NTIzYi4uNDY1YjRhM2UzMzc4MTE3NTFkYTlkMmMxZjBlNjZjN2NiODM5MTViYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHQKICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGxh
eWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCiAgICAgQ0dSZWN0IGNsaXBCb3VuZHMgPSBD
R0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CiAgICAgSW50UmVjdCBjbGlwKGVu
Y2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOwotICAgIGNsaWVudC0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQsIGNsaXApOworICAgIGNsaWVu
dC0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhvd25lcigpLCBncmFwaGljc0NvbnRleHQs
IGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKIAogICAgIGlmIChjbGllbnQt
PnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihvd25lcigpKQogICAgICAgICAmJiAh
cmVwYWludENvdW50ZXJzQXJlRHJhd25CeUdyaWRDb250cm9sbGVyKGxheWVyVHlwZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxl
ZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDMxNjY1YmY4MzE2YTdlNTQ3
MzFmMGZlMThiOWJhMDU0OTdlMDEwMTMuLmQ0ZWU1N2I2OGI0NzllNDVjZWVhNThmZDk3MzVlODMy
ODdjYzg4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpkaXNwbGF5Q2FsbGJhY2so
Q0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJlZgogICAgIC8vIHNtYWxsZXIgdGhhbiB0
aGUgbGF5ZXIgYm91bmRzIChlLmcuIHRpbGVkIGxheWVycykKICAgICBDR1JlY3QgY2xpcEJvdW5k
cyA9IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KTsKICAgICBJbnRSZWN0IGNs
aXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgY2xpZW50LT5wbGF0Zm9ybUNB
TGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7CisgICAg
Y2xpZW50LT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKG93bmVyKCksIGdyYXBoaWNzQ29u
dGV4dCwgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogCiAgICAgaWYgKGNs
aWVudC0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKG93bmVyKCkpKSB7CiAgICAg
ICAgIGludCBkcmF3Q291bnQgPSBjbGllbnQtPnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFp
bnRDb3VudChvd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLmgKaW5kZXggZGQ0Y2FkNzA4N2Y4NmEzYTAzMmI5MWUwMTg1NTNlNjI1ODE2
MDUyMi4uNDIyMzAwMzdjYjRiYWZmNjQ2ZGI2NjNhYjg2ODcxY2IwNGNiMmU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKQEAgLTI5LDcg
KzI5LDEwIEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKICNpZmRlZiBf
X09CSkNfXwotQGludGVyZmFjZSBXZWJTaW1wbGVMYXllciA6IENBTGF5ZXIKK0BpbnRlcmZhY2Ug
V2ViU2ltcGxlTGF5ZXIgOiBDQUxheWVyIHsKKyAgICBCT09MIG1faXNSZW5kZXJpbmdJbkNvbnRl
eHQ7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBXZWJTaW1wbGVMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IGVjZGVj
NWUxMmJkNjBiZTVkZjVjZTZmMWQ0NmU5OTAzM2FmZjZlYmUuLjdhNWViZTRmNTJkMDM2NWNkZTli
Mzg4MzZhNjMwMzI2ZjFhNGRlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkdyYXBo
aWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0tHcmFwaGljcy5oIgpAQCAtNTYsNyArNTcsNyBAQCAt
ICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwog
ICAgIGlmIChsYXllcikgewogICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlz
dCByZWN0c1RvUGFpbnQgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29u
dGV4dCwgbGF5ZXIpOwotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRz
KGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxheWVyLCByZWN0c1RvUGFpbnQsIHNlbGYuX2lz
UmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGlu
ZyA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKICAgICB9CiB9CiAKQEAgLTY0LDYg
KzY1LDE0IEBAIEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAogQGltcGxlbWVudGF0
aW9uIFdlYlNpbXBsZUxheWVyCiAKK0BzeW50aGVzaXplIF9pc1JlbmRlcmluZ0luQ29udGV4dCA9
IG1faXNSZW5kZXJpbmdJbkNvbnRleHQ7CisKKy0gKHZvaWQpcmVuZGVySW5Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAoreworICAgIFNldEZvclNjb3BlPEJPT0w+IGNoYW5nZShtX2lzUmVu
ZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAgIFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4
dF07Cit9CisKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CiB7
CiAgICAgLy8gRml4IGZvciA8cmRhcjovL3Byb2JsZW0vOTAxNTY3NT46IEZvcmNlIHRoZSBsYXll
ciBjb250ZW50IHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgdHJlZSBpcyByZXBhcmVudGVkLgpAQCAt
MTI4LDcgKzEzNyw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGxheWVy
LT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMg
PSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRl
eHQsIGNsaXBCb3VuZHMpOworICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
UGFpbnRDb250ZW50cyhsYXllciwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzLCBzZWxmLl9p
c1JlbmRlcmluZ0luQ29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRp
bmcgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggOTJjMjFkMjRi
MzAxOWVkNDEzN2U2ZTgxNDY5MjZjMzU0MDhjMThmNC4uNDAzNDNiNWI1MTNiNDcxNjY2ODZlNDBm
ZmQ5Y2Q5NmEwNWNmMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUuaApAQCAtMTMzLDcgKzEzMyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEludGVy
bmFsCiAgICAgdm9pZCBkb0xheW91dFRpbGVzKCk7Ci0gICAgdm9pZCBkcmF3TGF5ZXIoTGVnYWN5
VGlsZUxheWVyKiwgQ0dDb250ZXh0UmVmKTsKKyAgICAKKyAgICBlbnVtIGNsYXNzIERyYXdpbmdG
bGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OworICAgIHZvaWQgZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciosIENHQ29udGV4dFJlZiwgRHJhd2luZ0ZsYWdzKTsKICAgICB2b2lkIHByZXBhcmVU
b0RyYXcoKTsKICAgICB2b2lkIGZpbmlzaGVkQ3JlYXRpbmdUaWxlcyhib29sIGRpZENyZWF0ZVRp
bGVzLCBib29sIGNyZWF0ZU1vcmUpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEluTGF5ZXIo
Q0FMYXllciAqKSBjb25zdDsKQEAgLTE3MiwzMyArMTc0LDMzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGRyYXdSZXBsYWNlbWVudElt
YWdlKExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dJbWFnZVJlZik7Ci0gICAgdm9p
ZCBkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRSZWYsIENHUmVj
dCBkaXJ0eVJlY3QpOworICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVy
KiwgQ0dDb250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxhZ3MpOwogCi0gICAg
V0FLV2luZG93KiBtX3dpbmRvdzsKKyAgICBXQUtXaW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9
OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2U7
CiAKLSAgICBib29sIG1fa2VlcHNab29tZWRPdXRUaWxlczsKLQotICAgIGJvb2wgbV9oYXNQZW5k
aW5nTGF5b3V0VGlsZXM7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxpbmdNb2RlOwog
ICAgIC8vIEVuc3VyZSB0aGVyZSBhcmUgbm8gYXN5bmMgY2FsbHMgb24gYSBkZWFkIHRpbGUgY2Fj
aGUuCiAgICAgUmV0YWluUHRyPExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZT4gbV90b21ic3RvbmU7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9vdmVycmlkZVZpc2libGVSZWN0Owog
Ci0gICAgVGlsaW5nTW9kZSBtX3RpbGluZ01vZGU7Ci0gICAgVGlsaW5nRGlyZWN0aW9uIG1fdGls
aW5nRGlyZWN0aW9uOwotCi0gICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGJvb2wgbV90aWxl
c09wYXF1ZTsKLQotICAgIGJvb2wgbV90aWxlQm9yZGVyc1Zpc2libGU7Ci0gICAgYm9vbCBtX3Rp
bGVQYWludENvdW50ZXJzVmlzaWJsZTsKLSAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDsKLSAgICBib29sIG1faXNTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQ7Ci0KLSAg
ICBib29sIG1fZGlkQ2FsbFdpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsKKyAgICBJbnRTaXpl
IG1fdGlsZVNpemUgeyA1MTIsIDUxMiB9OworICAgIAorICAgIFRpbGluZ01vZGUgbV90aWxpbmdN
b2RlIHsgTm9ybWFsIH07CisgICAgVGlsaW5nRGlyZWN0aW9uIG1fdGlsaW5nRGlyZWN0aW9uIHsg
VGlsaW5nRGlyZWN0aW9uRG93biB9OworICAgIAorICAgIGJvb2wgbV9rZWVwc1pvb21lZE91dFRp
bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0xheW91dFRpbGVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzUGVuZGluZ1VwZGF0ZVRpbGluZ01vZGUgeyBmYWxzZSB9OworICAg
IGJvb2wgbV90aWxlc09wYXF1ZSB7IHRydWUgfTsKKyAgICBib29sIG1fdGlsZUJvcmRlcnNWaXNp
YmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzU3BlY3VsYXRpdmVUaWxlQ3JlYXRpb25FbmFibGVkIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV90aWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9kaWRDYWxsV2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5nIHsgZmFsc2UgfTsK
KyAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGls
ZUdyaWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVRpbGVHcmlkPiBtX3pvb21lZEluVGls
ZUdyaWQ7CiAKQEAgLTIwNiwxNiArMjA4LDE0IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8SW50
UmVjdD4gbV9zYXZlZERpc3BsYXlSZWN0czsKIAotICAgIGZsb2F0IG1fY3VycmVudFNjYWxlOwor
ICAgIGZsb2F0IG1fY3VycmVudFNjYWxlIHsgMSB9OwogCi0gICAgZmxvYXQgbV9wZW5kaW5nU2Nh
bGU7Ci0gICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGU7CisgICAgZmxvYXQgbV9wZW5k
aW5nU2NhbGUgeyAwIH07CisgICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgeyAwIH07
CiAKICAgICBtdXRhYmxlIExvY2sgbV90aWxlTXV0ZXg7CiAgICAgbXV0YWJsZSBMb2NrIG1fc2F2
ZWREaXNwbGF5UmVjdE11dGV4OwogICAgIG11dGFibGUgTG9jayBtX2NvbnRlbnRSZXBsYWNlbWVu
dEltYWdlTXV0ZXg7Ci0KLSAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VMb3dTY2Fs
ZVRpbGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZTRkZmRlYTEwZWViNDI1NjRi
YzI1MDhlYzA5OGQxYTVkNTJlNWY0MC4uY2UyMjg0YjJlMWEzODMwZDU0MTJmMjA2YmM4YWQ1MTVk
NTNlODQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCkBAIC03MCwyNSArNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExlZ2FjeVRp
bGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5k
b3cod2luZG93KQotICAgICwgbV9rZWVwc1pvb21lZE91dFRpbGVzKGZhbHNlKQotICAgICwgbV9o
YXNQZW5kaW5nTGF5b3V0VGlsZXMoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRpbmdVcGRhdGVUaWxp
bmdNb2RlKGZhbHNlKQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNo
ZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV90aWxpbmdNb2RlKE5vcm1hbCkKLSAg
ICAsIG1fdGlsaW5nRGlyZWN0aW9uKFRpbGluZ0RpcmVjdGlvbkRvd24pCi0gICAgLCBtX3RpbGVT
aXplKDUxMiwgNTEyKQotICAgICwgbV90aWxlc09wYXF1ZSh0cnVlKQotICAgICwgbV90aWxlQm9y
ZGVyc1Zpc2libGUoZmFsc2UpCi0gICAgLCBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZShmYWxz
ZSkKLSAgICAsIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1faXNT
cGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQodHJ1ZSkKLSAgICAsIG1fZGlkQ2FsbFdpbGxT
dGFydFNjcm9sbGluZ09yWm9vbWluZyhmYWxzZSkKICAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQo
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAg
ICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0
aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fY3VycmVudFNjYWxlKDEuZikKLSAgICAsIG1fcGVuZGlu
Z1NjYWxlKDApCi0gICAgLCBtX3BlbmRpbmdab29tZWRPdXRTY2FsZSgwKQotICAgICwgbV90aWxl
Q29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXMoZmFsc2UpCiB7CiAgICAgW2hvc3RMYXll
cigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBh
dEluZGV4OjBdOwogICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CkBAIC01MjAsMTQgKzUwNCwx
OCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1JlcGxhY2VtZW50SW1hZ2UoTGVnYWN5VGls
ZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQsIGltYWdlUmVjdCwgaW1hZ2UpOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dp
bmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCBkaXJ0eVJlY3QpCit2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd1dpbmRvd0NvbnRl
bnQoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBk
aXJ0eVJlY3QsIERyYXdpbmdGbGFncyBkcmF3aW5nRmxhZ3MpCiB7CiAgICAgQ0dSZWN0IGZyYW1l
ID0gW2xheWVyIGZyYW1lXTsKICAgICBGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlciBmb250QW50
aWFsaWFzaW5nU3RhdGUoY29udGV4dCwgW21fd2luZG93IHVzZU9yaWVudGF0aW9uRGVwZW5kZW50
Rm9udEFudGlhbGlhc2luZ10gJiYgW2xheWVyIGlzT3BhcXVlXSk7CiAgICAgZm9udEFudGlhbGlh
c2luZ1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKTsKIAor
ICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcpCisgICAg
ICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5nUGFpbnQ6WUVTXTsKKyAgICAgICAgCiAg
ICAgQ0dTUmVnaW9uT2JqIGRyYXdSZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVtsYXllciByZWdpb25C
ZWluZ0RyYXduXTsKICAgICBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUgPSBbbGF5ZXIgY29udGVudHNT
Y2FsZV07CisgICAgCiAgICAgaWYgKGRyYXdSZWdpb24gJiYgc2hvdWxkUmVwYWludEluUGllY2Vz
KGRpcnR5UmVjdCwgZHJhd1JlZ2lvbiwgY29udGVudHNTY2FsZSkpIHsKICAgICAgICAgLy8gVXNl
IGZpbmUgZ3JhaW5lZCByZXBhaW50IHJlY3RhbmdsZXMgdG8gbWluaW1pemUgdGhlIGFtb3VudCBv
ZiBwYWludGVkIHBpeGVscy4KICAgICAgICAgQ0dTUmVnaW9uRW51bWVyYXRvck9iaiBlbnVtZXJh
dG9yID0gQ0dTUmVnaW9uRW51bWVyYXRvcihkcmF3UmVnaW9uKTsKQEAgLTU1MCw5ICs1MzgsMTIg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdXaW5kb3dDb250ZW50KExlZ2FjeVRpbGVMYXll
ciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb24KICAgICB9CiAKICAgICBmb250QW50aWFsaWFzaW5n
U3RhdGUucmVzdG9yZSgpOworICAgIAorICAgIGlmIChkcmF3aW5nRmxhZ3MgPT0gRHJhd2luZ0Zs
YWdzOjpTbmFwc2hvdHRpbmcpCisgICAgICAgIFttX3dpbmRvdyBzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6Tk9dOwogfQogCi12b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4
dCwgRHJhd2luZ0ZsYWdzIGRyYXdpbmdGbGFncykKIHsKICAgICAvLyBUaGUgd2ViIGxvY2sgdW5s
b2NrIG9ic2VydmVyIHJ1bnMgYWZ0ZXIgQ0EgY29tbWl0IG9ic2VydmVyLgogICAgIGlmICghV2Vi
VGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpIHsKQEAgLTU3MSw3ICs1NjIsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4
dFJlZiBjb250ZXh0KQogICAgIGlmIChSZXRhaW5QdHI8Q0dJbWFnZT4gY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2UgPSB0aGlzLT5jb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpKQogICAgICAgICBkcmF3
UmVwbGFjZW1lbnRJbWFnZShsYXllciwgY29udGV4dCwgY29udGVudFJlcGxhY2VtZW50SW1hZ2Uu
Z2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhd1dpbmRvd0NvbnRlbnQobGF5ZXIsIGNvbnRl
eHQsIGRpcnR5UmVjdCk7CisgICAgICAgIGRyYXdXaW5kb3dDb250ZW50KGxheWVyLCBjb250ZXh0
LCBkaXJ0eVJlY3QsIGRyYXdpbmdGbGFncyk7CiAKICAgICArK2xheWVyLnBhaW50Q291bnQ7CiAg
ICAgaWYgKG1fdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLmgKaW5kZXggOTg3MGU3YjAzZTFlYWU3YzE5MTQ4
MjAzYTYyNzc3YWRlNGJkNzVhYi4uYmYxZWU3MmQ5MGIzM2Y1YzQ0NDE1NGM1ZWFmNzA2YTM1OWFk
Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIu
aApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTGVnYWN5VGlsZUxheWVyX2gKLSNkZWZpbmUgTGVnYWN5VGlsZUxheWVy
X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oSU9TKQogCkBAIC0zNywxMCArMzYsMTEg
QEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVMYXllciA6IENB
TGF5ZXIgewogICAgIFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkKiBfdGlsZUdyaWQ7CiAgICAgdW5z
aWduZWQgX3BhaW50Q291bnQ7CisgICAgQk9PTCBfaXNSZW5kZXJpbmdJbkNvbnRleHQ7CiB9CiBA
cHJvcGVydHkgKG5vbmF0b21pYykgdW5zaWduZWQgcGFpbnRDb3VudDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBXZWJDb3JlOjpMZWdhY3lUaWxlR3JpZCogdGlsZUdyaWQ7Ci0rIChMZWdhY3lUaWxl
TGF5ZXIgKilsYXllckJlaW5nUGFpbnRlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGlz
UmVuZGVyaW5nSW5Db250ZXh0OwogQGVuZAogCiBAaW50ZXJmYWNlIExlZ2FjeVRpbGVIb3N0TGF5
ZXIgOiBDQUxheWVyIHsKQEAgLTUwLDQgKzUwLDQgQEAgY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiBA
ZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0jZW5kaWYgLy8gVGlsZUxheWVyX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KaW5kZXgg
NWNhMjEyYTNjNGYyYmVjMjEyZDZiZGY1ZmIxMTI3ZDEzNDY2OWZjNi4uYWU2MmE0MWVlYWJhNTNk
NGI3NmRiOWYxN2M2NGY4MzFhNDY2NWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGVn
YWN5VGlsZUNhY2hlLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbmNsdWRlICJX
ZWJDb3JlVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MSw4ICs3Miw3IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlv
biBMZWdhY3lUaWxlTGF5ZXIKIEBzeW50aGVzaXplIHBhaW50Q291bnQgPSBfcGFpbnRDb3VudDsK
IEBzeW50aGVzaXplIHRpbGVHcmlkID0gX3RpbGVHcmlkOwotCi1zdGF0aWMgTGVnYWN5VGlsZUxh
eWVyICpsYXllckJlaW5nUGFpbnRlZDsKK0BzeW50aGVzaXplIGlzUmVuZGVyaW5nSW5Db250ZXh0
ID0gX2lzUmVuZGVyaW5nSW5Db250ZXh0OwogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVj
dDooQ0dSZWN0KXJlY3QKIHsKQEAgLTkzLDYgKzkzLDEyIEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5
ZXJzCiAgICAgICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkucHJlcGFyZVRvRHJhdygpOwogfQog
CistICh2b2lkKXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBT
ZXRGb3JTY29wZTxCT09MPiBjaGFuZ2UoX2lzUmVuZGVyaW5nSW5Db250ZXh0LCBZRVMpOworICAg
IFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4dF07Cit9CisKIC0gKHZvaWQpZHJhd0luQ29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKICAgICAvLyBCdWdzIGluIGNsaWVudHMgb3Ig
b3RoZXIgZnJhbWV3b3JrcyBtYXkgY2F1c2UgdGlsZSBpbnZhbGlkYXRpb24gZnJvbSB3aXRoaW4g
YSBDQSBjb21taXQuCkBAIC0xMDUsNyArMTExLDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKICAgICBpZiAo
X3RpbGVHcmlkKQotICAgICAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmRyYXdMYXllcihzZWxm
LCBjb250ZXh0KTsKKyAgICAgICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5kcmF3TGF5ZXIoc2Vs
ZiwgY29udGV4dCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IExlZ2FjeVRpbGVDYWNoZTo6
RHJhd2luZ0ZsYWdzOjpTbmFwc2hvdHRpbmcgOiBMZWdhY3lUaWxlQ2FjaGU6OkRyYXdpbmdGbGFn
czo6Tm9uZSk7CiB9CiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICop
a2V5CkBAIC0xMTUsMTEgKzEyMSw2IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5T
U3RyaW5nICopa2V5CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotKyAoTGVnYWN5VGlsZUxheWVyICop
bGF5ZXJCZWluZ1BhaW50ZWQKLXsKLSAgICByZXR1cm4gbGF5ZXJCZWluZ1BhaW50ZWQ7Ci19Ci0K
IEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBlMjhiY2ZkNDEwNjJkZDM2MjUzMTRmNDAxYjAyOTg4
MDg1YzVmYTcxLi5mZDJmODUyYjMxZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC01MDUsNyArNTA1
LDcgQEAgKyAodm9pZClfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6KGludClxdWFsaXR5CiAgICAg
c0ludGVycG9sYXRpb25RdWFsaXR5ID0gdG9DR0ludGVycG9sYXRpb25RdWFsaXR5KChXZWJDb3Jl
OjpJbnRlcnBvbGF0aW9uUXVhbGl0eSlxdWFsaXR5KTsKIH0KIAotLSAodm9pZClfZHJhd1JlY3Q6
KE5TUmVjdClkaXJ0eVJlY3QgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3Vz
Oihib29sKWxvY2tGb2N1cworLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QgY29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQgbG9ja0ZvY3VzOihCT09MKWxvY2tGb2N1cwogewog
ICAgIGlmIChfaXNIaWRkZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oCmluZGV4IDJiNWI5OWQ5OWE0NzQyYWJjMjQ4MjYzYmM3
YjE1M2Y2YmJkOTYzY2YuLjg3Mzk5YTE3MGRjNjE3OTkyMDZjMWY5MzNmNmVhNjE5ZGE0MmNlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaApAQCAtODQs
NiArODQsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdBS1Jlc3Bv
bmRlcgogICAgIFdBS1ZpZXcgKl9uZXh0UmVzcG9uZGVyOwogCiAgICAgQk9PTCBfdmlzaWJsZTsK
KyAgICBCT09MIF9pc0luU25hcHNob3R0aW5nUGFpbnQ7CiAgICAgQk9PTCBfdXNlT3JpZW50YXRp
b25EZXBlbmRlbnRGb250QW50aWFsaWFzaW5nOwogICAgIEJPT0wgX2VudGlyZVdpbmRvd1Zpc2li
bGVGb3JUZXN0aW5nOwogfQpAQCAtMTMxLDYgKzEzMiw5IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAtICh2b2lkKXNlbmRFdmVudFN5bmNocm9u
b3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudDsKIC0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50OihX
ZWJFdmVudCAqKWFuRXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUNvbnRl
bnRDaGFuZ2U7CiAKKy0gKHZvaWQpc2V0SXNJblNuYXBzaG90dGluZ1BhaW50OihCT09MKWlzSW5T
bmFwc2hvdHRpbmdQYWludDsKKy0gKEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OworCiAvLyBU
aHJlYWQgc2FmZSB3YXkgb2YgcHJvdmlkaW5nIHRoZSAidXNhYmxlIiByZWN0IG9mIHRoZSBXQUtX
aW5kb3cgaW4gdGhlIHZpZXdwb3J0L3Njcm9sbHZpZXcuCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9s
bFZpZXdSZWN0OwogLy8gc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0IHNob3VsZCBvbmx5IGV2ZXIg
YmUgY2FsbGVkIGZyb20gVUlLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCmluZGV4IDk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIwZTI2MzgxZjkw
YjkuLjAyNjk4MmM5YTQxN2JiNzgwN2JiYWYxZmRiYmRmOTdkZDIyODJiNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC00MzgsNiArNDM4LDE2
IEBAIC0gKHZvaWQpc2V0VGlsZXNPcGFxdWU6KEJPT0wpb3BhcXVlCiAgICAgX3RpbGVDYWNoZS0+
c2V0VGlsZXNPcGFxdWUob3BhcXVlKTsKIH0KIAorLSAodm9pZClzZXRJc0luU25hcHNob3R0aW5n
UGFpbnQ6KEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50Cit7CisgICAgX2lzSW5TbmFwc2hvdHRp
bmdQYWludCA9IGlzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKworLSAoQk9PTClpc0luU25hcHNo
b3R0aW5nUGFpbnQKK3sKKyAgICByZXR1cm4gX2lzSW5TbmFwc2hvdHRpbmdQYWludDsKK30KKwog
LSAodm9pZClzZXRFbnRpcmVXaW5kb3dWaXNpYmxlRm9yVGVzdGluZzooQk9PTCllbnRpcmVXaW5k
b3dWaXNpYmxlCiB7CiAgICAgX2VudGlyZVdpbmRvd1Zpc2libGVGb3JUZXN0aW5nID0gZW50aXJl
V2luZG93VmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IGYx
NjdlODdhOGUwMjIxMjJjZGZmMDRkNmI2NjhhN2M5YzIwOWQzMTYuLjU5OGU4NTBlM2M3MjdkZThj
ODI1YWNlZjJkYzhlOTlmZjk3OTIyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaApAQCAtNTgsMTIgKzU4LDEzIEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQ
YWludEJlaGF2aW9yU2tpcFNlbGVjdGlvbkhpZ2hsaWdodCAgICAgID0gMSA8PCAxLAogICAgIFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCAgICAgICAgICAgICAgPSAxIDw8IDIsCiAgICAgUGFp
bnRCZWhhdmlvckZvcmNlV2hpdGVUZXh0ICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA0LAotICAgIFBhaW50
QmVoYXZpb3JSZW5kZXJpbmdTVkdNYXNrICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgUGFpbnRC
ZWhhdmlvclNraXBSb290QmFja2dyb3VuZCAgICAgICAgICA9IDEgPDwgNiwKLSAgICBQYWludEJl
aGF2aW9yUm9vdEJhY2tncm91bmRPbmx5ICAgICAgICAgID0gMSA8PCA3LAotICAgIFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDgsCi0gICAgUGFpbnRCZWhh
dmlvckV4Y2x1ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOSwKKyAgICBQYWludEJlaGF2
aW9yUmVuZGVyaW5nU1ZHTWFzayAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFBhaW50QmVoYXZp
b3JTa2lwUm9vdEJhY2tncm91bmQgICAgICAgICAgPSAxIDw8IDUsCisgICAgUGFpbnRCZWhhdmlv
clJvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICA9IDEgPDwgNiwKKyAgICBQYWludEJlaGF2aW9y
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAorICAgIFBhaW50QmVoYXZpb3JF
eGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9w
IGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCisgICAgUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZyAgICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRp
bmcsIGUuZy4gZm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCiB9OwogCiB0eXBlZGVm
IHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDg5ZDM1Y2YwNWE1NTgyNDQ2MjNkNzIwMWY0Yzc4ZTMxOTFmZWEzNzkuLjA2Njc2
Y2YxNGJhMzFhMTcxOTNlZjA1NDUyZTgxYTA2OGVjMjBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYQogICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwdXNoIGEgdHJhbnNwYXJl
bmN5IGxheWVyIHRvIHJlbmRlciBvdXIgbWFzay4KICAgICBib29sIHB1c2hUcmFuc3BhcmVuY3lM
YXllciA9IGZhbHNlOwogICAgIGJvb2wgY29tcG9zaXRlZE1hc2sgPSBoYXNMYXllcigpICYmIGxh
eWVyKCktPmhhc0NvbXBvc2l0ZWRNYXNrKCk7Ci0gICAgYm9vbCBmbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMgPSB2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICBib29sIGZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyA9IHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBv
c2l0ZVNvdXJjZU92ZXI7CiAKICAgICBib29sIGFsbE1hc2tJbWFnZXNMb2FkZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggZmQ4NWJmOTdkOWIzZmZkNzg2MTRkMzc5YzU0NjBjYTUyMGY1NzBlZi4uNWViNTExYzZk
YjEwMzIyMjQzMTI0YzZlNmZmMTk5MDE2MTg2OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04ODIsNyArODgyLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAgICAg
ICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAg
YXV0byBkZWNvZGluZ01vZGUgPSAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpID8gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAgICAgICAgYXV0
byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKSA/
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0
UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5
LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhj
b21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMTZhOTQwNGRmYzhk
MzRmMzhhY2QzYzQ3MTQ3OWM3YzBiNjhhYTZmZi4uNzMzYzllNzFmZTNiY2JiZTZjNTgxOWFmNmI1
NjdkMGI3YTYzNDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoY2xp
cCkKICAgICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKIAotICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFjdG9y
KSk7CiAgICAgCiAgICAgaWYgKGNhY2hlZEltYWdlKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdlcyBh
cyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBt
YXkgd2FudCAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxlbWVu
dEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgpOwog
fQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IGlmICghaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgfHwgaW1hZ2VSZXNvdXJjZSgpLmVy
cm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDAp
CiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogCiAgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgpLgog
ICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAgIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXpl
KCkpKSA6IEludGVycG9sYXRpb25EZWZhdWx0OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlu
dGVycG9sYXRpb24gPSBpbWFnZSA/IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KHBhaW50SW5m
by5jb250ZXh0KCksICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKSA6IElu
dGVycG9sYXRpb25EZWZhdWx0OwogCiAjaWYgVVNFKENHKQogICAgIGlmIChpczxQREZEb2N1bWVu
dEltYWdlPihpbWFnZSkpCkBAIC01ODQsOCArNTg0LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRp
bmdzKHNldHRpbmdzKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHZpZXcoKS5m
cmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzKSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFz
eW5jaHJvbm91czsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01v
ZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKworICAgIGF1dG8g
ZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2Rl
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIGJvb2wgUmVu
ZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IGFkYjkyZGZkMjczMmY1OGYzOWRmOGU1Y2UxZGUzODU2OGY4NDhmMzcuLjkx
MmJlZTQ0NDVmZWIzYThlYjI0NjQyNTE0ZmE4NjcwOTM5OWFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdjOWE4YTkxMTM4MTQ1MTE3ZWY1
NjkwNjQzZTM1NWY2ZGMwNTAxMDcuLjQ2NTY4YTA5MzUzZDhkNWIzODhlOThmZDQxOGU3N2MxZDk5
ZjllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDM4
Myw2ICs0MzgzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgZWxzZSBpZiAo
bG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQog
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRP
bmx5OwogCisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmc7CisKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwogCkBAIC00Nzg1LDYgKzQ3
ODgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChsb2NhbFBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAg
IGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAor
ICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZykKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmc7CisKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBm
cmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNs
aXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdt
ZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91
bmRSZWN0LmlzRW1wdHkoKTsKICAgICBDbGlwUmVjdCBjbGlwcGVkUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzk5ODI1ZTJi
OGE5OTcwZGI5Y2Y4YjQyZmY4NDZiYjEyOWM1OWQxMi4uOTM2MDdlMmMyYzYyMDRlMjZkYWY5Y2E1
NjcyMWFiZTZkZGIxMzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
LCBHcmFwCiB9CiAKIC8vIFVwLWNhbGwgZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNh
bGxiYWNrLgotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNs
aXApCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNz
TGF5ZXJQYWludGluZ1BoYXNlIHBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3MgZmxhZ3MpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHJl
bmRlcmVyKCkucGFnZSgpLnNldElzUGFpbnRpbmcodHJ1ZSk7CkBAIC0yNTY4LDcgKzI1NjgsMTEg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QoZW5jbG9zaW5nSW50UmVjdChjb21wb3NpdGVkQm91bmRzSW5jbHVkaW5nTWFyZ2luKCkpKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVz
dGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0
cy4KLSAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlS
ZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgUGFpbnRC
ZWhhdmlvciBiZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWw7CisgICAgICAgIGlmIChmbGFn
cyA9PSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nKQorICAgICAgICAgICAg
YmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKworICAgICAgICBwYWludElu
dG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBwYWlu
dGluZ1BoYXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50
KHJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09
IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDc3N2Y5YmFhZTVjNjcyMTJkMmY3NjJl
MDY2MTU5NWZjYzFlMTA3Mi4uYzhmYmI4MTM4YTU0NGNlNTIzOWQ4MWM1MDRlZDI2NmFlY2ZiMzhi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hCZWZv
cmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogCiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBjb250ZW50c1NjYWxl
TXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggMjFmNmQ1MTg1YjBmYWRlOWE2OTNiZTBiZTg0YzE5YzdlMDU5ZDA3My4uNWFl
NWJkOTM0NjYyNjk4YTRlYjVjN2RhMTc3MDMwNTQzMTZlM2JkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjMsNyAr
Mjg2Myw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKK3ZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdy
YXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50RmxhZ3Mp
CiB7CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRl
bXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsKICAgICBpZiAoZ3JhcGhpY3NM
YXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjOWQ0OGIxOWRiZTZl
MGQ4OWM5MzBlMmVkZDRiYTdhYWM1YWI4ZWZmLi4wN2Q3NjFkNTE5Yzk0YjE1ZDBmZTdmMjE4ZGMy
ODQ0YjFjYWViOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEdy
YXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIG5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhp
Y3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWlu
dEZsYWdzKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJlY3RD
b21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZjJkNmVkNmFm
ZmJlMTVjNzU5YTBkYzQ3MThiODY0Mzk5NWY0N2EzLi5kMzdjNDg2YWRmNWI0MzY5ZTkzMTU2N2Jl
NGI3MWQ2MWFmYTM1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBj
b250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCi0g
ICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIHBhaW50SW50b1Jl
Y3QocGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxs
c2NyZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkp
IHsKLSAgICAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQorICAgICAgICBpZiAocGFpbnRJbmZv
LnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQog
ICAgICAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRl
eHQsIHJlY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQo
Y29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGNmMDQ4NThiNTk2ZTkzYTdmZDljODMwYTFm
NzFhNDdhMjk0ZmIzY2MuLmMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAo
dm9pZClhZGRXaW5kb3dPYnNlcnZlcnM7CiAtICh2b2lkKXJlbW92ZVdpbmRvd09ic2VydmVyczsK
IC0gKEJPT0wpc2hvdWxkQ2xpcE91dFBsdWdpbjsKLS0gKEJPT0wpaW5GbGF0dGVuaW5nUGFpbnQ7
CiAKIC0gKEJPT0wpc3VwcG9ydHNTbmFwc2hvdHRpbmc7CiAtICh2b2lkKWNhY2hlU25hcHNob3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0KaW5kZXggMjFmOTA0NWVmMzc1NzgwNzhkNGNkN2IxOTg5ZDE5Y2MzOWExNThh
NC4uNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNDM4LDE0ICs0MzgsNiBAQCAtIChCT09MKXNob3VsZENsaXBPdXRQbHVnaW4KICAgICBy
ZXR1cm4gIXdpbmRvdyB8fCBbd2luZG93IGlzTWluaWF0dXJpemVkXSB8fCBbTlNBcHAgaXNIaWRk
ZW5dIHx8ICFbc2VsZiBpc0Rlc2NlbmRhbnRPZjpbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld11d
IHx8IFtzZWxmIGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl07CiB9CiAKLS0gKEJPT0wpaW5G
bGF0dGVuaW5nUGFpbnQKLXsKLSAgICBhdXRvKiByZW5kZXJlciA9IF9lbGVtZW50LT5yZW5kZXJl
cigpOwotICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIHJldHVybiAhIShkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVj
dD4oKnJlbmRlcmVyKS52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci19Ci0KIC0gKEJPT0wpc3VwcG9ydHNT
bmFwc2hvdHRpbmcKIHsKICAgICByZXR1cm4gW19wbHVnaW5QYWNrYWdlLmdldCgpIHN1cHBvcnRz
U25hcHNob3R0aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDcw
MzI2MDA3NGVjMzM5Yzg4ODIwYjc5NTBjZmIxNDRlZDc3NGNkODQuLjljMGY4MmRlYmQ1YWViMDQy
ZTNhMDU1NGYwNTlmNTNhNzgwMDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV0FLU2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV0tHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
UnVuLmg+CiAjZW5kaWYKQEAgLTU4MiwyNCArNTgzLDMxIEBAIC0gKE5TU3RyaW5nICopX3N0cmlu
Z0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgcmV0dXJuIHBsYWluVGV4dChjb3JlKHJh
bmdlKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotLSAoQk9PTClf
c2hvdWxkRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOihDR0NvbnRleHRSZWYpY29udGV4dAorCist
IChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gLWN1cnJlbnRD
b250ZXh0RHJhd2luZ1RvU2NyZWVuIHJldHVybnMgWUVTIGZvciBiaXRtYXAgY29udGV4dHMuCiAg
ICAgQk9PTCBpc1ByaW50aW5nID0gIVtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dERy
YXdpbmdUb1NjcmVlbl07CiAgICAgaWYgKGlzUHJpbnRpbmcpCi0gICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCiAgICAgaWYgKCFXS0NHQ29udGV4
dElzQml0bWFwQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIE5POworICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWln
aHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4K
ICAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZp
ZXddOwotICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0gJiYgWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9M
YXllcl0pCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBbZ2V0V2ViVmlldyhzZWxm
KSBfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXBd
OworICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNz
XV0pIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChbW2RvY3VtZW50VmlldyB3aW5k
b3ddIGlzSW5TbmFwc2hvdHRpbmdQYWludF0pCisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZzsKKyNlbmRpZgorICAgICAgICBpZiAoWyhXZWJIVE1MVmlldyAqKWRv
Y3VtZW50VmlldyBfd2ViX2lzRHJhd2luZ0ludG9MYXllcl0pCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogfQogCiAtICh2b2lkKV9kcmF3
UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQpAQCAtNjIy
LDI4ICs2MzAsMjkgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzT25s
eTooQk9PTCljb250ZW50c09ubHkKIAogICAgIEZyYW1lVmlldyogdmlldyA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnZpZXcoKTsKICAgICAKLSAgICBib29sIHNob3VsZEZsYXR0ZW4gPSBmYWxzZTsK
KyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gdmlldy0+cGFpbnRCZWhhdmlvcigpOwor
ICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZEJlaGF2aW9yOworICAgIAogICAg
IGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKICAgICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0IHRo
ZSBwYWludCBiZWhhdmlvciBmcm9tIG91ciBwYXJlbnQKLSAgICAgICAgRnJhbWVWaWV3KiBwYXJl
bnRWaWV3ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogMDsKLSAgICAgICAg
aWYgKHBhcmVudFZpZXcpCi0gICAgICAgICAgICBzaG91bGRGbGF0dGVuID0gcGFyZW50Vmlldy0+
cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lID8gcGFyZW50
RnJhbWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5w
YWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQor
ICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnRW
aWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQorICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzaG91bGRGbGF0dGVuID0gW3NlbGYgX3Nob3Vs
ZEZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczpjdHhdOworICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAgICAg
IAorICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKLSAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAoc2hv
dWxkRmxhdHRlbikgewotICAgICAgICBvbGRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3Io
KTsKLSAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgIH0KLSAgICAKICAgICBpZiAoY29u
dGVudHNPbmx5KQogICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKICAgICAgICAgdmlldy0+cGFpbnQoY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKLSAgICBpZiAoc2hvdWxkRmxhdHRlbikKLSAgICAg
ICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CisgICAgdmlldy0+c2V0UGFp
bnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CiB9CiAKIC0gKEJPT0wpX2dldFZpc2libGVSZWN0OihO
U1JlY3QqKXJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDVkNTVhYjEzYmE3NGNiN2YxYmZlY2I3OTE4NjcwMzIwM2YyY2QwN2IuLjk0Nzg5NTljY2VmZGU4
ZWQ2NjU5YzRmYWIyNDA5OGU1ZjdhMTdhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNzI5Nyw4ICs3Mjk3LDggQEAgc3RhdGljIENHSW1hZ2VSZWYgaW1h
Z2VGcm9tUmVjdChGcmFtZSogZnJhbWUsIENHUmVjdCByZWN0KQogICAgIFdlYkhUTUxWaWV3ICp2
aWV3ID0gKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIAogICAgIFBhaW50QmVoYXZp
b3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAg
ICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKKyAgICBmcmFtZS0+dmll
dygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyk7CisKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCiAgICAgQ0dSZWN0IGJvdW5kcyA9
IFt2aWV3IGJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggN2Mx
ZTA1N2MzN2UzZTFjN2FmMGVlNDdiNDVlNTZmOGZjZjU2YjZjYy4uNTlkYjllMDUyNWQ4NWYyOWVj
Y2EwNWI0NDY1MzMwZmEyM2U5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtMTM2OSw3ICsxMzY5LDYgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbHNlCiAg
ICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xv
cihDb2xvcjo6d2hpdGUpKTsKICNlbmRpZgotICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5l
ZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBfcHJpdmF0ZS0+d2luZG93VmlzaWJpbGl0eU9ic2VydmVyID0gYWRvcHRO
UyhbW1dlYldpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZd
KTsKQEAgLTQ1MDQsMTYgKzQ1MDMsNiBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJsZQog
ICAgIHJldHVybiBZRVM7CiB9CiAKLS0gKHZvaWQpX3NldEluY2x1ZGVzRmxhdHRlbmVkQ29tcG9z
aXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwOihCT09MKWZsYWcKLXsKLSAgICBfcHJpdmF0
ZS0+aW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAg
PSBmbGFnOwotfQotCi0tIChCT09MKV9pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJz
V2hlbkRyYXdpbmdUb0JpdG1hcAotewotICAgIHJldHVybiBfcHJpdmF0ZS0+aW5jbHVkZXNGbGF0
dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXA7Ci19Ci0KIC0gKHZvaWQp
c2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKaW5kZXggNmMzNjkyODY3N2JmNjUzNjRlYWJkY2M1NmUwOTQ1YzEwNmMyZTY5My4uMGE1NDA2
ODNmYTJlNGQ3NWYwMTc5OGQxNmQ1YzBkNmVmYTZmZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZhdGU6CiAKICAgICBC
T09MIHNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCi0gICAgQk9PTCBpbmNsdWRlc0ZsYXR0
ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDsKLQogICAgIC8vIFdoZW4g
dGhpcyBmbGFnIGlzIHNldCwgbmV4dCB0aW1lIGEgV2ViSFRNTFZpZXcgZHJhd3MsIGl0IG5lZWRz
IHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgc2NyZWVuIHVwZGF0ZXMKICAgICAvLyBzbyB0aGF0IHRo
ZSBOU1ZpZXcgZHJhd2luZyBpcyB2aXN1YWxseSBzeW5jaHJvbml6ZWQgd2l0aCBDQUxheWVyIHVw
ZGF0ZXMuCiAgICAgQk9PTCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5OTQ3ODZiMTRl
OTE4Y2JlNzkzNzc0NTczMDQwNTg3ZjFkNjFiYjMuLjRmZDA3NWEzYzBiY2FlYTc4ZDJhMTgwN2U3
ZWM1NjU5ZDc5YmZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKQEAgLTc2NSwxMCArNzY1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAKIC8vIFJldHVybnMgWUVTIGlmIE5TVmlldyAtZGlzcGxheVJlY3RJZ25vcmluZ09wYWNp
dHk6aW5Db250ZXh0OiB3aWxsIHByb2R1Y2UgYSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY29udGVudC4KIC0gKEJPT0wpX2lzU29mdHdhcmVSZW5kZXJhYmxlOwotLy8gV2hlbiBkcmF3
aW5nIGludG8gYSBiaXRtYXAgY29udGV4dCwgd2Ugbm9ybWFsbHkgZmxhdHRlbiBjb21wb3NpdGlu
ZyBsYXllcnMgKGFuZCBkaXN0b3J0IDNEIHRyYW5zZm9ybXMpLgotLy8gQ2xpZW50cyB3aG8gYXJl
IGFibGUgdG8gY2FwdHVyZSB0aGVpciBvd24gY29weSBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXJz
IG5lZWQgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoaXMuCi0tICh2b2lkKV9zZXRJbmNsdWRlc0Zs
YXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcDooQk9PTClmbGFnOwot
LSAoQk9PTClfaW5jbHVkZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9C
aXRtYXA7CiAKIC0gKHZvaWQpc2V0VHJhY2tzUmVwYWludHM6KEJPT0wpZmxhZzsKIC0gKEJPT0wp
aXNUcmFja2luZ1JlcGFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAppbmRleCAzNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1
MmIwNjRmLi45ZTYwYzRmZDYzN2M4ZGM5MGM3MDViMWI0YTcwZTdhNmVhMDRhZTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVy
QW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsgfQogICAgIHZpcnR1
YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0xh
eWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRGbGFncykgeyB9CiAgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVy
KikgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggMjg0MGI5NTY2M2NmZTkzZGY1NWMxMDJkOWFi
ODMwZTA5N2FmZTg3Yi4uY2U3MDUzZDIzM2NkODc0YmFhMmY4M2MwMDViYmUyNDI4YjRlNWQyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0zNDAsMTcgKzM0MCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgog
ICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgbV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5k
cyk7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVu
dHMobV9sYXllciwgY29udGV4dCwgZGlydHlCb3VuZHMsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
OjpOb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJv
cExheWVyOgotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywg
R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoK
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhp
ZXJhcmNoeS4gV2UgbmVlZCB0byBwYWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIg
aW4gb3JkZXIgdG8gc2VlIHRoZSByZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1Jl
Y3RzKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRl
eHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5v
bmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXgg
MzQ3MWQyZGQzMjhiYzc4ZmFhNDA2YTVmZmI1NjYzN2Y1YTQ4ZGFmYi4uY2E0OWIwYzM3OTJmMmVi
NWI2ZDFmODVhYzJiMWI4MmM4ZmIyMjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0
JiBwYWludGkKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rp
b25IaWdobGlnaHRpbmcpCiAgICAgICAgIHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3
OjpFeGNsdWRlU2VsZWN0aW9uOwogCi0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0g
ZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+
cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0Zv
cmNlV2hpdGVUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAppbmRleCBmNzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0Li5k
MWZiYzI1ZDVjMjI3NjA5MTBjMjc0NDk2NWU5NjQzZmNkMjY5ZjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsKIAogICAgIFBhaW50QmVoYXZpb3Igb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yU2Vs
ZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
cyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggODExZWVlYTIwYjRjODIzNGM2NDM4OTc0MzAyZGRl
NmFjZmM2MTE5NC4uZGM1ZmQyMjg4ZjViZjYwNzIwNmI2ZDc3NTgxNTUwZmJhY2VlOWFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiAgICAgICAgIG1fY2xpZW50
Lm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKIH0KIAotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNv
bnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzKQogewogICAg
IG1fY2xpZW50LnBhaW50TGF5ZXJDb250ZW50cyhncmFwaGljc0xheWVyLCBncmFwaGljc0NvbnRl
eHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCA3YzU0MDE4NzMyMGVi
YmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4Li5jZWU0NzJiN2Y1OTQyNGQ1OGRkN2MwZWMxMGZi
ZmI3ODFlNjVjN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5oCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gR3Jh
cGhpY3NMYXllckNsaWVudAogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIHRpbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlwUmVjdCwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclBhaW50RmxhZ3MpIG92ZXJyaWRlOwogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9y
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA5NzFlYzcwNzY0YzI4MGEwNmI4OTEyMDhkYmM0ODA2NzA2MGI0NTNl
Li4wZjJmY2IxNjA2MDg5ZTQzY2UxY2YyODNkZTI4YWY0NzEzZTc5NWVhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTctMDUtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgU25hcHNob3R0aW5nIHZpYSAtcmVuZGVySW5Db250ZXh0OiBzaG91bGQgZG8gc3luY2hyb25v
dXMgaW1hZ2UgZGVjb2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyNDg1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjc2MTQ2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvaW9zL1NuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVySW5Db250
ZXh0V2ViVmlld0RlbGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtS
ZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJv
cjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFBpeGVsSW5kZXgpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDUtMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIEVOQUJMRShBUFBMRV9QQVlfREVMRUdBVEUpIHNob3VsZCBi
ZSBOTyBvbiBtYWNPUyBTaWVycmEgYW5kIGVhcmxpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDk2YzczYmJkMDVhMzg2NGU3OTFkOGU1YjQ0NGM0Y2NlYzE0YjBkMi4uOGNiMWI2NWNlNmFj
N2RkYjdkZjJlZjkyMDczNTIwZmNkNjg3NDBhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMzLDYgKzMzLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5t
bSAqLzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAw
NTQyRDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjNCOTRBNzFBNzcyNjc0MDBERTMyNzIgLyog
V0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmll
d0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAqLzsgfTsKKwkJMEY0RkZBOUUxRUQzQUE4NTAwRjcxMTFG
IC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RkZBOUQxRUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0
QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87IH07
CiAJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM1MjRBQzFENjNBNEZCMDAzMTcyOUIg
LyogU2NvcGUuY3BwICovOyB9OwogCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTRGODFDRDFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlQbHVnSW4ubW0gKi87IH07CkBAIC04OTgsNiArODk5LDggQEAKIAkJMEYxN0JCRDQxNUFG
NkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlzdGljc1dpdGhO
b1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDMjBCNzFE
Q0Q1NDQ4MDA1NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjk0QTUx
QTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RkZBOUQxRUQzQUE4NTAw
RjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEZGQUEwMUVEM0QwREUwMEY3MTExRiAvKiBJ
bWFnZUlPLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSW1hZ2VJTy5mcmFtZXdvcms7IHBh
dGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKIAkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNr
VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRCbGFja1Ry
ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM2QzRDRTE0MTAzNEFEMDA1
QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZXRhQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODY3LDYgKzE4NzAsNyBAQAogCQk3QzgzRTAyODFEMEE1Q0RGMDBGRUJD
RjMgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEY0RkZBQTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICov
LAogCQkJCTYzNDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3Jr
ICovLAogCQkJCTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3
b3JrICovLAogCQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGli
ICovLApAQCAtMjUxNiw2ICsyNTIwLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEQzhFNDlB
MUJDNzI4RkUwMDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0ODUxQkM1QjE5NDAw
NTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovLAorCQkJCTBGNEZGQTlEMUVE
M0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNDEsNiAr
MzA0Niw3IEBACiAJCQkJMkVGRjA2RDQxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZp
ZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURE
MUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NEZGQTlFMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHls
ZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREUxQTQxMUE5MjAwNDQ3QzRDIC8q
IFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMDFBNDExQTQ0MDA0NDdDNEMgLyog
VVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRl
eHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODA5MTVjYzM2NDRjNzE1ZWExZTZhZjg5MWZjZmU5NDViNzM0YzM4
ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2lv
cy9TbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPHN0
ZGxpYi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCBsb2FkQ29t
cGxldGUgPSBmYWxzZTsKK3N0YXRpYyBib29sIGxvYWRGYWlsZWQgPSBmYWxzZTsKKworQGludGVy
ZmFjZSBSZW5kZXJJbkNvbnRleHRXZWJWaWV3RGVsZWdhdGUgOiBOU09iamVjdCA8VUlXZWJWaWV3
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZW5kZXJJbkNvbnRleHRXZWJWaWV3
RGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3RGlkRmluaXNoTG9hZDooVUlXZWJWaWV3ICopd2Vi
VmlldworeworICAgIGxvYWRDb21wbGV0ZSA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
VUlXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsTG9hZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgbG9hZENvbXBsZXRlID0gdHJ1ZTsKKyAgICBsb2FkRmFpbGVkID0gdHJ1ZTsKK30K
KworQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ludGVnZXIg
Z2V0UGl4ZWxJbmRleChOU0ludGVnZXIgeCwgTlNJbnRlZ2VyIHksIE5TSW50ZWdlciB3aWR0aCkK
K3sKKyAgICByZXR1cm4gKHkgKiB3aWR0aCArIHgpICogNDsKK30KKworVEVTVChXZWJLaXQxLCBS
ZW5kZXJJbkNvbnRleHRTbmFwc2hvdCkKK3sKKyAgICBjb25zdCBOU0ludGVnZXIgd2lkdGggPSA4
MDA7CisgICAgY29uc3QgTlNJbnRlZ2VyIGhlaWdodCA9IDYwMDsKKyAgICAKKyAgICBSZXRhaW5Q
dHI8VUlXaW5kb3c+IHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBSZXRhaW5QdHI8
VUlXZWJWaWV3PiB1aVdlYlZpZXcgPSBhZG9wdE5TKFtbVUlXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldKTsKKyAgICBbdWlXaW5kb3cg
YWRkU3Vidmlldzp1aVdlYlZpZXcuZ2V0KCldOworICAgIAorICAgIFJldGFpblB0cjxSZW5kZXJJ
bkNvbnRleHRXZWJWaWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVuZGVySW5D
b250ZXh0V2ViVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgdWlXZWJWaWV3LmdldCgp
LmRlbGVnYXRlID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICAKKyAgICBOU1VSTCAqdXJsID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXJlZC1zcXVhcmUtaW1h
Z2UiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIE5TTG9nKEAiTG9hZGluZyAlQCIsIHVybCk7CisgICAgW3VpV2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIAor
ICAgIFV0aWw6OnJ1bigmbG9hZENvbXBsZXRlKTsKKyAgICAKKyAgICBFWFBFQ1RfVFJVRShsb2Fk
Q29tcGxldGUpOworICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbGVkKTsKKyAgICAKKyAgICB1bnNp
Z25lZCBjaGFyKiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWxs
b2Mod2lkdGggKiBoZWlnaHQsIDQpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7
CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZShwaXhlbEJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgNCAqIHdpZHRoLCBjb2xvclNwYWNl
LmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZyk7CisgICAgCisgICAgLy8gRmxpcCB0aGUgY29udGV4dAorICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNvbnRleHQuZ2V0KCksIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Y29udGV4dC5nZXQoKSwgMCwgLWhlaWdodCk7CisgICAgCisgICAgW3VpV2ViVmlldyBzZXRGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDgwMSwgNjAxKV07IC8vIFRoaXMgcmVzaXplIHN0b3BzIENvcmUg
QW5pbWF0aW9uIGZyb20gdXNpbmcgY2FjaGVkIGxheWVyIGJhY2tpbmcgc3RvcmUKKyAgICBbW3Vp
V2ViVmlldyBsYXllcl0gcmVuZGVySW5Db250ZXh0OiBjb250ZXh0LmdldCgpXTsKKyAgICAKKyAg
ICAvLyBUaGVyZSBzaG91bGQgYmUgYSByZWQgc3F1YXJlIGF0IDAsMCAtIDEwMHgxMDAKKyAgICBO
U0ludGVnZXIgcGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoMSwgMSwgd2lkdGgpOworICAgIHVu
c2lnbmVkIGNoYXIgdmFsdWUgPSBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XTsKKyAgICBFWFBFQ1Rf
RVEoMjU1LCB2YWx1ZSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXgg
KyAxXSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7Cisg
ICAgCisgICAgLy8gUmlnaHQtYm90dG9tIGNvcm5lciBvZiB0aGUgZGl2ICgwLCAwLCAxMDAsIDEw
MCkKKyAgICBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg5OCwgOTgsIHdpZHRoKTsKKyAgICBF
WFBFQ1RfRVEoMjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XSk7CisgICAgRVhQRUNUX0VRKDAs
IHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAxXSk7CisgICAgRVhQRUNUX0VRKDAsIHBpeGVsQnVm
ZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAgLy8gT3V0c2lkZSB0aGUgZGl2ICgwLCAw
LCAxMDAsIDEwMCkKKyAgICBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgxMDEsIDEwMSwgd2lk
dGgpOworICAgIEVYUEVDVF9FUSgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsKKyAgICBF
WFBFQ1RfRVEoMjU1LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4ICsgMV0pOworICAgIEVYUEVDVF9F
USgyNTUsIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXggKyAyXSk7CisgICAgCisgICAgZnJlZShwaXhl
bEJ1ZmZlcik7Cit9CisKK30KKworI2VuZGlmCisK
</data>
<flag name="review"
          id="332060"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>